summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-06-01 08:48:42 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-06-01 09:24:28 (GMT)
commit2812bddd81f8a1b804c7460f4e14cd0aa393d129 (patch)
treed46294f35150c4f0f43deaf2d31fceaf945ae715 /3rdParty/Boost/boost
downloadswift-2812bddd81f8a1b804c7460f4e14cd0aa393d129.zip
swift-2812bddd81f8a1b804c7460f4e14cd0aa393d129.tar.bz2
Import.
Diffstat (limited to '3rdParty/Boost/boost')
-rw-r--r--3rdParty/Boost/boost/algorithm/string/case_conv.hpp176
-rw-r--r--3rdParty/Boost/boost/algorithm/string/compare.hpp199
-rw-r--r--3rdParty/Boost/boost/algorithm/string/concept.hpp83
-rw-r--r--3rdParty/Boost/boost/algorithm/string/config.hpp28
-rw-r--r--3rdParty/Boost/boost/algorithm/string/constants.hpp36
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/case_conv.hpp121
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/find_format.hpp193
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/find_format_all.hpp263
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/find_format_store.hpp78
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/finder.hpp646
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/formatter.hpp94
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/replace_storage.hpp159
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/sequence.hpp200
-rw-r--r--3rdParty/Boost/boost/algorithm/string/detail/util.hpp106
-rw-r--r--3rdParty/Boost/boost/algorithm/string/erase.hpp844
-rw-r--r--3rdParty/Boost/boost/algorithm/string/find_format.hpp269
-rw-r--r--3rdParty/Boost/boost/algorithm/string/finder.hpp270
-rw-r--r--3rdParty/Boost/boost/algorithm/string/formatter.hpp103
-rw-r--r--3rdParty/Boost/boost/algorithm/string/replace.hpp928
-rw-r--r--3rdParty/Boost/boost/algorithm/string/sequence_traits.hpp193
-rw-r--r--3rdParty/Boost/boost/algorithm/string/yes_no_type.hpp33
-rw-r--r--3rdParty/Boost/boost/aligned_storage.hpp170
-rw-r--r--3rdParty/Boost/boost/any.hpp237
-rw-r--r--3rdParty/Boost/boost/array.hpp321
-rw-r--r--3rdParty/Boost/boost/asio.hpp100
-rw-r--r--3rdParty/Boost/boost/asio/basic_datagram_socket.hpp805
-rw-r--r--3rdParty/Boost/boost/asio/basic_deadline_timer.hpp383
-rw-r--r--3rdParty/Boost/boost/asio/basic_io_object.hpp99
-rw-r--r--3rdParty/Boost/boost/asio/basic_raw_socket.hpp800
-rw-r--r--3rdParty/Boost/boost/asio/basic_serial_port.hpp624
-rw-r--r--3rdParty/Boost/boost/asio/basic_socket.hpp1065
-rw-r--r--3rdParty/Boost/boost/asio/basic_socket_acceptor.hpp826
-rw-r--r--3rdParty/Boost/boost/asio/basic_socket_iostream.hpp150
-rw-r--r--3rdParty/Boost/boost/asio/basic_socket_streambuf.hpp287
-rw-r--r--3rdParty/Boost/boost/asio/basic_stream_socket.hpp720
-rw-r--r--3rdParty/Boost/boost/asio/basic_streambuf.hpp340
-rw-r--r--3rdParty/Boost/boost/asio/buffer.hpp1042
-rw-r--r--3rdParty/Boost/boost/asio/buffered_read_stream.hpp422
-rw-r--r--3rdParty/Boost/boost/asio/buffered_read_stream_fwd.hpp31
-rw-r--r--3rdParty/Boost/boost/asio/buffered_stream.hpp258
-rw-r--r--3rdParty/Boost/boost/asio/buffered_stream_fwd.hpp31
-rw-r--r--3rdParty/Boost/boost/asio/buffered_write_stream.hpp376
-rw-r--r--3rdParty/Boost/boost/asio/buffered_write_stream_fwd.hpp31
-rw-r--r--3rdParty/Boost/boost/asio/buffers_iterator.hpp327
-rw-r--r--3rdParty/Boost/boost/asio/completion_condition.hpp166
-rw-r--r--3rdParty/Boost/boost/asio/datagram_socket_service.hpp325
-rw-r--r--3rdParty/Boost/boost/asio/deadline_timer.hpp39
-rw-r--r--3rdParty/Boost/boost/asio/deadline_timer_service.hpp170
-rw-r--r--3rdParty/Boost/boost/asio/detail/bind_handler.hpp351
-rw-r--r--3rdParty/Boost/boost/asio/detail/buffer_resize_guard.hpp72
-rw-r--r--3rdParty/Boost/boost/asio/detail/buffered_stream_storage.hpp129
-rw-r--r--3rdParty/Boost/boost/asio/detail/call_stack.hpp92
-rw-r--r--3rdParty/Boost/boost/asio/detail/consuming_buffers.hpp246
-rw-r--r--3rdParty/Boost/boost/asio/detail/deadline_timer_service.hpp203
-rw-r--r--3rdParty/Boost/boost/asio/detail/descriptor_ops.hpp178
-rw-r--r--3rdParty/Boost/boost/asio/detail/dev_poll_reactor.hpp678
-rw-r--r--3rdParty/Boost/boost/asio/detail/dev_poll_reactor_fwd.hpp42
-rw-r--r--3rdParty/Boost/boost/asio/detail/epoll_reactor.hpp733
-rw-r--r--3rdParty/Boost/boost/asio/detail/epoll_reactor_fwd.hpp49
-rw-r--r--3rdParty/Boost/boost/asio/detail/event.hpp52
-rw-r--r--3rdParty/Boost/boost/asio/detail/eventfd_select_interrupter.hpp157
-rw-r--r--3rdParty/Boost/boost/asio/detail/fd_set_adapter.hpp43
-rw-r--r--3rdParty/Boost/boost/asio/detail/handler_alloc_helpers.hpp258
-rw-r--r--3rdParty/Boost/boost/asio/detail/handler_base_from_member.hpp78
-rw-r--r--3rdParty/Boost/boost/asio/detail/handler_invoke_helpers.hpp47
-rw-r--r--3rdParty/Boost/boost/asio/detail/handler_queue.hpp231
-rw-r--r--3rdParty/Boost/boost/asio/detail/hash_map.hpp292
-rw-r--r--3rdParty/Boost/boost/asio/detail/indirect_handler_queue.hpp293
-rw-r--r--3rdParty/Boost/boost/asio/detail/io_control.hpp139
-rw-r--r--3rdParty/Boost/boost/asio/detail/kqueue_reactor.hpp714
-rw-r--r--3rdParty/Boost/boost/asio/detail/kqueue_reactor_fwd.hpp43
-rw-r--r--3rdParty/Boost/boost/asio/detail/mutex.hpp52
-rw-r--r--3rdParty/Boost/boost/asio/detail/noncopyable.hpp57
-rw-r--r--3rdParty/Boost/boost/asio/detail/null_event.hpp73
-rw-r--r--3rdParty/Boost/boost/asio/detail/null_mutex.hpp68
-rw-r--r--3rdParty/Boost/boost/asio/detail/null_signal_blocker.hpp65
-rw-r--r--3rdParty/Boost/boost/asio/detail/null_thread.hpp70
-rw-r--r--3rdParty/Boost/boost/asio/detail/null_tss_ptr.hpp72
-rw-r--r--3rdParty/Boost/boost/asio/detail/old_win_sdk_compat.hpp342
-rw-r--r--3rdParty/Boost/boost/asio/detail/pipe_select_interrupter.hpp117
-rw-r--r--3rdParty/Boost/boost/asio/detail/pop_options.hpp88
-rw-r--r--3rdParty/Boost/boost/asio/detail/posix_event.hpp106
-rw-r--r--3rdParty/Boost/boost/asio/detail/posix_fd_set_adapter.hpp83
-rw-r--r--3rdParty/Boost/boost/asio/detail/posix_mutex.hpp109
-rw-r--r--3rdParty/Boost/boost/asio/detail/posix_signal_blocker.hpp92
-rw-r--r--3rdParty/Boost/boost/asio/detail/posix_thread.hpp131
-rw-r--r--3rdParty/Boost/boost/asio/detail/posix_tss_ptr.hpp90
-rw-r--r--3rdParty/Boost/boost/asio/detail/push_options.hpp114
-rw-r--r--3rdParty/Boost/boost/asio/detail/reactive_descriptor_service.hpp712
-rw-r--r--3rdParty/Boost/boost/asio/detail/reactive_serial_port_service.hpp270
-rw-r--r--3rdParty/Boost/boost/asio/detail/reactive_socket_service.hpp1788
-rw-r--r--3rdParty/Boost/boost/asio/detail/reactor_op_queue.hpp456
-rw-r--r--3rdParty/Boost/boost/asio/detail/resolver_service.hpp359
-rw-r--r--3rdParty/Boost/boost/asio/detail/scoped_lock.hpp93
-rw-r--r--3rdParty/Boost/boost/asio/detail/select_interrupter.hpp46
-rw-r--r--3rdParty/Boost/boost/asio/detail/select_reactor.hpp546
-rw-r--r--3rdParty/Boost/boost/asio/detail/select_reactor_fwd.hpp33
-rw-r--r--3rdParty/Boost/boost/asio/detail/service_base.hpp51
-rw-r--r--3rdParty/Boost/boost/asio/detail/service_id.hpp39
-rw-r--r--3rdParty/Boost/boost/asio/detail/service_registry.hpp228
-rw-r--r--3rdParty/Boost/boost/asio/detail/service_registry_fwd.hpp32
-rw-r--r--3rdParty/Boost/boost/asio/detail/signal_blocker.hpp52
-rw-r--r--3rdParty/Boost/boost/asio/detail/signal_init.hpp53
-rw-r--r--3rdParty/Boost/boost/asio/detail/socket_holder.hpp97
-rw-r--r--3rdParty/Boost/boost/asio/detail/socket_ops.hpp1913
-rw-r--r--3rdParty/Boost/boost/asio/detail/socket_option.hpp311
-rw-r--r--3rdParty/Boost/boost/asio/detail/socket_select_interrupter.hpp189
-rw-r--r--3rdParty/Boost/boost/asio/detail/socket_types.hpp212
-rw-r--r--3rdParty/Boost/boost/asio/detail/strand_service.hpp532
-rw-r--r--3rdParty/Boost/boost/asio/detail/task_io_service.hpp438
-rw-r--r--3rdParty/Boost/boost/asio/detail/task_io_service_2lock.hpp475
-rw-r--r--3rdParty/Boost/boost/asio/detail/task_io_service_fwd.hpp33
-rw-r--r--3rdParty/Boost/boost/asio/detail/thread.hpp60
-rw-r--r--3rdParty/Boost/boost/asio/detail/throw_error.hpp46
-rw-r--r--3rdParty/Boost/boost/asio/detail/timer_queue.hpp438
-rw-r--r--3rdParty/Boost/boost/asio/detail/timer_queue_base.hpp64
-rw-r--r--3rdParty/Boost/boost/asio/detail/tss_ptr.hpp67
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_event.hpp105
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_fd_set_adapter.hpp90
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_iocp_handle_service.hpp834
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_iocp_io_service.hpp738
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_iocp_io_service_fwd.hpp53
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp210
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_iocp_serial_port_service.hpp294
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_iocp_socket_service.hpp2417
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_mutex.hpp151
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_signal_blocker.hpp69
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_thread.hpp234
-rw-r--r--3rdParty/Boost/boost/asio/detail/win_tss_ptr.hpp97
-rw-r--r--3rdParty/Boost/boost/asio/detail/wince_thread.hpp126
-rw-r--r--3rdParty/Boost/boost/asio/detail/winsock_init.hpp122
-rw-r--r--3rdParty/Boost/boost/asio/detail/wrapped_handler.hpp211
-rw-r--r--3rdParty/Boost/boost/asio/error.hpp442
-rw-r--r--3rdParty/Boost/boost/asio/handler_alloc_hook.hpp90
-rw-r--r--3rdParty/Boost/boost/asio/handler_invoke_hook.hpp71
-rw-r--r--3rdParty/Boost/boost/asio/impl/io_service.ipp226
-rw-r--r--3rdParty/Boost/boost/asio/impl/read.ipp349
-rw-r--r--3rdParty/Boost/boost/asio/impl/read_at.ipp367
-rw-r--r--3rdParty/Boost/boost/asio/impl/read_until.ipp989
-rw-r--r--3rdParty/Boost/boost/asio/impl/serial_port_base.ipp543
-rw-r--r--3rdParty/Boost/boost/asio/impl/write.ipp296
-rw-r--r--3rdParty/Boost/boost/asio/impl/write_at.ipp313
-rw-r--r--3rdParty/Boost/boost/asio/io_service.hpp554
-rw-r--r--3rdParty/Boost/boost/asio/ip/address.hpp279
-rw-r--r--3rdParty/Boost/boost/asio/ip/address_v4.hpp309
-rw-r--r--3rdParty/Boost/boost/asio/ip/address_v6.hpp423
-rw-r--r--3rdParty/Boost/boost/asio/ip/basic_endpoint.hpp377
-rw-r--r--3rdParty/Boost/boost/asio/ip/basic_resolver.hpp248
-rw-r--r--3rdParty/Boost/boost/asio/ip/basic_resolver_entry.hpp97
-rw-r--r--3rdParty/Boost/boost/asio/ip/basic_resolver_iterator.hpp156
-rw-r--r--3rdParty/Boost/boost/asio/ip/basic_resolver_query.hpp151
-rw-r--r--3rdParty/Boost/boost/asio/ip/detail/socket_option.hpp580
-rw-r--r--3rdParty/Boost/boost/asio/ip/host_name.hpp64
-rw-r--r--3rdParty/Boost/boost/asio/ip/icmp.hpp120
-rw-r--r--3rdParty/Boost/boost/asio/ip/multicast.hpp183
-rw-r--r--3rdParty/Boost/boost/asio/ip/resolver_query_base.hpp111
-rw-r--r--3rdParty/Boost/boost/asio/ip/resolver_service.hpp142
-rw-r--r--3rdParty/Boost/boost/asio/ip/tcp.hpp160
-rw-r--r--3rdParty/Boost/boost/asio/ip/udp.hpp118
-rw-r--r--3rdParty/Boost/boost/asio/ip/unicast.hpp72
-rw-r--r--3rdParty/Boost/boost/asio/ip/v6_only.hpp70
-rw-r--r--3rdParty/Boost/boost/asio/is_read_buffered.hpp64
-rw-r--r--3rdParty/Boost/boost/asio/is_write_buffered.hpp64
-rw-r--r--3rdParty/Boost/boost/asio/local/basic_endpoint.hpp267
-rw-r--r--3rdParty/Boost/boost/asio/local/connect_pair.hpp102
-rw-r--r--3rdParty/Boost/boost/asio/local/datagram_protocol.hpp80
-rw-r--r--3rdParty/Boost/boost/asio/local/stream_protocol.hpp88
-rw-r--r--3rdParty/Boost/boost/asio/placeholders.hpp109
-rw-r--r--3rdParty/Boost/boost/asio/posix/basic_descriptor.hpp296
-rw-r--r--3rdParty/Boost/boost/asio/posix/basic_stream_descriptor.hpp306
-rw-r--r--3rdParty/Boost/boost/asio/posix/descriptor_base.hpp95
-rw-r--r--3rdParty/Boost/boost/asio/posix/stream_descriptor.hpp41
-rw-r--r--3rdParty/Boost/boost/asio/posix/stream_descriptor_service.hpp202
-rw-r--r--3rdParty/Boost/boost/asio/raw_socket_service.hpp325
-rw-r--r--3rdParty/Boost/boost/asio/read.hpp528
-rw-r--r--3rdParty/Boost/boost/asio/read_at.hpp570
-rw-r--r--3rdParty/Boost/boost/asio/read_until.hpp841
-rw-r--r--3rdParty/Boost/boost/asio/serial_port.hpp40
-rw-r--r--3rdParty/Boost/boost/asio/serial_port_base.hpp175
-rw-r--r--3rdParty/Boost/boost/asio/serial_port_service.hpp218
-rw-r--r--3rdParty/Boost/boost/asio/socket_acceptor_service.hpp227
-rw-r--r--3rdParty/Boost/boost/asio/socket_base.hpp517
-rw-r--r--3rdParty/Boost/boost/asio/strand.hpp188
-rw-r--r--3rdParty/Boost/boost/asio/stream_socket_service.hpp288
-rw-r--r--3rdParty/Boost/boost/asio/streambuf.hpp33
-rw-r--r--3rdParty/Boost/boost/asio/time_traits.hpp80
-rw-r--r--3rdParty/Boost/boost/asio/version.hpp23
-rw-r--r--3rdParty/Boost/boost/asio/windows/basic_handle.hpp227
-rw-r--r--3rdParty/Boost/boost/asio/windows/basic_random_access_handle.hpp322
-rw-r--r--3rdParty/Boost/boost/asio/windows/basic_stream_handle.hpp304
-rw-r--r--3rdParty/Boost/boost/asio/windows/overlapped_ptr.hpp120
-rw-r--r--3rdParty/Boost/boost/asio/windows/random_access_handle.hpp41
-rw-r--r--3rdParty/Boost/boost/asio/windows/random_access_handle_service.hpp181
-rw-r--r--3rdParty/Boost/boost/asio/windows/stream_handle.hpp41
-rw-r--r--3rdParty/Boost/boost/asio/windows/stream_handle_service.hpp179
-rw-r--r--3rdParty/Boost/boost/asio/write.hpp522
-rw-r--r--3rdParty/Boost/boost/asio/write_at.hpp557
-rw-r--r--3rdParty/Boost/boost/assert.hpp50
-rw-r--r--3rdParty/Boost/boost/bind.hpp24
-rw-r--r--3rdParty/Boost/boost/bind/arg.hpp62
-rw-r--r--3rdParty/Boost/boost/bind/bind.hpp1733
-rw-r--r--3rdParty/Boost/boost/bind/bind_cc.hpp117
-rw-r--r--3rdParty/Boost/boost/bind/bind_mf2_cc.hpp228
-rw-r--r--3rdParty/Boost/boost/bind/bind_mf_cc.hpp227
-rw-r--r--3rdParty/Boost/boost/bind/bind_template.hpp345
-rw-r--r--3rdParty/Boost/boost/bind/mem_fn.hpp389
-rw-r--r--3rdParty/Boost/boost/bind/mem_fn_cc.hpp103
-rw-r--r--3rdParty/Boost/boost/bind/mem_fn_template.hpp1020
-rw-r--r--3rdParty/Boost/boost/bind/mem_fn_vw.hpp130
-rw-r--r--3rdParty/Boost/boost/bind/placeholders.hpp69
-rw-r--r--3rdParty/Boost/boost/bind/storage.hpp475
-rw-r--r--3rdParty/Boost/boost/call_traits.hpp24
-rw-r--r--3rdParty/Boost/boost/cerrno.hpp331
-rw-r--r--3rdParty/Boost/boost/checked_delete.hpp69
-rw-r--r--3rdParty/Boost/boost/concept/assert.hpp46
-rw-r--r--3rdParty/Boost/boost/concept/detail/borland.hpp29
-rw-r--r--3rdParty/Boost/boost/concept/detail/concept_def.hpp51
-rw-r--r--3rdParty/Boost/boost/concept/detail/concept_undef.hpp5
-rw-r--r--3rdParty/Boost/boost/concept/detail/general.hpp66
-rw-r--r--3rdParty/Boost/boost/concept/detail/has_constraints.hpp48
-rw-r--r--3rdParty/Boost/boost/concept/detail/msvc.hpp92
-rw-r--r--3rdParty/Boost/boost/concept/usage.hpp43
-rw-r--r--3rdParty/Boost/boost/concept_check.hpp998
-rw-r--r--3rdParty/Boost/boost/config.hpp70
-rw-r--r--3rdParty/Boost/boost/config/abi/borland_prefix.hpp27
-rw-r--r--3rdParty/Boost/boost/config/abi/borland_suffix.hpp12
-rw-r--r--3rdParty/Boost/boost/config/abi/msvc_prefix.hpp22
-rw-r--r--3rdParty/Boost/boost/config/abi/msvc_suffix.hpp8
-rw-r--r--3rdParty/Boost/boost/config/abi_prefix.hpp25
-rw-r--r--3rdParty/Boost/boost/config/abi_suffix.hpp27
-rw-r--r--3rdParty/Boost/boost/config/auto_link.hpp373
-rw-r--r--3rdParty/Boost/boost/config/compiler/borland.hpp267
-rw-r--r--3rdParty/Boost/boost/config/compiler/codegear.hpp153
-rw-r--r--3rdParty/Boost/boost/config/compiler/comeau.hpp59
-rw-r--r--3rdParty/Boost/boost/config/compiler/common_edg.hpp90
-rw-r--r--3rdParty/Boost/boost/config/compiler/compaq_cxx.hpp19
-rw-r--r--3rdParty/Boost/boost/config/compiler/digitalmars.hpp87
-rw-r--r--3rdParty/Boost/boost/config/compiler/gcc.hpp177
-rw-r--r--3rdParty/Boost/boost/config/compiler/gcc_xml.hpp30
-rw-r--r--3rdParty/Boost/boost/config/compiler/greenhills.hpp28
-rw-r--r--3rdParty/Boost/boost/config/compiler/hp_acc.hpp117
-rw-r--r--3rdParty/Boost/boost/config/compiler/intel.hpp195
-rw-r--r--3rdParty/Boost/boost/config/compiler/kai.hpp35
-rw-r--r--3rdParty/Boost/boost/config/compiler/metrowerks.hpp131
-rw-r--r--3rdParty/Boost/boost/config/compiler/mpw.hpp75
-rw-r--r--3rdParty/Boost/boost/config/compiler/pgi.hpp56
-rw-r--r--3rdParty/Boost/boost/config/compiler/sgi_mipspro.hpp52
-rw-r--r--3rdParty/Boost/boost/config/compiler/sunpro_cc.hpp124
-rw-r--r--3rdParty/Boost/boost/config/compiler/vacpp.hpp82
-rw-r--r--3rdParty/Boost/boost/config/compiler/visualc.hpp241
-rw-r--r--3rdParty/Boost/boost/config/no_tr1/cmath.hpp28
-rw-r--r--3rdParty/Boost/boost/config/no_tr1/complex.hpp28
-rw-r--r--3rdParty/Boost/boost/config/no_tr1/functional.hpp28
-rw-r--r--3rdParty/Boost/boost/config/no_tr1/memory.hpp28
-rw-r--r--3rdParty/Boost/boost/config/no_tr1/utility.hpp28
-rw-r--r--3rdParty/Boost/boost/config/platform/aix.hpp33
-rw-r--r--3rdParty/Boost/boost/config/platform/amigaos.hpp15
-rw-r--r--3rdParty/Boost/boost/config/platform/beos.hpp26
-rw-r--r--3rdParty/Boost/boost/config/platform/bsd.hpp86
-rw-r--r--3rdParty/Boost/boost/config/platform/cygwin.hpp51
-rw-r--r--3rdParty/Boost/boost/config/platform/hpux.hpp87
-rw-r--r--3rdParty/Boost/boost/config/platform/irix.hpp31
-rw-r--r--3rdParty/Boost/boost/config/platform/linux.hpp98
-rw-r--r--3rdParty/Boost/boost/config/platform/macos.hpp86
-rw-r--r--3rdParty/Boost/boost/config/platform/qnxnto.hpp31
-rw-r--r--3rdParty/Boost/boost/config/platform/solaris.hpp28
-rw-r--r--3rdParty/Boost/boost/config/platform/win32.hpp58
-rw-r--r--3rdParty/Boost/boost/config/posix_features.hpp95
-rw-r--r--3rdParty/Boost/boost/config/requires_threads.hpp92
-rw-r--r--3rdParty/Boost/boost/config/select_compiler_config.hpp119
-rw-r--r--3rdParty/Boost/boost/config/select_platform_config.hpp90
-rw-r--r--3rdParty/Boost/boost/config/select_stdlib_config.hpp68
-rw-r--r--3rdParty/Boost/boost/config/stdlib/dinkumware.hpp111
-rw-r--r--3rdParty/Boost/boost/config/stdlib/libcomo.hpp50
-rw-r--r--3rdParty/Boost/boost/config/stdlib/libstdcpp3.hpp83
-rw-r--r--3rdParty/Boost/boost/config/stdlib/modena.hpp34
-rw-r--r--3rdParty/Boost/boost/config/stdlib/msl.hpp63
-rw-r--r--3rdParty/Boost/boost/config/stdlib/roguewave.hpp159
-rw-r--r--3rdParty/Boost/boost/config/stdlib/sgi.hpp112
-rw-r--r--3rdParty/Boost/boost/config/stdlib/stlport.hpp206
-rw-r--r--3rdParty/Boost/boost/config/stdlib/vacpp.hpp19
-rw-r--r--3rdParty/Boost/boost/config/suffix.hpp593
-rw-r--r--3rdParty/Boost/boost/config/user.hpp124
-rw-r--r--3rdParty/Boost/boost/config/warning_disable.hpp47
-rw-r--r--3rdParty/Boost/boost/cregex.hpp39
-rw-r--r--3rdParty/Boost/boost/cstdint.hpp446
-rw-r--r--3rdParty/Boost/boost/current_function.hpp67
-rw-r--r--3rdParty/Boost/boost/date_time/adjust_functors.hpp178
-rw-r--r--3rdParty/Boost/boost/date_time/c_time.hpp105
-rw-r--r--3rdParty/Boost/boost/date_time/compiler_config.hpp171
-rw-r--r--3rdParty/Boost/boost/date_time/constrained_value.hpp121
-rw-r--r--3rdParty/Boost/boost/date_time/date.hpp197
-rw-r--r--3rdParty/Boost/boost/date_time/date_clock_device.hpp77
-rw-r--r--3rdParty/Boost/boost/date_time/date_defs.hpp26
-rw-r--r--3rdParty/Boost/boost/date_time/date_duration.hpp146
-rw-r--r--3rdParty/Boost/boost/date_time/date_duration_types.hpp269
-rw-r--r--3rdParty/Boost/boost/date_time/date_facet.hpp781
-rw-r--r--3rdParty/Boost/boost/date_time/date_format_simple.hpp159
-rw-r--r--3rdParty/Boost/boost/date_time/date_formatting.hpp127
-rw-r--r--3rdParty/Boost/boost/date_time/date_formatting_limited.hpp121
-rw-r--r--3rdParty/Boost/boost/date_time/date_formatting_locales.hpp233
-rw-r--r--3rdParty/Boost/boost/date_time/date_generator_formatter.hpp265
-rw-r--r--3rdParty/Boost/boost/date_time/date_generator_parser.hpp330
-rw-r--r--3rdParty/Boost/boost/date_time/date_generators.hpp509
-rw-r--r--3rdParty/Boost/boost/date_time/date_iterator.hpp101
-rw-r--r--3rdParty/Boost/boost/date_time/date_names_put.hpp320
-rw-r--r--3rdParty/Boost/boost/date_time/date_parsing.hpp300
-rw-r--r--3rdParty/Boost/boost/date_time/dst_rules.hpp391
-rw-r--r--3rdParty/Boost/boost/date_time/filetime_functions.hpp172
-rw-r--r--3rdParty/Boost/boost/date_time/format_date_parser.hpp743
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/conversion.hpp76
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/formatters.hpp162
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/formatters_limited.hpp81
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_calendar.hpp47
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_date.hpp136
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_day.hpp57
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_day_of_year.hpp38
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_duration.hpp134
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_duration_types.hpp43
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_facet.hpp354
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_month.hpp105
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_weekday.hpp66
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_year.hpp53
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/greg_ymd.hpp33
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/gregorian.hpp38
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/gregorian_io.hpp784
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/gregorian_types.hpp109
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian/parsers.hpp91
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian_calendar.hpp70
-rw-r--r--3rdParty/Boost/boost/date_time/gregorian_calendar.ipp219
-rw-r--r--3rdParty/Boost/boost/date_time/int_adapter.hpp509
-rw-r--r--3rdParty/Boost/boost/date_time/iso_format.hpp303
-rw-r--r--3rdParty/Boost/boost/date_time/locale_config.hpp31
-rw-r--r--3rdParty/Boost/boost/date_time/microsec_time_clock.hpp127
-rw-r--r--3rdParty/Boost/boost/date_time/parse_format_base.hpp29
-rw-r--r--3rdParty/Boost/boost/date_time/period.hpp377
-rw-r--r--3rdParty/Boost/boost/date_time/period_formatter.hpp196
-rw-r--r--3rdParty/Boost/boost/date_time/period_parser.hpp198
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/conversion.hpp97
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/date_duration_operators.hpp114
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time.hpp39
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time_config.hpp178
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time_duration.hpp82
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time_io.hpp239
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time_legacy_io.hpp153
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time_system.hpp68
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/posix_time_types.hpp55
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/ptime.hpp65
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/time_formatters.hpp289
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/time_formatters_limited.hpp211
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/time_parsers.hpp44
-rw-r--r--3rdParty/Boost/boost/date_time/posix_time/time_period.hpp29
-rw-r--r--3rdParty/Boost/boost/date_time/special_defs.hpp25
-rw-r--r--3rdParty/Boost/boost/date_time/special_values_formatter.hpp96
-rw-r--r--3rdParty/Boost/boost/date_time/special_values_parser.hpp159
-rw-r--r--3rdParty/Boost/boost/date_time/string_convert.hpp33
-rw-r--r--3rdParty/Boost/boost/date_time/string_parse_tree.hpp278
-rw-r--r--3rdParty/Boost/boost/date_time/strings_from_facet.hpp125
-rw-r--r--3rdParty/Boost/boost/date_time/time.hpp191
-rw-r--r--3rdParty/Boost/boost/date_time/time_clock.hpp83
-rw-r--r--3rdParty/Boost/boost/date_time/time_defs.hpp43
-rw-r--r--3rdParty/Boost/boost/date_time/time_duration.hpp281
-rw-r--r--3rdParty/Boost/boost/date_time/time_facet.hpp1327
-rw-r--r--3rdParty/Boost/boost/date_time/time_formatting_streams.hpp122
-rw-r--r--3rdParty/Boost/boost/date_time/time_iterator.hpp52
-rw-r--r--3rdParty/Boost/boost/date_time/time_parsing.hpp321
-rw-r--r--3rdParty/Boost/boost/date_time/time_resolution_traits.hpp140
-rw-r--r--3rdParty/Boost/boost/date_time/time_system_counted.hpp254
-rw-r--r--3rdParty/Boost/boost/date_time/time_system_split.hpp207
-rw-r--r--3rdParty/Boost/boost/date_time/wrapping_int.hpp169
-rw-r--r--3rdParty/Boost/boost/date_time/year_month_day.hpp45
-rw-r--r--3rdParty/Boost/boost/detail/atomic_count.hpp21
-rw-r--r--3rdParty/Boost/boost/detail/call_traits.hpp164
-rw-r--r--3rdParty/Boost/boost/detail/container_fwd.hpp99
-rw-r--r--3rdParty/Boost/boost/detail/endian.hpp73
-rw-r--r--3rdParty/Boost/boost/detail/indirect_traits.hpp487
-rw-r--r--3rdParty/Boost/boost/detail/interlocked.hpp130
-rw-r--r--3rdParty/Boost/boost/detail/is_function_ref_tester.hpp135
-rw-r--r--3rdParty/Boost/boost/detail/iterator.hpp494
-rw-r--r--3rdParty/Boost/boost/detail/lcast_precision.hpp184
-rw-r--r--3rdParty/Boost/boost/detail/lightweight_mutex.hpp22
-rw-r--r--3rdParty/Boost/boost/detail/limits.hpp449
-rw-r--r--3rdParty/Boost/boost/detail/ob_call_traits.hpp168
-rw-r--r--3rdParty/Boost/boost/detail/reference_content.hpp141
-rw-r--r--3rdParty/Boost/boost/detail/sp_typeinfo.hpp83
-rw-r--r--3rdParty/Boost/boost/detail/utf8_codecvt_facet.hpp197
-rw-r--r--3rdParty/Boost/boost/detail/workaround.hpp262
-rw-r--r--3rdParty/Boost/boost/enable_shared_from_this.hpp18
-rw-r--r--3rdParty/Boost/boost/exception/exception.hpp396
-rw-r--r--3rdParty/Boost/boost/filesystem.hpp20
-rw-r--r--3rdParty/Boost/boost/filesystem/config.hpp113
-rw-r--r--3rdParty/Boost/boost/filesystem/convenience.hpp306
-rw-r--r--3rdParty/Boost/boost/filesystem/fstream.hpp584
-rw-r--r--3rdParty/Boost/boost/filesystem/operations.hpp1173
-rw-r--r--3rdParty/Boost/boost/filesystem/path.hpp1507
-rw-r--r--3rdParty/Boost/boost/foreach.hpp1099
-rw-r--r--3rdParty/Boost/boost/function.hpp66
-rw-r--r--3rdParty/Boost/boost/function/detail/function_iterate.hpp16
-rw-r--r--3rdParty/Boost/boost/function/detail/gen_maybe_include.pl37
-rw-r--r--3rdParty/Boost/boost/function/detail/maybe_include.hpp267
-rw-r--r--3rdParty/Boost/boost/function/detail/prologue.hpp26
-rw-r--r--3rdParty/Boost/boost/function/function0.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function1.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function10.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function2.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function3.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function4.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function5.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function6.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function7.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function8.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function9.hpp12
-rw-r--r--3rdParty/Boost/boost/function/function_base.hpp880
-rw-r--r--3rdParty/Boost/boost/function/function_fwd.hpp70
-rw-r--r--3rdParty/Boost/boost/function/function_template.hpp1134
-rw-r--r--3rdParty/Boost/boost/function/function_typeof.hpp45
-rw-r--r--3rdParty/Boost/boost/function/gen_function_N.pl26
-rw-r--r--3rdParty/Boost/boost/function_equal.hpp28
-rw-r--r--3rdParty/Boost/boost/functional/hash.hpp7
-rw-r--r--3rdParty/Boost/boost/functional/hash/detail/float_functions.hpp162
-rw-r--r--3rdParty/Boost/boost/functional/hash/detail/hash_float.hpp197
-rw-r--r--3rdParty/Boost/boost/functional/hash/extensions.hpp182
-rw-r--r--3rdParty/Boost/boost/functional/hash/hash.hpp529
-rw-r--r--3rdParty/Boost/boost/functional/hash/hash_fwd.hpp40
-rw-r--r--3rdParty/Boost/boost/get_pointer.hpp33
-rw-r--r--3rdParty/Boost/boost/implicit_cast.hpp29
-rw-r--r--3rdParty/Boost/boost/integer/static_log2.hpp132
-rw-r--r--3rdParty/Boost/boost/integer_traits.hpp236
-rw-r--r--3rdParty/Boost/boost/intrusive_ptr.hpp18
-rw-r--r--3rdParty/Boost/boost/io/ios_state.hpp431
-rw-r--r--3rdParty/Boost/boost/io_fwd.hpp67
-rw-r--r--3rdParty/Boost/boost/is_placeholder.hpp31
-rw-r--r--3rdParty/Boost/boost/iterator.hpp59
-rw-r--r--3rdParty/Boost/boost/iterator/detail/config_def.hpp137
-rw-r--r--3rdParty/Boost/boost/iterator/detail/config_undef.hpp25
-rw-r--r--3rdParty/Boost/boost/iterator/detail/enable_if.hpp86
-rw-r--r--3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp200
-rw-r--r--3rdParty/Boost/boost/iterator/detail/minimum_category.hpp116
-rw-r--r--3rdParty/Boost/boost/iterator/interoperable.hpp50
-rw-r--r--3rdParty/Boost/boost/iterator/iterator_adaptor.hpp371
-rw-r--r--3rdParty/Boost/boost/iterator/iterator_categories.hpp188
-rw-r--r--3rdParty/Boost/boost/iterator/iterator_facade.hpp878
-rw-r--r--3rdParty/Boost/boost/iterator/iterator_traits.hpp92
-rw-r--r--3rdParty/Boost/boost/iterator/reverse_iterator.hpp69
-rw-r--r--3rdParty/Boost/boost/iterator/transform_iterator.hpp188
-rw-r--r--3rdParty/Boost/boost/last_value.hpp54
-rw-r--r--3rdParty/Boost/boost/lexical_cast.hpp1216
-rw-r--r--3rdParty/Boost/boost/limits.hpp146
-rw-r--r--3rdParty/Boost/boost/mem_fn.hpp24
-rw-r--r--3rdParty/Boost/boost/memory_order.hpp35
-rw-r--r--3rdParty/Boost/boost/mpl/O1_size_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/advance.hpp76
-rw-r--r--3rdParty/Boost/boost/mpl/advance_fwd.hpp28
-rw-r--r--3rdParty/Boost/boost/mpl/always.hpp39
-rw-r--r--3rdParty/Boost/boost/mpl/and.hpp60
-rw-r--r--3rdParty/Boost/boost/mpl/apply.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/apply_fwd.hpp107
-rw-r--r--3rdParty/Boost/boost/mpl/apply_wrap.hpp234
-rw-r--r--3rdParty/Boost/boost/mpl/arg.hpp131
-rw-r--r--3rdParty/Boost/boost/mpl/arg_fwd.hpp28
-rw-r--r--3rdParty/Boost/boost/mpl/assert.hpp370
-rw-r--r--3rdParty/Boost/boost/mpl/at.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/at_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/adl_barrier.hpp48
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/advance_backward.hpp128
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/advance_forward.hpp127
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/arg_typedef.hpp31
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/arithmetic_op.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/arity.hpp39
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/arity_spec.hpp67
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/at_impl.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/begin_end_impl.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/common_name_wknd.hpp34
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/comparison_op.hpp83
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/adl.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/arrays.hpp30
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/bcc.hpp28
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/bind.hpp33
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/compiler.hpp66
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/ctps.hpp30
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/dtp.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/eti.hpp47
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/forwarding.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/gcc.hpp23
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/has_apply.hpp32
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/has_xxx.hpp33
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/integral.hpp38
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/intel.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/lambda.hpp32
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/msvc.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/msvc_typename.hpp26
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/nttp.hpp41
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/overload_resolution.hpp29
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/pp_counter.hpp26
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/preprocessor.hpp39
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/static_constant.hpp25
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/ttp.hpp41
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/typeof.hpp38
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/use_preprocessed.hpp19
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/config/workaround.hpp19
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/count_args.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/full_lambda.hpp354
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/has_apply.hpp32
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/has_begin.hpp23
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/has_rebind.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/has_tag.hpp23
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/has_type.hpp23
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/include_preprocessed.hpp42
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/integral_wrapper.hpp93
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/is_msvc_eti_arg.hpp64
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/lambda_arity_param.hpp25
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/lambda_no_ctps.hpp193
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/lambda_support.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/largest_int.hpp63
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/logical_op.hpp165
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/msvc_dtw.hpp68
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/msvc_eti_base.hpp77
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/msvc_is_class.hpp58
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/msvc_never_true.hpp34
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/msvc_type.hpp62
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/na.hpp95
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/na_assert.hpp34
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/na_fwd.hpp31
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/na_spec.hpp175
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/nested_type_wknd.hpp48
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/nttp_decl.hpp35
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/numeric_cast_utils.hpp77
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/numeric_op.hpp315
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp461
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/arg.hpp117
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp300
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind.hpp397
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitand.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/divides.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp558
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/inherit.hpp139
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/minus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/plus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/quote.hpp119
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/times.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp456
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp306
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind.hpp403
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/divides.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp558
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/minus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/plus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/quote.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/times.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp456
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp117
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp300
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp397
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp558
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp139
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp84
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp406
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind.hpp515
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp53
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitand.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/divides.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp536
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/inherit.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/minus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/plus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/quote.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/times.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp84
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp440
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind.hpp561
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitand.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/divides.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp558
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/inherit.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/minus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/plus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/quote.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/times.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp132
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp132
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/and.hpp73
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply.hpp166
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp247
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind.hpp432
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp149
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp149
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp149
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/deque.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/divides.hpp148
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp293
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp554
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp166
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp293
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/map.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/minus.hpp148
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp115
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/or.hpp73
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/plus.hpp148
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/quote.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp343
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp343
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp114
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp114
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/times.hpp148
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp109
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/and.hpp71
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply.hpp160
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp138
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind.hpp432
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp151
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp151
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp151
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/deque.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/divides.hpp150
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp245
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp554
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp166
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp245
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/map.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/minus.hpp150
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp115
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp102
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/or.hpp71
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/plus.hpp150
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/quote.hpp116
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp114
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp114
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/times.hpp150
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp109
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp456
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp440
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind.hpp561
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp147
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/divides.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp554
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/minus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/plus.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/quote.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/times.hpp146
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/and.hpp73
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp268
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp50
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp78
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp486
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp590
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp134
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp134
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp134
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp245
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp554
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp166
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp245
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/map.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp101
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/or.hpp73
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp116
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp295
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/times.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp109
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp556
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp534
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/and.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp169
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp84
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp369
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp466
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp157
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp157
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp157
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp156
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp98
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp554
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp98
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp98
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp229
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less.hpp98
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp98
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp156
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp111
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp98
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/or.hpp69
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp156
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp110
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp110
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/times.hpp156
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/and.hpp64
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply.hpp139
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp84
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/arg.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp440
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind.hpp561
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitand.hpp142
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitor.hpp142
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitxor.hpp142
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/deque.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/divides.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/equal_to.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp554
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/inherit.hpp125
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp133
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp180
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp228
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less_equal.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/map.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/minus.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/modulus.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp92
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/or.hpp64
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/placeholders.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/plus.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/quote.hpp123
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set_c.hpp328
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_left.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_right.hpp97
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/template_arity.hpp11
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/times.hpp141
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp94
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector.hpp323
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector_c.hpp309
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/add.hpp65
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp105
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/default_params.hpp67
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/enum.hpp62
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/ext_params.hpp78
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/filter_params.hpp28
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/params.hpp65
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/partial_spec_params.hpp32
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/range.hpp23
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/repeat.hpp51
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/sub.hpp65
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/preprocessor/tuple.hpp29
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/sequence_wrapper.hpp292
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/static_cast.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/template_arity.hpp189
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/template_arity_fwd.hpp23
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/traits_lambda_spec.hpp63
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/type_wrapper.hpp47
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/value_wknd.hpp89
-rw-r--r--3rdParty/Boost/boost/mpl/aux_/yes_no.hpp58
-rw-r--r--3rdParty/Boost/boost/mpl/back_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/begin_end.hpp57
-rw-r--r--3rdParty/Boost/boost/mpl/begin_end_fwd.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/bind.hpp551
-rw-r--r--3rdParty/Boost/boost/mpl/bind_fwd.hpp99
-rw-r--r--3rdParty/Boost/boost/mpl/bool.hpp39
-rw-r--r--3rdParty/Boost/boost/mpl/bool_fwd.hpp33
-rw-r--r--3rdParty/Boost/boost/mpl/clear_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/deref.hpp41
-rw-r--r--3rdParty/Boost/boost/mpl/distance_fwd.hpp28
-rw-r--r--3rdParty/Boost/boost/mpl/empty_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/equal_to.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/eval_if.hpp71
-rw-r--r--3rdParty/Boost/boost/mpl/front_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/has_xxx.hpp274
-rw-r--r--3rdParty/Boost/boost/mpl/identity.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/if.hpp135
-rw-r--r--3rdParty/Boost/boost/mpl/int.hpp22
-rw-r--r--3rdParty/Boost/boost/mpl/int_fwd.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/integral_c.hpp51
-rw-r--r--3rdParty/Boost/boost/mpl/integral_c_fwd.hpp32
-rw-r--r--3rdParty/Boost/boost/mpl/integral_c_tag.hpp26
-rw-r--r--3rdParty/Boost/boost/mpl/is_placeholder.hpp67
-rw-r--r--3rdParty/Boost/boost/mpl/iterator_tags.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/lambda.hpp29
-rw-r--r--3rdParty/Boost/boost/mpl/lambda_fwd.hpp57
-rw-r--r--3rdParty/Boost/boost/mpl/less.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/limits/arity.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/limits/unrolling.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/limits/vector.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/logical.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/long.hpp22
-rw-r--r--3rdParty/Boost/boost/mpl/long_fwd.hpp27
-rw-r--r--3rdParty/Boost/boost/mpl/minus.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/multiplies.hpp53
-rw-r--r--3rdParty/Boost/boost/mpl/negate.hpp81
-rw-r--r--3rdParty/Boost/boost/mpl/next.hpp19
-rw-r--r--3rdParty/Boost/boost/mpl/next_prior.hpp49
-rw-r--r--3rdParty/Boost/boost/mpl/not.hpp51
-rw-r--r--3rdParty/Boost/boost/mpl/numeric_cast.hpp41
-rw-r--r--3rdParty/Boost/boost/mpl/or.hpp61
-rw-r--r--3rdParty/Boost/boost/mpl/placeholders.hpp100
-rw-r--r--3rdParty/Boost/boost/mpl/plus.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/pop_back_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/pop_front_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/prior.hpp19
-rw-r--r--3rdParty/Boost/boost/mpl/protect.hpp55
-rw-r--r--3rdParty/Boost/boost/mpl/push_back_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/push_front_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/quote.hpp151
-rw-r--r--3rdParty/Boost/boost/mpl/sequence_tag.hpp124
-rw-r--r--3rdParty/Boost/boost/mpl/sequence_tag_fwd.hpp26
-rw-r--r--3rdParty/Boost/boost/mpl/size_fwd.hpp24
-rw-r--r--3rdParty/Boost/boost/mpl/size_t.hpp25
-rw-r--r--3rdParty/Boost/boost/mpl/size_t_fwd.hpp28
-rw-r--r--3rdParty/Boost/boost/mpl/tag.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/times.hpp21
-rw-r--r--3rdParty/Boost/boost/mpl/vector.hpp57
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/O1_size.hpp56
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/at.hpp116
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/back.hpp59
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/begin_end.hpp49
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/clear.hpp55
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/empty.hpp68
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/front.hpp56
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/include_preprocessed.hpp55
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/item.hpp103
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/iterator.hpp130
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/numbered.hpp218
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/numbered_c.hpp77
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/pop_back.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/pop_front.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp1528
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp149
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp1804
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp195
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp2124
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp238
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp2444
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp281
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp2764
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp325
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp829
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp149
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp1144
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp195
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp1464
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp238
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp1784
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp281
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp2104
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp325
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp139
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp154
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp159
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp163
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp179
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp173
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp199
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp183
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp219
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp193
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/push_back.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/push_front.hpp40
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/size.hpp49
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/tag.hpp32
-rw-r--r--3rdParty/Boost/boost/mpl/vector/aux_/vector0.hpp52
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector0.hpp34
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector0_c.hpp31
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector10.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector10_c.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector20.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector20_c.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector30.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector30_c.hpp47
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector40.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector40_c.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector50.hpp45
-rw-r--r--3rdParty/Boost/boost/mpl/vector/vector50_c.hpp46
-rw-r--r--3rdParty/Boost/boost/mpl/void.hpp76
-rw-r--r--3rdParty/Boost/boost/mpl/void_fwd.hpp26
-rw-r--r--3rdParty/Boost/boost/next_prior.hpp51
-rw-r--r--3rdParty/Boost/boost/non_type.hpp27
-rw-r--r--3rdParty/Boost/boost/noncopyable.hpp36
-rw-r--r--3rdParty/Boost/boost/none.hpp28
-rw-r--r--3rdParty/Boost/boost/none_t.hpp24
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/bounds.hpp24
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/cast.hpp51
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/conversion_traits.hpp39
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/converter.hpp68
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/converter_policies.hpp186
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/bounds.hpp58
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/conversion_traits.hpp97
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/converter.hpp602
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/int_float_mixture.hpp72
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/is_subranged.hpp234
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/meta.hpp120
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/old_numeric_cast.hpp339
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/sign_mixture.hpp72
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp69
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/int_float_mixture_enum.hpp29
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/sign_mixture_enum.hpp29
-rw-r--r--3rdParty/Boost/boost/numeric/conversion/udt_builtin_mixture_enum.hpp26
-rw-r--r--3rdParty/Boost/boost/operators.hpp943
-rw-r--r--3rdParty/Boost/boost/optional.hpp18
-rw-r--r--3rdParty/Boost/boost/optional/optional.hpp922
-rw-r--r--3rdParty/Boost/boost/optional/optional_fwd.hpp22
-rw-r--r--3rdParty/Boost/boost/preprocessor/arithmetic/add.hpp51
-rw-r--r--3rdParty/Boost/boost/preprocessor/arithmetic/dec.hpp288
-rw-r--r--3rdParty/Boost/boost/preprocessor/arithmetic/detail/div_base.hpp61
-rw-r--r--3rdParty/Boost/boost/preprocessor/arithmetic/inc.hpp288
-rw-r--r--3rdParty/Boost/boost/preprocessor/arithmetic/mod.hpp39
-rw-r--r--3rdParty/Boost/boost/preprocessor/arithmetic/sub.hpp50
-rw-r--r--3rdParty/Boost/boost/preprocessor/array/data.hpp28
-rw-r--r--3rdParty/Boost/boost/preprocessor/array/elem.hpp29
-rw-r--r--3rdParty/Boost/boost/preprocessor/array/size.hpp28
-rw-r--r--3rdParty/Boost/boost/preprocessor/cat.hpp35
-rw-r--r--3rdParty/Boost/boost/preprocessor/comma_if.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/comparison/less_equal.hpp39
-rw-r--r--3rdParty/Boost/boost/preprocessor/config/config.hpp70
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/deduce_d.hpp22
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/detail/dmc/while.hpp536
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/detail/edg/while.hpp534
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/detail/msvc/while.hpp277
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/detail/while.hpp536
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/expr_if.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/expr_iif.hpp31
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/if.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/iif.hpp34
-rw-r--r--3rdParty/Boost/boost/preprocessor/control/while.hpp312
-rw-r--r--3rdParty/Boost/boost/preprocessor/debug/error.hpp33
-rw-r--r--3rdParty/Boost/boost/preprocessor/dec.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/detail/auto_rec.hpp293
-rw-r--r--3rdParty/Boost/boost/preprocessor/detail/check.hpp48
-rw-r--r--3rdParty/Boost/boost/preprocessor/detail/dmc/auto_rec.hpp286
-rw-r--r--3rdParty/Boost/boost/preprocessor/detail/is_binary.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/detail/is_unary.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/empty.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/enum.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/enum_params.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/enum_params_with_a_default.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/enum_shifted_params.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/expr_if.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/facilities/empty.hpp21
-rw-r--r--3rdParty/Boost/boost/preprocessor/facilities/identity.hpp23
-rw-r--r--3rdParty/Boost/boost/preprocessor/facilities/intercept.hpp277
-rw-r--r--3rdParty/Boost/boost/preprocessor/identity.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/if.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/inc.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/iterate.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower1.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower2.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower3.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower4.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower5.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper1.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper2.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper3.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper4.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper5.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/finish.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward1.hpp1342
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward2.hpp1338
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward3.hpp1338
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward4.hpp1338
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward5.hpp1338
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp1296
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp1296
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp1296
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp1296
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp1296
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/local.hpp812
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/rlocal.hpp782
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/self.hpp21
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/detail/start.hpp99
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/iterate.hpp82
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/local.hpp26
-rw-r--r--3rdParty/Boost/boost/preprocessor/iteration/self.hpp19
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/adt.hpp73
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/append.hpp40
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/detail/dmc/fold_left.hpp279
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_left.hpp536
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_right.hpp794
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/detail/fold_left.hpp279
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/detail/fold_right.hpp277
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/fold_left.hpp303
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/fold_right.hpp40
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/for_each_i.hpp65
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/reverse.hpp40
-rw-r--r--3rdParty/Boost/boost/preprocessor/list/transform.hpp49
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/and.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/bitand.hpp38
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/bitor.hpp38
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/bool.hpp288
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/compl.hpp36
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/not.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/logical/or.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/punctuation/comma.hpp21
-rw-r--r--3rdParty/Boost/boost/preprocessor/punctuation/comma_if.hpp31
-rw-r--r--3rdParty/Boost/boost/preprocessor/repeat.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/repeat_from_to.hpp17
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/detail/dmc/for.hpp536
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/detail/edg/for.hpp534
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/detail/for.hpp536
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/detail/msvc/for.hpp277
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum.hpp66
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum_binary_params.hpp54
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum_params.hpp41
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp25
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum_shifted_params.hpp44
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum_trailing.hpp63
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/enum_trailing_params.hpp38
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/for.hpp306
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/repeat.hpp825
-rw-r--r--3rdParty/Boost/boost/preprocessor/repetition/repeat_from_to.hpp87
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/cat.hpp48
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/detail/split.hpp284
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/elem.hpp304
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/enum.hpp288
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/first_n.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/fold_left.hpp1070
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/for_each_i.hpp61
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/rest_n.hpp30
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/seq.hpp44
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/size.hpp548
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/subseq.hpp28
-rw-r--r--3rdParty/Boost/boost/preprocessor/seq/transform.hpp48
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/counter.hpp269
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/def.hpp49
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/shared.hpp247
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/slot1.hpp267
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/slot2.hpp267
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/slot3.hpp267
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/slot4.hpp267
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/detail/slot5.hpp267
-rw-r--r--3rdParty/Boost/boost/preprocessor/slot/slot.hpp32
-rw-r--r--3rdParty/Boost/boost/preprocessor/stringize.hpp33
-rw-r--r--3rdParty/Boost/boost/preprocessor/tuple/eat.hpp57
-rw-r--r--3rdParty/Boost/boost/preprocessor/tuple/elem.hpp385
-rw-r--r--3rdParty/Boost/boost/preprocessor/tuple/rem.hpp72
-rw-r--r--3rdParty/Boost/boost/preprocessor/tuple/to_list.hpp62
-rw-r--r--3rdParty/Boost/boost/range/as_literal.hpp127
-rw-r--r--3rdParty/Boost/boost/range/begin.hpp132
-rw-r--r--3rdParty/Boost/boost/range/config.hpp54
-rw-r--r--3rdParty/Boost/boost/range/const_iterator.hpp64
-rw-r--r--3rdParty/Boost/boost/range/detail/as_literal.hpp33
-rw-r--r--3rdParty/Boost/boost/range/detail/begin.hpp92
-rw-r--r--3rdParty/Boost/boost/range/detail/common.hpp117
-rw-r--r--3rdParty/Boost/boost/range/detail/const_iterator.hpp71
-rw-r--r--3rdParty/Boost/boost/range/detail/detail_str.hpp376
-rw-r--r--3rdParty/Boost/boost/range/detail/end.hpp98
-rw-r--r--3rdParty/Boost/boost/range/detail/implementation_help.hpp103
-rw-r--r--3rdParty/Boost/boost/range/detail/iterator.hpp78
-rw-r--r--3rdParty/Boost/boost/range/detail/remove_extent.hpp157
-rw-r--r--3rdParty/Boost/boost/range/detail/sfinae.hpp77
-rw-r--r--3rdParty/Boost/boost/range/detail/size_type.hpp70
-rw-r--r--3rdParty/Boost/boost/range/detail/str_types.hpp38
-rw-r--r--3rdParty/Boost/boost/range/detail/vc6/end.hpp170
-rw-r--r--3rdParty/Boost/boost/range/difference_type.hpp29
-rw-r--r--3rdParty/Boost/boost/range/distance.hpp34
-rw-r--r--3rdParty/Boost/boost/range/empty.hpp34
-rw-r--r--3rdParty/Boost/boost/range/end.hpp131
-rw-r--r--3rdParty/Boost/boost/range/functions.hpp27
-rw-r--r--3rdParty/Boost/boost/range/iterator.hpp72
-rw-r--r--3rdParty/Boost/boost/range/iterator_range.hpp659
-rw-r--r--3rdParty/Boost/boost/range/mutable_iterator.hpp64
-rw-r--r--3rdParty/Boost/boost/range/rbegin.hpp65
-rw-r--r--3rdParty/Boost/boost/range/rend.hpp65
-rw-r--r--3rdParty/Boost/boost/range/result_iterator.hpp33
-rw-r--r--3rdParty/Boost/boost/range/reverse_iterator.hpp40
-rw-r--r--3rdParty/Boost/boost/range/size.hpp36
-rw-r--r--3rdParty/Boost/boost/range/size_type.hpp78
-rw-r--r--3rdParty/Boost/boost/range/value_type.hpp34
-rw-r--r--3rdParty/Boost/boost/ref.hpp183
-rw-r--r--3rdParty/Boost/boost/regex.hpp37
-rw-r--r--3rdParty/Boost/boost/regex/config.hpp417
-rw-r--r--3rdParty/Boost/boost/regex/config/borland.hpp72
-rw-r--r--3rdParty/Boost/boost/regex/config/cwchar.hpp207
-rw-r--r--3rdParty/Boost/boost/regex/icu.hpp1017
-rw-r--r--3rdParty/Boost/boost/regex/pattern_except.hpp100
-rw-r--r--3rdParty/Boost/boost/regex/pending/object_cache.hpp163
-rw-r--r--3rdParty/Boost/boost/regex/pending/static_mutex.hpp184
-rw-r--r--3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp692
-rw-r--r--3rdParty/Boost/boost/regex/regex_traits.hpp35
-rw-r--r--3rdParty/Boost/boost/regex/user.hpp90
-rw-r--r--3rdParty/Boost/boost/regex/v4/basic_regex.hpp669
-rw-r--r--3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp1332
-rw-r--r--3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp2140
-rw-r--r--3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp211
-rw-r--r--3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp81
-rw-r--r--3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp1062
-rw-r--r--3rdParty/Boost/boost/regex/v4/cregex.hpp329
-rw-r--r--3rdParty/Boost/boost/regex/v4/error_type.hpp58
-rw-r--r--3rdParty/Boost/boost/regex/v4/fileiter.hpp455
-rw-r--r--3rdParty/Boost/boost/regex/v4/instances.hpp215
-rw-r--r--3rdParty/Boost/boost/regex/v4/iterator_category.hpp87
-rw-r--r--3rdParty/Boost/boost/regex/v4/iterator_traits.hpp135
-rw-r--r--3rdParty/Boost/boost/regex/v4/match_flags.hpp138
-rw-r--r--3rdParty/Boost/boost/regex/v4/match_results.hpp427
-rw-r--r--3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp99
-rw-r--r--3rdParty/Boost/boost/regex/v4/perl_matcher.hpp556
-rw-r--r--3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp971
-rw-r--r--3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp1400
-rw-r--r--3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp854
-rw-r--r--3rdParty/Boost/boost/regex/v4/primary_transform.hpp146
-rw-r--r--3rdParty/Boost/boost/regex/v4/protected_call.hpp81
-rw-r--r--3rdParty/Boost/boost/regex/v4/regbase.hpp180
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex.hpp202
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_format.hpp662
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_fwd.hpp73
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_grep.hpp155
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_iterator.hpp201
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_match.hpp382
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_merge.hpp93
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp210
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_replace.hpp122
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_search.hpp217
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_split.hpp172
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp342
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_traits.hpp189
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp331
-rw-r--r--3rdParty/Boost/boost/regex/v4/regex_workaround.hpp202
-rw-r--r--3rdParty/Boost/boost/regex/v4/states.hpp290
-rw-r--r--3rdParty/Boost/boost/regex/v4/sub_match.hpp509
-rw-r--r--3rdParty/Boost/boost/regex/v4/syntax_type.hpp102
-rw-r--r--3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp193
-rw-r--r--3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp377
-rw-r--r--3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp731
-rw-r--r--3rdParty/Boost/boost/regex_fwd.hpp33
-rw-r--r--3rdParty/Boost/boost/scoped_array.hpp16
-rw-r--r--3rdParty/Boost/boost/scoped_ptr.hpp16
-rw-r--r--3rdParty/Boost/boost/shared_array.hpp19
-rw-r--r--3rdParty/Boost/boost/shared_ptr.hpp19
-rw-r--r--3rdParty/Boost/boost/signal.hpp358
-rw-r--r--3rdParty/Boost/boost/signals.hpp10
-rw-r--r--3rdParty/Boost/boost/signals/connection.hpp213
-rw-r--r--3rdParty/Boost/boost/signals/detail/config.hpp54
-rw-r--r--3rdParty/Boost/boost/signals/detail/named_slot_map.hpp193
-rw-r--r--3rdParty/Boost/boost/signals/detail/signal_base.hpp159
-rw-r--r--3rdParty/Boost/boost/signals/detail/signals_common.hpp162
-rw-r--r--3rdParty/Boost/boost/signals/detail/slot_call_iterator.hpp95
-rw-r--r--3rdParty/Boost/boost/signals/signal0.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal1.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal10.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal2.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal3.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal4.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal5.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal6.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal7.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal8.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal9.hpp37
-rw-r--r--3rdParty/Boost/boost/signals/signal_template.hpp410
-rw-r--r--3rdParty/Boost/boost/signals/slot.hpp157
-rw-r--r--3rdParty/Boost/boost/signals/trackable.hpp173
-rw-r--r--3rdParty/Boost/boost/smart_ptr.hpp25
-rw-r--r--3rdParty/Boost/boost/smart_ptr/bad_weak_ptr.hpp59
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/atomic_count.hpp119
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc.hpp72
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp77
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/atomic_count_pthreads.hpp96
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/atomic_count_sync.hpp61
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/atomic_count_win32.hpp63
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/lightweight_mutex.hpp42
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/lwm_nop.hpp37
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/lwm_pthreads.hpp86
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/lwm_win32_cs.hpp108
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/operator_bool.hpp56
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/quick_allocator.hpp198
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/shared_array_nmt.hpp151
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/shared_count.hpp430
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/shared_ptr_nmt.hpp182
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_convertible.hpp76
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base.hpp70
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp150
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp170
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp157
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp172
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp181
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp166
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp173
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp107
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp135
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp131
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp155
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp130
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_counted_impl.hpp231
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/sp_has_sync.hpp49
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock.hpp53
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp85
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock_nt.hpp89
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock_pool.hpp87
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock_pt.hpp79
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock_sync.hpp87
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/spinlock_w32.hpp113
-rw-r--r--3rdParty/Boost/boost/smart_ptr/detail/yield_k.hpp149
-rw-r--r--3rdParty/Boost/boost/smart_ptr/enable_shared_from_this.hpp79
-rw-r--r--3rdParty/Boost/boost/smart_ptr/intrusive_ptr.hpp282
-rw-r--r--3rdParty/Boost/boost/smart_ptr/scoped_array.hpp107
-rw-r--r--3rdParty/Boost/boost/smart_ptr/scoped_ptr.hpp131
-rw-r--r--3rdParty/Boost/boost/smart_ptr/shared_array.hpp147
-rw-r--r--3rdParty/Boost/boost/smart_ptr/shared_ptr.hpp692
-rw-r--r--3rdParty/Boost/boost/smart_ptr/weak_ptr.hpp182
-rw-r--r--3rdParty/Boost/boost/static_assert.hpp132
-rw-r--r--3rdParty/Boost/boost/system/config.hpp75
-rw-r--r--3rdParty/Boost/boost/system/error_code.hpp501
-rw-r--r--3rdParty/Boost/boost/system/system_error.hpp81
-rw-r--r--3rdParty/Boost/boost/thread.hpp25
-rw-r--r--3rdParty/Boost/boost/thread/barrier.hpp63
-rw-r--r--3rdParty/Boost/boost/thread/condition.hpp16
-rw-r--r--3rdParty/Boost/boost/thread/condition_variable.hpp21
-rw-r--r--3rdParty/Boost/boost/thread/detail/config.hpp94
-rw-r--r--3rdParty/Boost/boost/thread/detail/move.hpp60
-rw-r--r--3rdParty/Boost/boost/thread/detail/platform.hpp71
-rw-r--r--3rdParty/Boost/boost/thread/detail/thread.hpp575
-rw-r--r--3rdParty/Boost/boost/thread/detail/thread_heap_alloc.hpp23
-rw-r--r--3rdParty/Boost/boost/thread/detail/tss_hooks.hpp82
-rw-r--r--3rdParty/Boost/boost/thread/exceptions.hpp114
-rw-r--r--3rdParty/Boost/boost/thread/locks.hpp1430
-rw-r--r--3rdParty/Boost/boost/thread/mutex.hpp21
-rw-r--r--3rdParty/Boost/boost/thread/once.hpp33
-rw-r--r--3rdParty/Boost/boost/thread/pthread/condition_variable.hpp176
-rw-r--r--3rdParty/Boost/boost/thread/pthread/condition_variable_fwd.hpp97
-rw-r--r--3rdParty/Boost/boost/thread/pthread/mutex.hpp210
-rw-r--r--3rdParty/Boost/boost/thread/pthread/once.hpp90
-rw-r--r--3rdParty/Boost/boost/thread/pthread/pthread_mutex_scoped_lock.hpp54
-rw-r--r--3rdParty/Boost/boost/thread/pthread/recursive_mutex.hpp266
-rw-r--r--3rdParty/Boost/boost/thread/pthread/shared_mutex.hpp303
-rw-r--r--3rdParty/Boost/boost/thread/pthread/thread_data.hpp118
-rw-r--r--3rdParty/Boost/boost/thread/pthread/thread_heap_alloc.hpp242
-rw-r--r--3rdParty/Boost/boost/thread/pthread/timespec.hpp36
-rw-r--r--3rdParty/Boost/boost/thread/recursive_mutex.hpp21
-rw-r--r--3rdParty/Boost/boost/thread/shared_mutex.hpp21
-rw-r--r--3rdParty/Boost/boost/thread/thread.hpp25
-rw-r--r--3rdParty/Boost/boost/thread/thread_time.hpp50
-rw-r--r--3rdParty/Boost/boost/thread/tss.hpp111
-rw-r--r--3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp120
-rw-r--r--3rdParty/Boost/boost/thread/win32/basic_timed_mutex.hpp178
-rw-r--r--3rdParty/Boost/boost/thread/win32/condition_variable.hpp418
-rw-r--r--3rdParty/Boost/boost/thread/win32/interlocked_read.hpp80
-rw-r--r--3rdParty/Boost/boost/thread/win32/mutex.hpp65
-rw-r--r--3rdParty/Boost/boost/thread/win32/once.hpp136
-rw-r--r--3rdParty/Boost/boost/thread/win32/recursive_mutex.hpp64
-rw-r--r--3rdParty/Boost/boost/thread/win32/shared_mutex.hpp566
-rw-r--r--3rdParty/Boost/boost/thread/win32/thread_data.hpp178
-rw-r--r--3rdParty/Boost/boost/thread/win32/thread_heap_alloc.hpp397
-rw-r--r--3rdParty/Boost/boost/thread/win32/thread_primitives.hpp398
-rw-r--r--3rdParty/Boost/boost/thread/xtime.hpp92
-rw-r--r--3rdParty/Boost/boost/throw_exception.hpp74
-rw-r--r--3rdParty/Boost/boost/token_functions.hpp621
-rw-r--r--3rdParty/Boost/boost/token_iterator.hpp128
-rw-r--r--3rdParty/Boost/boost/tokenizer.hpp98
-rw-r--r--3rdParty/Boost/boost/type.hpp18
-rw-r--r--3rdParty/Boost/boost/type_traits.hpp89
-rw-r--r--3rdParty/Boost/boost/type_traits/add_const.hpp47
-rw-r--r--3rdParty/Boost/boost/type_traits/add_cv.hpp48
-rw-r--r--3rdParty/Boost/boost/type_traits/add_pointer.hpp72
-rw-r--r--3rdParty/Boost/boost/type_traits/add_reference.hpp89
-rw-r--r--3rdParty/Boost/boost/type_traits/add_volatile.hpp47
-rw-r--r--3rdParty/Boost/boost/type_traits/aligned_storage.hpp13
-rw-r--r--3rdParty/Boost/boost/type_traits/alignment_of.hpp128
-rw-r--r--3rdParty/Boost/boost/type_traits/arithmetic_traits.hpp20
-rw-r--r--3rdParty/Boost/boost/type_traits/broken_compiler_spec.hpp117
-rw-r--r--3rdParty/Boost/boost/type_traits/composite_traits.hpp29
-rw-r--r--3rdParty/Boost/boost/type_traits/config.hpp76
-rw-r--r--3rdParty/Boost/boost/type_traits/conversion_traits.hpp17
-rw-r--r--3rdParty/Boost/boost/type_traits/decay.hpp44
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/bool_trait_def.hpp173
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/bool_trait_undef.hpp27
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/cv_traits_impl.hpp97
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/false_result.hpp28
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/ice_and.hpp35
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/ice_eq.hpp36
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/ice_not.hpp31
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/ice_or.hpp34
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/is_function_ptr_helper.hpp220
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/is_function_ptr_tester.hpp654
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp817
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp2759
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/size_t_trait_def.hpp58
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/size_t_trait_undef.hpp16
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/template_arity_spec.hpp31
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/type_trait_def.hpp61
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/type_trait_undef.hpp19
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/wrap.hpp18
-rw-r--r--3rdParty/Boost/boost/type_traits/detail/yes_no_type.hpp26
-rw-r--r--3rdParty/Boost/boost/type_traits/extent.hpp145
-rw-r--r--3rdParty/Boost/boost/type_traits/floating_point_promotion.hpp91
-rw-r--r--3rdParty/Boost/boost/type_traits/function_traits.hpp236
-rw-r--r--3rdParty/Boost/boost/type_traits/has_nothrow_assign.hpp38
-rw-r--r--3rdParty/Boost/boost/type_traits/has_nothrow_constructor.hpp39
-rw-r--r--3rdParty/Boost/boost/type_traits/has_nothrow_copy.hpp39
-rw-r--r--3rdParty/Boost/boost/type_traits/has_nothrow_destructor.hpp25
-rw-r--r--3rdParty/Boost/boost/type_traits/has_trivial_assign.hpp50
-rw-r--r--3rdParty/Boost/boost/type_traits/has_trivial_constructor.hpp43
-rw-r--r--3rdParty/Boost/boost/type_traits/has_trivial_copy.hpp49
-rw-r--r--3rdParty/Boost/boost/type_traits/has_trivial_destructor.hpp42
-rw-r--r--3rdParty/Boost/boost/type_traits/has_virtual_destructor.hpp25
-rw-r--r--3rdParty/Boost/boost/type_traits/ice.hpp20
-rw-r--r--3rdParty/Boost/boost/type_traits/integral_constant.hpp53
-rw-r--r--3rdParty/Boost/boost/type_traits/integral_promotion.hpp195
-rw-r--r--3rdParty/Boost/boost/type_traits/intrinsics.hpp240
-rw-r--r--3rdParty/Boost/boost/type_traits/is_abstract.hpp153
-rw-r--r--3rdParty/Boost/boost/type_traits/is_arithmetic.hpp51
-rw-r--r--3rdParty/Boost/boost/type_traits/is_array.hpp91
-rw-r--r--3rdParty/Boost/boost/type_traits/is_base_and_derived.hpp251
-rw-r--r--3rdParty/Boost/boost/type_traits/is_base_of.hpp40
-rw-r--r--3rdParty/Boost/boost/type_traits/is_class.hpp140
-rw-r--r--3rdParty/Boost/boost/type_traits/is_complex.hpp34
-rw-r--r--3rdParty/Boost/boost/type_traits/is_compound.hpp46
-rw-r--r--3rdParty/Boost/boost/type_traits/is_const.hpp146
-rw-r--r--3rdParty/Boost/boost/type_traits/is_convertible.hpp430
-rw-r--r--3rdParty/Boost/boost/type_traits/is_empty.hpp211
-rw-r--r--3rdParty/Boost/boost/type_traits/is_enum.hpp189
-rw-r--r--3rdParty/Boost/boost/type_traits/is_float.hpp27
-rw-r--r--3rdParty/Boost/boost/type_traits/is_floating_point.hpp27
-rw-r--r--3rdParty/Boost/boost/type_traits/is_function.hpp103
-rw-r--r--3rdParty/Boost/boost/type_traits/is_fundamental.hpp45
-rw-r--r--3rdParty/Boost/boost/type_traits/is_integral.hpp78
-rw-r--r--3rdParty/Boost/boost/type_traits/is_member_function_pointer.hpp136
-rw-r--r--3rdParty/Boost/boost/type_traits/is_member_object_pointer.hpp46
-rw-r--r--3rdParty/Boost/boost/type_traits/is_member_pointer.hpp116
-rw-r--r--3rdParty/Boost/boost/type_traits/is_object.hpp53
-rw-r--r--3rdParty/Boost/boost/type_traits/is_pod.hpp135
-rw-r--r--3rdParty/Boost/boost/type_traits/is_pointer.hpp162
-rw-r--r--3rdParty/Boost/boost/type_traits/is_polymorphic.hpp114
-rw-r--r--3rdParty/Boost/boost/type_traits/is_reference.hpp118
-rw-r--r--3rdParty/Boost/boost/type_traits/is_same.hpp103
-rw-r--r--3rdParty/Boost/boost/type_traits/is_scalar.hpp55
-rw-r--r--3rdParty/Boost/boost/type_traits/is_signed.hpp127
-rw-r--r--3rdParty/Boost/boost/type_traits/is_stateless.hpp48
-rw-r--r--3rdParty/Boost/boost/type_traits/is_union.hpp49
-rw-r--r--3rdParty/Boost/boost/type_traits/is_unsigned.hpp123
-rw-r--r--3rdParty/Boost/boost/type_traits/is_void.hpp38
-rw-r--r--3rdParty/Boost/boost/type_traits/is_volatile.hpp133
-rw-r--r--3rdParty/Boost/boost/type_traits/make_signed.hpp137
-rw-r--r--3rdParty/Boost/boost/type_traits/make_unsigned.hpp137
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_all_extents.hpp47
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_bounds.hpp43
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_const.hpp143
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_cv.hpp190
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_extent.hpp43
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_pointer.hpp42
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_reference.hpp42
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/remove_volatile.hpp143
-rw-r--r--3rdParty/Boost/boost/type_traits/msvc/typeof.hpp50
-rw-r--r--3rdParty/Boost/boost/type_traits/promote.hpp40
-rw-r--r--3rdParty/Boost/boost/type_traits/rank.hpp89
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_all_extents.hpp48
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_bounds.hpp48
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_const.hpp78
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_cv.hpp61
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_extent.hpp48
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_pointer.hpp43
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_reference.hpp50
-rw-r--r--3rdParty/Boost/boost/type_traits/remove_volatile.hpp77
-rw-r--r--3rdParty/Boost/boost/type_traits/type_with_alignment.hpp393
-rw-r--r--3rdParty/Boost/boost/typeof/dmc/typeof_impl.hpp100
-rw-r--r--3rdParty/Boost/boost/typeof/encode_decode.hpp61
-rw-r--r--3rdParty/Boost/boost/typeof/encode_decode_params.hpp34
-rw-r--r--3rdParty/Boost/boost/typeof/int_encoding.hpp118
-rw-r--r--3rdParty/Boost/boost/typeof/integral_template_param.hpp80
-rw-r--r--3rdParty/Boost/boost/typeof/message.hpp8
-rw-r--r--3rdParty/Boost/boost/typeof/modifiers.hpp121
-rw-r--r--3rdParty/Boost/boost/typeof/msvc/typeof_impl.hpp281
-rw-r--r--3rdParty/Boost/boost/typeof/native.hpp60
-rw-r--r--3rdParty/Boost/boost/typeof/pointers_data_members.hpp38
-rw-r--r--3rdParty/Boost/boost/typeof/register_functions.hpp43
-rw-r--r--3rdParty/Boost/boost/typeof/register_functions_iterate.hpp87
-rw-r--r--3rdParty/Boost/boost/typeof/register_fundamental.hpp62
-rw-r--r--3rdParty/Boost/boost/typeof/register_mem_functions.hpp32
-rw-r--r--3rdParty/Boost/boost/typeof/template_encoding.hpp160
-rw-r--r--3rdParty/Boost/boost/typeof/template_template_param.hpp149
-rw-r--r--3rdParty/Boost/boost/typeof/type_encoding.hpp27
-rw-r--r--3rdParty/Boost/boost/typeof/type_template_param.hpp37
-rw-r--r--3rdParty/Boost/boost/typeof/typeof.hpp189
-rw-r--r--3rdParty/Boost/boost/typeof/typeof_impl.hpp186
-rw-r--r--3rdParty/Boost/boost/typeof/vector.hpp166
-rw-r--r--3rdParty/Boost/boost/typeof/vector100.hpp321
-rw-r--r--3rdParty/Boost/boost/typeof/vector150.hpp471
-rw-r--r--3rdParty/Boost/boost/typeof/vector200.hpp621
-rw-r--r--3rdParty/Boost/boost/typeof/vector50.hpp171
-rw-r--r--3rdParty/Boost/boost/utility.hpp20
-rw-r--r--3rdParty/Boost/boost/utility/addressof.hpp99
-rw-r--r--3rdParty/Boost/boost/utility/base_from_member.hpp87
-rw-r--r--3rdParty/Boost/boost/utility/binary.hpp708
-rw-r--r--3rdParty/Boost/boost/utility/compare_pointees.hpp68
-rw-r--r--3rdParty/Boost/boost/utility/enable_if.hpp119
-rw-r--r--3rdParty/Boost/boost/version.hpp35
-rw-r--r--3rdParty/Boost/boost/visit_each.hpp29
-rw-r--r--3rdParty/Boost/boost/weak_ptr.hpp18
1697 files changed, 330640 insertions, 0 deletions
diff --git a/3rdParty/Boost/boost/algorithm/string/case_conv.hpp b/3rdParty/Boost/boost/algorithm/string/case_conv.hpp
new file mode 100644
index 0000000..536c022
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/case_conv.hpp
@@ -0,0 +1,176 @@
+// Boost string_algo library case_conv.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_CASE_CONV_HPP
+#define BOOST_STRING_CASE_CONV_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <algorithm>
+#include <locale>
+#include <boost/iterator/transform_iterator.hpp>
+
+#include <boost/range/as_literal.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/value_type.hpp>
+
+#include <boost/algorithm/string/detail/case_conv.hpp>
+
+/*! \file
+ Defines sequence case-conversion algorithms.
+ Algorithms convert each element in the input sequence to the
+ desired case using provided locales.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// to_lower -----------------------------------------------//
+
+ //! Convert to lower case
+ /*!
+ Each element of the input sequence is converted to lower
+ case. The result is a copy of the input converted to lower case.
+ It is returned as a sequence or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input range
+ \param Loc A locale used for conversion
+ \return
+ An output iterator pointing just after the last inserted character or
+ a copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+
+ */
+ template<typename OutputIteratorT, typename RangeT>
+ inline OutputIteratorT
+ to_lower_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ const std::locale& Loc=std::locale())
+ {
+ return ::boost::algorithm::detail::transform_range_copy(
+ Output,
+ as_literal(Input),
+ ::boost::algorithm::detail::to_lowerF<
+ typename range_value<RangeT>::type >(Loc));
+ }
+
+ //! Convert to lower case
+ /*!
+ \overload
+ */
+ template<typename SequenceT>
+ inline SequenceT to_lower_copy(
+ const SequenceT& Input,
+ const std::locale& Loc=std::locale())
+ {
+ return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
+ Input,
+ ::boost::algorithm::detail::to_lowerF<
+ typename range_value<SequenceT>::type >(Loc));
+ }
+
+ //! Convert to lower case
+ /*!
+ Each element of the input sequence is converted to lower
+ case. The input sequence is modified in-place.
+
+ \param Input A range
+ \param Loc a locale used for conversion
+ */
+ template<typename WritableRangeT>
+ inline void to_lower(
+ WritableRangeT& Input,
+ const std::locale& Loc=std::locale())
+ {
+ ::boost::algorithm::detail::transform_range(
+ as_literal(Input),
+ ::boost::algorithm::detail::to_lowerF<
+ typename range_value<WritableRangeT>::type >(Loc));
+ }
+
+// to_upper -----------------------------------------------//
+
+ //! Convert to upper case
+ /*!
+ Each element of the input sequence is converted to upper
+ case. The result is a copy of the input converted to upper case.
+ It is returned as a sequence or copied to the output iterator
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input range
+ \param Loc A locale used for conversion
+ \return
+ An output iterator pointing just after the last inserted character or
+ a copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<typename OutputIteratorT, typename RangeT>
+ inline OutputIteratorT
+ to_upper_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ const std::locale& Loc=std::locale())
+ {
+ return ::boost::algorithm::detail::transform_range_copy(
+ Output,
+ as_literal(Input),
+ ::boost::algorithm::detail::to_upperF<
+ typename range_value<RangeT>::type >(Loc));
+ }
+
+ //! Convert to upper case
+ /*!
+ \overload
+ */
+ template<typename SequenceT>
+ inline SequenceT to_upper_copy(
+ const SequenceT& Input,
+ const std::locale& Loc=std::locale())
+ {
+ return ::boost::algorithm::detail::transform_range_copy<SequenceT>(
+ Input,
+ ::boost::algorithm::detail::to_upperF<
+ typename range_value<SequenceT>::type >(Loc));
+ }
+
+ //! Convert to upper case
+ /*!
+ Each element of the input sequence is converted to upper
+ case. The input sequence is modified in-place.
+
+ \param Input An input range
+ \param Loc a locale used for conversion
+ */
+ template<typename WritableRangeT>
+ inline void to_upper(
+ WritableRangeT& Input,
+ const std::locale& Loc=std::locale())
+ {
+ ::boost::algorithm::detail::transform_range(
+ as_literal(Input),
+ ::boost::algorithm::detail::to_upperF<
+ typename range_value<WritableRangeT>::type >(Loc));
+ }
+
+ } // namespace algorithm
+
+ // pull names to the boost namespace
+ using algorithm::to_lower;
+ using algorithm::to_lower_copy;
+ using algorithm::to_upper;
+ using algorithm::to_upper_copy;
+
+} // namespace boost
+
+#endif // BOOST_STRING_CASE_CONV_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/compare.hpp b/3rdParty/Boost/boost/algorithm/string/compare.hpp
new file mode 100644
index 0000000..734303a
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/compare.hpp
@@ -0,0 +1,199 @@
+// Boost string_algo library compare.hpp header file -------------------------//
+
+// Copyright Pavol Droba 2002-2006.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_COMPARE_HPP
+#define BOOST_STRING_COMPARE_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <locale>
+
+/*! \file
+ Defines element comparison predicates. Many algorithms in this library can
+ take an additional argument with a predicate used to compare elements.
+ This makes it possible, for instance, to have case insensitive versions
+ of the algorithms.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+ // is_equal functor -----------------------------------------------//
+
+ //! is_equal functor
+ /*!
+ Standard STL equal_to only handle comparison between arguments
+ of the same type. This is a less restrictive version which wraps operator ==.
+ */
+ struct is_equal
+ {
+ //! Function operator
+ /*!
+ Compare two operands for equality
+ */
+ template< typename T1, typename T2 >
+ bool operator()( const T1& Arg1, const T2& Arg2 ) const
+ {
+ return Arg1==Arg2;
+ }
+ };
+
+ //! case insensitive version of is_equal
+ /*!
+ Case insensitive comparison predicate. Comparison is done using
+ specified locales.
+ */
+ struct is_iequal
+ {
+ //! Constructor
+ /*!
+ \param Loc locales used for comparison
+ */
+ is_iequal( const std::locale& Loc=std::locale() ) :
+ m_Loc( Loc ) {}
+
+ //! Function operator
+ /*!
+ Compare two operands. Case is ignored.
+ */
+ template< typename T1, typename T2 >
+ bool operator()( const T1& Arg1, const T2& Arg2 ) const
+ {
+ #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
+ return std::toupper(Arg1)==std::toupper(Arg2);
+ #else
+ return std::toupper<T1>(Arg1,m_Loc)==std::toupper<T2>(Arg2,m_Loc);
+ #endif
+ }
+
+ private:
+ std::locale m_Loc;
+ };
+
+ // is_less functor -----------------------------------------------//
+
+ //! is_less functor
+ /*!
+ Convenient version of standard std::less. Operation is templated, therefore it is
+ not required to specify the exact types upon the construction
+ */
+ struct is_less
+ {
+ //! Functor operation
+ /*!
+ Compare two operands using > operator
+ */
+ template< typename T1, typename T2 >
+ bool operator()( const T1& Arg1, const T2& Arg2 ) const
+ {
+ return Arg1<Arg2;
+ }
+ };
+
+
+ //! case insensitive version of is_less
+ /*!
+ Case insensitive comparison predicate. Comparison is done using
+ specified locales.
+ */
+ struct is_iless
+ {
+ //! Constructor
+ /*!
+ \param Loc locales used for comparison
+ */
+ is_iless( const std::locale& Loc=std::locale() ) :
+ m_Loc( Loc ) {}
+
+ //! Function operator
+ /*!
+ Compare two operands. Case is ignored.
+ */
+ template< typename T1, typename T2 >
+ bool operator()( const T1& Arg1, const T2& Arg2 ) const
+ {
+ #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
+ return std::toupper(Arg1)<std::toupper(Arg2);
+ #else
+ return std::toupper<T1>(Arg1,m_Loc)<std::toupper<T2>(Arg2,m_Loc);
+ #endif
+ }
+
+ private:
+ std::locale m_Loc;
+ };
+
+ // is_not_greater functor -----------------------------------------------//
+
+ //! is_not_greater functor
+ /*!
+ Convenient version of standard std::not_greater_to. Operation is templated, therefore it is
+ not required to specify the exact types upon the construction
+ */
+ struct is_not_greater
+ {
+ //! Functor operation
+ /*!
+ Compare two operands using > operator
+ */
+ template< typename T1, typename T2 >
+ bool operator()( const T1& Arg1, const T2& Arg2 ) const
+ {
+ return Arg1<=Arg2;
+ }
+ };
+
+
+ //! case insensitive version of is_not_greater
+ /*!
+ Case insensitive comparison predicate. Comparison is done using
+ specified locales.
+ */
+ struct is_not_igreater
+ {
+ //! Constructor
+ /*!
+ \param Loc locales used for comparison
+ */
+ is_not_igreater( const std::locale& Loc=std::locale() ) :
+ m_Loc( Loc ) {}
+
+ //! Function operator
+ /*!
+ Compare two operands. Case is ignored.
+ */
+ template< typename T1, typename T2 >
+ bool operator()( const T1& Arg1, const T2& Arg2 ) const
+ {
+ #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
+ return std::toupper(Arg1)<=std::toupper(Arg2);
+ #else
+ return std::toupper<T1>(Arg1,m_Loc)<=std::toupper<T2>(Arg2,m_Loc);
+ #endif
+ }
+
+ private:
+ std::locale m_Loc;
+ };
+
+
+ } // namespace algorithm
+
+ // pull names to the boost namespace
+ using algorithm::is_equal;
+ using algorithm::is_iequal;
+ using algorithm::is_less;
+ using algorithm::is_iless;
+ using algorithm::is_not_greater;
+ using algorithm::is_not_igreater;
+
+} // namespace boost
+
+
+#endif // BOOST_STRING_COMPARE_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/concept.hpp b/3rdParty/Boost/boost/algorithm/string/concept.hpp
new file mode 100644
index 0000000..9876e98
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/concept.hpp
@@ -0,0 +1,83 @@
+// Boost string_algo library concept.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_CONCEPT_HPP
+#define BOOST_STRING_CONCEPT_HPP
+
+#include <boost/concept_check.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+/*! \file
+ Defines concepts used in string_algo library
+*/
+
+namespace boost {
+ namespace algorithm {
+
+ //! Finder concept
+ /*!
+ Defines the Finder concept. Finder is a functor which selects
+ an arbitrary part of a string. Search is performed on
+ the range specified by starting and ending iterators.
+
+ Result of the find operation must be convertible to iterator_range.
+ */
+ template<typename FinderT, typename IteratorT>
+ struct FinderConcept
+ {
+ private:
+ typedef iterator_range<IteratorT> range;
+ public:
+ void constraints()
+ {
+ // Operation
+ r=(*pF)(i,i);
+ }
+ private:
+ range r;
+ IteratorT i;
+ FinderT* pF;
+ }; // Finder_concept
+
+
+ //! Formatter concept
+ /*!
+ Defines the Formatter concept. Formatter is a functor, which
+ takes a result from a finder operation and transforms it
+ in a specific way.
+
+ Result must be a container supported by container_traits,
+ or a reference to it.
+ */
+ template<typename FormatterT, typename FinderT, typename IteratorT>
+ struct FormatterConcept
+ {
+ public:
+ void constraints()
+ {
+ // Operation
+ ::boost::begin((*pFo)( (*pF)(i,i) ));
+ ::boost::end((*pFo)( (*pF)(i,i) ));
+ }
+ private:
+ IteratorT i;
+ FinderT* pF;
+ FormatterT *pFo;
+ }; // FormatterConcept;
+
+ } // namespace algorithm
+} // namespace boost
+
+
+
+
+#endif // BOOST_STRING_CONCEPT_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/config.hpp b/3rdParty/Boost/boost/algorithm/string/config.hpp
new file mode 100644
index 0000000..559750a
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/config.hpp
@@ -0,0 +1,28 @@
+// Boost string_algo library config.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_CONFIG_HPP
+#define BOOST_STRING_CONFIG_HPP
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifdef BOOST_STRING_DEDUCED_TYPENAME
+# error "macro already defined!"
+#endif
+
+#define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME
+
+// Metrowerks workaround
+#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x
+#pragma parse_func_templ off
+#endif
+
+#endif // BOOST_STRING_CONFIG_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/constants.hpp b/3rdParty/Boost/boost/algorithm/string/constants.hpp
new file mode 100644
index 0000000..6ed70ef
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/constants.hpp
@@ -0,0 +1,36 @@
+// Boost string_algo library constants.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_CONSTANTS_HPP
+#define BOOST_STRING_CONSTANTS_HPP
+
+namespace boost {
+ namespace algorithm {
+
+ //! Token compression mode
+ /*!
+ Specifies token compression mode for the token_finder.
+ */
+ enum token_compress_mode_type
+ {
+ token_compress_on, //!< Compress adjacent tokens
+ token_compress_off //!< Do not compress adjacent tokens
+ };
+
+ } // namespace algorithm
+
+ // pull the names to the boost namespace
+ using algorithm::token_compress_on;
+ using algorithm::token_compress_off;
+
+} // namespace boost
+
+#endif // BOOST_STRING_CONSTANTS_HPP
+
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/case_conv.hpp b/3rdParty/Boost/boost/algorithm/string/detail/case_conv.hpp
new file mode 100644
index 0000000..5253454
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/case_conv.hpp
@@ -0,0 +1,121 @@
+// Boost string_algo library string_funct.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_CASE_CONV_DETAIL_HPP
+#define BOOST_STRING_CASE_CONV_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <locale>
+#include <functional>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// case conversion functors -----------------------------------------------//
+
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(push)
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
+
+ // a tolower functor
+ template<typename CharT>
+ struct to_lowerF : public std::unary_function<CharT, CharT>
+ {
+ // Constructor
+ to_lowerF( const std::locale& Loc ) : m_Loc( Loc ) {}
+
+ // Operation
+ CharT operator ()( CharT Ch ) const
+ {
+ #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
+ return std::tolower( Ch);
+ #else
+ return std::tolower<CharT>( Ch, m_Loc );
+ #endif
+ }
+ private:
+ const std::locale& m_Loc;
+ };
+
+ // a toupper functor
+ template<typename CharT>
+ struct to_upperF : public std::unary_function<CharT, CharT>
+ {
+ // Constructor
+ to_upperF( const std::locale& Loc ) : m_Loc( Loc ) {}
+
+ // Operation
+ CharT operator ()( CharT Ch ) const
+ {
+ #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL)
+ return std::toupper( Ch);
+ #else
+ return std::toupper<CharT>( Ch, m_Loc );
+ #endif
+ }
+ private:
+ const std::locale& m_Loc;
+ };
+
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(pop)
+#endif
+
+// algorithm implementation -------------------------------------------------------------------------
+
+ // Transform a range
+ template<typename OutputIteratorT, typename RangeT, typename FunctorT>
+ OutputIteratorT transform_range_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ FunctorT Functor)
+ {
+ return std::transform(
+ ::boost::begin(Input),
+ ::boost::end(Input),
+ Output,
+ Functor);
+ }
+
+ // Transform a range (in-place)
+ template<typename RangeT, typename FunctorT>
+ void transform_range(
+ const RangeT& Input,
+ FunctorT Functor)
+ {
+ std::transform(
+ ::boost::begin(Input),
+ ::boost::end(Input),
+ ::boost::begin(Input),
+ Functor);
+ }
+
+ template<typename SequenceT, typename RangeT, typename FunctorT>
+ inline SequenceT transform_range_copy(
+ const RangeT& Input,
+ FunctorT Functor)
+ {
+ return SequenceT(
+ make_transform_iterator(
+ ::boost::begin(Input),
+ Functor),
+ make_transform_iterator(
+ ::boost::end(Input),
+ Functor));
+ }
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+
+#endif // BOOST_STRING_CASE_CONV_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/find_format.hpp b/3rdParty/Boost/boost/algorithm/string/detail/find_format.hpp
new file mode 100644
index 0000000..8fb625e
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/find_format.hpp
@@ -0,0 +1,193 @@
+// Boost string_algo library find_format.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FIND_FORMAT_DETAIL_HPP
+#define BOOST_STRING_FIND_FORMAT_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/const_iterator.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/algorithm/string/detail/find_format_store.hpp>
+#include <boost/algorithm/string/detail/replace_storage.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// find_format_copy (iterator variant) implementation -------------------------------//
+
+ template<
+ typename OutputIteratorT,
+ typename InputT,
+ typename FormatterT,
+ typename FindResultT >
+ inline OutputIteratorT find_format_copy_impl(
+ OutputIteratorT Output,
+ const InputT& Input,
+ FormatterT Formatter,
+ const FindResultT& FindResult )
+ {
+ return find_format_copy_impl2(
+ Output,
+ Input,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
+
+ template<
+ typename OutputIteratorT,
+ typename InputT,
+ typename FormatterT,
+ typename FindResultT,
+ typename FormatResultT >
+ inline OutputIteratorT find_format_copy_impl2(
+ OutputIteratorT Output,
+ const InputT& Input,
+ FormatterT Formatter,
+ const FindResultT& FindResult,
+ const FormatResultT& FormatResult )
+ {
+ typedef find_format_store<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<InputT>::type,
+ FormatterT,
+ FormatResultT > store_type;
+
+ // Create store for the find result
+ store_type M( FindResult, FormatResult, Formatter );
+
+ if ( !M )
+ {
+ // Match not found - return original sequence
+ std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
+ return Output;
+ }
+
+ // Copy the beginning of the sequence
+ std::copy( ::boost::begin(Input), ::boost::begin(M), Output );
+ // Format find result
+ // Copy formated result
+ std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
+ // Copy the rest of the sequence
+ std::copy( M.end(), ::boost::end(Input), Output );
+
+ return Output;
+ }
+
+// find_format_copy implementation --------------------------------------------------//
+
+ template<
+ typename InputT,
+ typename FormatterT,
+ typename FindResultT >
+ inline InputT find_format_copy_impl(
+ const InputT& Input,
+ FormatterT Formatter,
+ const FindResultT& FindResult)
+ {
+ return find_format_copy_impl2(
+ Input,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
+
+ template<
+ typename InputT,
+ typename FormatterT,
+ typename FindResultT,
+ typename FormatResultT >
+ inline InputT find_format_copy_impl2(
+ const InputT& Input,
+ FormatterT Formatter,
+ const FindResultT& FindResult,
+ const FormatResultT& FormatResult)
+ {
+ typedef find_format_store<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<InputT>::type,
+ FormatterT,
+ FormatResultT > store_type;
+
+ // Create store for the find result
+ store_type M( FindResult, FormatResult, Formatter );
+
+ if ( !M )
+ {
+ // Match not found - return original sequence
+ return InputT( Input );
+ }
+
+ InputT Output;
+ // Copy the beginning of the sequence
+ insert( Output, ::boost::end(Output), ::boost::begin(Input), M.begin() );
+ // Copy formated result
+ insert( Output, ::boost::end(Output), M.format_result() );
+ // Copy the rest of the sequence
+ insert( Output, ::boost::end(Output), M.end(), ::boost::end(Input) );
+
+ return Output;
+ }
+
+// replace implementation ----------------------------------------------------//
+
+ template<
+ typename InputT,
+ typename FormatterT,
+ typename FindResultT >
+ inline void find_format_impl(
+ InputT& Input,
+ FormatterT Formatter,
+ const FindResultT& FindResult)
+ {
+ find_format_impl2(
+ Input,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
+
+ template<
+ typename InputT,
+ typename FormatterT,
+ typename FindResultT,
+ typename FormatResultT >
+ inline void find_format_impl2(
+ InputT& Input,
+ FormatterT Formatter,
+ const FindResultT& FindResult,
+ const FormatResultT& FormatResult)
+ {
+ typedef find_format_store<
+ BOOST_STRING_TYPENAME
+ range_iterator<InputT>::type,
+ FormatterT,
+ FormatResultT > store_type;
+
+ // Create store for the find result
+ store_type M( FindResult, FormatResult, Formatter );
+
+ if ( !M )
+ {
+ // Search not found - return original sequence
+ return;
+ }
+
+ // Replace match
+ replace( Input, M.begin(), M.end(), M.format_result() );
+ }
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+#endif // BOOST_STRING_FIND_FORMAT_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/find_format_all.hpp b/3rdParty/Boost/boost/algorithm/string/detail/find_format_all.hpp
new file mode 100644
index 0000000..9533be6
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/find_format_all.hpp
@@ -0,0 +1,263 @@
+// Boost string_algo library find_format_all.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
+#define BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/const_iterator.hpp>
+#include <boost/range/value_type.hpp>
+#include <boost/algorithm/string/detail/find_format_store.hpp>
+#include <boost/algorithm/string/detail/replace_storage.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// find_format_all_copy (iterator variant) implementation ---------------------------//
+
+ template<
+ typename OutputIteratorT,
+ typename InputT,
+ typename FinderT,
+ typename FormatterT,
+ typename FindResultT >
+ inline OutputIteratorT find_format_all_copy_impl(
+ OutputIteratorT Output,
+ const InputT& Input,
+ FinderT Finder,
+ FormatterT Formatter,
+ const FindResultT& FindResult )
+ {
+ return find_format_all_copy_impl2(
+ Output,
+ Input,
+ Finder,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
+
+ template<
+ typename OutputIteratorT,
+ typename InputT,
+ typename FinderT,
+ typename FormatterT,
+ typename FindResultT,
+ typename FormatResultT >
+ inline OutputIteratorT find_format_all_copy_impl2(
+ OutputIteratorT Output,
+ const InputT& Input,
+ FinderT Finder,
+ FormatterT Formatter,
+ const FindResultT& FindResult,
+ const FormatResultT& FormatResult )
+ {
+ typedef BOOST_STRING_TYPENAME
+ range_const_iterator<InputT>::type input_iterator_type;
+
+ typedef find_format_store<
+ input_iterator_type,
+ FormatterT,
+ FormatResultT > store_type;
+
+ // Create store for the find result
+ store_type M( FindResult, FormatResult, Formatter );
+
+ // Initialize last match
+ input_iterator_type LastMatch=::boost::begin(Input);
+
+ // Iterate through all matches
+ while( M )
+ {
+ // Copy the beginning of the sequence
+ std::copy( LastMatch, M.begin(), Output );
+ // Copy formated result
+ std::copy( ::boost::begin(M.format_result()), ::boost::end(M.format_result()), Output );
+
+ // Proceed to the next match
+ LastMatch=M.end();
+ M=Finder( LastMatch, ::boost::end(Input) );
+ }
+
+ // Copy the rest of the sequence
+ std::copy( LastMatch, ::boost::end(Input), Output );
+
+ return Output;
+ }
+
+// find_format_all_copy implementation ----------------------------------------------//
+
+ template<
+ typename InputT,
+ typename FinderT,
+ typename FormatterT,
+ typename FindResultT >
+ inline InputT find_format_all_copy_impl(
+ const InputT& Input,
+ FinderT Finder,
+ FormatterT Formatter,
+ const FindResultT& FindResult)
+ {
+ return find_format_all_copy_impl2(
+ Input,
+ Finder,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
+
+ template<
+ typename InputT,
+ typename FinderT,
+ typename FormatterT,
+ typename FindResultT,
+ typename FormatResultT >
+ inline InputT find_format_all_copy_impl2(
+ const InputT& Input,
+ FinderT Finder,
+ FormatterT Formatter,
+ const FindResultT& FindResult,
+ const FormatResultT& FormatResult)
+ {
+ typedef BOOST_STRING_TYPENAME
+ range_const_iterator<InputT>::type input_iterator_type;
+
+ typedef find_format_store<
+ input_iterator_type,
+ FormatterT,
+ FormatResultT > store_type;
+
+ // Create store for the find result
+ store_type M( FindResult, FormatResult, Formatter );
+
+ // Initialize last match
+ input_iterator_type LastMatch=::boost::begin(Input);
+
+ // Output temporary
+ InputT Output;
+
+ // Iterate through all matches
+ while( M )
+ {
+ // Copy the beginning of the sequence
+ insert( Output, ::boost::end(Output), LastMatch, M.begin() );
+ // Copy formated result
+ insert( Output, ::boost::end(Output), M.format_result() );
+
+ // Proceed to the next match
+ LastMatch=M.end();
+ M=Finder( LastMatch, ::boost::end(Input) );
+ }
+
+ // Copy the rest of the sequence
+ insert( Output, ::boost::end(Output), LastMatch, ::boost::end(Input) );
+
+ return Output;
+ }
+
+// find_format_all implementation ------------------------------------------------//
+
+ template<
+ typename InputT,
+ typename FinderT,
+ typename FormatterT,
+ typename FindResultT >
+ inline void find_format_all_impl(
+ InputT& Input,
+ FinderT Finder,
+ FormatterT Formatter,
+ FindResultT FindResult)
+ {
+ find_format_all_impl2(
+ Input,
+ Finder,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
+
+ template<
+ typename InputT,
+ typename FinderT,
+ typename FormatterT,
+ typename FindResultT,
+ typename FormatResultT >
+ inline void find_format_all_impl2(
+ InputT& Input,
+ FinderT Finder,
+ FormatterT Formatter,
+ FindResultT FindResult,
+ FormatResultT FormatResult)
+ {
+ typedef BOOST_STRING_TYPENAME
+ range_iterator<InputT>::type input_iterator_type;
+ typedef find_format_store<
+ input_iterator_type,
+ FormatterT,
+ FormatResultT > store_type;
+
+ // Create store for the find result
+ store_type M( FindResult, FormatResult, Formatter );
+
+ // Instantiate replacement storage
+ std::deque<
+ BOOST_STRING_TYPENAME range_value<InputT>::type> Storage;
+
+ // Initialize replacement iterators
+ input_iterator_type InsertIt=::boost::begin(Input);
+ input_iterator_type SearchIt=::boost::begin(Input);
+
+ while( M )
+ {
+ // process the segment
+ InsertIt=process_segment(
+ Storage,
+ Input,
+ InsertIt,
+ SearchIt,
+ M.begin() );
+
+ // Adjust search iterator
+ SearchIt=M.end();
+
+ // Copy formated replace to the storage
+ copy_to_storage( Storage, M.format_result() );
+
+ // Find range for a next match
+ M=Finder( SearchIt, ::boost::end(Input) );
+ }
+
+ // process the last segment
+ InsertIt=process_segment(
+ Storage,
+ Input,
+ InsertIt,
+ SearchIt,
+ ::boost::end(Input) );
+
+ if ( Storage.empty() )
+ {
+ // Truncate input
+ erase( Input, InsertIt, ::boost::end(Input) );
+ }
+ else
+ {
+ // Copy remaining data to the end of input
+ insert( Input, ::boost::end(Input), Storage.begin(), Storage.end() );
+ }
+ }
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+#endif // BOOST_STRING_FIND_FORMAT_ALL_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/find_format_store.hpp b/3rdParty/Boost/boost/algorithm/string/detail/find_format_store.hpp
new file mode 100644
index 0000000..2260fc2e
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/find_format_store.hpp
@@ -0,0 +1,78 @@
+// Boost string_algo library find_format_store.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
+#define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <boost/range/iterator_range.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// temporary format and find result storage --------------------------------//
+
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(push)
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
+ template<
+ typename ForwardIteratorT,
+ typename FormatterT,
+ typename FormatResultT >
+ class find_format_store :
+ public iterator_range<ForwardIteratorT>
+ {
+ public:
+ // typedefs
+ typedef iterator_range<ForwardIteratorT> base_type;
+ typedef FormatterT formatter_type;
+ typedef FormatResultT format_result_type;
+
+ public:
+ // Construction
+ find_format_store(
+ const base_type& FindResult,
+ const format_result_type& FormatResult,
+ const formatter_type& Formatter ) :
+ base_type(FindResult),
+ m_FormatResult(FormatResult),
+ m_Formatter(Formatter) {}
+
+ // Assignment
+ template< typename FindResultT >
+ find_format_store& operator=( FindResultT FindResult )
+ {
+ iterator_range<ForwardIteratorT>::operator=(FindResult);
+ m_FormatResult=m_Formatter(FindResult);
+
+ return *this;
+ }
+
+ // Retrieve format result
+ const format_result_type& format_result()
+ {
+ return m_FormatResult;
+ }
+
+ private:
+ format_result_type m_FormatResult;
+ const formatter_type& m_Formatter;
+ };
+
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+#pragma warning(pop)
+#endif
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+#endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/finder.hpp b/3rdParty/Boost/boost/algorithm/string/detail/finder.hpp
new file mode 100644
index 0000000..c6d0752
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/finder.hpp
@@ -0,0 +1,646 @@
+// Boost string_algo library finder.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2006.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FINDER_DETAIL_HPP
+#define BOOST_STRING_FINDER_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <boost/algorithm/string/constants.hpp>
+#include <boost/detail/iterator.hpp>
+
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/empty.hpp>
+#include <boost/range/as_literal.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+
+// find first functor -----------------------------------------------//
+
+ // find a subsequence in the sequence ( functor )
+ /*
+ Returns a pair <begin,end> marking the subsequence in the sequence.
+ If the find fails, functor returns <End,End>
+ */
+ template<typename SearchIteratorT,typename PredicateT>
+ struct first_finderF
+ {
+ typedef SearchIteratorT search_iterator_type;
+
+ // Construction
+ template< typename SearchT >
+ first_finderF( const SearchT& Search, PredicateT Comp ) :
+ m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
+ first_finderF(
+ search_iterator_type SearchBegin,
+ search_iterator_type SearchEnd,
+ PredicateT Comp ) :
+ m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ operator()(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End ) const
+ {
+ typedef iterator_range<ForwardIteratorT> result_type;
+ typedef ForwardIteratorT input_iterator_type;
+
+ // Outer loop
+ for(input_iterator_type OuterIt=Begin;
+ OuterIt!=End;
+ ++OuterIt)
+ {
+ // Sanity check
+ if( boost::empty(m_Search) )
+ return result_type( End, End );
+
+ input_iterator_type InnerIt=OuterIt;
+ search_iterator_type SubstrIt=m_Search.begin();
+ for(;
+ InnerIt!=End && SubstrIt!=m_Search.end();
+ ++InnerIt,++SubstrIt)
+ {
+ if( !( m_Comp(*InnerIt,*SubstrIt) ) )
+ break;
+ }
+
+ // Substring matching succeeded
+ if ( SubstrIt==m_Search.end() )
+ return result_type( OuterIt, InnerIt );
+ }
+
+ return result_type( End, End );
+ }
+
+ private:
+ iterator_range<search_iterator_type> m_Search;
+ PredicateT m_Comp;
+ };
+
+// find last functor -----------------------------------------------//
+
+ // find the last match a subseqeunce in the sequence ( functor )
+ /*
+ Returns a pair <begin,end> marking the subsequence in the sequence.
+ If the find fails, returns <End,End>
+ */
+ template<typename SearchIteratorT, typename PredicateT>
+ struct last_finderF
+ {
+ typedef SearchIteratorT search_iterator_type;
+ typedef first_finderF<
+ search_iterator_type,
+ PredicateT> first_finder_type;
+
+ // Construction
+ template< typename SearchT >
+ last_finderF( const SearchT& Search, PredicateT Comp ) :
+ m_Search(::boost::begin(Search), ::boost::end(Search)), m_Comp(Comp) {}
+ last_finderF(
+ search_iterator_type SearchBegin,
+ search_iterator_type SearchEnd,
+ PredicateT Comp ) :
+ m_Search(SearchBegin, SearchEnd), m_Comp(Comp) {}
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ operator()(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End ) const
+ {
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ if( boost::empty(m_Search) )
+ return result_type( End, End );
+
+ typedef BOOST_STRING_TYPENAME boost::detail::
+ iterator_traits<ForwardIteratorT>::iterator_category category;
+
+ return findit( Begin, End, category() );
+ }
+
+ private:
+ // forward iterator
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ findit(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ std::forward_iterator_tag ) const
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ first_finder_type first_finder(
+ m_Search.begin(), m_Search.end(), m_Comp );
+
+ result_type M=first_finder( Begin, End );
+ result_type Last=M;
+
+ while( M )
+ {
+ Last=M;
+ M=first_finder( ::boost::end(M), End );
+ }
+
+ return Last;
+ }
+
+ // bidirectional iterator
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ findit(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ std::bidirectional_iterator_tag ) const
+ {
+ typedef iterator_range<ForwardIteratorT> result_type;
+ typedef ForwardIteratorT input_iterator_type;
+
+ // Outer loop
+ for(input_iterator_type OuterIt=End;
+ OuterIt!=Begin; )
+ {
+ input_iterator_type OuterIt2=--OuterIt;
+
+ input_iterator_type InnerIt=OuterIt2;
+ search_iterator_type SubstrIt=m_Search.begin();
+ for(;
+ InnerIt!=End && SubstrIt!=m_Search.end();
+ ++InnerIt,++SubstrIt)
+ {
+ if( !( m_Comp(*InnerIt,*SubstrIt) ) )
+ break;
+ }
+
+ // Substring matching succeeded
+ if( SubstrIt==m_Search.end() )
+ return result_type( OuterIt2, InnerIt );
+ }
+
+ return result_type( End, End );
+ }
+
+ private:
+ iterator_range<search_iterator_type> m_Search;
+ PredicateT m_Comp;
+ };
+
+// find n-th functor -----------------------------------------------//
+
+ // find the n-th match of a subsequence in the sequence ( functor )
+ /*
+ Returns a pair <begin,end> marking the subsequence in the sequence.
+ If the find fails, returns <End,End>
+ */
+ template<typename SearchIteratorT, typename PredicateT>
+ struct nth_finderF
+ {
+ typedef SearchIteratorT search_iterator_type;
+ typedef first_finderF<
+ search_iterator_type,
+ PredicateT> first_finder_type;
+ typedef last_finderF<
+ search_iterator_type,
+ PredicateT> last_finder_type;
+
+ // Construction
+ template< typename SearchT >
+ nth_finderF(
+ const SearchT& Search,
+ int Nth,
+ PredicateT Comp) :
+ m_Search(::boost::begin(Search), ::boost::end(Search)),
+ m_Nth(Nth),
+ m_Comp(Comp) {}
+ nth_finderF(
+ search_iterator_type SearchBegin,
+ search_iterator_type SearchEnd,
+ int Nth,
+ PredicateT Comp) :
+ m_Search(SearchBegin, SearchEnd),
+ m_Nth(Nth),
+ m_Comp(Comp) {}
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ operator()(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End ) const
+ {
+ if(m_Nth>=0)
+ {
+ return find_forward(Begin, End, m_Nth);
+ }
+ else
+ {
+ return find_backward(Begin, End, -m_Nth);
+ }
+
+ }
+
+ private:
+ // Implementation helpers
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_forward(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N) const
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ // Sanity check
+ if( boost::empty(m_Search) )
+ return result_type( End, End );
+
+ // Instantiate find functor
+ first_finder_type first_finder(
+ m_Search.begin(), m_Search.end(), m_Comp );
+
+ result_type M( Begin, Begin );
+
+ for( unsigned int n=0; n<=N; ++n )
+ {
+ // find next match
+ M=first_finder( ::boost::end(M), End );
+
+ if ( !M )
+ {
+ // Subsequence not found, return
+ return M;
+ }
+ }
+
+ return M;
+ }
+
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_backward(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N) const
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ // Sanity check
+ if( boost::empty(m_Search) )
+ return result_type( End, End );
+
+ // Instantiate find functor
+ last_finder_type last_finder(
+ m_Search.begin(), m_Search.end(), m_Comp );
+
+ result_type M( End, End );
+
+ for( unsigned int n=1; n<=N; ++n )
+ {
+ // find next match
+ M=last_finder( Begin, ::boost::begin(M) );
+
+ if ( !M )
+ {
+ // Subsequence not found, return
+ return M;
+ }
+ }
+
+ return M;
+ }
+
+
+ private:
+ iterator_range<search_iterator_type> m_Search;
+ int m_Nth;
+ PredicateT m_Comp;
+ };
+
+// find head/tail implementation helpers ---------------------------//
+
+ template<typename ForwardIteratorT>
+ iterator_range<ForwardIteratorT>
+ find_head_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N,
+ std::forward_iterator_tag )
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ input_iterator_type It=Begin;
+ for(
+ unsigned int Index=0;
+ Index<N && It!=End; ++Index,++It ) {};
+
+ return result_type( Begin, It );
+ }
+
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_head_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N,
+ std::random_access_iterator_tag )
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
+ return result_type( Begin, End );
+
+ return result_type(Begin,Begin+N);
+ }
+
+ // Find head implementation
+ template<typename ForwardIteratorT>
+ iterator_range<ForwardIteratorT>
+ find_head_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N )
+ {
+ typedef BOOST_STRING_TYPENAME boost::detail::
+ iterator_traits<ForwardIteratorT>::iterator_category category;
+
+ return find_head_impl( Begin, End, N, category() );
+ }
+
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_tail_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N,
+ std::forward_iterator_tag )
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ unsigned int Index=0;
+ input_iterator_type It=Begin;
+ input_iterator_type It2=Begin;
+
+ // Advance It2 by N increments
+ for( Index=0; Index<N && It2!=End; ++Index,++It2 ) {};
+
+ // Advance It, It2 to the end
+ for(; It2!=End; ++It,++It2 ) {};
+
+ return result_type( It, It2 );
+ }
+
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_tail_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N,
+ std::bidirectional_iterator_tag )
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ input_iterator_type It=End;
+ for(
+ unsigned int Index=0;
+ Index<N && It!=Begin; ++Index,--It ) {};
+
+ return result_type( It, End );
+ }
+
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_tail_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N,
+ std::random_access_iterator_tag )
+ {
+ typedef ForwardIteratorT input_iterator_type;
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ if ( (End<=Begin) || ( static_cast<unsigned int>(End-Begin) < N ) )
+ return result_type( Begin, End );
+
+ return result_type( End-N, End );
+ }
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ find_tail_impl(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End,
+ unsigned int N )
+ {
+ typedef BOOST_STRING_TYPENAME boost::detail::
+ iterator_traits<ForwardIteratorT>::iterator_category category;
+
+ return find_tail_impl( Begin, End, N, category() );
+ }
+
+
+
+// find head functor -----------------------------------------------//
+
+
+ // find a head in the sequence ( functor )
+ /*
+ This functor find a head of the specified range. For
+ a specified N, the head is a subsequence of N starting
+ elements of the range.
+ */
+ struct head_finderF
+ {
+ // Construction
+ head_finderF( int N ) : m_N(N) {}
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ operator()(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End ) const
+ {
+ if(m_N>=0)
+ {
+ return find_head_impl( Begin, End, m_N );
+ }
+ else
+ {
+ iterator_range<ForwardIteratorT> Res=
+ find_tail_impl( Begin, End, -m_N );
+
+ return make_iterator_range(Begin, Res.begin());
+ }
+ }
+
+ private:
+ int m_N;
+ };
+
+// find tail functor -----------------------------------------------//
+
+
+ // find a tail in the sequence ( functor )
+ /*
+ This functor find a tail of the specified range. For
+ a specified N, the head is a subsequence of N starting
+ elements of the range.
+ */
+ struct tail_finderF
+ {
+ // Construction
+ tail_finderF( int N ) : m_N(N) {}
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ operator()(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End ) const
+ {
+ if(m_N>=0)
+ {
+ return find_tail_impl( Begin, End, m_N );
+ }
+ else
+ {
+ iterator_range<ForwardIteratorT> Res=
+ find_head_impl( Begin, End, -m_N );
+
+ return make_iterator_range(Res.end(), End);
+ }
+ }
+
+ private:
+ int m_N;
+ };
+
+// find token functor -----------------------------------------------//
+
+ // find a token in a sequence ( functor )
+ /*
+ This find functor finds a token specified be a predicate
+ in a sequence. It is equivalent of std::find algorithm,
+ with an exception that it return range instead of a single
+ iterator.
+
+ If bCompress is set to true, adjacent matching tokens are
+ concatenated into one match.
+ */
+ template< typename PredicateT >
+ struct token_finderF
+ {
+ // Construction
+ token_finderF(
+ PredicateT Pred,
+ token_compress_mode_type eCompress=token_compress_off ) :
+ m_Pred(Pred), m_eCompress(eCompress) {}
+
+ // Operation
+ template< typename ForwardIteratorT >
+ iterator_range<ForwardIteratorT>
+ operator()(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End ) const
+ {
+ typedef iterator_range<ForwardIteratorT> result_type;
+
+ ForwardIteratorT It=std::find_if( Begin, End, m_Pred );
+
+ if( It==End )
+ {
+ return result_type( End, End );
+ }
+ else
+ {
+ ForwardIteratorT It2=It;
+
+ if( m_eCompress==token_compress_on )
+ {
+ // Find first non-matching character
+ while( It2!=End && m_Pred(*It2) ) ++It2;
+ }
+ else
+ {
+ // Advance by one position
+ ++It2;
+ }
+
+ return result_type( It, It2 );
+ }
+ }
+
+ private:
+ PredicateT m_Pred;
+ token_compress_mode_type m_eCompress;
+ };
+
+// find range functor -----------------------------------------------//
+
+ // find a range in the sequence ( functor )
+ /*
+ This functor actually does not perform any find operation.
+ It always returns given iterator range as a result.
+ */
+ template<typename ForwardIterator1T>
+ struct range_finderF
+ {
+ typedef ForwardIterator1T input_iterator_type;
+ typedef iterator_range<input_iterator_type> result_type;
+
+ // Construction
+ range_finderF(
+ input_iterator_type Begin,
+ input_iterator_type End ) : m_Range(Begin, End) {}
+
+ range_finderF(const iterator_range<input_iterator_type>& Range) :
+ m_Range(Range) {}
+
+ // Operation
+ template< typename ForwardIterator2T >
+ iterator_range<ForwardIterator2T>
+ operator()(
+ ForwardIterator2T,
+ ForwardIterator2T ) const
+ {
+#if BOOST_WORKAROUND( __MWERKS__, <= 0x3003 )
+ return iterator_range<const ForwardIterator2T>(this->m_Range);
+#elif BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ return iterator_range<ForwardIterator2T>(m_Range.begin(), m_Range.end());
+#else
+ return m_Range;
+#endif
+ }
+
+ private:
+ iterator_range<input_iterator_type> m_Range;
+ };
+
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+#endif // BOOST_STRING_FINDER_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/formatter.hpp b/3rdParty/Boost/boost/algorithm/string/detail/formatter.hpp
new file mode 100644
index 0000000..bd6a780
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/formatter.hpp
@@ -0,0 +1,94 @@
+// Boost string_algo library formatter.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FORMATTER_DETAIL_HPP
+#define BOOST_STRING_FORMATTER_DETAIL_HPP
+
+
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/const_iterator.hpp>
+
+#include <boost/algorithm/string/detail/util.hpp>
+
+// generic replace functors -----------------------------------------------//
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// const format functor ----------------------------------------------------//
+
+ // constant format functor
+ template<typename RangeT>
+ struct const_formatF
+ {
+ private:
+ typedef BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type format_iterator;
+ typedef iterator_range<format_iterator> result_type;
+
+ public:
+ // Construction
+ const_formatF(const RangeT& Format) :
+ m_Format(::boost::begin(Format), ::boost::end(Format)) {}
+
+ // Operation
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ template<typename Range2T>
+ result_type& operator()(const Range2T&)
+ {
+ return m_Format;
+ }
+#endif
+
+ template<typename Range2T>
+ const result_type& operator()(const Range2T&) const
+ {
+ return m_Format;
+ }
+
+ private:
+ result_type m_Format;
+ };
+
+// identity format functor ----------------------------------------------------//
+
+ // identity format functor
+ template<typename RangeT>
+ struct identity_formatF
+ {
+ // Operation
+ template< typename Range2T >
+ const RangeT& operator()(const Range2T& Replace) const
+ {
+ return RangeT(::boost::begin(Replace), ::boost::end(Replace));
+ }
+ };
+
+// empty format functor ( used by erase ) ------------------------------------//
+
+ // empty format functor
+ template< typename CharT >
+ struct empty_formatF
+ {
+ template< typename ReplaceT >
+ empty_container<CharT> operator()(const ReplaceT&) const
+ {
+ return empty_container<CharT>();
+ }
+ };
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+#endif // BOOST_STRING_FORMATTER_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/replace_storage.hpp b/3rdParty/Boost/boost/algorithm/string/detail/replace_storage.hpp
new file mode 100644
index 0000000..7aff247
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/replace_storage.hpp
@@ -0,0 +1,159 @@
+// Boost string_algo library replace_storage.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
+#define BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <algorithm>
+#include <boost/mpl/bool.hpp>
+#include <boost/algorithm/string/sequence_traits.hpp>
+#include <boost/algorithm/string/detail/sequence.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// storage handling routines -----------------------------------------------//
+
+ template< typename StorageT, typename OutputIteratorT >
+ inline OutputIteratorT move_from_storage(
+ StorageT& Storage,
+ OutputIteratorT DestBegin,
+ OutputIteratorT DestEnd )
+ {
+ OutputIteratorT OutputIt=DestBegin;
+
+ while( !Storage.empty() && OutputIt!=DestEnd )
+ {
+ *OutputIt=Storage.front();
+ Storage.pop_front();
+ ++OutputIt;
+ }
+
+ return OutputIt;
+ }
+
+ template< typename StorageT, typename WhatT >
+ inline void copy_to_storage(
+ StorageT& Storage,
+ const WhatT& What )
+ {
+ Storage.insert( Storage.end(), ::boost::begin(What), ::boost::end(What) );
+ }
+
+
+// process segment routine -----------------------------------------------//
+
+ template< bool HasStableIterators >
+ struct process_segment_helper
+ {
+ // Optimized version of process_segment for generic sequence
+ template<
+ typename StorageT,
+ typename InputT,
+ typename ForwardIteratorT >
+ ForwardIteratorT operator()(
+ StorageT& Storage,
+ InputT& /*Input*/,
+ ForwardIteratorT InsertIt,
+ ForwardIteratorT SegmentBegin,
+ ForwardIteratorT SegmentEnd )
+ {
+ // Copy data from the storage until the beginning of the segment
+ ForwardIteratorT It=move_from_storage( Storage, InsertIt, SegmentBegin );
+
+ // 3 cases are possible :
+ // a) Storage is empty, It==SegmentBegin
+ // b) Storage is empty, It!=SegmentBegin
+ // c) Storage is not empty
+
+ if( Storage.empty() )
+ {
+ if( It==SegmentBegin )
+ {
+ // Case a) everything is grand, just return end of segment
+ return SegmentEnd;
+ }
+ else
+ {
+ // Case b) move the segment backwards
+ return std::copy( SegmentBegin, SegmentEnd, It );
+ }
+ }
+ else
+ {
+ // Case c) -> shift the segment to the left and keep the overlap in the storage
+ while( It!=SegmentEnd )
+ {
+ // Store value into storage
+ Storage.push_back( *It );
+ // Get the top from the storage and put it here
+ *It=Storage.front();
+ Storage.pop_front();
+
+ // Advance
+ ++It;
+ }
+
+ return It;
+ }
+ }
+ };
+
+ template<>
+ struct process_segment_helper< true >
+ {
+ // Optimized version of process_segment for list-like sequence
+ template<
+ typename StorageT,
+ typename InputT,
+ typename ForwardIteratorT >
+ ForwardIteratorT operator()(
+ StorageT& Storage,
+ InputT& Input,
+ ForwardIteratorT InsertIt,
+ ForwardIteratorT SegmentBegin,
+ ForwardIteratorT SegmentEnd )
+
+ {
+ // Call replace to do the job
+ replace( Input, InsertIt, SegmentBegin, Storage );
+ // Empty the storage
+ Storage.clear();
+ // Iterators were not changed, simply return the end of segment
+ return SegmentEnd;
+ }
+ };
+
+ // Process one segment in the replace_all algorithm
+ template<
+ typename StorageT,
+ typename InputT,
+ typename ForwardIteratorT >
+ inline ForwardIteratorT process_segment(
+ StorageT& Storage,
+ InputT& Input,
+ ForwardIteratorT InsertIt,
+ ForwardIteratorT SegmentBegin,
+ ForwardIteratorT SegmentEnd )
+ {
+ return
+ process_segment_helper<
+ has_stable_iterators<InputT>::value>()(
+ Storage, Input, InsertIt, SegmentBegin, SegmentEnd );
+ }
+
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+#endif // BOOST_STRING_REPLACE_STORAGE_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/sequence.hpp b/3rdParty/Boost/boost/algorithm/string/detail/sequence.hpp
new file mode 100644
index 0000000..de01350
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/sequence.hpp
@@ -0,0 +1,200 @@
+// Boost string_algo library sequence.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_DETAIL_SEQUENCE_HPP
+#define BOOST_STRING_DETAIL_SEQUENCE_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/logical.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+#include <boost/algorithm/string/sequence_traits.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// insert helpers -------------------------------------------------//
+
+ template< typename InputT, typename ForwardIteratorT >
+ inline void insert(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator At,
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ Input.insert( At, Begin, End );
+ }
+
+ template< typename InputT, typename InsertT >
+ inline void insert(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator At,
+ const InsertT& Insert )
+ {
+ insert( Input, At, ::boost::begin(Insert), ::boost::end(Insert) );
+ }
+
+// erase helper ---------------------------------------------------//
+
+ // Erase a range in the sequence
+ /*
+ Returns the iterator pointing just after the erase subrange
+ */
+ template< typename InputT >
+ inline typename InputT::iterator erase(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To )
+ {
+ return Input.erase( From, To );
+ }
+
+// replace helper implementation ----------------------------------//
+
+ // Optimized version of replace for generic sequence containers
+ // Assumption: insert and erase are expensive
+ template< bool HasConstTimeOperations >
+ struct replace_const_time_helper
+ {
+ template< typename InputT, typename ForwardIteratorT >
+ void operator()(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To,
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ // Copy data to the container ( as much as possible )
+ ForwardIteratorT InsertIt=Begin;
+ BOOST_STRING_TYPENAME InputT::iterator InputIt=From;
+ for(; InsertIt!=End && InputIt!=To; InsertIt++, InputIt++ )
+ {
+ *InputIt=*InsertIt;
+ }
+
+ if ( InsertIt!=End )
+ {
+ // Replace sequence is longer, insert it
+ Input.insert( InputIt, InsertIt, End );
+ }
+ else
+ {
+ if ( InputIt!=To )
+ {
+ // Replace sequence is shorter, erase the rest
+ Input.erase( InputIt, To );
+ }
+ }
+ }
+ };
+
+ template<>
+ struct replace_const_time_helper< true >
+ {
+ // Const-time erase and insert methods -> use them
+ template< typename InputT, typename ForwardIteratorT >
+ void operator()(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To,
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ BOOST_STRING_TYPENAME InputT::iterator At=Input.erase( From, To );
+ if ( Begin!=End )
+ {
+ if(!Input.empty())
+ {
+ Input.insert( At, Begin, End );
+ }
+ else
+ {
+ Input.insert( Input.begin(), Begin, End );
+ }
+ }
+ }
+ };
+
+ // No native replace method
+ template< bool HasNative >
+ struct replace_native_helper
+ {
+ template< typename InputT, typename ForwardIteratorT >
+ void operator()(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To,
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ replace_const_time_helper<
+ boost::mpl::and_<
+ has_const_time_insert<InputT>,
+ has_const_time_erase<InputT> >::value >()(
+ Input, From, To, Begin, End );
+ }
+ };
+
+ // Container has native replace method
+ template<>
+ struct replace_native_helper< true >
+ {
+ template< typename InputT, typename ForwardIteratorT >
+ void operator()(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To,
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ Input.replace( From, To, Begin, End );
+ }
+ };
+
+// replace helper -------------------------------------------------//
+
+ template< typename InputT, typename ForwardIteratorT >
+ inline void replace(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To,
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ replace_native_helper< has_native_replace<InputT>::value >()(
+ Input, From, To, Begin, End );
+ }
+
+ template< typename InputT, typename InsertT >
+ inline void replace(
+ InputT& Input,
+ BOOST_STRING_TYPENAME InputT::iterator From,
+ BOOST_STRING_TYPENAME InputT::iterator To,
+ const InsertT& Insert )
+ {
+ if(From!=To)
+ {
+ replace( Input, From, To, ::boost::begin(Insert), ::boost::end(Insert) );
+ }
+ else
+ {
+ insert( Input, From, ::boost::begin(Insert), ::boost::end(Insert) );
+ }
+ }
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+
+#endif // BOOST_STRING_DETAIL_SEQUENCE_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/detail/util.hpp b/3rdParty/Boost/boost/algorithm/string/detail/util.hpp
new file mode 100644
index 0000000..7e8471f
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/detail/util.hpp
@@ -0,0 +1,106 @@
+// Boost string_algo library util.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_UTIL_DETAIL_HPP
+#define BOOST_STRING_UTIL_DETAIL_HPP
+
+#include <boost/algorithm/string/config.hpp>
+#include <functional>
+#include <boost/range/iterator_range.hpp>
+
+namespace boost {
+ namespace algorithm {
+ namespace detail {
+
+// empty container -----------------------------------------------//
+
+ // empty_container
+ /*
+ This class represents always empty container,
+ containing elements of type CharT.
+
+ It is supposed to be used in a const version only
+ */
+ template< typename CharT >
+ struct empty_container
+ {
+ typedef empty_container<CharT> type;
+ typedef CharT value_type;
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef const value_type& reference;
+ typedef const value_type& const_reference;
+ typedef const value_type* iterator;
+ typedef const value_type* const_iterator;
+
+
+ // Operations
+ const_iterator begin() const
+ {
+ return reinterpret_cast<const_iterator>(0);
+ }
+
+ const_iterator end() const
+ {
+ return reinterpret_cast<const_iterator>(0);
+ }
+
+ bool empty() const
+ {
+ return false;
+ }
+
+ size_type size() const
+ {
+ return 0;
+ }
+ };
+
+// bounded copy algorithm -----------------------------------------------//
+
+ // Bounded version of the std::copy algorithm
+ template<typename InputIteratorT, typename OutputIteratorT>
+ inline OutputIteratorT bounded_copy(
+ InputIteratorT First,
+ InputIteratorT Last,
+ OutputIteratorT DestFirst,
+ OutputIteratorT DestLast )
+ {
+ InputIteratorT InputIt=First;
+ OutputIteratorT OutputIt=DestFirst;
+ for(; InputIt!=Last && OutputIt!=DestLast; InputIt++, OutputIt++ )
+ {
+ *OutputIt=*InputIt;
+ }
+
+ return OutputIt;
+ }
+
+// iterator range utilities -----------------------------------------//
+
+ // copy range functor
+ template<
+ typename SeqT,
+ typename IteratorT=BOOST_STRING_TYPENAME SeqT::const_iterator >
+ struct copy_iterator_rangeF :
+ public std::unary_function< iterator_range<IteratorT>, SeqT >
+ {
+ SeqT operator()( const iterator_range<IteratorT>& Range ) const
+ {
+ return copy_range<SeqT>(Range);
+ }
+ };
+
+ } // namespace detail
+ } // namespace algorithm
+} // namespace boost
+
+
+#endif // BOOST_STRING_UTIL_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/erase.hpp b/3rdParty/Boost/boost/algorithm/string/erase.hpp
new file mode 100644
index 0000000..b50323b
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/erase.hpp
@@ -0,0 +1,844 @@
+// Boost string_algo library erase.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2006.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_ERASE_HPP
+#define BOOST_STRING_ERASE_HPP
+
+#include <boost/algorithm/string/config.hpp>
+
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+
+#include <boost/algorithm/string/find_format.hpp>
+#include <boost/algorithm/string/finder.hpp>
+#include <boost/algorithm/string/formatter.hpp>
+
+/*! \file
+ Defines various erase algorithms. Each algorithm removes
+ part(s) of the input according to a searching criteria.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// erase_range -------------------------------------------------------//
+
+ //! Erase range algorithm
+ /*!
+ Remove the given range from the input. The result is a modified copy of
+ the input. It is returned as a sequence or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input sequence
+ \param SearchRange A range in the input to be removed
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<typename OutputIteratorT, typename RangeT>
+ inline OutputIteratorT erase_range_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ const iterator_range<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type>& SearchRange )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ range_finder(SearchRange),
+ empty_formatter(Input) );
+ }
+
+ //! Erase range algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT>
+ inline SequenceT erase_range_copy(
+ const SequenceT& Input,
+ const iterator_range<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<SequenceT>::type>& SearchRange )
+ {
+ return find_format_copy(
+ Input,
+ range_finder(SearchRange),
+ empty_formatter(Input) );
+ }
+
+ //! Erase range algorithm
+ /*!
+ Remove the given range from the input.
+ The input sequence is modified in-place.
+
+ \param Input An input sequence
+ \param SearchRange A range in the input to be removed
+ */
+ template<typename SequenceT>
+ inline void erase_range(
+ SequenceT& Input,
+ const iterator_range<
+ BOOST_STRING_TYPENAME
+ range_iterator<SequenceT>::type>& SearchRange )
+ {
+ find_format(
+ Input,
+ range_finder(SearchRange),
+ empty_formatter(Input) );
+ }
+
+// erase_first --------------------------------------------------------//
+
+ //! Erase first algorithm
+ /*!
+ Remove the first occurrence of the substring from the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT erase_first_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ first_finder(Search),
+ empty_formatter(Input) );
+ }
+
+ //! Erase first algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT erase_first_copy(
+ const SequenceT& Input,
+ const RangeT& Search )
+ {
+ return find_format_copy(
+ Input,
+ first_finder(Search),
+ empty_formatter(Input) );
+ }
+
+ //! Erase first algorithm
+ /*!
+ Remove the first occurrence of the substring from the input.
+ The input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for.
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void erase_first(
+ SequenceT& Input,
+ const RangeT& Search )
+ {
+ find_format(
+ Input,
+ first_finder(Search),
+ empty_formatter(Input) );
+ }
+
+// erase_first ( case insensitive ) ------------------------------------//
+
+ //! Erase first algorithm ( case insensitive )
+ /*!
+ Remove the first occurrence of the substring from the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT ierase_first_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase first algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT ierase_first_copy(
+ const SequenceT& Input,
+ const RangeT& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase first algorithm ( case insensitive )
+ /*!
+ Remove the first occurrence of the substring from the input.
+ The input sequence is modified in-place. Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void ierase_first(
+ SequenceT& Input,
+ const RangeT& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+// erase_last --------------------------------------------------------//
+
+ //! Erase last algorithm
+ /*!
+ Remove the last occurrence of the substring from the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for.
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT erase_last_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ last_finder(Search),
+ empty_formatter(Input) );
+ }
+
+ //! Erase last algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT erase_last_copy(
+ const SequenceT& Input,
+ const RangeT& Search )
+ {
+ return find_format_copy(
+ Input,
+ last_finder(Search),
+ empty_formatter(Input) );
+ }
+
+ //! Erase last algorithm
+ /*!
+ Remove the last occurrence of the substring from the input.
+ The input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void erase_last(
+ SequenceT& Input,
+ const RangeT& Search )
+ {
+ find_format(
+ Input,
+ last_finder(Search),
+ empty_formatter(Input) );
+ }
+
+// erase_last ( case insensitive ) ------------------------------------//
+
+ //! Erase last algorithm ( case insensitive )
+ /*!
+ Remove the last occurrence of the substring from the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT ierase_last_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ last_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase last algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT ierase_last_copy(
+ const SequenceT& Input,
+ const RangeT& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Input,
+ last_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase last algorithm ( case insensitive )
+ /*!
+ Remove the last occurrence of the substring from the input.
+ The input sequence is modified in-place. Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void ierase_last(
+ SequenceT& Input,
+ const RangeT& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format(
+ Input,
+ last_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+// erase_nth --------------------------------------------------------------------//
+
+ //! Erase nth algorithm
+ /*!
+ Remove the Nth occurrence of the substring in the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT erase_nth_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ int Nth )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ nth_finder(Search, Nth),
+ empty_formatter(Input) );
+ }
+
+ //! Erase nth algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT erase_nth_copy(
+ const SequenceT& Input,
+ const RangeT& Search,
+ int Nth )
+ {
+ return find_format_copy(
+ Input,
+ nth_finder(Search, Nth),
+ empty_formatter(Input) );
+ }
+
+ //! Erase nth algorithm
+ /*!
+ Remove the Nth occurrence of the substring in the input.
+ The input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for.
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void erase_nth(
+ SequenceT& Input,
+ const RangeT& Search,
+ int Nth )
+ {
+ find_format(
+ Input,
+ nth_finder(Search, Nth),
+ empty_formatter(Input) );
+ }
+
+// erase_nth ( case insensitive ) ---------------------------------------------//
+
+ //! Erase nth algorithm ( case insensitive )
+ /*!
+ Remove the Nth occurrence of the substring in the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for.
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT ierase_nth_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ int Nth,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ nth_finder(Search, Nth, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase nth algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT ierase_nth_copy(
+ const SequenceT& Input,
+ const RangeT& Search,
+ int Nth,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Input,
+ nth_finder(Search, Nth, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase nth algorithm
+ /*!
+ Remove the Nth occurrence of the substring in the input.
+ The input sequence is modified in-place. Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for.
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void ierase_nth(
+ SequenceT& Input,
+ const RangeT& Search,
+ int Nth,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format(
+ Input,
+ nth_finder(Search, Nth, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+
+// erase_all --------------------------------------------------------//
+
+ //! Erase all algorithm
+ /*!
+ Remove all the occurrences of the string from the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input sequence
+ \param Search A substring to be searched for.
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT erase_all_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search )
+ {
+ return find_format_all_copy(
+ Output,
+ Input,
+ first_finder(Search),
+ empty_formatter(Input) );
+ }
+
+ //! Erase all algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT erase_all_copy(
+ const SequenceT& Input,
+ const RangeT& Search )
+ {
+ return find_format_all_copy(
+ Input,
+ first_finder(Search),
+ empty_formatter(Input) );
+ }
+
+ //! Erase all algorithm
+ /*!
+ Remove all the occurrences of the string from the input.
+ The input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for.
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void erase_all(
+ SequenceT& Input,
+ const RangeT& Search )
+ {
+ find_format_all(
+ Input,
+ first_finder(Search),
+ empty_formatter(Input) );
+ }
+
+// erase_all ( case insensitive ) ------------------------------------//
+
+ //! Erase all algorithm ( case insensitive )
+ /*!
+ Remove all the occurrences of the string from the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT ierase_all_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_all_copy(
+ Output,
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase all algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT ierase_all_copy(
+ const SequenceT& Input,
+ const RangeT& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_all_copy(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+ //! Erase all algorithm ( case insensitive )
+ /*!
+ Remove all the occurrences of the string from the input.
+ The input sequence is modified in-place. Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for.
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void ierase_all(
+ SequenceT& Input,
+ const RangeT& Search,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format_all(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ empty_formatter(Input) );
+ }
+
+// erase_head --------------------------------------------------------------------//
+
+ //! Erase head algorithm
+ /*!
+ Remove the head from the input. The head is a prefix of a sequence of given size.
+ If the sequence is shorter then required, the whole string is
+ considered to be the head. The result is a modified copy of the input.
+ It is returned as a sequence or copied to the output iterator.
+
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param N Length of the head.
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename RangeT>
+ inline OutputIteratorT erase_head_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ int N )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ head_finder(N),
+ empty_formatter( Input ) );
+ }
+
+ //! Erase head algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT>
+ inline SequenceT erase_head_copy(
+ const SequenceT& Input,
+ int N )
+ {
+ return find_format_copy(
+ Input,
+ head_finder(N),
+ empty_formatter( Input ) );
+ }
+
+ //! Erase head algorithm
+ /*!
+ Remove the head from the input. The head is a prefix of a sequence of given size.
+ If the sequence is shorter then required, the whole string is
+ considered to be the head. The input sequence is modified in-place.
+
+ \param Input An input string
+ \param N Length of the head
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ */
+ template<typename SequenceT>
+ inline void erase_head(
+ SequenceT& Input,
+ int N )
+ {
+ find_format(
+ Input,
+ head_finder(N),
+ empty_formatter( Input ) );
+ }
+
+// erase_tail --------------------------------------------------------------------//
+
+ //! Erase tail algorithm
+ /*!
+ Remove the tail from the input. The tail is a suffix of a sequence of given size.
+ If the sequence is shorter then required, the whole string is
+ considered to be the tail.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param N Length of the head.
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename RangeT>
+ inline OutputIteratorT erase_tail_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ int N )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ tail_finder(N),
+ empty_formatter( Input ) );
+ }
+
+ //! Erase tail algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT>
+ inline SequenceT erase_tail_copy(
+ const SequenceT& Input,
+ int N )
+ {
+ return find_format_copy(
+ Input,
+ tail_finder(N),
+ empty_formatter( Input ) );
+ }
+
+ //! Erase tail algorithm
+ /*!
+ Remove the tail from the input. The tail is a suffix of a sequence of given size.
+ If the sequence is shorter then required, the whole string is
+ considered to be the tail. The input sequence is modified in-place.
+
+ \param Input An input string
+ \param N Length of the head
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ */
+ template<typename SequenceT>
+ inline void erase_tail(
+ SequenceT& Input,
+ int N )
+ {
+ find_format(
+ Input,
+ tail_finder(N),
+ empty_formatter( Input ) );
+ }
+
+ } // namespace algorithm
+
+ // pull names into the boost namespace
+ using algorithm::erase_range_copy;
+ using algorithm::erase_range;
+ using algorithm::erase_first_copy;
+ using algorithm::erase_first;
+ using algorithm::ierase_first_copy;
+ using algorithm::ierase_first;
+ using algorithm::erase_last_copy;
+ using algorithm::erase_last;
+ using algorithm::ierase_last_copy;
+ using algorithm::ierase_last;
+ using algorithm::erase_nth_copy;
+ using algorithm::erase_nth;
+ using algorithm::ierase_nth_copy;
+ using algorithm::ierase_nth;
+ using algorithm::erase_all_copy;
+ using algorithm::erase_all;
+ using algorithm::ierase_all_copy;
+ using algorithm::ierase_all;
+ using algorithm::erase_head_copy;
+ using algorithm::erase_head;
+ using algorithm::erase_tail_copy;
+ using algorithm::erase_tail;
+
+} // namespace boost
+
+
+#endif // BOOST_ERASE_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/find_format.hpp b/3rdParty/Boost/boost/algorithm/string/find_format.hpp
new file mode 100644
index 0000000..7cbaf34
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/find_format.hpp
@@ -0,0 +1,269 @@
+// Boost string_algo library find_format.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FIND_FORMAT_HPP
+#define BOOST_STRING_FIND_FORMAT_HPP
+
+#include <deque>
+#include <boost/detail/iterator.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/const_iterator.hpp>
+#include <boost/range/as_literal.hpp>
+
+#include <boost/algorithm/string/concept.hpp>
+#include <boost/algorithm/string/detail/find_format.hpp>
+#include <boost/algorithm/string/detail/find_format_all.hpp>
+
+/*! \file
+ Defines generic replace algorithms. Each algorithm replaces
+ part(s) of the input. The part to be replaced is looked up using a Finder object.
+ Result of finding is then used by a Formatter object to generate the replacement.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// generic replace -----------------------------------------------------------------//
+
+ //! Generic replace algorithm
+ /*!
+ Use the Finder to search for a substring. Use the Formatter to format
+ this substring and replace it in the input.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input sequence
+ \param Finder A Finder object used to search for a match to be replaced
+ \param Formatter A Formatter object used to format a match
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename RangeT,
+ typename FinderT,
+ typename FormatterT>
+ inline OutputIteratorT find_format_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ FinderT Finder,
+ FormatterT Formatter )
+ {
+ // Concept check
+ function_requires<
+ FinderConcept<FinderT,
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
+ function_requires<
+ FormatterConcept<
+ FormatterT,
+ FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
+
+ iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
+
+ return detail::find_format_copy_impl(
+ Output,
+ lit_input,
+ Formatter,
+ Finder( ::boost::begin(lit_input), ::boost::end(lit_input) ) );
+ }
+
+ //! Generic replace algorithm
+ /*!
+ \overload
+ */
+ template<
+ typename SequenceT,
+ typename FinderT,
+ typename FormatterT>
+ inline SequenceT find_format_copy(
+ const SequenceT& Input,
+ FinderT Finder,
+ FormatterT Formatter )
+ {
+ // Concept check
+ function_requires<
+ FinderConcept<FinderT,
+ BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+ function_requires<
+ FormatterConcept<
+ FormatterT,
+ FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+
+ return detail::find_format_copy_impl(
+ Input,
+ Formatter,
+ Finder(::boost::begin(Input), ::boost::end(Input)));
+ }
+
+ //! Generic replace algorithm
+ /*!
+ Use the Finder to search for a substring. Use the Formatter to format
+ this substring and replace it in the input. The input is modified in-place.
+
+ \param Input An input sequence
+ \param Finder A Finder object used to search for a match to be replaced
+ \param Formatter A Formatter object used to format a match
+ */
+ template<
+ typename SequenceT,
+ typename FinderT,
+ typename FormatterT>
+ inline void find_format(
+ SequenceT& Input,
+ FinderT Finder,
+ FormatterT Formatter)
+ {
+ // Concept check
+ function_requires<
+ FinderConcept<FinderT,
+ BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+ function_requires<
+ FormatterConcept<
+ FormatterT,
+ FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+
+ detail::find_format_impl(
+ Input,
+ Formatter,
+ Finder(::boost::begin(Input), ::boost::end(Input)));
+ }
+
+
+// find_format_all generic ----------------------------------------------------------------//
+
+ //! Generic replace all algorithm
+ /*!
+ Use the Finder to search for a substring. Use the Formatter to format
+ this substring and replace it in the input. Repeat this for all matching
+ substrings.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input sequence
+ \param Finder A Finder object used to search for a match to be replaced
+ \param Formatter A Formatter object used to format a match
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename RangeT,
+ typename FinderT,
+ typename FormatterT>
+ inline OutputIteratorT find_format_all_copy(
+ OutputIteratorT Output,
+ const RangeT& Input,
+ FinderT Finder,
+ FormatterT Formatter)
+ {
+ // Concept check
+ function_requires<
+ FinderConcept<FinderT,
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
+ function_requires<
+ FormatterConcept<
+ FormatterT,
+ FinderT,BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
+
+ iterator_range<BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> lit_input(as_literal(Input));
+
+ return detail::find_format_all_copy_impl(
+ Output,
+ lit_input,
+ Finder,
+ Formatter,
+ Finder(::boost::begin(lit_input), ::boost::end(lit_input)));
+ }
+
+ //! Generic replace all algorithm
+ /*!
+ \overload
+ */
+ template<
+ typename SequenceT,
+ typename FinderT,
+ typename FormatterT >
+ inline SequenceT find_format_all_copy(
+ const SequenceT& Input,
+ FinderT Finder,
+ FormatterT Formatter )
+ {
+ // Concept check
+ function_requires<
+ FinderConcept<FinderT,
+ BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+ function_requires<
+ FormatterConcept<
+ FormatterT,
+ FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+
+ return detail::find_format_all_copy_impl(
+ Input,
+ Finder,
+ Formatter,
+ Finder( ::boost::begin(Input), ::boost::end(Input) ) );
+ }
+
+ //! Generic replace all algorithm
+ /*!
+ Use the Finder to search for a substring. Use the Formatter to format
+ this substring and replace it in the input. Repeat this for all matching
+ substrings.The input is modified in-place.
+
+ \param Input An input sequence
+ \param Finder A Finder object used to search for a match to be replaced
+ \param Formatter A Formatter object used to format a match
+ */
+ template<
+ typename SequenceT,
+ typename FinderT,
+ typename FormatterT >
+ inline void find_format_all(
+ SequenceT& Input,
+ FinderT Finder,
+ FormatterT Formatter )
+ {
+ // Concept check
+ function_requires<
+ FinderConcept<FinderT,
+ BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+ function_requires<
+ FormatterConcept<
+ FormatterT,
+ FinderT,BOOST_STRING_TYPENAME range_const_iterator<SequenceT>::type> >();
+
+ detail::find_format_all_impl(
+ Input,
+ Finder,
+ Formatter,
+ Finder(::boost::begin(Input), ::boost::end(Input)));
+
+ }
+
+ } // namespace algorithm
+
+ // pull the names to the boost namespace
+ using algorithm::find_format_copy;
+ using algorithm::find_format;
+ using algorithm::find_format_all_copy;
+ using algorithm::find_format_all;
+
+} // namespace boost
+
+
+#endif // BOOST_STRING_FIND_FORMAT_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/finder.hpp b/3rdParty/Boost/boost/algorithm/string/finder.hpp
new file mode 100644
index 0000000..c936ddb
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/finder.hpp
@@ -0,0 +1,270 @@
+// Boost string_algo library finder.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2006.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FINDER_HPP
+#define BOOST_STRING_FINDER_HPP
+
+#include <boost/algorithm/string/config.hpp>
+
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+
+#include <boost/algorithm/string/constants.hpp>
+#include <boost/algorithm/string/detail/finder.hpp>
+#include <boost/algorithm/string/compare.hpp>
+
+/*! \file
+ Defines Finder generators. Finder object is a functor which is able to
+ find a substring matching a specific criteria in the input.
+ Finders are used as a pluggable components for replace, find
+ and split facilities. This header contains generator functions
+ for finders provided in this library.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// Finder generators ------------------------------------------//
+
+ //! "First" finder
+ /*!
+ Construct the \c first_finder. The finder searches for the first
+ occurrence of the string in a given input.
+ The result is given as an \c iterator_range delimiting the match.
+
+ \param Search A substring to be searched for.
+ \param Comp An element comparison predicate
+ \return An instance of the \c first_finder object
+ */
+ template<typename RangeT>
+ inline detail::first_finderF<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
+ is_equal>
+ first_finder( const RangeT& Search )
+ {
+ return
+ detail::first_finderF<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type,
+ is_equal>( as_literal(Search), is_equal() ) ;
+ }
+
+ //! "First" finder
+ /*!
+ \overload
+ */
+ template<typename RangeT,typename PredicateT>
+ inline detail::first_finderF<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
+ PredicateT>
+ first_finder(
+ const RangeT& Search, PredicateT Comp )
+ {
+ return
+ detail::first_finderF<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type,
+ PredicateT>( as_literal(Search), Comp );
+ }
+
+ //! "Last" finder
+ /*!
+ Construct the \c last_finder. The finder searches for the last
+ occurrence of the string in a given input.
+ The result is given as an \c iterator_range delimiting the match.
+
+ \param Search A substring to be searched for.
+ \param Comp An element comparison predicate
+ \return An instance of the \c last_finder object
+ */
+ template<typename RangeT>
+ inline detail::last_finderF<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
+ is_equal>
+ last_finder( const RangeT& Search )
+ {
+ return
+ detail::last_finderF<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type,
+ is_equal>( as_literal(Search), is_equal() );
+ }
+ //! "Last" finder
+ /*!
+ \overload
+ */
+ template<typename RangeT, typename PredicateT>
+ inline detail::last_finderF<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
+ PredicateT>
+ last_finder( const RangeT& Search, PredicateT Comp )
+ {
+ return
+ detail::last_finderF<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type,
+ PredicateT>( as_literal(Search), Comp ) ;
+ }
+
+ //! "Nth" finder
+ /*!
+ Construct the \c nth_finder. The finder searches for the n-th (zero-indexed)
+ occurrence of the string in a given input.
+ The result is given as an \c iterator_range delimiting the match.
+
+ \param Search A substring to be searched for.
+ \param Nth An index of the match to be find
+ \param Comp An element comparison predicate
+ \return An instance of the \c nth_finder object
+ */
+ template<typename RangeT>
+ inline detail::nth_finderF<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
+ is_equal>
+ nth_finder(
+ const RangeT& Search,
+ int Nth)
+ {
+ return
+ detail::nth_finderF<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type,
+ is_equal>( as_literal(Search), Nth, is_equal() ) ;
+ }
+ //! "Nth" finder
+ /*!
+ \overload
+ */
+ template<typename RangeT, typename PredicateT>
+ inline detail::nth_finderF<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type,
+ PredicateT>
+ nth_finder(
+ const RangeT& Search,
+ int Nth,
+ PredicateT Comp )
+ {
+ return
+ detail::nth_finderF<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<RangeT>::type,
+ PredicateT>( as_literal(Search), Nth, Comp );
+ }
+
+ //! "Head" finder
+ /*!
+ Construct the \c head_finder. The finder returns a head of a given
+ input. The head is a prefix of a string up to n elements in
+ size. If an input has less then n elements, whole input is
+ considered a head.
+ The result is given as an \c iterator_range delimiting the match.
+
+ \param N The size of the head
+ \return An instance of the \c head_finder object
+ */
+ inline detail::head_finderF
+ head_finder( int N )
+ {
+ return detail::head_finderF(N);
+ }
+
+ //! "Tail" finder
+ /*!
+ Construct the \c tail_finder. The finder returns a tail of a given
+ input. The tail is a suffix of a string up to n elements in
+ size. If an input has less then n elements, whole input is
+ considered a head.
+ The result is given as an \c iterator_range delimiting the match.
+
+ \param N The size of the head
+ \return An instance of the \c tail_finder object
+ */
+ inline detail::tail_finderF
+ tail_finder( int N )
+ {
+ return detail::tail_finderF(N);
+ }
+
+ //! "Token" finder
+ /*!
+ Construct the \c token_finder. The finder searches for a token
+ specified by a predicate. It is similar to std::find_if
+ algorithm, with an exception that it return a range of
+ instead of a single iterator.
+
+ If "compress token mode" is enabled, adjacent matching tokens are
+ concatenated into one match. Thus the finder can be used to
+ search for continuous segments of characters satisfying the
+ given predicate.
+
+ The result is given as an \c iterator_range delimiting the match.
+
+ \param Pred An element selection predicate
+ \param eCompress Compress flag
+ \return An instance of the \c token_finder object
+ */
+ template< typename PredicateT >
+ inline detail::token_finderF<PredicateT>
+ token_finder(
+ PredicateT Pred,
+ token_compress_mode_type eCompress=token_compress_off )
+ {
+ return detail::token_finderF<PredicateT>( Pred, eCompress );
+ }
+
+ //! "Range" finder
+ /*!
+ Construct the \c range_finder. The finder does not perform
+ any operation. It simply returns the given range for
+ any input.
+
+ \param Begin Beginning of the range
+ \param End End of the range
+ \param Range The range.
+ \return An instance of the \c range_finger object
+ */
+ template< typename ForwardIteratorT >
+ inline detail::range_finderF<ForwardIteratorT>
+ range_finder(
+ ForwardIteratorT Begin,
+ ForwardIteratorT End )
+ {
+ return detail::range_finderF<ForwardIteratorT>( Begin, End );
+ }
+
+ //! "Range" finder
+ /*!
+ \overload
+ */
+ template< typename ForwardIteratorT >
+ inline detail::range_finderF<ForwardIteratorT>
+ range_finder( iterator_range<ForwardIteratorT> Range )
+ {
+ return detail::range_finderF<ForwardIteratorT>( Range );
+ }
+
+ } // namespace algorithm
+
+ // pull the names to the boost namespace
+ using algorithm::first_finder;
+ using algorithm::last_finder;
+ using algorithm::nth_finder;
+ using algorithm::head_finder;
+ using algorithm::tail_finder;
+ using algorithm::token_finder;
+ using algorithm::range_finder;
+
+} // namespace boost
+
+
+#endif // BOOST_STRING_FINDER_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/formatter.hpp b/3rdParty/Boost/boost/algorithm/string/formatter.hpp
new file mode 100644
index 0000000..e04a50f
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/formatter.hpp
@@ -0,0 +1,103 @@
+// Boost string_algo library formatter.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_FORMATTER_HPP
+#define BOOST_STRING_FORMATTER_HPP
+
+#include <boost/detail/iterator.hpp>
+#include <boost/range/value_type.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/as_literal.hpp>
+
+#include <boost/algorithm/string/detail/formatter.hpp>
+
+/*! \file
+ Defines Formatter generators. Formatter is a functor which formats
+ a string according to given parameters. A Formatter works
+ in conjunction with a Finder. A Finder can provide additional information
+ for a specific Formatter. An example of such a cooperation is regex_finder
+ and regex_formatter.
+
+ Formatters are used as pluggable components for replace facilities.
+ This header contains generator functions for the Formatters provided in this library.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// generic formatters ---------------------------------------------------------------//
+
+ //! Constant formatter
+ /*!
+ Construct the \c const_formatter. Const formatter always returns
+ the same value, regardless of the parameter.
+
+ \param Format A predefined value used as a result for formating
+ \return An instance of the \c const_formatter object.
+ */
+ template<typename RangeT>
+ inline detail::const_formatF<
+ iterator_range<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
+ const_formatter(const RangeT& Format)
+ {
+ return detail::const_formatF<
+ iterator_range<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(as_literal(Format));
+ }
+
+ //! Identity formatter
+ /*!
+ Construct the \c identity_formatter. Identity formatter always returns
+ the parameter.
+
+ \return An instance of the \c identity_formatter object.
+ */
+ template<typename RangeT>
+ inline detail::identity_formatF<
+ iterator_range<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >
+ identity_formatter()
+ {
+ return detail::identity_formatF<
+ iterator_range<
+ BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >();
+ }
+
+ //! Empty formatter
+ /*!
+ Construct the \c empty_formatter. Empty formatter always returns an empty
+ sequence.
+
+ \param Input container used to select a correct value_type for the
+ resulting empty_container<>.
+ \return An instance of the \c empty_formatter object.
+ */
+ template<typename RangeT>
+ inline detail::empty_formatF<
+ BOOST_STRING_TYPENAME range_value<RangeT>::type>
+ empty_formatter(const RangeT&)
+ {
+ return detail::empty_formatF<
+ BOOST_STRING_TYPENAME range_value<RangeT>::type>();
+ }
+
+
+ } // namespace algorithm
+
+ // pull the names to the boost namespace
+ using algorithm::const_formatter;
+ using algorithm::identity_formatter;
+ using algorithm::empty_formatter;
+
+} // namespace boost
+
+
+#endif // BOOST_FORMATTER_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/replace.hpp b/3rdParty/Boost/boost/algorithm/string/replace.hpp
new file mode 100644
index 0000000..1c59ec7
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/replace.hpp
@@ -0,0 +1,928 @@
+// Boost string_algo library replace.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2006.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_REPLACE_HPP
+#define BOOST_STRING_REPLACE_HPP
+
+#include <boost/algorithm/string/config.hpp>
+
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+
+#include <boost/algorithm/string/find_format.hpp>
+#include <boost/algorithm/string/finder.hpp>
+#include <boost/algorithm/string/formatter.hpp>
+#include <boost/algorithm/string/compare.hpp>
+
+/*! \file
+ Defines various replace algorithms. Each algorithm replaces
+ part(s) of the input according to set of searching and replace criteria.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// replace_range --------------------------------------------------------------------//
+
+ //! Replace range algorithm
+ /*!
+ Replace the given range in the input string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param SearchRange A range in the input to be substituted
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT replace_range_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const iterator_range<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<Range1T>::type>& SearchRange,
+ const Range2T& Format)
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ range_finder(SearchRange),
+ const_formatter(Format));
+ }
+
+ //! Replace range algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT replace_range_copy(
+ const SequenceT& Input,
+ const iterator_range<
+ BOOST_STRING_TYPENAME
+ range_const_iterator<SequenceT>::type>& SearchRange,
+ const RangeT& Format)
+ {
+ return find_format_copy(
+ Input,
+ range_finder(SearchRange),
+ const_formatter(Format));
+ }
+
+ //! Replace range algorithm
+ /*!
+ Replace the given range in the input string.
+ The input sequence is modified in-place.
+
+ \param Input An input string
+ \param SearchRange A range in the input to be substituted
+ \param Format A substitute string
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void replace_range(
+ SequenceT& Input,
+ const iterator_range<
+ BOOST_STRING_TYPENAME
+ range_iterator<SequenceT>::type>& SearchRange,
+ const RangeT& Format)
+ {
+ find_format(
+ Input,
+ range_finder(SearchRange),
+ const_formatter(Format));
+ }
+
+// replace_first --------------------------------------------------------------------//
+
+ //! Replace first algorithm
+ /*!
+ Replace the first match of the search substring in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT replace_first_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const Range3T& Format)
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ first_finder(Search),
+ const_formatter(Format) );
+ }
+
+ //! Replace first algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT replace_first_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format )
+ {
+ return find_format_copy(
+ Input,
+ first_finder(Search),
+ const_formatter(Format) );
+ }
+
+ //! Replace first algorithm
+ /*!
+ replace the first match of the search substring in the input
+ with the format string. The input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void replace_first(
+ SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format )
+ {
+ find_format(
+ Input,
+ first_finder(Search),
+ const_formatter(Format) );
+ }
+
+// replace_first ( case insensitive ) ---------------------------------------------//
+
+ //! Replace first algorithm ( case insensitive )
+ /*!
+ Replace the first match of the search substring in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT ireplace_first_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const Range3T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace first algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range2T, typename Range1T>
+ inline SequenceT ireplace_first_copy(
+ const SequenceT& Input,
+ const Range2T& Search,
+ const Range1T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace first algorithm ( case insensitive )
+ /*!
+ Replace the first match of the search substring in the input
+ with the format string. Input sequence is modified in-place.
+ Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void ireplace_first(
+ SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+// replace_last --------------------------------------------------------------------//
+
+ //! Replace last algorithm
+ /*!
+ Replace the last match of the search string in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT replace_last_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const Range3T& Format )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ last_finder(Search),
+ const_formatter(Format) );
+ }
+
+ //! Replace last algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT replace_last_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format )
+ {
+ return find_format_copy(
+ Input,
+ last_finder(Search),
+ const_formatter(Format) );
+ }
+
+ //! Replace last algorithm
+ /*!
+ Replace the last match of the search string in the input
+ with the format string. Input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void replace_last(
+ SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format )
+ {
+ find_format(
+ Input,
+ last_finder(Search),
+ const_formatter(Format) );
+ }
+
+// replace_last ( case insensitive ) -----------------------------------------------//
+
+ //! Replace last algorithm ( case insensitive )
+ /*!
+ Replace the last match of the search string in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT ireplace_last_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const Range3T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ last_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace last algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT ireplace_last_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Input,
+ last_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace last algorithm ( case insensitive )
+ /*!
+ Replace the last match of the search string in the input
+ with the format string.The input sequence is modified in-place.
+ Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ \return A reference to the modified input
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void ireplace_last(
+ SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format(
+ Input,
+ last_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+// replace_nth --------------------------------------------------------------------//
+
+ //! Replace nth algorithm
+ /*!
+ Replace an Nth (zero-indexed) match of the search string in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT replace_nth_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ int Nth,
+ const Range3T& Format )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ nth_finder(Search, Nth),
+ const_formatter(Format) );
+ }
+
+ //! Replace nth algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT replace_nth_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ int Nth,
+ const Range2T& Format )
+ {
+ return find_format_copy(
+ Input,
+ nth_finder(Search, Nth),
+ const_formatter(Format) );
+ }
+
+ //! Replace nth algorithm
+ /*!
+ Replace an Nth (zero-indexed) match of the search string in the input
+ with the format string. Input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \param Format A substitute string
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void replace_nth(
+ SequenceT& Input,
+ const Range1T& Search,
+ int Nth,
+ const Range2T& Format )
+ {
+ find_format(
+ Input,
+ nth_finder(Search, Nth),
+ const_formatter(Format) );
+ }
+
+// replace_nth ( case insensitive ) -----------------------------------------------//
+
+ //! Replace nth algorithm ( case insensitive )
+ /*!
+ Replace an Nth (zero-indexed) match of the search string in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT ireplace_nth_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ int Nth,
+ const Range3T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ nth_finder(Search, Nth, is_iequal(Loc) ),
+ const_formatter(Format) );
+ }
+
+ //! Replace nth algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT ireplace_nth_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ int Nth,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_copy(
+ Input,
+ nth_finder(Search, Nth, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace nth algorithm ( case insensitive )
+ /*!
+ Replace an Nth (zero-indexed) match of the search string in the input
+ with the format string. Input sequence is modified in-place.
+ Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Nth An index of the match to be replaced. The index is 0-based.
+ For negative N, matches are counted from the end of string.
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void ireplace_nth(
+ SequenceT& Input,
+ const Range1T& Search,
+ int Nth,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format(
+ Input,
+ nth_finder(Search, Nth, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+// replace_all --------------------------------------------------------------------//
+
+ //! Replace all algorithm
+ /*!
+ Replace all occurrences of the search string in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT replace_all_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const Range3T& Format )
+ {
+ return find_format_all_copy(
+ Output,
+ Input,
+ first_finder(Search),
+ const_formatter(Format) );
+ }
+
+ //! Replace all algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT replace_all_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format )
+ {
+ return find_format_all_copy(
+ Input,
+ first_finder(Search),
+ const_formatter(Format) );
+ }
+
+ //! Replace all algorithm
+ /*!
+ Replace all occurrences of the search string in the input
+ with the format string. The input sequence is modified in-place.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \return A reference to the modified input
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void replace_all(
+ SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format )
+ {
+ find_format_all(
+ Input,
+ first_finder(Search),
+ const_formatter(Format) );
+ }
+
+// replace_all ( case insensitive ) -----------------------------------------------//
+
+ //! Replace all algorithm ( case insensitive )
+ /*!
+ Replace all occurrences of the search string in the input
+ with the format string.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+ Searching is case insensitive.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T,
+ typename Range3T>
+ inline OutputIteratorT ireplace_all_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ const Range2T& Search,
+ const Range3T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_all_copy(
+ Output,
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace all algorithm ( case insensitive )
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline SequenceT ireplace_all_copy(
+ const SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ return find_format_all_copy(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+ //! Replace all algorithm ( case insensitive )
+ /*!
+ Replace all occurrences of the search string in the input
+ with the format string.The input sequence is modified in-place.
+ Searching is case insensitive.
+
+ \param Input An input string
+ \param Search A substring to be searched for
+ \param Format A substitute string
+ \param Loc A locale used for case insensitive comparison
+ */
+ template<typename SequenceT, typename Range1T, typename Range2T>
+ inline void ireplace_all(
+ SequenceT& Input,
+ const Range1T& Search,
+ const Range2T& Format,
+ const std::locale& Loc=std::locale() )
+ {
+ find_format_all(
+ Input,
+ first_finder(Search, is_iequal(Loc)),
+ const_formatter(Format) );
+ }
+
+// replace_head --------------------------------------------------------------------//
+
+ //! Replace head algorithm
+ /*!
+ Replace the head of the input with the given format string.
+ The head is a prefix of a string of given size.
+ If the sequence is shorter then required, whole string if
+ considered to be the head.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param N Length of the head.
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT replace_head_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ int N,
+ const Range2T& Format )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ head_finder(N),
+ const_formatter(Format) );
+ }
+
+ //! Replace head algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT replace_head_copy(
+ const SequenceT& Input,
+ int N,
+ const RangeT& Format )
+ {
+ return find_format_copy(
+ Input,
+ head_finder(N),
+ const_formatter(Format) );
+ }
+
+ //! Replace head algorithm
+ /*!
+ Replace the head of the input with the given format string.
+ The head is a prefix of a string of given size.
+ If the sequence is shorter then required, the whole string is
+ considered to be the head. The input sequence is modified in-place.
+
+ \param Input An input string
+ \param N Length of the head.
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ \param Format A substitute string
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void replace_head(
+ SequenceT& Input,
+ int N,
+ const RangeT& Format )
+ {
+ find_format(
+ Input,
+ head_finder(N),
+ const_formatter(Format) );
+ }
+
+// replace_tail --------------------------------------------------------------------//
+
+ //! Replace tail algorithm
+ /*!
+ Replace the tail of the input with the given format string.
+ The tail is a suffix of a string of given size.
+ If the sequence is shorter then required, whole string is
+ considered to be the tail.
+ The result is a modified copy of the input. It is returned as a sequence
+ or copied to the output iterator.
+
+ \param Output An output iterator to which the result will be copied
+ \param Input An input string
+ \param N Length of the tail.
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ \param Format A substitute string
+ \return An output iterator pointing just after the last inserted character or
+ a modified copy of the input
+
+ \note The second variant of this function provides the strong exception-safety guarantee
+ */
+ template<
+ typename OutputIteratorT,
+ typename Range1T,
+ typename Range2T>
+ inline OutputIteratorT replace_tail_copy(
+ OutputIteratorT Output,
+ const Range1T& Input,
+ int N,
+ const Range2T& Format )
+ {
+ return find_format_copy(
+ Output,
+ Input,
+ tail_finder(N),
+ const_formatter(Format) );
+ }
+
+ //! Replace tail algorithm
+ /*!
+ \overload
+ */
+ template<typename SequenceT, typename RangeT>
+ inline SequenceT replace_tail_copy(
+ const SequenceT& Input,
+ int N,
+ const RangeT& Format )
+ {
+ return find_format_copy(
+ Input,
+ tail_finder(N),
+ const_formatter(Format) );
+ }
+
+ //! Replace tail algorithm
+ /*!
+ Replace the tail of the input with the given format sequence.
+ The tail is a suffix of a string of given size.
+ If the sequence is shorter then required, the whole string is
+ considered to be the tail. The input sequence is modified in-place.
+
+ \param Input An input string
+ \param N Length of the tail.
+ For N>=0, at most N characters are extracted.
+ For N<0, size(Input)-|N| characters are extracted.
+ \param Format A substitute string
+ */
+ template<typename SequenceT, typename RangeT>
+ inline void replace_tail(
+ SequenceT& Input,
+ int N,
+ const RangeT& Format )
+ {
+ find_format(
+ Input,
+ tail_finder(N),
+ const_formatter(Format) );
+ }
+
+ } // namespace algorithm
+
+ // pull names to the boost namespace
+ using algorithm::replace_range_copy;
+ using algorithm::replace_range;
+ using algorithm::replace_first_copy;
+ using algorithm::replace_first;
+ using algorithm::ireplace_first_copy;
+ using algorithm::ireplace_first;
+ using algorithm::replace_last_copy;
+ using algorithm::replace_last;
+ using algorithm::ireplace_last_copy;
+ using algorithm::ireplace_last;
+ using algorithm::replace_nth_copy;
+ using algorithm::replace_nth;
+ using algorithm::ireplace_nth_copy;
+ using algorithm::ireplace_nth;
+ using algorithm::replace_all_copy;
+ using algorithm::replace_all;
+ using algorithm::ireplace_all_copy;
+ using algorithm::ireplace_all;
+ using algorithm::replace_head_copy;
+ using algorithm::replace_head;
+ using algorithm::replace_tail_copy;
+ using algorithm::replace_tail;
+
+} // namespace boost
+
+#endif // BOOST_REPLACE_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/sequence_traits.hpp b/3rdParty/Boost/boost/algorithm/string/sequence_traits.hpp
new file mode 100644
index 0000000..b1ac67e
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/sequence_traits.hpp
@@ -0,0 +1,193 @@
+// Boost string_algo library sequence_traits.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_SEQUENCE_TRAITS_HPP
+#define BOOST_STRING_SEQUENCE_TRAITS_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/algorithm/string/yes_no_type.hpp>
+
+/*! \file
+ Traits defined in this header are used by various algorithms to achieve
+ better performance for specific containers.
+ Traits provide fail-safe defaults. If a container supports some of these
+ features, it is possible to specialize the specific trait for this container.
+ For lacking compilers, it is possible of define an override for a specific tester
+ function.
+
+ Due to a language restriction, it is not currently possible to define specializations for
+ stl containers without including the corresponding header. To decrease the overhead
+ needed by this inclusion, user can selectively include a specialization
+ header for a specific container. They are located in boost/algorithm/string/stl
+ directory. Alternatively she can include boost/algorithm/string/std_collection_traits.hpp
+ header which contains specializations for all stl containers.
+*/
+
+namespace boost {
+ namespace algorithm {
+
+// sequence traits -----------------------------------------------//
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ //! Native replace tester
+ /*!
+ Declare an override of this tester function with return
+ type boost::string_algo::yes_type for a sequence with this property.
+
+ \return yes_type if the container has basic_string like native replace
+ method.
+ */
+ no_type has_native_replace_tester(...);
+
+ //! Stable iterators tester
+ /*!
+ Declare an override of this tester function with return
+ type boost::string_algo::yes_type for a sequence with this property.
+
+ \return yes_type if the sequence's insert/replace/erase methods do not invalidate
+ existing iterators.
+ */
+ no_type has_stable_iterators_tester(...);
+
+ //! const time insert tester
+ /*!
+ Declare an override of this tester function with return
+ type boost::string_algo::yes_type for a sequence with this property.
+
+ \return yes_type if the sequence's insert method is working in constant time
+ */
+ no_type has_const_time_insert_tester(...);
+
+ //! const time erase tester
+ /*!
+ Declare an override of this tester function with return
+ type boost::string_algo::yes_type for a sequence with this property.
+
+ \return yes_type if the sequence's erase method is working in constant time
+ */
+ no_type has_const_time_erase_tester(...);
+
+#endif //BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ //! Native replace trait
+ /*!
+ This trait specifies that the sequence has \c std::string like replace method
+ */
+ template< typename T >
+ class has_native_replace
+ {
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ private:
+ static T* t;
+ public:
+ BOOST_STATIC_CONSTANT(bool, value=(
+ sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) );
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ public:
+# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+ enum { value = false };
+# else
+ BOOST_STATIC_CONSTANT(bool, value=false);
+# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+
+ typedef mpl::bool_<has_native_replace<T>::value> type;
+ };
+
+
+ //! Stable iterators trait
+ /*!
+ This trait specifies that the sequence has stable iterators. It means
+ that operations like insert/erase/replace do not invalidate iterators.
+ */
+ template< typename T >
+ class has_stable_iterators
+ {
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ private:
+ static T* t;
+ public:
+ BOOST_STATIC_CONSTANT(bool, value=(
+ sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) );
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ public:
+# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+ enum { value = false };
+# else
+ BOOST_STATIC_CONSTANT(bool, value=false);
+# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ typedef mpl::bool_<has_stable_iterators<T>::value> type;
+ };
+
+
+ //! Const time insert trait
+ /*!
+ This trait specifies that the sequence's insert method has
+ constant time complexity.
+ */
+ template< typename T >
+ class has_const_time_insert
+ {
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ private:
+ static T* t;
+ public:
+ BOOST_STATIC_CONSTANT(bool, value=(
+ sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) );
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ public:
+# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+ enum { value = false };
+# else
+ BOOST_STATIC_CONSTANT(bool, value=false);
+# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ typedef mpl::bool_<has_const_time_insert<T>::value> type;
+ };
+
+
+ //! Const time erase trait
+ /*!
+ This trait specifies that the sequence's erase method has
+ constant time complexity.
+ */
+ template< typename T >
+ class has_const_time_erase
+ {
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ private:
+ static T* t;
+ public:
+ BOOST_STATIC_CONSTANT(bool, value=(
+ sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) );
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ public:
+# if BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+ enum { value = false };
+# else
+ BOOST_STATIC_CONSTANT(bool, value=false);
+# endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ typedef mpl::bool_<has_const_time_erase<T>::value> type;
+ };
+
+ } // namespace algorithm
+} // namespace boost
+
+
+#endif // BOOST_STRING_SEQUENCE_TRAITS_HPP
diff --git a/3rdParty/Boost/boost/algorithm/string/yes_no_type.hpp b/3rdParty/Boost/boost/algorithm/string/yes_no_type.hpp
new file mode 100644
index 0000000..b76cc6c
--- /dev/null
+++ b/3rdParty/Boost/boost/algorithm/string/yes_no_type.hpp
@@ -0,0 +1,33 @@
+// Boost string_algo library yes_no_type.hpp header file ---------------------------//
+
+// Copyright Pavol Droba 2002-2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for updates, documentation, and revision history.
+
+#ifndef BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
+#define BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
+
+namespace boost {
+ namespace algorithm {
+
+ // taken from boost mailing-list
+ // when yes_no_type will become officially
+ // a part of boost distribution, this header
+ // will be deprecated
+ template<int I> struct size_descriptor
+ {
+ typedef char (& type)[I];
+ };
+
+ typedef size_descriptor<1>::type yes_type;
+ typedef size_descriptor<2>::type no_type;
+
+ } // namespace algorithm
+} // namespace boost
+
+
+#endif // BOOST_STRING_YES_NO_TYPE_DETAIL_HPP
diff --git a/3rdParty/Boost/boost/aligned_storage.hpp b/3rdParty/Boost/boost/aligned_storage.hpp
new file mode 100644
index 0000000..cfaf787
--- /dev/null
+++ b/3rdParty/Boost/boost/aligned_storage.hpp
@@ -0,0 +1,170 @@
+//-----------------------------------------------------------------------------
+// boost aligned_storage.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2002-2003
+// Eric Friedman, Itay Maman
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_ALIGNED_STORAGE_HPP
+#define BOOST_ALIGNED_STORAGE_HPP
+
+#include <cstddef> // for std::size_t
+
+#include "boost/config.hpp"
+#include "boost/detail/workaround.hpp"
+#include "boost/type_traits/alignment_of.hpp"
+#include "boost/type_traits/type_with_alignment.hpp"
+#include "boost/type_traits/is_pod.hpp"
+
+#include "boost/mpl/eval_if.hpp"
+#include "boost/mpl/identity.hpp"
+
+#include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost {
+
+namespace detail { namespace aligned_storage {
+
+BOOST_STATIC_CONSTANT(
+ std::size_t
+ , alignment_of_max_align = ::boost::alignment_of<max_align>::value
+ );
+
+//
+// To be TR1 conforming this must be a POD type:
+//
+template <
+ std::size_t size_
+ , std::size_t alignment_
+>
+struct aligned_storage_imp
+{
+ union data_t
+ {
+ char buf[size_];
+
+ typename mpl::eval_if_c<
+ alignment_ == std::size_t(-1)
+ , mpl::identity<detail::max_align>
+ , type_with_alignment<alignment_>
+ >::type align_;
+ } data_;
+};
+
+}} // namespace detail::aligned_storage
+
+template <
+ std::size_t size_
+ , std::size_t alignment_ = std::size_t(-1)
+>
+class aligned_storage
+{
+private: // representation
+
+ detail::aligned_storage::aligned_storage_imp<size_, alignment_> data_;
+
+public: // constants
+
+ typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
+
+ BOOST_STATIC_CONSTANT(
+ std::size_t
+ , size = size_
+ );
+ BOOST_STATIC_CONSTANT(
+ std::size_t
+ , alignment = (
+ alignment_ == std::size_t(-1)
+ ? ::boost::detail::aligned_storage::alignment_of_max_align
+ : alignment_
+ )
+ );
+
+#if defined(__GNUC__) &&\
+ (__GNUC__ > 3) ||\
+ (__GNUC__ == 3 && (__GNUC_MINOR__ > 2 ||\
+ (__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >=3)))
+
+private: // noncopyable
+
+ aligned_storage(const aligned_storage&);
+ aligned_storage& operator=(const aligned_storage&);
+
+#else // gcc less than 3.2.3
+
+public: // _should_ be noncopyable, but GCC compiler emits error
+
+ aligned_storage(const aligned_storage&);
+ aligned_storage& operator=(const aligned_storage&);
+
+#endif // gcc < 3.2.3 workaround
+
+public: // structors
+
+ aligned_storage()
+ {
+ }
+
+ ~aligned_storage()
+ {
+ }
+
+public: // accessors
+
+ void* address()
+ {
+ return this;
+ }
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+ const void* address() const
+ {
+ return this;
+ }
+
+#else // MSVC6
+
+ const void* address() const;
+
+#endif // MSVC6 workaround
+
+};
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+// MSVC6 seems not to like inline functions with const void* returns, so we
+// declare the following here:
+
+template <std::size_t S, std::size_t A>
+const void* aligned_storage<S,A>::address() const
+{
+ return const_cast< aligned_storage<S,A>* >(this)->address();
+}
+
+#endif // MSVC6 workaround
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//
+// Make sure that is_pod recognises aligned_storage<>::type
+// as a POD (Note that aligned_storage<> itself is not a POD):
+//
+template <std::size_t size_, std::size_t alignment_>
+struct is_pod<boost::detail::aligned_storage::aligned_storage_imp<size_,alignment_> >
+ BOOST_TT_AUX_BOOL_C_BASE(true)
+{
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(true)
+};
+#endif
+
+
+} // namespace boost
+
+#include "boost/type_traits/detail/bool_trait_undef.hpp"
+
+#endif // BOOST_ALIGNED_STORAGE_HPP
diff --git a/3rdParty/Boost/boost/any.hpp b/3rdParty/Boost/boost/any.hpp
new file mode 100644
index 0000000..47773dc
--- /dev/null
+++ b/3rdParty/Boost/boost/any.hpp
@@ -0,0 +1,237 @@
+// See http://www.boost.org/libs/any for Documentation.
+
+#ifndef BOOST_ANY_INCLUDED
+#define BOOST_ANY_INCLUDED
+
+// what: variant type boost::any
+// who: contributed by Kevlin Henney,
+// with features contributed and bugs found by
+// Ed Brey, Mark Rodgers, Peter Dimov, and James Curran
+// when: July 2001
+// where: tested with BCC 5.5, MSVC 6.0, and g++ 2.95
+
+#include <algorithm>
+#include <typeinfo>
+
+#include "boost/config.hpp"
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost
+{
+ class any
+ {
+ public: // structors
+
+ any()
+ : content(0)
+ {
+ }
+
+ template<typename ValueType>
+ any(const ValueType & value)
+ : content(new holder<ValueType>(value))
+ {
+ }
+
+ any(const any & other)
+ : content(other.content ? other.content->clone() : 0)
+ {
+ }
+
+ ~any()
+ {
+ delete content;
+ }
+
+ public: // modifiers
+
+ any & swap(any & rhs)
+ {
+ std::swap(content, rhs.content);
+ return *this;
+ }
+
+ template<typename ValueType>
+ any & operator=(const ValueType & rhs)
+ {
+ any(rhs).swap(*this);
+ return *this;
+ }
+
+ any & operator=(any rhs)
+ {
+ rhs.swap(*this);
+ return *this;
+ }
+
+ public: // queries
+
+ bool empty() const
+ {
+ return !content;
+ }
+
+ const std::type_info & type() const
+ {
+ return content ? content->type() : typeid(void);
+ }
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+ private: // types
+#else
+ public: // types (public so any_cast can be non-friend)
+#endif
+
+ class placeholder
+ {
+ public: // structors
+
+ virtual ~placeholder()
+ {
+ }
+
+ public: // queries
+
+ virtual const std::type_info & type() const = 0;
+
+ virtual placeholder * clone() const = 0;
+
+ };
+
+ template<typename ValueType>
+ class holder : public placeholder
+ {
+ public: // structors
+
+ holder(const ValueType & value)
+ : held(value)
+ {
+ }
+
+ public: // queries
+
+ virtual const std::type_info & type() const
+ {
+ return typeid(ValueType);
+ }
+
+ virtual placeholder * clone() const
+ {
+ return new holder(held);
+ }
+
+ public: // representation
+
+ ValueType held;
+
+ private: // intentionally left unimplemented
+ holder & operator=(const holder &);
+ };
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+
+ private: // representation
+
+ template<typename ValueType>
+ friend ValueType * any_cast(any *);
+
+ template<typename ValueType>
+ friend ValueType * unsafe_any_cast(any *);
+
+#else
+
+ public: // representation (public so any_cast can be non-friend)
+
+#endif
+
+ placeholder * content;
+
+ };
+
+ class bad_any_cast : public std::bad_cast
+ {
+ public:
+ virtual const char * what() const throw()
+ {
+ return "boost::bad_any_cast: "
+ "failed conversion using boost::any_cast";
+ }
+ };
+
+ template<typename ValueType>
+ ValueType * any_cast(any * operand)
+ {
+ return operand && operand->type() == typeid(ValueType)
+ ? &static_cast<any::holder<ValueType> *>(operand->content)->held
+ : 0;
+ }
+
+ template<typename ValueType>
+ inline const ValueType * any_cast(const any * operand)
+ {
+ return any_cast<ValueType>(const_cast<any *>(operand));
+ }
+
+ template<typename ValueType>
+ ValueType any_cast(any & operand)
+ {
+ typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref;
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ // If 'nonref' is still reference type, it means the user has not
+ // specialized 'remove_reference'.
+
+ // Please use BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION macro
+ // to generate specialization of remove_reference for your class
+ // See type traits library documentation for details
+ BOOST_STATIC_ASSERT(!is_reference<nonref>::value);
+#endif
+
+ nonref * result = any_cast<nonref>(&operand);
+ if(!result)
+ boost::throw_exception(bad_any_cast());
+ return *result;
+ }
+
+ template<typename ValueType>
+ inline ValueType any_cast(const any & operand)
+ {
+ typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref;
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ // The comment in the above version of 'any_cast' explains when this
+ // assert is fired and what to do.
+ BOOST_STATIC_ASSERT(!is_reference<nonref>::value);
+#endif
+
+ return any_cast<const nonref &>(const_cast<any &>(operand));
+ }
+
+ // Note: The "unsafe" versions of any_cast are not part of the
+ // public interface and may be removed at any time. They are
+ // required where we know what type is stored in the any and can't
+ // use typeid() comparison, e.g., when our types may travel across
+ // different shared libraries.
+ template<typename ValueType>
+ inline ValueType * unsafe_any_cast(any * operand)
+ {
+ return &static_cast<any::holder<ValueType> *>(operand->content)->held;
+ }
+
+ template<typename ValueType>
+ inline const ValueType * unsafe_any_cast(const any * operand)
+ {
+ return unsafe_any_cast<ValueType>(const_cast<any *>(operand));
+ }
+}
+
+// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#endif
diff --git a/3rdParty/Boost/boost/array.hpp b/3rdParty/Boost/boost/array.hpp
new file mode 100644
index 0000000..52218aa
--- /dev/null
+++ b/3rdParty/Boost/boost/array.hpp
@@ -0,0 +1,321 @@
+/* The following code declares class array,
+ * an STL container (as wrapper) for arrays of constant size.
+ *
+ * See
+ * http://www.boost.org/libs/array/
+ * for documentation.
+ *
+ * The original author site is at: http://www.josuttis.com/
+ *
+ * (C) Copyright Nicolai M. Josuttis 2001.
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * 29 Jan 2004 - c_array() added, BOOST_NO_PRIVATE_IN_AGGREGATE removed (Nico Josuttis)
+ * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries.
+ * 05 Aug 2001 - minor update (Nico Josuttis)
+ * 20 Jan 2001 - STLport fix (Beman Dawes)
+ * 29 Sep 2000 - Initial Revision (Nico Josuttis)
+ *
+ * Jan 29, 2004
+ */
+#ifndef BOOST_ARRAY_HPP
+#define BOOST_ARRAY_HPP
+
+#include <cstddef>
+#include <stdexcept>
+#include <boost/assert.hpp>
+
+// Handles broken standard libraries better than <iterator>
+#include <boost/detail/iterator.hpp>
+#include <boost/throw_exception.hpp>
+#include <algorithm>
+
+// FIXES for broken compilers
+#include <boost/config.hpp>
+
+
+namespace boost {
+
+ template<class T, std::size_t N>
+ class array {
+ public:
+ T elems[N]; // fixed-size array of elements of type T
+
+ public:
+ // type definitions
+ typedef T value_type;
+ typedef T* iterator;
+ typedef const T* const_iterator;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ // iterator support
+ iterator begin() { return elems; }
+ const_iterator begin() const { return elems; }
+ iterator end() { return elems+N; }
+ const_iterator end() const { return elems+N; }
+
+ // reverse iterator support
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
+ // workaround for broken reverse_iterator in VC7
+ typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
+ reference, iterator, reference> > reverse_iterator;
+ typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
+ const_reference, iterator, reference> > const_reverse_iterator;
+#else
+ // workaround for broken reverse_iterator implementations
+ typedef std::reverse_iterator<iterator,T> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
+#endif
+
+ reverse_iterator rbegin() { return reverse_iterator(end()); }
+ const_reverse_iterator rbegin() const {
+ return const_reverse_iterator(end());
+ }
+ reverse_iterator rend() { return reverse_iterator(begin()); }
+ const_reverse_iterator rend() const {
+ return const_reverse_iterator(begin());
+ }
+
+ // operator[]
+ reference operator[](size_type i)
+ {
+ BOOST_ASSERT( i < N && "out of range" );
+ return elems[i];
+ }
+
+ const_reference operator[](size_type i) const
+ {
+ BOOST_ASSERT( i < N && "out of range" );
+ return elems[i];
+ }
+
+ // at() with range check
+ reference at(size_type i) { rangecheck(i); return elems[i]; }
+ const_reference at(size_type i) const { rangecheck(i); return elems[i]; }
+
+ // front() and back()
+ reference front()
+ {
+ return elems[0];
+ }
+
+ const_reference front() const
+ {
+ return elems[0];
+ }
+
+ reference back()
+ {
+ return elems[N-1];
+ }
+
+ const_reference back() const
+ {
+ return elems[N-1];
+ }
+
+ // size is constant
+ static size_type size() { return N; }
+ static bool empty() { return false; }
+ static size_type max_size() { return N; }
+ enum { static_size = N };
+
+ // swap (note: linear complexity)
+ void swap (array<T,N>& y) {
+ std::swap_ranges(begin(),end(),y.begin());
+ }
+
+ // direct access to data (read-only)
+ const T* data() const { return elems; }
+ T* data() { return elems; }
+
+ // use array as C array (direct read/write access to data)
+ T* c_array() { return elems; }
+
+ // assignment with type conversion
+ template <typename T2>
+ array<T,N>& operator= (const array<T2,N>& rhs) {
+ std::copy(rhs.begin(),rhs.end(), begin());
+ return *this;
+ }
+
+ // assign one value to all elements
+ void assign (const T& value)
+ {
+ std::fill_n(begin(),size(),value);
+ }
+
+ // check range (may be private because it is static)
+ static void rangecheck (size_type i) {
+ if (i >= size()) {
+ throw std::out_of_range("array<>: index out of range");
+ }
+ }
+
+ };
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ template< class T >
+ class array< T, 0 > {
+
+ public:
+ // type definitions
+ typedef T value_type;
+ typedef T* iterator;
+ typedef const T* const_iterator;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+
+ // iterator support
+ iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
+ const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
+ iterator end() { return begin(); }
+ const_iterator end() const { return begin(); }
+
+ // reverse iterator support
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
+ // workaround for broken reverse_iterator in VC7
+ typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
+ reference, iterator, reference> > reverse_iterator;
+ typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
+ const_reference, iterator, reference> > const_reverse_iterator;
+#else
+ // workaround for broken reverse_iterator implementations
+ typedef std::reverse_iterator<iterator,T> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
+#endif
+
+ reverse_iterator rbegin() { return reverse_iterator(end()); }
+ const_reverse_iterator rbegin() const {
+ return const_reverse_iterator(end());
+ }
+ reverse_iterator rend() { return reverse_iterator(begin()); }
+ const_reverse_iterator rend() const {
+ return const_reverse_iterator(begin());
+ }
+
+ // operator[]
+ reference operator[](size_type i)
+ {
+ return failed_rangecheck();
+ }
+
+ const_reference operator[](size_type i) const
+ {
+ return failed_rangecheck();
+ }
+
+ // at() with range check
+ reference at(size_type i) { return failed_rangecheck(); }
+ const_reference at(size_type i) const { return failed_rangecheck(); }
+
+ // front() and back()
+ reference front()
+ {
+ return failed_rangecheck();
+ }
+
+ const_reference front() const
+ {
+ return failed_rangecheck();
+ }
+
+ reference back()
+ {
+ return failed_rangecheck();
+ }
+
+ const_reference back() const
+ {
+ return failed_rangecheck();
+ }
+
+ // size is constant
+ static size_type size() { return 0; }
+ static bool empty() { return true; }
+ static size_type max_size() { return 0; }
+ enum { static_size = 0 };
+
+ void swap (array<T,0>& y) {
+ }
+
+ // direct access to data (read-only)
+ const T* data() const { return 0; }
+ T* data() { return 0; }
+
+ // use array as C array (direct read/write access to data)
+ T* c_array() { return 0; }
+
+ // assignment with type conversion
+ template <typename T2>
+ array<T,0>& operator= (const array<T2,0>& ) {
+ return *this;
+ }
+
+ // assign one value to all elements
+ void assign (const T& ) { }
+
+ // check range (may be private because it is static)
+ static reference failed_rangecheck () {
+ std::out_of_range e("attempt to access element of an empty array");
+ boost::throw_exception(e);
+ //
+ // We need to return something here to keep
+ // some compilers happy: however we will never
+ // actually get here....
+ //
+ static T placeholder;
+ return placeholder;
+ }
+ };
+#endif
+
+ // comparisons
+ template<class T, std::size_t N>
+ bool operator== (const array<T,N>& x, const array<T,N>& y) {
+ return std::equal(x.begin(), x.end(), y.begin());
+ }
+ template<class T, std::size_t N>
+ bool operator< (const array<T,N>& x, const array<T,N>& y) {
+ return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
+ }
+ template<class T, std::size_t N>
+ bool operator!= (const array<T,N>& x, const array<T,N>& y) {
+ return !(x==y);
+ }
+ template<class T, std::size_t N>
+ bool operator> (const array<T,N>& x, const array<T,N>& y) {
+ return y<x;
+ }
+ template<class T, std::size_t N>
+ bool operator<= (const array<T,N>& x, const array<T,N>& y) {
+ return !(y<x);
+ }
+ template<class T, std::size_t N>
+ bool operator>= (const array<T,N>& x, const array<T,N>& y) {
+ return !(x<y);
+ }
+
+ // global swap()
+ template<class T, std::size_t N>
+ inline void swap (array<T,N>& x, array<T,N>& y) {
+ x.swap(y);
+ }
+
+} /* namespace boost */
+
+#endif /*BOOST_ARRAY_HPP*/
diff --git a/3rdParty/Boost/boost/asio.hpp b/3rdParty/Boost/boost/asio.hpp
new file mode 100644
index 0000000..5d8b43b
--- /dev/null
+++ b/3rdParty/Boost/boost/asio.hpp
@@ -0,0 +1,100 @@
+//
+// asio.hpp
+// ~~~~~~~~
+//
+// Copyright (c) 2003-2008 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)
+//
+// See www.boost.org/libs/asio for documentation.
+//
+
+#ifndef BOOST_ASIO_HPP
+#define BOOST_ASIO_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/basic_datagram_socket.hpp>
+#include <boost/asio/basic_deadline_timer.hpp>
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/basic_raw_socket.hpp>
+#include <boost/asio/basic_serial_port.hpp>
+#include <boost/asio/basic_socket_acceptor.hpp>
+#include <boost/asio/basic_socket_iostream.hpp>
+#include <boost/asio/basic_socket_streambuf.hpp>
+#include <boost/asio/basic_stream_socket.hpp>
+#include <boost/asio/basic_streambuf.hpp>
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/buffered_read_stream_fwd.hpp>
+#include <boost/asio/buffered_read_stream.hpp>
+#include <boost/asio/buffered_stream_fwd.hpp>
+#include <boost/asio/buffered_stream.hpp>
+#include <boost/asio/buffered_write_stream_fwd.hpp>
+#include <boost/asio/buffered_write_stream.hpp>
+#include <boost/asio/buffers_iterator.hpp>
+#include <boost/asio/completion_condition.hpp>
+#include <boost/asio/datagram_socket_service.hpp>
+#include <boost/asio/deadline_timer_service.hpp>
+#include <boost/asio/deadline_timer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/handler_alloc_hook.hpp>
+#include <boost/asio/handler_invoke_hook.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/ip/address.hpp>
+#include <boost/asio/ip/address_v4.hpp>
+#include <boost/asio/ip/address_v6.hpp>
+#include <boost/asio/ip/basic_endpoint.hpp>
+#include <boost/asio/ip/basic_resolver.hpp>
+#include <boost/asio/ip/basic_resolver_entry.hpp>
+#include <boost/asio/ip/basic_resolver_iterator.hpp>
+#include <boost/asio/ip/basic_resolver_query.hpp>
+#include <boost/asio/ip/host_name.hpp>
+#include <boost/asio/ip/icmp.hpp>
+#include <boost/asio/ip/multicast.hpp>
+#include <boost/asio/ip/resolver_query_base.hpp>
+#include <boost/asio/ip/resolver_service.hpp>
+#include <boost/asio/ip/tcp.hpp>
+#include <boost/asio/ip/udp.hpp>
+#include <boost/asio/ip/unicast.hpp>
+#include <boost/asio/ip/v6_only.hpp>
+#include <boost/asio/is_read_buffered.hpp>
+#include <boost/asio/is_write_buffered.hpp>
+#include <boost/asio/local/basic_endpoint.hpp>
+#include <boost/asio/local/connect_pair.hpp>
+#include <boost/asio/local/datagram_protocol.hpp>
+#include <boost/asio/local/stream_protocol.hpp>
+#include <boost/asio/placeholders.hpp>
+#include <boost/asio/posix/basic_descriptor.hpp>
+#include <boost/asio/posix/basic_stream_descriptor.hpp>
+#include <boost/asio/posix/descriptor_base.hpp>
+#include <boost/asio/posix/stream_descriptor.hpp>
+#include <boost/asio/posix/stream_descriptor_service.hpp>
+#include <boost/asio/raw_socket_service.hpp>
+#include <boost/asio/read.hpp>
+#include <boost/asio/read_at.hpp>
+#include <boost/asio/read_until.hpp>
+#include <boost/asio/serial_port.hpp>
+#include <boost/asio/serial_port_base.hpp>
+#include <boost/asio/serial_port_service.hpp>
+#include <boost/asio/socket_acceptor_service.hpp>
+#include <boost/asio/socket_base.hpp>
+#include <boost/asio/strand.hpp>
+#include <boost/asio/stream_socket_service.hpp>
+#include <boost/asio/streambuf.hpp>
+#include <boost/asio/time_traits.hpp>
+#include <boost/asio/version.hpp>
+#include <boost/asio/windows/basic_handle.hpp>
+#include <boost/asio/windows/basic_random_access_handle.hpp>
+#include <boost/asio/windows/basic_stream_handle.hpp>
+#include <boost/asio/windows/overlapped_ptr.hpp>
+#include <boost/asio/windows/random_access_handle.hpp>
+#include <boost/asio/windows/random_access_handle_service.hpp>
+#include <boost/asio/windows/stream_handle.hpp>
+#include <boost/asio/windows/stream_handle_service.hpp>
+#include <boost/asio/write.hpp>
+#include <boost/asio/write_at.hpp>
+
+#endif // BOOST_ASIO_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_datagram_socket.hpp b/3rdParty/Boost/boost/asio/basic_datagram_socket.hpp
new file mode 100644
index 0000000..8fa870b
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_datagram_socket.hpp
@@ -0,0 +1,805 @@
+//
+// basic_datagram_socket.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP
+#define BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/datagram_socket_service.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides datagram-oriented socket functionality.
+/**
+ * The basic_datagram_socket class template provides asynchronous and blocking
+ * datagram-oriented socket functionality.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename Protocol,
+ typename DatagramSocketService = datagram_socket_service<Protocol> >
+class basic_datagram_socket
+ : public basic_socket<Protocol, DatagramSocketService>
+{
+public:
+ /// The native representation of a socket.
+ typedef typename DatagramSocketService::native_type native_type;
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ /// Construct a basic_datagram_socket without opening it.
+ /**
+ * This constructor creates a datagram socket without opening it. The open()
+ * function must be called before data can be sent or received on the socket.
+ *
+ * @param io_service The io_service object that the datagram socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ */
+ explicit basic_datagram_socket(boost::asio::io_service& io_service)
+ : basic_socket<Protocol, DatagramSocketService>(io_service)
+ {
+ }
+
+ /// Construct and open a basic_datagram_socket.
+ /**
+ * This constructor creates and opens a datagram socket.
+ *
+ * @param io_service The io_service object that the datagram socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_datagram_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol)
+ : basic_socket<Protocol, DatagramSocketService>(io_service, protocol)
+ {
+ }
+
+ /// Construct a basic_datagram_socket, opening it and binding it to the given
+ /// local endpoint.
+ /**
+ * This constructor creates a datagram socket and automatically opens it bound
+ * to the specified endpoint on the local machine. The protocol used is the
+ * protocol associated with the given endpoint.
+ *
+ * @param io_service The io_service object that the datagram socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ *
+ * @param endpoint An endpoint on the local machine to which the datagram
+ * socket will be bound.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_datagram_socket(boost::asio::io_service& io_service,
+ const endpoint_type& endpoint)
+ : basic_socket<Protocol, DatagramSocketService>(io_service, endpoint)
+ {
+ }
+
+ /// Construct a basic_datagram_socket on an existing native socket.
+ /**
+ * This constructor creates a datagram socket object to hold an existing
+ * native socket.
+ *
+ * @param io_service The io_service object that the datagram socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @param native_socket The new underlying socket implementation.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_datagram_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol, const native_type& native_socket)
+ : basic_socket<Protocol, DatagramSocketService>(
+ io_service, protocol, native_socket)
+ {
+ }
+
+ /// Send some data on a connected socket.
+ /**
+ * This function is used to send data on the datagram socket. The function
+ * call will block until the data has been sent successfully or an error
+ * occurs.
+ *
+ * @param buffers One ore more data buffers to be sent on the socket.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The send operation can only be used with a connected socket. Use
+ * the send_to function to send data on an unconnected datagram socket.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code socket.send(boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send some data on a connected socket.
+ /**
+ * This function is used to send data on the datagram socket. The function
+ * call will block until the data has been sent successfully or an error
+ * occurs.
+ *
+ * @param buffers One ore more data buffers to be sent on the socket.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The send operation can only be used with a connected socket. Use
+ * the send_to function to send data on an unconnected datagram socket.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(
+ this->implementation, buffers, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send some data on a connected socket.
+ /**
+ * This function is used to send data on the datagram socket. The function
+ * call will block until the data has been sent successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @note The send operation can only be used with a connected socket. Use
+ * the send_to function to send data on an unconnected datagram socket.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return this->service.send(this->implementation, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous send on a connected socket.
+ /**
+ * This function is used to send data on the datagram socket. The function
+ * call will block until the data has been sent successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket. Although
+ * the buffers object may be copied as necessary, ownership of the underlying
+ * memory blocks is retained by the caller, which must guarantee that they
+ * remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_send operation can only be used with a connected socket.
+ * Use the async_send_to function to send data on an unconnected datagram
+ * socket.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.async_send(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, 0, handler);
+ }
+
+ /// Start an asynchronous send on a connected socket.
+ /**
+ * This function is used to send data on the datagram socket. The function
+ * call will block until the data has been sent successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket. Although
+ * the buffers object may be copied as necessary, ownership of the underlying
+ * memory blocks is retained by the caller, which must guarantee that they
+ * remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_send operation can only be used with a connected socket.
+ * Use the async_send_to function to send data on an unconnected datagram
+ * socket.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, flags, handler);
+ }
+
+ /// Send a datagram to the specified endpoint.
+ /**
+ * This function is used to send a datagram to the specified remote endpoint.
+ * The function call will block until the data has been sent successfully or
+ * an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::ip::udp::endpoint destination(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * socket.send_to(boost::asio::buffer(data, size), destination);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send_to(
+ this->implementation, buffers, destination, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send a datagram to the specified endpoint.
+ /**
+ * This function is used to send a datagram to the specified remote endpoint.
+ * The function call will block until the data has been sent successfully or
+ * an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send_to(
+ this->implementation, buffers, destination, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send a datagram to the specified endpoint.
+ /**
+ * This function is used to send a datagram to the specified remote endpoint.
+ * The function call will block until the data has been sent successfully or
+ * an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes sent.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ return this->service.send_to(this->implementation,
+ buffers, destination, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ /**
+ * This function is used to asynchronously send a datagram to the specified
+ * remote endpoint. The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ * Copies will be made of the endpoint as required.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::ip::udp::endpoint destination(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * socket.async_send_to(
+ * boost::asio::buffer(data, size), destination, handler);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, WriteHandler handler)
+ {
+ this->service.async_send_to(this->implementation, buffers, destination, 0,
+ handler);
+ }
+
+ /// Start an asynchronous send.
+ /**
+ * This function is used to asynchronously send a datagram to the specified
+ * remote endpoint. The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ * Copies will be made of the endpoint as required.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ WriteHandler handler)
+ {
+ this->service.async_send_to(this->implementation, buffers, destination,
+ flags, handler);
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the datagram socket. The function
+ * call will block until data has been received successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The receive operation can only be used with a connected socket. Use
+ * the receive_from function to receive data on an unconnected datagram
+ * socket.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code socket.receive(boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(
+ this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the datagram socket. The function
+ * call will block until data has been received successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The receive operation can only be used with a connected socket. Use
+ * the receive_from function to receive data on an unconnected datagram
+ * socket.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(
+ this->implementation, buffers, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the datagram socket. The function
+ * call will block until data has been received successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes received.
+ *
+ * @note The receive operation can only be used with a connected socket. Use
+ * the receive_from function to receive data on an unconnected datagram
+ * socket.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return this->service.receive(this->implementation, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous receive on a connected socket.
+ /**
+ * This function is used to asynchronously receive data from the datagram
+ * socket. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_receive operation can only be used with a connected socket.
+ * Use the async_receive_from function to receive data on an unconnected
+ * datagram socket.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * socket.async_receive(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, 0, handler);
+ }
+
+ /// Start an asynchronous receive on a connected socket.
+ /**
+ * This function is used to asynchronously receive data from the datagram
+ * socket. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_receive operation can only be used with a connected socket.
+ * Use the async_receive_from function to receive data on an unconnected
+ * datagram socket.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, flags, handler);
+ }
+
+ /// Receive a datagram with the endpoint of the sender.
+ /**
+ * This function is used to receive a datagram. The function call will block
+ * until data has been received successfully or an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the datagram.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * boost::asio::ip::udp::endpoint sender_endpoint;
+ * socket.receive_from(
+ * boost::asio::buffer(data, size), sender_endpoint);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive_from(
+ this->implementation, buffers, sender_endpoint, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive a datagram with the endpoint of the sender.
+ /**
+ * This function is used to receive a datagram. The function call will block
+ * until data has been received successfully or an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the datagram.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive_from(
+ this->implementation, buffers, sender_endpoint, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive a datagram with the endpoint of the sender.
+ /**
+ * This function is used to receive a datagram. The function call will block
+ * until data has been received successfully or an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the datagram.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes received.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ return this->service.receive_from(this->implementation, buffers,
+ sender_endpoint, flags, ec);
+ }
+
+ /// Start an asynchronous receive.
+ /**
+ * This function is used to asynchronously receive a datagram. The function
+ * call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the datagram. Ownership of the sender_endpoint object
+ * is retained by the caller, which must guarantee that it is valid until the
+ * handler is called.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code socket.async_receive_from(
+ * boost::asio::buffer(data, size), 0, sender_endpoint, handler); @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, ReadHandler handler)
+ {
+ this->service.async_receive_from(this->implementation, buffers,
+ sender_endpoint, 0, handler);
+ }
+
+ /// Start an asynchronous receive.
+ /**
+ * This function is used to asynchronously receive a datagram. The function
+ * call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the datagram. Ownership of the sender_endpoint object
+ * is retained by the caller, which must guarantee that it is valid until the
+ * handler is called.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
+ ReadHandler handler)
+ {
+ this->service.async_receive_from(this->implementation, buffers,
+ sender_endpoint, flags, handler);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_DATAGRAM_SOCKET_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_deadline_timer.hpp b/3rdParty/Boost/boost/asio/basic_deadline_timer.hpp
new file mode 100644
index 0000000..65256b8
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_deadline_timer.hpp
@@ -0,0 +1,383 @@
+//
+// basic_deadline_timer.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_DEADLINE_TIMER_HPP
+#define BOOST_ASIO_BASIC_DEADLINE_TIMER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/deadline_timer_service.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides waitable timer functionality.
+/**
+ * The basic_deadline_timer class template provides the ability to perform a
+ * blocking or asynchronous wait for a timer to expire.
+ *
+ * Most applications will use the boost::asio::deadline_timer typedef.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Examples
+ * Performing a blocking wait:
+ * @code
+ * // Construct a timer without setting an expiry time.
+ * boost::asio::deadline_timer timer(io_service);
+ *
+ * // Set an expiry time relative to now.
+ * timer.expires_from_now(boost::posix_time::seconds(5));
+ *
+ * // Wait for the timer to expire.
+ * timer.wait();
+ * @endcode
+ *
+ * @par
+ * Performing an asynchronous wait:
+ * @code
+ * void handler(const boost::system::error_code& error)
+ * {
+ * if (!error)
+ * {
+ * // Timer expired.
+ * }
+ * }
+ *
+ * ...
+ *
+ * // Construct a timer with an absolute expiry time.
+ * boost::asio::deadline_timer timer(io_service,
+ * boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
+ *
+ * // Start an asynchronous wait.
+ * timer.async_wait(handler);
+ * @endcode
+ *
+ * @par Changing an active deadline_timer's expiry time
+ *
+ * Changing the expiry time of a timer while there are pending asynchronous
+ * waits causes those wait operations to be cancelled. To ensure that the action
+ * associated with the timer is performed only once, use something like this:
+ * used:
+ *
+ * @code
+ * void on_some_event()
+ * {
+ * if (my_timer.expires_from_now(seconds(5)) > 0)
+ * {
+ * // We managed to cancel the timer. Start new asynchronous wait.
+ * my_timer.async_wait(on_timeout);
+ * }
+ * else
+ * {
+ * // Too late, timer has already expired!
+ * }
+ * }
+ *
+ * void on_timeout(const boost::system::error_code& e)
+ * {
+ * if (e != boost::asio::error::operation_aborted)
+ * {
+ * // Timer was not cancelled, take necessary action.
+ * }
+ * }
+ * @endcode
+ *
+ * @li The boost::asio::basic_deadline_timer::expires_from_now() function
+ * cancels any pending asynchronous waits, and returns the number of
+ * asynchronous waits that were cancelled. If it returns 0 then you were too
+ * late and the wait handler has already been executed, or will soon be
+ * executed. If it returns 1 then the wait handler was successfully cancelled.
+ *
+ * @li If a wait handler is cancelled, the boost::system::error_code passed to
+ * it contains the value boost::asio::error::operation_aborted.
+ */
+template <typename Time,
+ typename TimeTraits = boost::asio::time_traits<Time>,
+ typename TimerService = deadline_timer_service<Time, TimeTraits> >
+class basic_deadline_timer
+ : public basic_io_object<TimerService>
+{
+public:
+ /// The time traits type.
+ typedef TimeTraits traits_type;
+
+ /// The time type.
+ typedef typename traits_type::time_type time_type;
+
+ /// The duration type.
+ typedef typename traits_type::duration_type duration_type;
+
+ /// Constructor.
+ /**
+ * This constructor creates a timer without setting an expiry time. The
+ * expires_at() or expires_from_now() functions must be called to set an
+ * expiry time before the timer can be waited on.
+ *
+ * @param io_service The io_service object that the timer will use to dispatch
+ * handlers for any asynchronous operations performed on the timer.
+ */
+ explicit basic_deadline_timer(boost::asio::io_service& io_service)
+ : basic_io_object<TimerService>(io_service)
+ {
+ }
+
+ /// Constructor to set a particular expiry time as an absolute time.
+ /**
+ * This constructor creates a timer and sets the expiry time.
+ *
+ * @param io_service The io_service object that the timer will use to dispatch
+ * handlers for any asynchronous operations performed on the timer.
+ *
+ * @param expiry_time The expiry time to be used for the timer, expressed
+ * as an absolute time.
+ */
+ basic_deadline_timer(boost::asio::io_service& io_service,
+ const time_type& expiry_time)
+ : basic_io_object<TimerService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.expires_at(this->implementation, expiry_time, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Constructor to set a particular expiry time relative to now.
+ /**
+ * This constructor creates a timer and sets the expiry time.
+ *
+ * @param io_service The io_service object that the timer will use to dispatch
+ * handlers for any asynchronous operations performed on the timer.
+ *
+ * @param expiry_time The expiry time to be used for the timer, relative to
+ * now.
+ */
+ basic_deadline_timer(boost::asio::io_service& io_service,
+ const duration_type& expiry_time)
+ : basic_io_object<TimerService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.expires_from_now(this->implementation, expiry_time, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Cancel any asynchronous operations that are waiting on the timer.
+ /**
+ * This function forces the completion of any pending asynchronous wait
+ * operations against the timer. The handler for each cancelled operation will
+ * be invoked with the boost::asio::error::operation_aborted error code.
+ *
+ * Cancelling the timer does not change the expiry time.
+ *
+ * @return The number of asynchronous operations that were cancelled.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t cancel()
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.cancel(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Cancel any asynchronous operations that are waiting on the timer.
+ /**
+ * This function forces the completion of any pending asynchronous wait
+ * operations against the timer. The handler for each cancelled operation will
+ * be invoked with the boost::asio::error::operation_aborted error code.
+ *
+ * Cancelling the timer does not change the expiry time.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of asynchronous operations that were cancelled.
+ */
+ std::size_t cancel(boost::system::error_code& ec)
+ {
+ return this->service.cancel(this->implementation, ec);
+ }
+
+ /// Get the timer's expiry time as an absolute time.
+ /**
+ * This function may be used to obtain the timer's current expiry time.
+ * Whether the timer has expired or not does not affect this value.
+ */
+ time_type expires_at() const
+ {
+ return this->service.expires_at(this->implementation);
+ }
+
+ /// Set the timer's expiry time as an absolute time.
+ /**
+ * This function sets the expiry time. Any pending asynchronous wait
+ * operations will be cancelled. The handler for each cancelled operation will
+ * be invoked with the boost::asio::error::operation_aborted error code.
+ *
+ * @param expiry_time The expiry time to be used for the timer.
+ *
+ * @return The number of asynchronous operations that were cancelled.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t expires_at(const time_type& expiry_time)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.expires_at(
+ this->implementation, expiry_time, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Set the timer's expiry time as an absolute time.
+ /**
+ * This function sets the expiry time. Any pending asynchronous wait
+ * operations will be cancelled. The handler for each cancelled operation will
+ * be invoked with the boost::asio::error::operation_aborted error code.
+ *
+ * @param expiry_time The expiry time to be used for the timer.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of asynchronous operations that were cancelled.
+ */
+ std::size_t expires_at(const time_type& expiry_time,
+ boost::system::error_code& ec)
+ {
+ return this->service.expires_at(this->implementation, expiry_time, ec);
+ }
+
+ /// Get the timer's expiry time relative to now.
+ /**
+ * This function may be used to obtain the timer's current expiry time.
+ * Whether the timer has expired or not does not affect this value.
+ */
+ duration_type expires_from_now() const
+ {
+ return this->service.expires_from_now(this->implementation);
+ }
+
+ /// Set the timer's expiry time relative to now.
+ /**
+ * This function sets the expiry time. Any pending asynchronous wait
+ * operations will be cancelled. The handler for each cancelled operation will
+ * be invoked with the boost::asio::error::operation_aborted error code.
+ *
+ * @param expiry_time The expiry time to be used for the timer.
+ *
+ * @return The number of asynchronous operations that were cancelled.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t expires_from_now(const duration_type& expiry_time)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.expires_from_now(
+ this->implementation, expiry_time, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Set the timer's expiry time relative to now.
+ /**
+ * This function sets the expiry time. Any pending asynchronous wait
+ * operations will be cancelled. The handler for each cancelled operation will
+ * be invoked with the boost::asio::error::operation_aborted error code.
+ *
+ * @param expiry_time The expiry time to be used for the timer.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of asynchronous operations that were cancelled.
+ */
+ std::size_t expires_from_now(const duration_type& expiry_time,
+ boost::system::error_code& ec)
+ {
+ return this->service.expires_from_now(
+ this->implementation, expiry_time, ec);
+ }
+
+ /// Perform a blocking wait on the timer.
+ /**
+ * This function is used to wait for the timer to expire. This function
+ * blocks and does not return until the timer has expired.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void wait()
+ {
+ boost::system::error_code ec;
+ this->service.wait(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Perform a blocking wait on the timer.
+ /**
+ * This function is used to wait for the timer to expire. This function
+ * blocks and does not return until the timer has expired.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ void wait(boost::system::error_code& ec)
+ {
+ this->service.wait(this->implementation, ec);
+ }
+
+ /// Start an asynchronous wait on the timer.
+ /**
+ * This function may be used to initiate an asynchronous wait against the
+ * timer. It always returns immediately.
+ *
+ * For each call to async_wait(), the supplied handler will be called exactly
+ * once. The handler will be called when:
+ *
+ * @li The timer has expired.
+ *
+ * @li The timer was cancelled, in which case the handler is passed the error
+ * code boost::asio::error::operation_aborted.
+ *
+ * @param handler The handler to be called when the timer expires. Copies
+ * will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error // Result of operation.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+ template <typename WaitHandler>
+ void async_wait(WaitHandler handler)
+ {
+ this->service.async_wait(this->implementation, handler);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_DEADLINE_TIMER_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_io_object.hpp b/3rdParty/Boost/boost/asio/basic_io_object.hpp
new file mode 100644
index 0000000..1cbf9bb
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_io_object.hpp
@@ -0,0 +1,99 @@
+//
+// basic_io_object.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_IO_OBJECT_HPP
+#define BOOST_ASIO_BASIC_IO_OBJECT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Base class for all I/O objects.
+template <typename IoObjectService>
+class basic_io_object
+ : private noncopyable
+{
+public:
+ /// The type of the service that will be used to provide I/O operations.
+ typedef IoObjectService service_type;
+
+ /// The underlying implementation type of I/O object.
+ typedef typename service_type::implementation_type implementation_type;
+
+ /// (Deprecated: use get_io_service().) Get the io_service associated with
+ /// the object.
+ /**
+ * This function may be used to obtain the io_service object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_service object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_service& io_service()
+ {
+ return service.get_io_service();
+ }
+
+ /// Get the io_service associated with the object.
+ /**
+ * This function may be used to obtain the io_service object that the I/O
+ * object uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_service object that the I/O object will use
+ * to dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_service& get_io_service()
+ {
+ return service.get_io_service();
+ }
+
+protected:
+ /// Construct a basic_io_object.
+ /**
+ * Performs:
+ * @code service.construct(implementation); @endcode
+ */
+ explicit basic_io_object(boost::asio::io_service& io_service)
+ : service(boost::asio::use_service<IoObjectService>(io_service))
+ {
+ service.construct(implementation);
+ }
+
+ /// Protected destructor to prevent deletion through this type.
+ /**
+ * Performs:
+ * @code service.destroy(implementation); @endcode
+ */
+ ~basic_io_object()
+ {
+ service.destroy(implementation);
+ }
+
+ /// The service associated with the I/O object.
+ service_type& service;
+
+ /// The underlying implementation of the I/O object.
+ implementation_type implementation;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_IO_OBJECT_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_raw_socket.hpp b/3rdParty/Boost/boost/asio/basic_raw_socket.hpp
new file mode 100644
index 0000000..1ba5558
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_raw_socket.hpp
@@ -0,0 +1,800 @@
+//
+// basic_raw_socket.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_RAW_SOCKET_HPP
+#define BOOST_ASIO_BASIC_RAW_SOCKET_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/raw_socket_service.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides raw-oriented socket functionality.
+/**
+ * The basic_raw_socket class template provides asynchronous and blocking
+ * raw-oriented socket functionality.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename Protocol,
+ typename RawSocketService = raw_socket_service<Protocol> >
+class basic_raw_socket
+ : public basic_socket<Protocol, RawSocketService>
+{
+public:
+ /// The native representation of a socket.
+ typedef typename RawSocketService::native_type native_type;
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ /// Construct a basic_raw_socket without opening it.
+ /**
+ * This constructor creates a raw socket without opening it. The open()
+ * function must be called before data can be sent or received on the socket.
+ *
+ * @param io_service The io_service object that the raw socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ */
+ explicit basic_raw_socket(boost::asio::io_service& io_service)
+ : basic_socket<Protocol, RawSocketService>(io_service)
+ {
+ }
+
+ /// Construct and open a basic_raw_socket.
+ /**
+ * This constructor creates and opens a raw socket.
+ *
+ * @param io_service The io_service object that the raw socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_raw_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol)
+ : basic_socket<Protocol, RawSocketService>(io_service, protocol)
+ {
+ }
+
+ /// Construct a basic_raw_socket, opening it and binding it to the given
+ /// local endpoint.
+ /**
+ * This constructor creates a raw socket and automatically opens it bound
+ * to the specified endpoint on the local machine. The protocol used is the
+ * protocol associated with the given endpoint.
+ *
+ * @param io_service The io_service object that the raw socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ *
+ * @param endpoint An endpoint on the local machine to which the raw
+ * socket will be bound.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_raw_socket(boost::asio::io_service& io_service,
+ const endpoint_type& endpoint)
+ : basic_socket<Protocol, RawSocketService>(io_service, endpoint)
+ {
+ }
+
+ /// Construct a basic_raw_socket on an existing native socket.
+ /**
+ * This constructor creates a raw socket object to hold an existing
+ * native socket.
+ *
+ * @param io_service The io_service object that the raw socket will use
+ * to dispatch handlers for any asynchronous operations performed on the
+ * socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @param native_socket The new underlying socket implementation.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_raw_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol, const native_type& native_socket)
+ : basic_socket<Protocol, RawSocketService>(
+ io_service, protocol, native_socket)
+ {
+ }
+
+ /// Send some data on a connected socket.
+ /**
+ * This function is used to send data on the raw socket. The function call
+ * will block until the data has been sent successfully or an error occurs.
+ *
+ * @param buffers One ore more data buffers to be sent on the socket.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The send operation can only be used with a connected socket. Use
+ * the send_to function to send data on an unconnected raw socket.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code socket.send(boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send some data on a connected socket.
+ /**
+ * This function is used to send data on the raw socket. The function call
+ * will block until the data has been sent successfully or an error occurs.
+ *
+ * @param buffers One ore more data buffers to be sent on the socket.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The send operation can only be used with a connected socket. Use
+ * the send_to function to send data on an unconnected raw socket.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(
+ this->implementation, buffers, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send some data on a connected socket.
+ /**
+ * This function is used to send data on the raw socket. The function call
+ * will block until the data has been sent successfully or an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @note The send operation can only be used with a connected socket. Use
+ * the send_to function to send data on an unconnected raw socket.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return this->service.send(this->implementation, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous send on a connected socket.
+ /**
+ * This function is used to send data on the raw socket. The function call
+ * will block until the data has been sent successfully or an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket. Although
+ * the buffers object may be copied as necessary, ownership of the underlying
+ * memory blocks is retained by the caller, which must guarantee that they
+ * remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_send operation can only be used with a connected socket.
+ * Use the async_send_to function to send data on an unconnected raw
+ * socket.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.async_send(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, 0, handler);
+ }
+
+ /// Start an asynchronous send on a connected socket.
+ /**
+ * This function is used to send data on the raw socket. The function call
+ * will block until the data has been sent successfully or an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket. Although
+ * the buffers object may be copied as necessary, ownership of the underlying
+ * memory blocks is retained by the caller, which must guarantee that they
+ * remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_send operation can only be used with a connected socket.
+ * Use the async_send_to function to send data on an unconnected raw
+ * socket.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, flags, handler);
+ }
+
+ /// Send raw data to the specified endpoint.
+ /**
+ * This function is used to send raw data to the specified remote endpoint.
+ * The function call will block until the data has been sent successfully or
+ * an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::ip::udp::endpoint destination(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * socket.send_to(boost::asio::buffer(data, size), destination);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send_to(
+ this->implementation, buffers, destination, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send raw data to the specified endpoint.
+ /**
+ * This function is used to send raw data to the specified remote endpoint.
+ * The function call will block until the data has been sent successfully or
+ * an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send_to(
+ this->implementation, buffers, destination, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send raw data to the specified endpoint.
+ /**
+ * This function is used to send raw data to the specified remote endpoint.
+ * The function call will block until the data has been sent successfully or
+ * an error occurs.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes sent.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ return this->service.send_to(this->implementation,
+ buffers, destination, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ /**
+ * This function is used to asynchronously send raw data to the specified
+ * remote endpoint. The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ * Copies will be made of the endpoint as required.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::ip::udp::endpoint destination(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * socket.async_send_to(
+ * boost::asio::buffer(data, size), destination, handler);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, WriteHandler handler)
+ {
+ this->service.async_send_to(this->implementation, buffers, destination, 0,
+ handler);
+ }
+
+ /// Start an asynchronous send.
+ /**
+ * This function is used to asynchronously send raw data to the specified
+ * remote endpoint. The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be sent to the remote endpoint.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param destination The remote endpoint to which the data will be sent.
+ * Copies will be made of the endpoint as required.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send_to(const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ WriteHandler handler)
+ {
+ this->service.async_send_to(this->implementation, buffers, destination,
+ flags, handler);
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the raw socket. The function
+ * call will block until data has been received successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The receive operation can only be used with a connected socket. Use
+ * the receive_from function to receive data on an unconnected raw
+ * socket.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code socket.receive(boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(
+ this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the raw socket. The function
+ * call will block until data has been received successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The receive operation can only be used with a connected socket. Use
+ * the receive_from function to receive data on an unconnected raw
+ * socket.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(
+ this->implementation, buffers, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the raw socket. The function
+ * call will block until data has been received successfully or an error
+ * occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes received.
+ *
+ * @note The receive operation can only be used with a connected socket. Use
+ * the receive_from function to receive data on an unconnected raw
+ * socket.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return this->service.receive(this->implementation, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous receive on a connected socket.
+ /**
+ * This function is used to asynchronously receive data from the raw
+ * socket. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_receive operation can only be used with a connected socket.
+ * Use the async_receive_from function to receive data on an unconnected
+ * raw socket.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * socket.async_receive(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, 0, handler);
+ }
+
+ /// Start an asynchronous receive on a connected socket.
+ /**
+ * This function is used to asynchronously receive data from the raw
+ * socket. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The async_receive operation can only be used with a connected socket.
+ * Use the async_receive_from function to receive data on an unconnected
+ * raw socket.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, flags, handler);
+ }
+
+ /// Receive raw data with the endpoint of the sender.
+ /**
+ * This function is used to receive raw data. The function call will block
+ * until data has been received successfully or an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the data.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * boost::asio::ip::udp::endpoint sender_endpoint;
+ * socket.receive_from(
+ * boost::asio::buffer(data, size), sender_endpoint);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive_from(
+ this->implementation, buffers, sender_endpoint, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive raw data with the endpoint of the sender.
+ /**
+ * This function is used to receive raw data. The function call will block
+ * until data has been received successfully or an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the data.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive_from(
+ this->implementation, buffers, sender_endpoint, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive raw data with the endpoint of the sender.
+ /**
+ * This function is used to receive raw data. The function call will block
+ * until data has been received successfully or an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the data.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes received.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ return this->service.receive_from(this->implementation, buffers,
+ sender_endpoint, flags, ec);
+ }
+
+ /// Start an asynchronous receive.
+ /**
+ * This function is used to asynchronously receive raw data. The function
+ * call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the data. Ownership of the sender_endpoint object
+ * is retained by the caller, which must guarantee that it is valid until the
+ * handler is called.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code socket.async_receive_from(
+ * boost::asio::buffer(data, size), 0, sender_endpoint, handler); @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, ReadHandler handler)
+ {
+ this->service.async_receive_from(this->implementation, buffers,
+ sender_endpoint, 0, handler);
+ }
+
+ /// Start an asynchronous receive.
+ /**
+ * This function is used to asynchronously receive raw data. The function
+ * call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param sender_endpoint An endpoint object that receives the endpoint of
+ * the remote sender of the data. Ownership of the sender_endpoint object
+ * is retained by the caller, which must guarantee that it is valid until the
+ * handler is called.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive_from(const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
+ ReadHandler handler)
+ {
+ this->service.async_receive_from(this->implementation, buffers,
+ sender_endpoint, flags, handler);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_RAW_SOCKET_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_serial_port.hpp b/3rdParty/Boost/boost/asio/basic_serial_port.hpp
new file mode 100644
index 0000000..339d5df
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_serial_port.hpp
@@ -0,0 +1,624 @@
+//
+// basic_serial_port.hpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_SERIAL_PORT_HPP
+#define BOOST_ASIO_BASIC_SERIAL_PORT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <string>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/serial_port_base.hpp>
+#include <boost/asio/serial_port_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+
+/// Provides serial port functionality.
+/**
+ * The basic_serial_port class template provides functionality that is common
+ * to all serial ports.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename SerialPortService = serial_port_service>
+class basic_serial_port
+ : public basic_io_object<SerialPortService>,
+ public serial_port_base
+{
+public:
+ /// The native representation of a serial port.
+ typedef typename SerialPortService::native_type native_type;
+
+ /// A basic_serial_port is always the lowest layer.
+ typedef basic_serial_port<SerialPortService> lowest_layer_type;
+
+ /// Construct a basic_serial_port without opening it.
+ /**
+ * This constructor creates a serial port without opening it.
+ *
+ * @param io_service The io_service object that the serial port will use to
+ * dispatch handlers for any asynchronous operations performed on the port.
+ */
+ explicit basic_serial_port(boost::asio::io_service& io_service)
+ : basic_io_object<SerialPortService>(io_service)
+ {
+ }
+
+ /// Construct and open a basic_serial_port.
+ /**
+ * This constructor creates and opens a serial port for the specified device
+ * name.
+ *
+ * @param io_service The io_service object that the serial port will use to
+ * dispatch handlers for any asynchronous operations performed on the port.
+ *
+ * @param device The platform-specific device name for this serial
+ * port.
+ */
+ explicit basic_serial_port(boost::asio::io_service& io_service,
+ const char* device)
+ : basic_io_object<SerialPortService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, device, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Construct and open a basic_serial_port.
+ /**
+ * This constructor creates and opens a serial port for the specified device
+ * name.
+ *
+ * @param io_service The io_service object that the serial port will use to
+ * dispatch handlers for any asynchronous operations performed on the port.
+ *
+ * @param device The platform-specific device name for this serial
+ * port.
+ */
+ explicit basic_serial_port(boost::asio::io_service& io_service,
+ const std::string& device)
+ : basic_io_object<SerialPortService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, device, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Construct a basic_serial_port on an existing native serial port.
+ /**
+ * This constructor creates a serial port object to hold an existing native
+ * serial port.
+ *
+ * @param io_service The io_service object that the serial port will use to
+ * dispatch handlers for any asynchronous operations performed on the port.
+ *
+ * @param native_serial_port A native serial port.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_serial_port(boost::asio::io_service& io_service,
+ const native_type& native_serial_port)
+ : basic_io_object<SerialPortService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, native_serial_port, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get a reference to the lowest layer.
+ /**
+ * This function returns a reference to the lowest layer in a stack of
+ * layers. Since a basic_serial_port cannot contain any further layers, it
+ * simply returns a reference to itself.
+ *
+ * @return A reference to the lowest layer in the stack of layers. Ownership
+ * is not transferred to the caller.
+ */
+ lowest_layer_type& lowest_layer()
+ {
+ return *this;
+ }
+
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_serial_port cannot contain any further layers, it
+ * simply returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
+ /// Open the serial port using the specified device name.
+ /**
+ * This function opens the serial port for the specified device name.
+ *
+ * @param device The platform-specific device name.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void open(const std::string& device)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, device, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Open the serial port using the specified device name.
+ /**
+ * This function opens the serial port using the given platform-specific
+ * device name.
+ *
+ * @param device The platform-specific device name.
+ *
+ * @param ec Set the indicate what error occurred, if any.
+ */
+ boost::system::error_code open(const std::string& device,
+ boost::system::error_code& ec)
+ {
+ return this->service.open(this->implementation, device, ec);
+ }
+
+ /// Assign an existing native serial port to the serial port.
+ /*
+ * This function opens the serial port to hold an existing native serial port.
+ *
+ * @param native_serial_port A native serial port.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void assign(const native_type& native_serial_port)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, native_serial_port, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Assign an existing native serial port to the serial port.
+ /*
+ * This function opens the serial port to hold an existing native serial port.
+ *
+ * @param native_serial_port A native serial port.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code assign(const native_type& native_serial_port,
+ boost::system::error_code& ec)
+ {
+ return this->service.assign(this->implementation, native_serial_port, ec);
+ }
+
+ /// Determine whether the serial port is open.
+ bool is_open() const
+ {
+ return this->service.is_open(this->implementation);
+ }
+
+ /// Close the serial port.
+ /**
+ * This function is used to close the serial port. Any asynchronous read or
+ * write operations will be cancelled immediately, and will complete with the
+ * boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void close()
+ {
+ boost::system::error_code ec;
+ this->service.close(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Close the serial port.
+ /**
+ * This function is used to close the serial port. Any asynchronous read or
+ * write operations will be cancelled immediately, and will complete with the
+ * boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return this->service.close(this->implementation, ec);
+ }
+
+ /// Get the native serial port representation.
+ /**
+ * This function may be used to obtain the underlying representation of the
+ * serial port. This is intended to allow access to native serial port
+ * functionality that is not otherwise provided.
+ */
+ native_type native()
+ {
+ return this->service.native(this->implementation);
+ }
+
+ /// Cancel all asynchronous operations associated with the serial port.
+ /**
+ * This function causes all outstanding asynchronous read or write operations
+ * to finish immediately, and the handlers for cancelled operations will be
+ * passed the boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void cancel()
+ {
+ boost::system::error_code ec;
+ this->service.cancel(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Cancel all asynchronous operations associated with the serial port.
+ /**
+ * This function causes all outstanding asynchronous read or write operations
+ * to finish immediately, and the handlers for cancelled operations will be
+ * passed the boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code cancel(boost::system::error_code& ec)
+ {
+ return this->service.cancel(this->implementation, ec);
+ }
+
+ /// Send a break sequence to the serial port.
+ /**
+ * This function causes a break sequence of platform-specific duration to be
+ * sent out the serial port.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void send_break()
+ {
+ boost::system::error_code ec;
+ this->service.send_break(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Send a break sequence to the serial port.
+ /**
+ * This function causes a break sequence of platform-specific duration to be
+ * sent out the serial port.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code send_break(boost::system::error_code& ec)
+ {
+ return this->service.send_break(this->implementation, ec);
+ }
+
+ /// Set an option on the serial port.
+ /**
+ * This function is used to set an option on the serial port.
+ *
+ * @param option The option value to be set on the serial port.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa SettableSerialPortOption @n
+ * boost::asio::serial_port_base::baud_rate @n
+ * boost::asio::serial_port_base::flow_control @n
+ * boost::asio::serial_port_base::parity @n
+ * boost::asio::serial_port_base::stop_bits @n
+ * boost::asio::serial_port_base::character_size
+ */
+ template <typename SettableSerialPortOption>
+ void set_option(const SettableSerialPortOption& option)
+ {
+ boost::system::error_code ec;
+ this->service.set_option(this->implementation, option, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Set an option on the serial port.
+ /**
+ * This function is used to set an option on the serial port.
+ *
+ * @param option The option value to be set on the serial port.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa SettableSerialPortOption @n
+ * boost::asio::serial_port_base::baud_rate @n
+ * boost::asio::serial_port_base::flow_control @n
+ * boost::asio::serial_port_base::parity @n
+ * boost::asio::serial_port_base::stop_bits @n
+ * boost::asio::serial_port_base::character_size
+ */
+ template <typename SettableSerialPortOption>
+ boost::system::error_code set_option(const SettableSerialPortOption& option,
+ boost::system::error_code& ec)
+ {
+ return this->service.set_option(this->implementation, option, ec);
+ }
+
+ /// Get an option from the serial port.
+ /**
+ * This function is used to get the current value of an option on the serial
+ * port.
+ *
+ * @param option The option value to be obtained from the serial port.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa GettableSerialPortOption @n
+ * boost::asio::serial_port_base::baud_rate @n
+ * boost::asio::serial_port_base::flow_control @n
+ * boost::asio::serial_port_base::parity @n
+ * boost::asio::serial_port_base::stop_bits @n
+ * boost::asio::serial_port_base::character_size
+ */
+ template <typename GettableSerialPortOption>
+ void get_option(GettableSerialPortOption& option)
+ {
+ boost::system::error_code ec;
+ this->service.get_option(this->implementation, option, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get an option from the serial port.
+ /**
+ * This function is used to get the current value of an option on the serial
+ * port.
+ *
+ * @param option The option value to be obtained from the serial port.
+ *
+ * @param ec Set to indicate what error occured, if any.
+ *
+ * @sa GettableSerialPortOption @n
+ * boost::asio::serial_port_base::baud_rate @n
+ * boost::asio::serial_port_base::flow_control @n
+ * boost::asio::serial_port_base::parity @n
+ * boost::asio::serial_port_base::stop_bits @n
+ * boost::asio::serial_port_base::character_size
+ */
+ template <typename GettableSerialPortOption>
+ boost::system::error_code get_option(GettableSerialPortOption& option,
+ boost::system::error_code& ec)
+ {
+ return this->service.get_option(this->implementation, option, ec);
+ }
+
+ /// Write some data to the serial port.
+ /**
+ * This function is used to write data to the serial port. The function call
+ * will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the serial port.
+ *
+ * @returns The number of bytes written.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * serial_port.write_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.write_some(this->implementation, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Write some data to the serial port.
+ /**
+ * This function is used to write data to the serial port. The function call
+ * will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the serial port.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. Returns 0 if an error occurred.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.write_some(this->implementation, buffers, ec);
+ }
+
+ /// Start an asynchronous write.
+ /**
+ * This function is used to asynchronously write data to the serial port.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be written to the serial port.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes written.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The write operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write function if you need to ensure that all
+ * data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * serial_port.async_write_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ this->service.async_write_some(this->implementation, buffers, handler);
+ }
+
+ /// Read some data from the serial port.
+ /**
+ * This function is used to read data from the serial port. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @returns The number of bytes read.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * serial_port.read_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.read_some(this->implementation, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Read some data from the serial port.
+ /**
+ * This function is used to read data from the serial port. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. Returns 0 if an error occurred.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.read_some(this->implementation, buffers, ec);
+ }
+
+ /// Start an asynchronous read.
+ /**
+ * This function is used to asynchronously read data from the serial port.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes read.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The read operation may not read all of the requested number of bytes.
+ * Consider using the @ref async_read function if you need to ensure that the
+ * requested amount of data is read before the asynchronous operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * serial_port.async_read_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ this->service.async_read_some(this->implementation, buffers, handler);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_SERIAL_PORT_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_socket.hpp b/3rdParty/Boost/boost/asio/basic_socket.hpp
new file mode 100644
index 0000000..c991132
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_socket.hpp
@@ -0,0 +1,1065 @@
+//
+// basic_socket.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_SOCKET_HPP
+#define BOOST_ASIO_BASIC_SOCKET_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/socket_base.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides socket functionality.
+/**
+ * The basic_socket class template provides functionality that is common to both
+ * stream-oriented and datagram-oriented sockets.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename Protocol, typename SocketService>
+class basic_socket
+ : public basic_io_object<SocketService>,
+ public socket_base
+{
+public:
+ /// The native representation of a socket.
+ typedef typename SocketService::native_type native_type;
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ /// A basic_socket is always the lowest layer.
+ typedef basic_socket<Protocol, SocketService> lowest_layer_type;
+
+ /// Construct a basic_socket without opening it.
+ /**
+ * This constructor creates a socket without opening it.
+ *
+ * @param io_service The io_service object that the socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ */
+ explicit basic_socket(boost::asio::io_service& io_service)
+ : basic_io_object<SocketService>(io_service)
+ {
+ }
+
+ /// Construct and open a basic_socket.
+ /**
+ * This constructor creates and opens a socket.
+ *
+ * @param io_service The io_service object that the socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol)
+ : basic_io_object<SocketService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, protocol, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Construct a basic_socket, opening it and binding it to the given local
+ /// endpoint.
+ /**
+ * This constructor creates a socket and automatically opens it bound to the
+ * specified endpoint on the local machine. The protocol used is the protocol
+ * associated with the given endpoint.
+ *
+ * @param io_service The io_service object that the socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ *
+ * @param endpoint An endpoint on the local machine to which the socket will
+ * be bound.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_socket(boost::asio::io_service& io_service,
+ const endpoint_type& endpoint)
+ : basic_io_object<SocketService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, endpoint.protocol(), ec);
+ boost::asio::detail::throw_error(ec);
+ this->service.bind(this->implementation, endpoint, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Construct a basic_socket on an existing native socket.
+ /**
+ * This constructor creates a socket object to hold an existing native socket.
+ *
+ * @param io_service The io_service object that the socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @param native_socket A native socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol, const native_type& native_socket)
+ : basic_io_object<SocketService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, protocol, native_socket, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get a reference to the lowest layer.
+ /**
+ * This function returns a reference to the lowest layer in a stack of
+ * layers. Since a basic_socket cannot contain any further layers, it simply
+ * returns a reference to itself.
+ *
+ * @return A reference to the lowest layer in the stack of layers. Ownership
+ * is not transferred to the caller.
+ */
+ lowest_layer_type& lowest_layer()
+ {
+ return *this;
+ }
+
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_socket cannot contain any further layers, it simply
+ * returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
+ /// Open the socket using the specified protocol.
+ /**
+ * This function opens the socket so that it will use the specified protocol.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * socket.open(boost::asio::ip::tcp::v4());
+ * @endcode
+ */
+ void open(const protocol_type& protocol = protocol_type())
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, protocol, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Open the socket using the specified protocol.
+ /**
+ * This function opens the socket so that it will use the specified protocol.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::system::error_code ec;
+ * socket.open(boost::asio::ip::tcp::v4(), ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code open(const protocol_type& protocol,
+ boost::system::error_code& ec)
+ {
+ return this->service.open(this->implementation, protocol, ec);
+ }
+
+ /// Assign an existing native socket to the socket.
+ /*
+ * This function opens the socket to hold an existing native socket.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @param native_socket A native socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void assign(const protocol_type& protocol, const native_type& native_socket)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, protocol, native_socket, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Assign an existing native socket to the socket.
+ /*
+ * This function opens the socket to hold an existing native socket.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @param native_socket A native socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code assign(const protocol_type& protocol,
+ const native_type& native_socket, boost::system::error_code& ec)
+ {
+ return this->service.assign(this->implementation,
+ protocol, native_socket, ec);
+ }
+
+ /// Determine whether the socket is open.
+ bool is_open() const
+ {
+ return this->service.is_open(this->implementation);
+ }
+
+ /// Close the socket.
+ /**
+ * This function is used to close the socket. Any asynchronous send, receive
+ * or connect operations will be cancelled immediately, and will complete
+ * with the boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note For portable behaviour with respect to graceful closure of a
+ * connected socket, call shutdown() before closing the socket.
+ */
+ void close()
+ {
+ boost::system::error_code ec;
+ this->service.close(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Close the socket.
+ /**
+ * This function is used to close the socket. Any asynchronous send, receive
+ * or connect operations will be cancelled immediately, and will complete
+ * with the boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * socket.close(ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ *
+ * @note For portable behaviour with respect to graceful closure of a
+ * connected socket, call shutdown() before closing the socket.
+ */
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return this->service.close(this->implementation, ec);
+ }
+
+ /// Get the native socket representation.
+ /**
+ * This function may be used to obtain the underlying representation of the
+ * socket. This is intended to allow access to native socket functionality
+ * that is not otherwise provided.
+ */
+ native_type native()
+ {
+ return this->service.native(this->implementation);
+ }
+
+ /// Cancel all asynchronous operations associated with the socket.
+ /**
+ * This function causes all outstanding asynchronous connect, send and receive
+ * operations to finish immediately, and the handlers for cancelled operations
+ * will be passed the boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note Calls to cancel() will always fail with
+ * boost::asio::error::operation_not_supported when run on Windows XP, Windows
+ * Server 2003, and earlier versions of Windows, unless
+ * BOOST_ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
+ * two issues that should be considered before enabling its use:
+ *
+ * @li It will only cancel asynchronous operations that were initiated in the
+ * current thread.
+ *
+ * @li It can appear to complete without error, but the request to cancel the
+ * unfinished operations may be silently ignored by the operating system.
+ * Whether it works or not seems to depend on the drivers that are installed.
+ *
+ * For portable cancellation, consider using one of the following
+ * alternatives:
+ *
+ * @li Disable asio's I/O completion port backend by defining
+ * BOOST_ASIO_DISABLE_IOCP.
+ *
+ * @li Use the close() function to simultaneously cancel the outstanding
+ * operations and close the socket.
+ *
+ * When running on Windows Vista, Windows Server 2008, and later, the
+ * CancelIoEx function is always used. This function does not have the
+ * problems described above.
+ */
+#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1400) \
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
+ && !defined(BOOST_ASIO_ENABLE_CANCELIO)
+ __declspec(deprecated("By default, this function always fails with "
+ "operation_not_supported when used on Windows XP, Windows Server 2003, "
+ "or earlier. Consult documentation for details."))
+#endif
+ void cancel()
+ {
+ boost::system::error_code ec;
+ this->service.cancel(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Cancel all asynchronous operations associated with the socket.
+ /**
+ * This function causes all outstanding asynchronous connect, send and receive
+ * operations to finish immediately, and the handlers for cancelled operations
+ * will be passed the boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @note Calls to cancel() will always fail with
+ * boost::asio::error::operation_not_supported when run on Windows XP, Windows
+ * Server 2003, and earlier versions of Windows, unless
+ * BOOST_ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
+ * two issues that should be considered before enabling its use:
+ *
+ * @li It will only cancel asynchronous operations that were initiated in the
+ * current thread.
+ *
+ * @li It can appear to complete without error, but the request to cancel the
+ * unfinished operations may be silently ignored by the operating system.
+ * Whether it works or not seems to depend on the drivers that are installed.
+ *
+ * For portable cancellation, consider using one of the following
+ * alternatives:
+ *
+ * @li Disable asio's I/O completion port backend by defining
+ * BOOST_ASIO_DISABLE_IOCP.
+ *
+ * @li Use the close() function to simultaneously cancel the outstanding
+ * operations and close the socket.
+ *
+ * When running on Windows Vista, Windows Server 2008, and later, the
+ * CancelIoEx function is always used. This function does not have the
+ * problems described above.
+ */
+#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1400) \
+ && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
+ && !defined(BOOST_ASIO_ENABLE_CANCELIO)
+ __declspec(deprecated("By default, this function always fails with "
+ "operation_not_supported when used on Windows XP, Windows Server 2003, "
+ "or earlier. Consult documentation for details."))
+#endif
+ boost::system::error_code cancel(boost::system::error_code& ec)
+ {
+ return this->service.cancel(this->implementation, ec);
+ }
+
+ /// Determine whether the socket is at the out-of-band data mark.
+ /**
+ * This function is used to check whether the socket input is currently
+ * positioned at the out-of-band data mark.
+ *
+ * @return A bool indicating whether the socket is at the out-of-band data
+ * mark.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ bool at_mark() const
+ {
+ boost::system::error_code ec;
+ bool b = this->service.at_mark(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ return b;
+ }
+
+ /// Determine whether the socket is at the out-of-band data mark.
+ /**
+ * This function is used to check whether the socket input is currently
+ * positioned at the out-of-band data mark.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return A bool indicating whether the socket is at the out-of-band data
+ * mark.
+ */
+ bool at_mark(boost::system::error_code& ec) const
+ {
+ return this->service.at_mark(this->implementation, ec);
+ }
+
+ /// Determine the number of bytes available for reading.
+ /**
+ * This function is used to determine the number of bytes that may be read
+ * without blocking.
+ *
+ * @return The number of bytes that may be read without blocking, or 0 if an
+ * error occurs.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t available() const
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.available(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Determine the number of bytes available for reading.
+ /**
+ * This function is used to determine the number of bytes that may be read
+ * without blocking.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of bytes that may be read without blocking, or 0 if an
+ * error occurs.
+ */
+ std::size_t available(boost::system::error_code& ec) const
+ {
+ return this->service.available(this->implementation, ec);
+ }
+
+ /// Bind the socket to the given local endpoint.
+ /**
+ * This function binds the socket to the specified endpoint on the local
+ * machine.
+ *
+ * @param endpoint An endpoint on the local machine to which the socket will
+ * be bound.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * socket.open(boost::asio::ip::tcp::v4());
+ * socket.bind(boost::asio::ip::tcp::endpoint(
+ * boost::asio::ip::tcp::v4(), 12345));
+ * @endcode
+ */
+ void bind(const endpoint_type& endpoint)
+ {
+ boost::system::error_code ec;
+ this->service.bind(this->implementation, endpoint, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Bind the socket to the given local endpoint.
+ /**
+ * This function binds the socket to the specified endpoint on the local
+ * machine.
+ *
+ * @param endpoint An endpoint on the local machine to which the socket will
+ * be bound.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * socket.open(boost::asio::ip::tcp::v4());
+ * boost::system::error_code ec;
+ * socket.bind(boost::asio::ip::tcp::endpoint(
+ * boost::asio::ip::tcp::v4(), 12345), ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code bind(const endpoint_type& endpoint,
+ boost::system::error_code& ec)
+ {
+ return this->service.bind(this->implementation, endpoint, ec);
+ }
+
+ /// Connect the socket to the specified endpoint.
+ /**
+ * This function is used to connect a socket to the specified remote endpoint.
+ * The function call will block until the connection is successfully made or
+ * an error occurs.
+ *
+ * The socket is automatically opened if it is not already open. If the
+ * connect fails, and the socket was automatically opened, the socket is
+ * not returned to the closed state.
+ *
+ * @param peer_endpoint The remote endpoint to which the socket will be
+ * connected.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::endpoint endpoint(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * socket.connect(endpoint);
+ * @endcode
+ */
+ void connect(const endpoint_type& peer_endpoint)
+ {
+ boost::system::error_code ec;
+ if (!is_open())
+ {
+ this->service.open(this->implementation, peer_endpoint.protocol(), ec);
+ boost::asio::detail::throw_error(ec);
+ }
+ this->service.connect(this->implementation, peer_endpoint, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Connect the socket to the specified endpoint.
+ /**
+ * This function is used to connect a socket to the specified remote endpoint.
+ * The function call will block until the connection is successfully made or
+ * an error occurs.
+ *
+ * The socket is automatically opened if it is not already open. If the
+ * connect fails, and the socket was automatically opened, the socket is
+ * not returned to the closed state.
+ *
+ * @param peer_endpoint The remote endpoint to which the socket will be
+ * connected.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::endpoint endpoint(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * boost::system::error_code ec;
+ * socket.connect(endpoint, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code connect(const endpoint_type& peer_endpoint,
+ boost::system::error_code& ec)
+ {
+ if (!is_open())
+ {
+ if (this->service.open(this->implementation,
+ peer_endpoint.protocol(), ec))
+ {
+ return ec;
+ }
+ }
+
+ return this->service.connect(this->implementation, peer_endpoint, ec);
+ }
+
+ /// Start an asynchronous connect.
+ /**
+ * This function is used to asynchronously connect a socket to the specified
+ * remote endpoint. The function call always returns immediately.
+ *
+ * The socket is automatically opened if it is not already open. If the
+ * connect fails, and the socket was automatically opened, the socket is
+ * not returned to the closed state.
+ *
+ * @param peer_endpoint The remote endpoint to which the socket will be
+ * connected. Copies will be made of the endpoint object as required.
+ *
+ * @param handler The handler to be called when the connection operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error // Result of operation
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * @code
+ * void connect_handler(const boost::system::error_code& error)
+ * {
+ * if (!error)
+ * {
+ * // Connect succeeded.
+ * }
+ * }
+ *
+ * ...
+ *
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::endpoint endpoint(
+ * boost::asio::ip::address::from_string("1.2.3.4"), 12345);
+ * socket.async_connect(endpoint, connect_handler);
+ * @endcode
+ */
+ template <typename ConnectHandler>
+ void async_connect(const endpoint_type& peer_endpoint, ConnectHandler handler)
+ {
+ if (!is_open())
+ {
+ boost::system::error_code ec;
+ if (this->service.open(this->implementation,
+ peer_endpoint.protocol(), ec))
+ {
+ this->get_io_service().post(
+ boost::asio::detail::bind_handler(handler, ec));
+ return;
+ }
+ }
+
+ this->service.async_connect(this->implementation, peer_endpoint, handler);
+ }
+
+ /// Set an option on the socket.
+ /**
+ * This function is used to set an option on the socket.
+ *
+ * @param option The new option value to be set on the socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa SettableSocketOption @n
+ * boost::asio::socket_base::broadcast @n
+ * boost::asio::socket_base::do_not_route @n
+ * boost::asio::socket_base::keep_alive @n
+ * boost::asio::socket_base::linger @n
+ * boost::asio::socket_base::receive_buffer_size @n
+ * boost::asio::socket_base::receive_low_watermark @n
+ * boost::asio::socket_base::reuse_address @n
+ * boost::asio::socket_base::send_buffer_size @n
+ * boost::asio::socket_base::send_low_watermark @n
+ * boost::asio::ip::multicast::join_group @n
+ * boost::asio::ip::multicast::leave_group @n
+ * boost::asio::ip::multicast::enable_loopback @n
+ * boost::asio::ip::multicast::outbound_interface @n
+ * boost::asio::ip::multicast::hops @n
+ * boost::asio::ip::tcp::no_delay
+ *
+ * @par Example
+ * Setting the IPPROTO_TCP/TCP_NODELAY option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::no_delay option(true);
+ * socket.set_option(option);
+ * @endcode
+ */
+ template <typename SettableSocketOption>
+ void set_option(const SettableSocketOption& option)
+ {
+ boost::system::error_code ec;
+ this->service.set_option(this->implementation, option, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Set an option on the socket.
+ /**
+ * This function is used to set an option on the socket.
+ *
+ * @param option The new option value to be set on the socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa SettableSocketOption @n
+ * boost::asio::socket_base::broadcast @n
+ * boost::asio::socket_base::do_not_route @n
+ * boost::asio::socket_base::keep_alive @n
+ * boost::asio::socket_base::linger @n
+ * boost::asio::socket_base::receive_buffer_size @n
+ * boost::asio::socket_base::receive_low_watermark @n
+ * boost::asio::socket_base::reuse_address @n
+ * boost::asio::socket_base::send_buffer_size @n
+ * boost::asio::socket_base::send_low_watermark @n
+ * boost::asio::ip::multicast::join_group @n
+ * boost::asio::ip::multicast::leave_group @n
+ * boost::asio::ip::multicast::enable_loopback @n
+ * boost::asio::ip::multicast::outbound_interface @n
+ * boost::asio::ip::multicast::hops @n
+ * boost::asio::ip::tcp::no_delay
+ *
+ * @par Example
+ * Setting the IPPROTO_TCP/TCP_NODELAY option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::no_delay option(true);
+ * boost::system::error_code ec;
+ * socket.set_option(option, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ template <typename SettableSocketOption>
+ boost::system::error_code set_option(const SettableSocketOption& option,
+ boost::system::error_code& ec)
+ {
+ return this->service.set_option(this->implementation, option, ec);
+ }
+
+ /// Get an option from the socket.
+ /**
+ * This function is used to get the current value of an option on the socket.
+ *
+ * @param option The option value to be obtained from the socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa GettableSocketOption @n
+ * boost::asio::socket_base::broadcast @n
+ * boost::asio::socket_base::do_not_route @n
+ * boost::asio::socket_base::keep_alive @n
+ * boost::asio::socket_base::linger @n
+ * boost::asio::socket_base::receive_buffer_size @n
+ * boost::asio::socket_base::receive_low_watermark @n
+ * boost::asio::socket_base::reuse_address @n
+ * boost::asio::socket_base::send_buffer_size @n
+ * boost::asio::socket_base::send_low_watermark @n
+ * boost::asio::ip::multicast::join_group @n
+ * boost::asio::ip::multicast::leave_group @n
+ * boost::asio::ip::multicast::enable_loopback @n
+ * boost::asio::ip::multicast::outbound_interface @n
+ * boost::asio::ip::multicast::hops @n
+ * boost::asio::ip::tcp::no_delay
+ *
+ * @par Example
+ * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket::keep_alive option;
+ * socket.get_option(option);
+ * bool is_set = option.get();
+ * @endcode
+ */
+ template <typename GettableSocketOption>
+ void get_option(GettableSocketOption& option) const
+ {
+ boost::system::error_code ec;
+ this->service.get_option(this->implementation, option, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get an option from the socket.
+ /**
+ * This function is used to get the current value of an option on the socket.
+ *
+ * @param option The option value to be obtained from the socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa GettableSocketOption @n
+ * boost::asio::socket_base::broadcast @n
+ * boost::asio::socket_base::do_not_route @n
+ * boost::asio::socket_base::keep_alive @n
+ * boost::asio::socket_base::linger @n
+ * boost::asio::socket_base::receive_buffer_size @n
+ * boost::asio::socket_base::receive_low_watermark @n
+ * boost::asio::socket_base::reuse_address @n
+ * boost::asio::socket_base::send_buffer_size @n
+ * boost::asio::socket_base::send_low_watermark @n
+ * boost::asio::ip::multicast::join_group @n
+ * boost::asio::ip::multicast::leave_group @n
+ * boost::asio::ip::multicast::enable_loopback @n
+ * boost::asio::ip::multicast::outbound_interface @n
+ * boost::asio::ip::multicast::hops @n
+ * boost::asio::ip::tcp::no_delay
+ *
+ * @par Example
+ * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket::keep_alive option;
+ * boost::system::error_code ec;
+ * socket.get_option(option, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * bool is_set = option.get();
+ * @endcode
+ */
+ template <typename GettableSocketOption>
+ boost::system::error_code get_option(GettableSocketOption& option,
+ boost::system::error_code& ec) const
+ {
+ return this->service.get_option(this->implementation, option, ec);
+ }
+
+ /// Perform an IO control command on the socket.
+ /**
+ * This function is used to execute an IO control command on the socket.
+ *
+ * @param command The IO control command to be performed on the socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa IoControlCommand @n
+ * boost::asio::socket_base::bytes_readable @n
+ * boost::asio::socket_base::non_blocking_io
+ *
+ * @par Example
+ * Getting the number of bytes ready to read:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket::bytes_readable command;
+ * socket.io_control(command);
+ * std::size_t bytes_readable = command.get();
+ * @endcode
+ */
+ template <typename IoControlCommand>
+ void io_control(IoControlCommand& command)
+ {
+ boost::system::error_code ec;
+ this->service.io_control(this->implementation, command, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Perform an IO control command on the socket.
+ /**
+ * This function is used to execute an IO control command on the socket.
+ *
+ * @param command The IO control command to be performed on the socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa IoControlCommand @n
+ * boost::asio::socket_base::bytes_readable @n
+ * boost::asio::socket_base::non_blocking_io
+ *
+ * @par Example
+ * Getting the number of bytes ready to read:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket::bytes_readable command;
+ * boost::system::error_code ec;
+ * socket.io_control(command, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * std::size_t bytes_readable = command.get();
+ * @endcode
+ */
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(IoControlCommand& command,
+ boost::system::error_code& ec)
+ {
+ return this->service.io_control(this->implementation, command, ec);
+ }
+
+ /// Get the local endpoint of the socket.
+ /**
+ * This function is used to obtain the locally bound endpoint of the socket.
+ *
+ * @returns An object that represents the local endpoint of the socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
+ * @endcode
+ */
+ endpoint_type local_endpoint() const
+ {
+ boost::system::error_code ec;
+ endpoint_type ep = this->service.local_endpoint(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ return ep;
+ }
+
+ /// Get the local endpoint of the socket.
+ /**
+ * This function is used to obtain the locally bound endpoint of the socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns An object that represents the local endpoint of the socket.
+ * Returns a default-constructed endpoint object if an error occurred.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * boost::asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ endpoint_type local_endpoint(boost::system::error_code& ec) const
+ {
+ return this->service.local_endpoint(this->implementation, ec);
+ }
+
+ /// Get the remote endpoint of the socket.
+ /**
+ * This function is used to obtain the remote endpoint of the socket.
+ *
+ * @returns An object that represents the remote endpoint of the socket.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
+ * @endcode
+ */
+ endpoint_type remote_endpoint() const
+ {
+ boost::system::error_code ec;
+ endpoint_type ep = this->service.remote_endpoint(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ return ep;
+ }
+
+ /// Get the remote endpoint of the socket.
+ /**
+ * This function is used to obtain the remote endpoint of the socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns An object that represents the remote endpoint of the socket.
+ * Returns a default-constructed endpoint object if an error occurred.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * boost::asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ endpoint_type remote_endpoint(boost::system::error_code& ec) const
+ {
+ return this->service.remote_endpoint(this->implementation, ec);
+ }
+
+ /// Disable sends or receives on the socket.
+ /**
+ * This function is used to disable send operations, receive operations, or
+ * both.
+ *
+ * @param what Determines what types of operation will no longer be allowed.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * Shutting down the send side of the socket:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send);
+ * @endcode
+ */
+ void shutdown(shutdown_type what)
+ {
+ boost::system::error_code ec;
+ this->service.shutdown(this->implementation, what, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Disable sends or receives on the socket.
+ /**
+ * This function is used to disable send operations, receive operations, or
+ * both.
+ *
+ * @param what Determines what types of operation will no longer be allowed.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * Shutting down the send side of the socket:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * socket.shutdown(boost::asio::ip::tcp::socket::shutdown_send, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code shutdown(shutdown_type what,
+ boost::system::error_code& ec)
+ {
+ return this->service.shutdown(this->implementation, what, ec);
+ }
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~basic_socket()
+ {
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_SOCKET_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_socket_acceptor.hpp b/3rdParty/Boost/boost/asio/basic_socket_acceptor.hpp
new file mode 100644
index 0000000..afa0d63
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_socket_acceptor.hpp
@@ -0,0 +1,826 @@
+//
+// basic_socket_acceptor.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_HPP
+#define BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/socket_acceptor_service.hpp>
+#include <boost/asio/socket_base.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides the ability to accept new connections.
+/**
+ * The basic_socket_acceptor class template is used for accepting new socket
+ * connections.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Example
+ * Opening a socket acceptor with the SO_REUSEADDR option enabled:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port);
+ * acceptor.open(endpoint.protocol());
+ * acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
+ * acceptor.bind(endpoint);
+ * acceptor.listen();
+ * @endcode
+ */
+template <typename Protocol,
+ typename SocketAcceptorService = socket_acceptor_service<Protocol> >
+class basic_socket_acceptor
+ : public basic_io_object<SocketAcceptorService>,
+ public socket_base
+{
+public:
+ /// The native representation of an acceptor.
+ typedef typename SocketAcceptorService::native_type native_type;
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ /// Construct an acceptor without opening it.
+ /**
+ * This constructor creates an acceptor without opening it to listen for new
+ * connections. The open() function must be called before the acceptor can
+ * accept new socket connections.
+ *
+ * @param io_service The io_service object that the acceptor will use to
+ * dispatch handlers for any asynchronous operations performed on the
+ * acceptor.
+ */
+ explicit basic_socket_acceptor(boost::asio::io_service& io_service)
+ : basic_io_object<SocketAcceptorService>(io_service)
+ {
+ }
+
+ /// Construct an open acceptor.
+ /**
+ * This constructor creates an acceptor and automatically opens it.
+ *
+ * @param io_service The io_service object that the acceptor will use to
+ * dispatch handlers for any asynchronous operations performed on the
+ * acceptor.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_socket_acceptor(boost::asio::io_service& io_service,
+ const protocol_type& protocol)
+ : basic_io_object<SocketAcceptorService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, protocol, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Construct an acceptor opened on the given endpoint.
+ /**
+ * This constructor creates an acceptor and automatically opens it to listen
+ * for new connections on the specified endpoint.
+ *
+ * @param io_service The io_service object that the acceptor will use to
+ * dispatch handlers for any asynchronous operations performed on the
+ * acceptor.
+ *
+ * @param endpoint An endpoint on the local machine on which the acceptor
+ * will listen for new connections.
+ *
+ * @param reuse_addr Whether the constructor should set the socket option
+ * socket_base::reuse_address.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note This constructor is equivalent to the following code:
+ * @code
+ * basic_socket_acceptor<Protocol> acceptor(io_service);
+ * acceptor.open(endpoint.protocol());
+ * if (reuse_addr)
+ * acceptor.set_option(socket_base::reuse_address(true));
+ * acceptor.bind(endpoint);
+ * acceptor.listen(listen_backlog);
+ * @endcode
+ */
+ basic_socket_acceptor(boost::asio::io_service& io_service,
+ const endpoint_type& endpoint, bool reuse_addr = true)
+ : basic_io_object<SocketAcceptorService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, endpoint.protocol(), ec);
+ boost::asio::detail::throw_error(ec);
+ if (reuse_addr)
+ {
+ this->service.set_option(this->implementation,
+ socket_base::reuse_address(true), ec);
+ boost::asio::detail::throw_error(ec);
+ }
+ this->service.bind(this->implementation, endpoint, ec);
+ boost::asio::detail::throw_error(ec);
+ this->service.listen(this->implementation,
+ socket_base::max_connections, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Construct a basic_socket_acceptor on an existing native acceptor.
+ /**
+ * This constructor creates an acceptor object to hold an existing native
+ * acceptor.
+ *
+ * @param io_service The io_service object that the acceptor will use to
+ * dispatch handlers for any asynchronous operations performed on the
+ * acceptor.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @param native_acceptor A native acceptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_socket_acceptor(boost::asio::io_service& io_service,
+ const protocol_type& protocol, const native_type& native_acceptor)
+ : basic_io_object<SocketAcceptorService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, protocol, native_acceptor, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Open the acceptor using the specified protocol.
+ /**
+ * This function opens the socket acceptor so that it will use the specified
+ * protocol.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * acceptor.open(boost::asio::ip::tcp::v4());
+ * @endcode
+ */
+ void open(const protocol_type& protocol = protocol_type())
+ {
+ boost::system::error_code ec;
+ this->service.open(this->implementation, protocol, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Open the acceptor using the specified protocol.
+ /**
+ * This function opens the socket acceptor so that it will use the specified
+ * protocol.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * boost::system::error_code ec;
+ * acceptor.open(boost::asio::ip::tcp::v4(), ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code open(const protocol_type& protocol,
+ boost::system::error_code& ec)
+ {
+ return this->service.open(this->implementation, protocol, ec);
+ }
+
+ /// Assigns an existing native acceptor to the acceptor.
+ /*
+ * This function opens the acceptor to hold an existing native acceptor.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @param native_acceptor A native acceptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void assign(const protocol_type& protocol, const native_type& native_acceptor)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, protocol, native_acceptor, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Assigns an existing native acceptor to the acceptor.
+ /*
+ * This function opens the acceptor to hold an existing native acceptor.
+ *
+ * @param protocol An object specifying which protocol is to be used.
+ *
+ * @param native_acceptor A native acceptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code assign(const protocol_type& protocol,
+ const native_type& native_acceptor, boost::system::error_code& ec)
+ {
+ return this->service.assign(this->implementation,
+ protocol, native_acceptor, ec);
+ }
+
+ /// Determine whether the acceptor is open.
+ bool is_open() const
+ {
+ return this->service.is_open(this->implementation);
+ }
+
+ /// Bind the acceptor to the given local endpoint.
+ /**
+ * This function binds the socket acceptor to the specified endpoint on the
+ * local machine.
+ *
+ * @param endpoint An endpoint on the local machine to which the socket
+ * acceptor will be bound.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * acceptor.open(boost::asio::ip::tcp::v4());
+ * acceptor.bind(boost::asio::ip::tcp::endpoint(12345));
+ * @endcode
+ */
+ void bind(const endpoint_type& endpoint)
+ {
+ boost::system::error_code ec;
+ this->service.bind(this->implementation, endpoint, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Bind the acceptor to the given local endpoint.
+ /**
+ * This function binds the socket acceptor to the specified endpoint on the
+ * local machine.
+ *
+ * @param endpoint An endpoint on the local machine to which the socket
+ * acceptor will be bound.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * acceptor.open(boost::asio::ip::tcp::v4());
+ * boost::system::error_code ec;
+ * acceptor.bind(boost::asio::ip::tcp::endpoint(12345), ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code bind(const endpoint_type& endpoint,
+ boost::system::error_code& ec)
+ {
+ return this->service.bind(this->implementation, endpoint, ec);
+ }
+
+ /// Place the acceptor into the state where it will listen for new
+ /// connections.
+ /**
+ * This function puts the socket acceptor into the state where it may accept
+ * new connections.
+ *
+ * @param backlog The maximum length of the queue of pending connections.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void listen(int backlog = socket_base::max_connections)
+ {
+ boost::system::error_code ec;
+ this->service.listen(this->implementation, backlog, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Place the acceptor into the state where it will listen for new
+ /// connections.
+ /**
+ * This function puts the socket acceptor into the state where it may accept
+ * new connections.
+ *
+ * @param backlog The maximum length of the queue of pending connections.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * acceptor.listen(boost::asio::socket_base::max_connections, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code listen(int backlog, boost::system::error_code& ec)
+ {
+ return this->service.listen(this->implementation, backlog, ec);
+ }
+
+ /// Close the acceptor.
+ /**
+ * This function is used to close the acceptor. Any asynchronous accept
+ * operations will be cancelled immediately.
+ *
+ * A subsequent call to open() is required before the acceptor can again be
+ * used to again perform socket accept operations.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void close()
+ {
+ boost::system::error_code ec;
+ this->service.close(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Close the acceptor.
+ /**
+ * This function is used to close the acceptor. Any asynchronous accept
+ * operations will be cancelled immediately.
+ *
+ * A subsequent call to open() is required before the acceptor can again be
+ * used to again perform socket accept operations.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * acceptor.close(ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return this->service.close(this->implementation, ec);
+ }
+
+ /// Get the native acceptor representation.
+ /**
+ * This function may be used to obtain the underlying representation of the
+ * acceptor. This is intended to allow access to native acceptor functionality
+ * that is not otherwise provided.
+ */
+ native_type native()
+ {
+ return this->service.native(this->implementation);
+ }
+
+ /// Cancel all asynchronous operations associated with the acceptor.
+ /**
+ * This function causes all outstanding asynchronous connect, send and receive
+ * operations to finish immediately, and the handlers for cancelled operations
+ * will be passed the boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void cancel()
+ {
+ boost::system::error_code ec;
+ this->service.cancel(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Cancel all asynchronous operations associated with the acceptor.
+ /**
+ * This function causes all outstanding asynchronous connect, send and receive
+ * operations to finish immediately, and the handlers for cancelled operations
+ * will be passed the boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code cancel(boost::system::error_code& ec)
+ {
+ return this->service.cancel(this->implementation, ec);
+ }
+
+ /// Set an option on the acceptor.
+ /**
+ * This function is used to set an option on the acceptor.
+ *
+ * @param option The new option value to be set on the acceptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa SettableSocketOption @n
+ * boost::asio::socket_base::reuse_address
+ * boost::asio::socket_base::enable_connection_aborted
+ *
+ * @par Example
+ * Setting the SOL_SOCKET/SO_REUSEADDR option:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::acceptor::reuse_address option(true);
+ * acceptor.set_option(option);
+ * @endcode
+ */
+ template <typename SettableSocketOption>
+ void set_option(const SettableSocketOption& option)
+ {
+ boost::system::error_code ec;
+ this->service.set_option(this->implementation, option, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Set an option on the acceptor.
+ /**
+ * This function is used to set an option on the acceptor.
+ *
+ * @param option The new option value to be set on the acceptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa SettableSocketOption @n
+ * boost::asio::socket_base::reuse_address
+ * boost::asio::socket_base::enable_connection_aborted
+ *
+ * @par Example
+ * Setting the SOL_SOCKET/SO_REUSEADDR option:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::acceptor::reuse_address option(true);
+ * boost::system::error_code ec;
+ * acceptor.set_option(option, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ template <typename SettableSocketOption>
+ boost::system::error_code set_option(const SettableSocketOption& option,
+ boost::system::error_code& ec)
+ {
+ return this->service.set_option(this->implementation, option, ec);
+ }
+
+ /// Get an option from the acceptor.
+ /**
+ * This function is used to get the current value of an option on the
+ * acceptor.
+ *
+ * @param option The option value to be obtained from the acceptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa GettableSocketOption @n
+ * boost::asio::socket_base::reuse_address
+ *
+ * @par Example
+ * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::acceptor::reuse_address option;
+ * acceptor.get_option(option);
+ * bool is_set = option.get();
+ * @endcode
+ */
+ template <typename GettableSocketOption>
+ void get_option(GettableSocketOption& option)
+ {
+ boost::system::error_code ec;
+ this->service.get_option(this->implementation, option, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get an option from the acceptor.
+ /**
+ * This function is used to get the current value of an option on the
+ * acceptor.
+ *
+ * @param option The option value to be obtained from the acceptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa GettableSocketOption @n
+ * boost::asio::socket_base::reuse_address
+ *
+ * @par Example
+ * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::acceptor::reuse_address option;
+ * boost::system::error_code ec;
+ * acceptor.get_option(option, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * bool is_set = option.get();
+ * @endcode
+ */
+ template <typename GettableSocketOption>
+ boost::system::error_code get_option(GettableSocketOption& option,
+ boost::system::error_code& ec)
+ {
+ return this->service.get_option(this->implementation, option, ec);
+ }
+
+ /// Get the local endpoint of the acceptor.
+ /**
+ * This function is used to obtain the locally bound endpoint of the acceptor.
+ *
+ * @returns An object that represents the local endpoint of the acceptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();
+ * @endcode
+ */
+ endpoint_type local_endpoint() const
+ {
+ boost::system::error_code ec;
+ endpoint_type ep = this->service.local_endpoint(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ return ep;
+ }
+
+ /// Get the local endpoint of the acceptor.
+ /**
+ * This function is used to obtain the locally bound endpoint of the acceptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns An object that represents the local endpoint of the acceptor.
+ * Returns a default-constructed endpoint object if an error occurred and the
+ * error handler did not throw an exception.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::system::error_code ec;
+ * boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ endpoint_type local_endpoint(boost::system::error_code& ec) const
+ {
+ return this->service.local_endpoint(this->implementation, ec);
+ }
+
+ /// Accept a new connection.
+ /**
+ * This function is used to accept a new connection from a peer into the
+ * given socket. The function call will block until a new connection has been
+ * accepted successfully or an error occurs.
+ *
+ * @param peer The socket into which the new connection will be accepted.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * acceptor.accept(socket);
+ * @endcode
+ */
+ template <typename SocketService>
+ void accept(basic_socket<protocol_type, SocketService>& peer)
+ {
+ boost::system::error_code ec;
+ this->service.accept(this->implementation, peer, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Accept a new connection.
+ /**
+ * This function is used to accept a new connection from a peer into the
+ * given socket. The function call will block until a new connection has been
+ * accepted successfully or an error occurs.
+ *
+ * @param peer The socket into which the new connection will be accepted.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::soocket socket(io_service);
+ * boost::system::error_code ec;
+ * acceptor.accept(socket, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ template <typename SocketService>
+ boost::system::error_code accept(
+ basic_socket<protocol_type, SocketService>& peer,
+ boost::system::error_code& ec)
+ {
+ return this->service.accept(this->implementation, peer, 0, ec);
+ }
+
+ /// Start an asynchronous accept.
+ /**
+ * This function is used to asynchronously accept a new connection into a
+ * socket. The function call always returns immediately.
+ *
+ * @param peer The socket into which the new connection will be accepted.
+ * Ownership of the peer object is retained by the caller, which must
+ * guarantee that it is valid until the handler is called.
+ *
+ * @param handler The handler to be called when the accept operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error // Result of operation.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * @code
+ * void accept_handler(const boost::system::error_code& error)
+ * {
+ * if (!error)
+ * {
+ * // Accept succeeded.
+ * }
+ * }
+ *
+ * ...
+ *
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * acceptor.async_accept(socket, accept_handler);
+ * @endcode
+ */
+ template <typename SocketService, typename AcceptHandler>
+ void async_accept(basic_socket<protocol_type, SocketService>& peer,
+ AcceptHandler handler)
+ {
+ this->service.async_accept(this->implementation, peer, 0, handler);
+ }
+
+ /// Accept a new connection and obtain the endpoint of the peer
+ /**
+ * This function is used to accept a new connection from a peer into the
+ * given socket, and additionally provide the endpoint of the remote peer.
+ * The function call will block until a new connection has been accepted
+ * successfully or an error occurs.
+ *
+ * @param peer The socket into which the new connection will be accepted.
+ *
+ * @param peer_endpoint An endpoint object which will receive the endpoint of
+ * the remote peer.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::endpoint endpoint;
+ * acceptor.accept(socket, endpoint);
+ * @endcode
+ */
+ template <typename SocketService>
+ void accept(basic_socket<protocol_type, SocketService>& peer,
+ endpoint_type& peer_endpoint)
+ {
+ boost::system::error_code ec;
+ this->service.accept(this->implementation, peer, &peer_endpoint, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Accept a new connection and obtain the endpoint of the peer
+ /**
+ * This function is used to accept a new connection from a peer into the
+ * given socket, and additionally provide the endpoint of the remote peer.
+ * The function call will block until a new connection has been accepted
+ * successfully or an error occurs.
+ *
+ * @param peer The socket into which the new connection will be accepted.
+ *
+ * @param peer_endpoint An endpoint object which will receive the endpoint of
+ * the remote peer.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * boost::asio::ip::tcp::endpoint endpoint;
+ * boost::system::error_code ec;
+ * acceptor.accept(socket, endpoint, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * @endcode
+ */
+ template <typename SocketService>
+ boost::system::error_code accept(
+ basic_socket<protocol_type, SocketService>& peer,
+ endpoint_type& peer_endpoint, boost::system::error_code& ec)
+ {
+ return this->service.accept(this->implementation, peer, &peer_endpoint, ec);
+ }
+
+ /// Start an asynchronous accept.
+ /**
+ * This function is used to asynchronously accept a new connection into a
+ * socket, and additionally obtain the endpoint of the remote peer. The
+ * function call always returns immediately.
+ *
+ * @param peer The socket into which the new connection will be accepted.
+ * Ownership of the peer object is retained by the caller, which must
+ * guarantee that it is valid until the handler is called.
+ *
+ * @param peer_endpoint An endpoint object into which the endpoint of the
+ * remote peer will be written. Ownership of the peer_endpoint object is
+ * retained by the caller, which must guarantee that it is valid until the
+ * handler is called.
+ *
+ * @param handler The handler to be called when the accept operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error // Result of operation.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+ template <typename SocketService, typename AcceptHandler>
+ void async_accept(basic_socket<protocol_type, SocketService>& peer,
+ endpoint_type& peer_endpoint, AcceptHandler handler)
+ {
+ this->service.async_accept(this->implementation,
+ peer, &peer_endpoint, handler);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_socket_iostream.hpp b/3rdParty/Boost/boost/asio/basic_socket_iostream.hpp
new file mode 100644
index 0000000..b0ae259
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_socket_iostream.hpp
@@ -0,0 +1,150 @@
+//
+// basic_socket_iostream.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_SOCKET_IOSTREAM_HPP
+#define BOOST_ASIO_BASIC_SOCKET_IOSTREAM_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/utility/base_from_member.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_socket_streambuf.hpp>
+#include <boost/asio/stream_socket_service.hpp>
+
+#if !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY)
+#define BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY 5
+#endif // !defined(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY)
+
+// A macro that should expand to:
+// template <typename T1, ..., typename Tn>
+// explicit basic_socket_iostream(T1 x1, ..., Tn xn)
+// : basic_iostream<char>(&this->boost::base_from_member<
+// basic_socket_streambuf<Protocol, StreamSocketService> >::member)
+// {
+// if (rdbuf()->connect(x1, ..., xn) == 0)
+// this->setstate(std::ios_base::failbit);
+// }
+// This macro should only persist within this file.
+
+#define BOOST_ASIO_PRIVATE_CTR_DEF(z, n, data) \
+ template <BOOST_PP_ENUM_PARAMS(n, typename T)> \
+ explicit basic_socket_iostream(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \
+ : std::basic_iostream<char>(&this->boost::base_from_member< \
+ basic_socket_streambuf<Protocol, StreamSocketService> >::member) \
+ { \
+ tie(this); \
+ if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \
+ this->setstate(std::ios_base::failbit); \
+ } \
+ /**/
+
+// A macro that should expand to:
+// template <typename T1, ..., typename Tn>
+// void connect(T1 x1, ..., Tn xn)
+// {
+// if (rdbuf()->connect(x1, ..., xn) == 0)
+// this->setstate(std::ios_base::failbit);
+// }
+// This macro should only persist within this file.
+
+#define BOOST_ASIO_PRIVATE_CONNECT_DEF(z, n, data) \
+ template <BOOST_PP_ENUM_PARAMS(n, typename T)> \
+ void connect(BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \
+ { \
+ if (rdbuf()->connect(BOOST_PP_ENUM_PARAMS(n, x)) == 0) \
+ this->setstate(std::ios_base::failbit); \
+ } \
+ /**/
+
+namespace boost {
+namespace asio {
+
+/// Iostream interface for a socket.
+template <typename Protocol,
+ typename StreamSocketService = stream_socket_service<Protocol> >
+class basic_socket_iostream
+ : public boost::base_from_member<
+ basic_socket_streambuf<Protocol, StreamSocketService> >,
+ public std::basic_iostream<char>
+{
+public:
+ /// Construct a basic_socket_iostream without establishing a connection.
+ basic_socket_iostream()
+ : std::basic_iostream<char>(&this->boost::base_from_member<
+ basic_socket_streambuf<Protocol, StreamSocketService> >::member)
+ {
+ tie(this);
+ }
+
+#if defined(GENERATING_DOCUMENTATION)
+ /// Establish a connection to an endpoint corresponding to a resolver query.
+ /**
+ * This constructor automatically establishes a connection based on the
+ * supplied resolver query parameters. The arguments are used to construct
+ * a resolver query object.
+ */
+ template <typename T1, ..., typename TN>
+ explicit basic_socket_iostream(T1 t1, ..., TN tn);
+#else
+ BOOST_PP_REPEAT_FROM_TO(
+ 1, BOOST_PP_INC(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY),
+ BOOST_ASIO_PRIVATE_CTR_DEF, _ )
+#endif
+
+#if defined(GENERATING_DOCUMENTATION)
+ /// Establish a connection to an endpoint corresponding to a resolver query.
+ /**
+ * This function automatically establishes a connection based on the supplied
+ * resolver query parameters. The arguments are used to construct a resolver
+ * query object.
+ */
+ template <typename T1, ..., typename TN>
+ void connect(T1 t1, ..., TN tn);
+#else
+ BOOST_PP_REPEAT_FROM_TO(
+ 1, BOOST_PP_INC(BOOST_ASIO_SOCKET_IOSTREAM_MAX_ARITY),
+ BOOST_ASIO_PRIVATE_CONNECT_DEF, _ )
+#endif
+
+ /// Close the connection.
+ void close()
+ {
+ if (rdbuf()->close() == 0)
+ this->setstate(std::ios_base::failbit);
+ }
+
+ /// Return a pointer to the underlying streambuf.
+ basic_socket_streambuf<Protocol, StreamSocketService>* rdbuf() const
+ {
+ return const_cast<basic_socket_streambuf<Protocol, StreamSocketService>*>(
+ &this->boost::base_from_member<
+ basic_socket_streambuf<Protocol, StreamSocketService> >::member);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#undef BOOST_ASIO_PRIVATE_CTR_DEF
+#undef BOOST_ASIO_PRIVATE_CONNECT_DEF
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_SOCKET_IOSTREAM_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_socket_streambuf.hpp b/3rdParty/Boost/boost/asio/basic_socket_streambuf.hpp
new file mode 100644
index 0000000..9977be6
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_socket_streambuf.hpp
@@ -0,0 +1,287 @@
+//
+// basic_socket_streambuf.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_SOCKET_STREAMBUF_HPP
+#define BOOST_ASIO_BASIC_SOCKET_STREAMBUF_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <streambuf>
+#include <boost/array.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/utility/base_from_member.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/stream_socket_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if !defined(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY)
+#define BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY 5
+#endif // !defined(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY)
+
+// A macro that should expand to:
+// template <typename T1, ..., typename Tn>
+// basic_socket_streambuf<Protocol, StreamSocketService>* connect(
+// T1 x1, ..., Tn xn)
+// {
+// init_buffers();
+// boost::system::error_code ec;
+// this->basic_socket<Protocol, StreamSocketService>::close(ec);
+// typedef typename Protocol::resolver_query resolver_query;
+// resolver_query query(x1, ..., xn);
+// resolve_and_connect(query, ec);
+// return !ec ? this : 0;
+// }
+// This macro should only persist within this file.
+
+#define BOOST_ASIO_PRIVATE_CONNECT_DEF( z, n, data ) \
+ template <BOOST_PP_ENUM_PARAMS(n, typename T)> \
+ basic_socket_streambuf<Protocol, StreamSocketService>* connect( \
+ BOOST_PP_ENUM_BINARY_PARAMS(n, T, x)) \
+ { \
+ init_buffers(); \
+ boost::system::error_code ec; \
+ this->basic_socket<Protocol, StreamSocketService>::close(ec); \
+ typedef typename Protocol::resolver_query resolver_query; \
+ resolver_query query(BOOST_PP_ENUM_PARAMS(n, x)); \
+ resolve_and_connect(query, ec); \
+ return !ec ? this : 0; \
+ } \
+ /**/
+
+namespace boost {
+namespace asio {
+
+/// Iostream streambuf for a socket.
+template <typename Protocol,
+ typename StreamSocketService = stream_socket_service<Protocol> >
+class basic_socket_streambuf
+ : public std::streambuf,
+ private boost::base_from_member<io_service>,
+ public basic_socket<Protocol, StreamSocketService>
+{
+public:
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ /// Construct a basic_socket_streambuf without establishing a connection.
+ basic_socket_streambuf()
+ : basic_socket<Protocol, StreamSocketService>(
+ boost::base_from_member<boost::asio::io_service>::member),
+ unbuffered_(false)
+ {
+ init_buffers();
+ }
+
+ /// Destructor flushes buffered data.
+ virtual ~basic_socket_streambuf()
+ {
+ if (pptr() != pbase())
+ overflow(traits_type::eof());
+ }
+
+ /// Establish a connection.
+ /**
+ * This function establishes a connection to the specified endpoint.
+ *
+ * @return \c this if a connection was successfully established, a null
+ * pointer otherwise.
+ */
+ basic_socket_streambuf<Protocol, StreamSocketService>* connect(
+ const endpoint_type& endpoint)
+ {
+ init_buffers();
+ boost::system::error_code ec;
+ this->basic_socket<Protocol, StreamSocketService>::close(ec);
+ this->basic_socket<Protocol, StreamSocketService>::connect(endpoint, ec);
+ return !ec ? this : 0;
+ }
+
+#if defined(GENERATING_DOCUMENTATION)
+ /// Establish a connection.
+ /**
+ * This function automatically establishes a connection based on the supplied
+ * resolver query parameters. The arguments are used to construct a resolver
+ * query object.
+ *
+ * @return \c this if a connection was successfully established, a null
+ * pointer otherwise.
+ */
+ template <typename T1, ..., typename TN>
+ basic_socket_streambuf<Protocol, StreamSocketService>* connect(
+ T1 t1, ..., TN tn);
+#else
+ BOOST_PP_REPEAT_FROM_TO(
+ 1, BOOST_PP_INC(BOOST_ASIO_SOCKET_STREAMBUF_MAX_ARITY),
+ BOOST_ASIO_PRIVATE_CONNECT_DEF, _ )
+#endif
+
+ /// Close the connection.
+ /**
+ * @return \c this if a connection was successfully established, a null
+ * pointer otherwise.
+ */
+ basic_socket_streambuf<Protocol, StreamSocketService>* close()
+ {
+ boost::system::error_code ec;
+ sync();
+ this->basic_socket<Protocol, StreamSocketService>::close(ec);
+ if (!ec)
+ init_buffers();
+ return !ec ? this : 0;
+ }
+
+protected:
+ int_type underflow()
+ {
+ if (gptr() == egptr())
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = this->service.receive(
+ this->implementation,
+ boost::asio::buffer(boost::asio::buffer(get_buffer_) + putback_max),
+ 0, ec);
+ if (ec)
+ return traits_type::eof();
+ setg(get_buffer_.begin(), get_buffer_.begin() + putback_max,
+ get_buffer_.begin() + putback_max + bytes_transferred);
+ return traits_type::to_int_type(*gptr());
+ }
+ else
+ {
+ return traits_type::eof();
+ }
+ }
+
+ int_type overflow(int_type c)
+ {
+ if (unbuffered_)
+ {
+ if (traits_type::eq_int_type(c, traits_type::eof()))
+ {
+ // Nothing to do.
+ return traits_type::not_eof(c);
+ }
+ else
+ {
+ // Send the single character immediately.
+ boost::system::error_code ec;
+ char_type ch = traits_type::to_char_type(c);
+ this->service.send(this->implementation,
+ boost::asio::buffer(&ch, sizeof(char_type)), 0, ec);
+ if (ec)
+ return traits_type::eof();
+ return c;
+ }
+ }
+ else
+ {
+ // Send all data in the output buffer.
+ boost::asio::const_buffer buffer =
+ boost::asio::buffer(pbase(), pptr() - pbase());
+ while (boost::asio::buffer_size(buffer) > 0)
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = this->service.send(
+ this->implementation, boost::asio::buffer(buffer),
+ 0, ec);
+ if (ec)
+ return traits_type::eof();
+ buffer = buffer + bytes_transferred;
+ }
+ setp(put_buffer_.begin(), put_buffer_.end());
+
+ // If the new character is eof then our work here is done.
+ if (traits_type::eq_int_type(c, traits_type::eof()))
+ return traits_type::not_eof(c);
+
+ // Add the new character to the output buffer.
+ *pptr() = traits_type::to_char_type(c);
+ pbump(1);
+ return c;
+ }
+ }
+
+ int sync()
+ {
+ return overflow(traits_type::eof());
+ }
+
+ std::streambuf* setbuf(char_type* s, std::streamsize n)
+ {
+ if (pptr() == pbase() && s == 0 && n == 0)
+ {
+ unbuffered_ = true;
+ setp(0, 0);
+ return this;
+ }
+
+ return 0;
+ }
+
+private:
+ void init_buffers()
+ {
+ setg(get_buffer_.begin(),
+ get_buffer_.begin() + putback_max,
+ get_buffer_.begin() + putback_max);
+ if (unbuffered_)
+ setp(0, 0);
+ else
+ setp(put_buffer_.begin(), put_buffer_.end());
+ }
+
+ template <typename ResolverQuery>
+ void resolve_and_connect(const ResolverQuery& query,
+ boost::system::error_code& ec)
+ {
+ typedef typename Protocol::resolver resolver_type;
+ typedef typename Protocol::resolver_iterator iterator_type;
+ resolver_type resolver(
+ boost::base_from_member<boost::asio::io_service>::member);
+ iterator_type i = resolver.resolve(query, ec);
+ if (!ec)
+ {
+ iterator_type end;
+ ec = boost::asio::error::host_not_found;
+ while (ec && i != end)
+ {
+ this->basic_socket<Protocol, StreamSocketService>::close();
+ this->basic_socket<Protocol, StreamSocketService>::connect(*i, ec);
+ ++i;
+ }
+ }
+ }
+
+ enum { putback_max = 8 };
+ enum { buffer_size = 512 };
+ boost::array<char, buffer_size> get_buffer_;
+ boost::array<char, buffer_size> put_buffer_;
+ bool unbuffered_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#undef BOOST_ASIO_PRIVATE_CONNECT_DEF
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_SOCKET_STREAMBUF_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_stream_socket.hpp b/3rdParty/Boost/boost/asio/basic_stream_socket.hpp
new file mode 100644
index 0000000..c020369
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_stream_socket.hpp
@@ -0,0 +1,720 @@
+//
+// basic_stream_socket.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_STREAM_SOCKET_HPP
+#define BOOST_ASIO_BASIC_STREAM_SOCKET_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/stream_socket_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides stream-oriented socket functionality.
+/**
+ * The basic_stream_socket class template provides asynchronous and blocking
+ * stream-oriented socket functionality.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
+ */
+template <typename Protocol,
+ typename StreamSocketService = stream_socket_service<Protocol> >
+class basic_stream_socket
+ : public basic_socket<Protocol, StreamSocketService>
+{
+public:
+ /// The native representation of a socket.
+ typedef typename StreamSocketService::native_type native_type;
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ /// Construct a basic_stream_socket without opening it.
+ /**
+ * This constructor creates a stream socket without opening it. The socket
+ * needs to be opened and then connected or accepted before data can be sent
+ * or received on it.
+ *
+ * @param io_service The io_service object that the stream socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ */
+ explicit basic_stream_socket(boost::asio::io_service& io_service)
+ : basic_socket<Protocol, StreamSocketService>(io_service)
+ {
+ }
+
+ /// Construct and open a basic_stream_socket.
+ /**
+ * This constructor creates and opens a stream socket. The socket needs to be
+ * connected or accepted before data can be sent or received on it.
+ *
+ * @param io_service The io_service object that the stream socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_stream_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol)
+ : basic_socket<Protocol, StreamSocketService>(io_service, protocol)
+ {
+ }
+
+ /// Construct a basic_stream_socket, opening it and binding it to the given
+ /// local endpoint.
+ /**
+ * This constructor creates a stream socket and automatically opens it bound
+ * to the specified endpoint on the local machine. The protocol used is the
+ * protocol associated with the given endpoint.
+ *
+ * @param io_service The io_service object that the stream socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ *
+ * @param endpoint An endpoint on the local machine to which the stream
+ * socket will be bound.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_stream_socket(boost::asio::io_service& io_service,
+ const endpoint_type& endpoint)
+ : basic_socket<Protocol, StreamSocketService>(io_service, endpoint)
+ {
+ }
+
+ /// Construct a basic_stream_socket on an existing native socket.
+ /**
+ * This constructor creates a stream socket object to hold an existing native
+ * socket.
+ *
+ * @param io_service The io_service object that the stream socket will use to
+ * dispatch handlers for any asynchronous operations performed on the socket.
+ *
+ * @param protocol An object specifying protocol parameters to be used.
+ *
+ * @param native_socket The new underlying socket implementation.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_stream_socket(boost::asio::io_service& io_service,
+ const protocol_type& protocol, const native_type& native_socket)
+ : basic_socket<Protocol, StreamSocketService>(
+ io_service, protocol, native_socket)
+ {
+ }
+
+ /// Send some data on the socket.
+ /**
+ * This function is used to send data on the stream socket. The function
+ * call will block until one or more bytes of the data has been sent
+ * successfully, or an until error occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The send operation may not transmit all of the data to the peer.
+ * Consider using the @ref write function if you need to ensure that all data
+ * is written before the blocking operation completes.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.send(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(
+ this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send some data on the socket.
+ /**
+ * This function is used to send data on the stream socket. The function
+ * call will block until one or more bytes of the data has been sent
+ * successfully, or an until error occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @returns The number of bytes sent.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The send operation may not transmit all of the data to the peer.
+ * Consider using the @ref write function if you need to ensure that all data
+ * is written before the blocking operation completes.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.send(boost::asio::buffer(data, size), 0);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(
+ this->implementation, buffers, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Send some data on the socket.
+ /**
+ * This function is used to send data on the stream socket. The function
+ * call will block until one or more bytes of the data has been sent
+ * successfully, or an until error occurs.
+ *
+ * @param buffers One or more data buffers to be sent on the socket.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes sent. Returns 0 if an error occurred.
+ *
+ * @note The send operation may not transmit all of the data to the peer.
+ * Consider using the @ref write function if you need to ensure that all data
+ * is written before the blocking operation completes.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return this->service.send(this->implementation, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ /**
+ * This function is used to asynchronously send data on the stream socket.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be sent on the socket. Although
+ * the buffers object may be copied as necessary, ownership of the underlying
+ * memory blocks is retained by the caller, which must guarantee that they
+ * remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The send operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write function if you need to ensure that all
+ * data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.async_send(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, 0, handler);
+ }
+
+ /// Start an asynchronous send.
+ /**
+ * This function is used to asynchronously send data on the stream socket.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be sent on the socket. Although
+ * the buffers object may be copied as necessary, ownership of the underlying
+ * memory blocks is retained by the caller, which must guarantee that they
+ * remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the send call is to be made.
+ *
+ * @param handler The handler to be called when the send operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes sent.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The send operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write function if you need to ensure that all
+ * data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To send a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.async_send(boost::asio::buffer(data, size), 0, handler);
+ * @endcode
+ * See the @ref buffer documentation for information on sending multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, flags, handler);
+ }
+
+ /// Receive some data on the socket.
+ /**
+ * This function is used to receive data on the stream socket. The function
+ * call will block until one or more bytes of data has been received
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The receive operation may not receive all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that the
+ * requested amount of data is read before the blocking operation completes.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * socket.receive(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive some data on the socket.
+ /**
+ * This function is used to receive data on the stream socket. The function
+ * call will block until one or more bytes of data has been received
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @returns The number of bytes received.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The receive operation may not receive all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that the
+ * requested amount of data is read before the blocking operation completes.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * socket.receive(boost::asio::buffer(data, size), 0);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(
+ this->implementation, buffers, flags, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Receive some data on a connected socket.
+ /**
+ * This function is used to receive data on the stream socket. The function
+ * call will block until one or more bytes of data has been received
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes received. Returns 0 if an error occurred.
+ *
+ * @note The receive operation may not receive all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that the
+ * requested amount of data is read before the blocking operation completes.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return this->service.receive(this->implementation, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous receive.
+ /**
+ * This function is used to asynchronously receive data from the stream
+ * socket. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The receive operation may not receive all of the requested number of
+ * bytes. Consider using the @ref async_read function if you need to ensure
+ * that the requested amount of data is received before the asynchronous
+ * operation completes.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * socket.async_receive(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, 0, handler);
+ }
+
+ /// Start an asynchronous receive.
+ /**
+ * This function is used to asynchronously receive data from the stream
+ * socket. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be received.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param flags Flags specifying how the receive call is to be made.
+ *
+ * @param handler The handler to be called when the receive operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes received.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The receive operation may not receive all of the requested number of
+ * bytes. Consider using the @ref async_read function if you need to ensure
+ * that the requested amount of data is received before the asynchronous
+ * operation completes.
+ *
+ * @par Example
+ * To receive into a single data buffer use the @ref buffer function as
+ * follows:
+ * @code
+ * socket.async_receive(boost::asio::buffer(data, size), 0, handler);
+ * @endcode
+ * See the @ref buffer documentation for information on receiving into
+ * multiple buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, flags, handler);
+ }
+
+ /// Write some data to the socket.
+ /**
+ * This function is used to write data to the stream socket. The function call
+ * will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the socket.
+ *
+ * @returns The number of bytes written.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.write_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.send(this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Write some data to the socket.
+ /**
+ * This function is used to write data to the stream socket. The function call
+ * will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the socket.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. Returns 0 if an error occurred.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.send(this->implementation, buffers, 0, ec);
+ }
+
+ /// Start an asynchronous write.
+ /**
+ * This function is used to asynchronously write data to the stream socket.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be written to the socket.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes written.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The write operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write function if you need to ensure that all
+ * data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.async_write_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ this->service.async_send(this->implementation, buffers, 0, handler);
+ }
+
+ /// Read some data from the socket.
+ /**
+ * This function is used to read data from the stream socket. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @returns The number of bytes read.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.read_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.receive(this->implementation, buffers, 0, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Read some data from the socket.
+ /**
+ * This function is used to read data from the stream socket. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. Returns 0 if an error occurred.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.receive(this->implementation, buffers, 0, ec);
+ }
+
+ /// Start an asynchronous read.
+ /**
+ * This function is used to asynchronously read data from the stream socket.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes read.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The read operation may not read all of the requested number of bytes.
+ * Consider using the @ref async_read function if you need to ensure that the
+ * requested amount of data is read before the asynchronous operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * socket.async_read_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ this->service.async_receive(this->implementation, buffers, 0, handler);
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_STREAM_SOCKET_HPP
diff --git a/3rdParty/Boost/boost/asio/basic_streambuf.hpp b/3rdParty/Boost/boost/asio/basic_streambuf.hpp
new file mode 100644
index 0000000..db0e0c5
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/basic_streambuf.hpp
@@ -0,0 +1,340 @@
+//
+// basic_streambuf.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BASIC_STREAMBUF_HPP
+#define BOOST_ASIO_BASIC_STREAMBUF_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <algorithm>
+#include <cstring>
+#include <limits>
+#include <memory>
+#include <stdexcept>
+#include <streambuf>
+#include <vector>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Automatically resizable buffer class based on std::streambuf.
+/**
+ * The @c basic_streambuf class is derived from @c std::streambuf to associate
+ * the streambuf's input and output sequences with one or more character
+ * arrays. These character arrays are internal to the @c basic_streambuf
+ * object, but direct access to the array elements is provided to permit them
+ * to be used efficiently with I/O operations. Characters written to the output
+ * sequence of a @c basic_streambuf object are appended to the input sequence
+ * of the same object.
+ *
+ * The @c basic_streambuf class's public interface is intended to permit the
+ * following implementation strategies:
+ *
+ * @li A single contiguous character array, which is reallocated as necessary
+ * to accommodate changes in the size of the character sequence. This is the
+ * implementation approach currently used in Asio.
+ *
+ * @li A sequence of one or more character arrays, where each array is of the
+ * same size. Additional character array objects are appended to the sequence
+ * to accommodate changes in the size of the character sequence.
+ *
+ * @li A sequence of one or more character arrays of varying sizes. Additional
+ * character array objects are appended to the sequence to accommodate changes
+ * in the size of the character sequence.
+ *
+ * The constructor for basic_streambuf accepts a @c size_t argument specifying
+ * the maximum of the sum of the sizes of the input sequence and output
+ * sequence. During the lifetime of the @c basic_streambuf object, the following
+ * invariant holds:
+ * @code size() <= max_size()@endcode
+ * Any member function that would, if successful, cause the invariant to be
+ * violated shall throw an exception of class @c std::length_error.
+ *
+ * The constructor for @c basic_streambuf takes an Allocator argument. A copy
+ * of this argument is used for any memory allocation performed, by the
+ * constructor and by all member functions, during the lifetime of each @c
+ * basic_streambuf object.
+ *
+ * @par Examples
+ * Writing directly from an streambuf to a socket:
+ * @code
+ * boost::asio::streambuf b;
+ * std::ostream os(&b);
+ * os << "Hello, World!\n";
+ *
+ * // try sending some data in input sequence
+ * size_t n = sock.send(b.data());
+ *
+ * b.consume(n); // sent data is removed from input sequence
+ * @endcode
+ *
+ * Reading from a socket directly into a streambuf:
+ * @code
+ * boost::asio::streambuf b;
+ *
+ * // reserve 512 bytes in output sequence
+ * boost::asio::streambuf::const_buffers_type bufs = b.prepare(512);
+ *
+ * size_t n = sock.receive(bufs);
+ *
+ * // received data is "committed" from output sequence to input sequence
+ * b.commit(n);
+ *
+ * std::istream is(&b);
+ * std::string s;
+ * is >> s;
+ * @endcode
+ */
+template <typename Allocator = std::allocator<char> >
+class basic_streambuf
+ : public std::streambuf,
+ private noncopyable
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The type used to represent the input sequence as a list of buffers.
+ typedef implementation_defined const_buffers_type;
+
+ /// The type used to represent the output sequence as a list of buffers.
+ typedef implementation_defined mutable_buffers_type;
+#else
+ typedef boost::asio::const_buffers_1 const_buffers_type;
+ typedef boost::asio::mutable_buffers_1 mutable_buffers_type;
+#endif
+
+ /// Construct a basic_streambuf object.
+ /**
+ * Constructs a streambuf with the specified maximum size. The initial size
+ * of the streambuf's input sequence is 0.
+ */
+ explicit basic_streambuf(
+ std::size_t max_size = (std::numeric_limits<std::size_t>::max)(),
+ const Allocator& allocator = Allocator())
+ : max_size_(max_size),
+ buffer_(allocator)
+ {
+ std::size_t pend = (std::min<std::size_t>)(max_size_, buffer_delta);
+ buffer_.resize((std::max<std::size_t>)(pend, 1));
+ setg(&buffer_[0], &buffer_[0], &buffer_[0]);
+ setp(&buffer_[0], &buffer_[0] + pend);
+ }
+
+ /// Get the size of the input sequence.
+ /**
+ * @returns The size of the input sequence. The value is equal to that
+ * calculated for @c s in the following code:
+ * @code
+ * size_t s = 0;
+ * const_buffers_type bufs = data();
+ * const_buffers_type::const_iterator i = bufs.begin();
+ * while (i != bufs.end())
+ * {
+ * const_buffer buf(*i++);
+ * s += buffer_size(buf);
+ * }
+ * @endcode
+ */
+ std::size_t size() const
+ {
+ return pptr() - gptr();
+ }
+
+ /// Get the maximum size of the basic_streambuf.
+ /**
+ * @returns The allowed maximum of the sum of the sizes of the input sequence
+ * and output sequence.
+ */
+ std::size_t max_size() const
+ {
+ return max_size_;
+ }
+
+ /// Get a list of buffers that represents the input sequence.
+ /**
+ * @returns An object of type @c const_buffers_type that satisfies
+ * ConstBufferSequence requirements, representing all character arrays in the
+ * input sequence.
+ *
+ * @note The returned object is invalidated by any @c basic_streambuf member
+ * function that modifies the input sequence or output sequence.
+ */
+ const_buffers_type data() const
+ {
+ return boost::asio::buffer(boost::asio::const_buffer(gptr(),
+ (pptr() - gptr()) * sizeof(char_type)));
+ }
+
+ /// Get a list of buffers that represents the output sequence, with the given
+ /// size.
+ /**
+ * Ensures that the output sequence can accommodate @c n characters,
+ * reallocating character array objects as necessary.
+ *
+ * @returns An object of type @c mutable_buffers_type that satisfies
+ * MutableBufferSequence requirements, representing character array objects
+ * at the start of the output sequence such that the sum of the buffer sizes
+ * is @c n.
+ *
+ * @throws std::length_error If <tt>size() + n > max_size()</tt>.
+ *
+ * @note The returned object is invalidated by any @c basic_streambuf member
+ * function that modifies the input sequence or output sequence.
+ */
+ mutable_buffers_type prepare(std::size_t n)
+ {
+ reserve(n);
+ return boost::asio::buffer(boost::asio::mutable_buffer(
+ pptr(), n * sizeof(char_type)));
+ }
+
+ /// Move characters from the output sequence to the input sequence.
+ /**
+ * Appends @c n characters from the start of the output sequence to the input
+ * sequence. The beginning of the output sequence is advanced by @c n
+ * characters.
+ *
+ * Requires a preceding call <tt>prepare(x)</tt> where <tt>x >= n</tt>, and
+ * no intervening operations that modify the input or output sequence.
+ *
+ * @throws std::length_error If @c n is greater than the size of the output
+ * sequence.
+ */
+ void commit(std::size_t n)
+ {
+ if (pptr() + n > epptr())
+ n = epptr() - pptr();
+ pbump(static_cast<int>(n));
+ setg(eback(), gptr(), pptr());
+ }
+
+ /// Remove characters from the input sequence.
+ /**
+ * Removes @c n characters from the beginning of the input sequence.
+ *
+ * @throws std::length_error If <tt>n > size()</tt>.
+ */
+ void consume(std::size_t n)
+ {
+ if (gptr() + n > pptr())
+ n = pptr() - gptr();
+ gbump(static_cast<int>(n));
+ }
+
+protected:
+ enum { buffer_delta = 128 };
+
+ /// Override std::streambuf behaviour.
+ /**
+ * Behaves according to the specification of @c std::streambuf::underflow().
+ */
+ int_type underflow()
+ {
+ if (gptr() < pptr())
+ {
+ setg(&buffer_[0], gptr(), pptr());
+ return traits_type::to_int_type(*gptr());
+ }
+ else
+ {
+ return traits_type::eof();
+ }
+ }
+
+ /// Override std::streambuf behaviour.
+ /**
+ * Behaves according to the specification of @c std::streambuf::overflow(),
+ * with the specialisation that @c std::length_error is thrown if appending
+ * the character to the input sequence would require the condition
+ * <tt>size() > max_size()</tt> to be true.
+ */
+ int_type overflow(int_type c)
+ {
+ if (!traits_type::eq_int_type(c, traits_type::eof()))
+ {
+ if (pptr() == epptr())
+ {
+ std::size_t buffer_size = pptr() - gptr();
+ if (buffer_size < max_size_ && max_size_ - buffer_size < buffer_delta)
+ {
+ reserve(max_size_ - buffer_size);
+ }
+ else
+ {
+ reserve(buffer_delta);
+ }
+ }
+
+ *pptr() = traits_type::to_char_type(c);
+ pbump(1);
+ return c;
+ }
+
+ return traits_type::not_eof(c);
+ }
+
+ void reserve(std::size_t n)
+ {
+ // Get current stream positions as offsets.
+ std::size_t gnext = gptr() - &buffer_[0];
+ std::size_t pnext = pptr() - &buffer_[0];
+ std::size_t pend = epptr() - &buffer_[0];
+
+ // Check if there is already enough space in the put area.
+ if (n <= pend - pnext)
+ {
+ return;
+ }
+
+ // Shift existing contents of get area to start of buffer.
+ if (gnext > 0)
+ {
+ pnext -= gnext;
+ std::memmove(&buffer_[0], &buffer_[0] + gnext, pnext);
+ }
+
+ // Ensure buffer is large enough to hold at least the specified size.
+ if (n > pend - pnext)
+ {
+ if (n <= max_size_ && pnext <= max_size_ - n)
+ {
+ pend = pnext + n;
+ buffer_.resize((std::max<std::size_t>)(pend, 1));
+ }
+ else
+ {
+ throw std::length_error("boost::asio::streambuf too long");
+ }
+ }
+
+ // Update stream positions.
+ setg(&buffer_[0], &buffer_[0], &buffer_[0] + pnext);
+ setp(&buffer_[0] + pnext, &buffer_[0] + pend);
+ }
+
+private:
+ std::size_t max_size_;
+ std::vector<char_type, Allocator> buffer_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BASIC_STREAMBUF_HPP
diff --git a/3rdParty/Boost/boost/asio/buffer.hpp b/3rdParty/Boost/boost/asio/buffer.hpp
new file mode 100644
index 0000000..056d712
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffer.hpp
@@ -0,0 +1,1042 @@
+//
+// buffer.hpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFER_HPP
+#define BOOST_ASIO_BUFFER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/array.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <string>
+#include <vector>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_MSVC)
+# if defined(_HAS_ITERATOR_DEBUGGING) && (_HAS_ITERATOR_DEBUGGING != 0)
+# if !defined(BOOST_ASIO_DISABLE_BUFFER_DEBUGGING)
+# define BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+# endif // !defined(BOOST_ASIO_DISABLE_BUFFER_DEBUGGING)
+# endif // defined(_HAS_ITERATOR_DEBUGGING)
+#endif // defined(BOOST_MSVC)
+
+#if defined(__GNUC__)
+# if defined(_GLIBCXX_DEBUG)
+# if !defined(BOOST_ASIO_DISABLE_BUFFER_DEBUGGING)
+# define BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+# endif // !defined(BOOST_ASIO_DISABLE_BUFFER_DEBUGGING)
+# endif // defined(_GLIBCXX_DEBUG)
+#endif // defined(__GNUC__)
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+# include <boost/asio/detail/push_options.hpp>
+# include <boost/function.hpp>
+# include <boost/asio/detail/pop_options.hpp>
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+
+namespace boost {
+namespace asio {
+
+class mutable_buffer;
+class const_buffer;
+
+namespace detail {
+void* buffer_cast_helper(const mutable_buffer&);
+const void* buffer_cast_helper(const const_buffer&);
+std::size_t buffer_size_helper(const mutable_buffer&);
+std::size_t buffer_size_helper(const const_buffer&);
+} // namespace detail
+
+/// Holds a buffer that can be modified.
+/**
+ * The mutable_buffer class provides a safe representation of a buffer that can
+ * be modified. It does not own the underlying data, and so is cheap to copy or
+ * assign.
+ */
+class mutable_buffer
+{
+public:
+ /// Construct an empty buffer.
+ mutable_buffer()
+ : data_(0),
+ size_(0)
+ {
+ }
+
+ /// Construct a buffer to represent a given memory range.
+ mutable_buffer(void* data, std::size_t size)
+ : data_(data),
+ size_(size)
+ {
+ }
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ mutable_buffer(void* data, std::size_t size,
+ boost::function<void()> debug_check)
+ : data_(data),
+ size_(size),
+ debug_check_(debug_check)
+ {
+ }
+
+ const boost::function<void()>& get_debug_check() const
+ {
+ return debug_check_;
+ }
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+
+private:
+ friend void* boost::asio::detail::buffer_cast_helper(
+ const mutable_buffer& b);
+ friend std::size_t boost::asio::detail::buffer_size_helper(
+ const mutable_buffer& b);
+
+ void* data_;
+ std::size_t size_;
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ boost::function<void()> debug_check_;
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+};
+
+namespace detail {
+
+inline void* buffer_cast_helper(const mutable_buffer& b)
+{
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ if (b.size_ && b.debug_check_)
+ b.debug_check_();
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ return b.data_;
+}
+
+inline std::size_t buffer_size_helper(const mutable_buffer& b)
+{
+ return b.size_;
+}
+
+} // namespace detail
+
+/// Cast a non-modifiable buffer to a specified pointer to POD type.
+/**
+ * @relates mutable_buffer
+ */
+template <typename PointerToPodType>
+inline PointerToPodType buffer_cast(const mutable_buffer& b)
+{
+ return static_cast<PointerToPodType>(detail::buffer_cast_helper(b));
+}
+
+/// Get the number of bytes in a non-modifiable buffer.
+/**
+ * @relates mutable_buffer
+ */
+inline std::size_t buffer_size(const mutable_buffer& b)
+{
+ return detail::buffer_size_helper(b);
+}
+
+/// Create a new modifiable buffer that is offset from the start of another.
+/**
+ * @relates mutable_buffer
+ */
+inline mutable_buffer operator+(const mutable_buffer& b, std::size_t start)
+{
+ if (start > buffer_size(b))
+ return mutable_buffer();
+ char* new_data = buffer_cast<char*>(b) + start;
+ std::size_t new_size = buffer_size(b) - start;
+ return mutable_buffer(new_data, new_size
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , b.get_debug_check()
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ );
+}
+
+/// Create a new modifiable buffer that is offset from the start of another.
+/**
+ * @relates mutable_buffer
+ */
+inline mutable_buffer operator+(std::size_t start, const mutable_buffer& b)
+{
+ if (start > buffer_size(b))
+ return mutable_buffer();
+ char* new_data = buffer_cast<char*>(b) + start;
+ std::size_t new_size = buffer_size(b) - start;
+ return mutable_buffer(new_data, new_size
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , b.get_debug_check()
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ );
+}
+
+/// Adapts a single modifiable buffer so that it meets the requirements of the
+/// MutableBufferSequence concept.
+class mutable_buffers_1
+ : public mutable_buffer
+{
+public:
+ /// The type for each element in the list of buffers.
+ typedef mutable_buffer value_type;
+
+ /// A random-access iterator type that may be used to read elements.
+ typedef const mutable_buffer* const_iterator;
+
+ /// Construct to represent a given memory range.
+ mutable_buffers_1(void* data, std::size_t size)
+ : mutable_buffer(data, size)
+ {
+ }
+
+ /// Construct to represent a single modifiable buffer.
+ explicit mutable_buffers_1(const mutable_buffer& b)
+ : mutable_buffer(b)
+ {
+ }
+
+ /// Get a random-access iterator to the first element.
+ const_iterator begin() const
+ {
+ return this;
+ }
+
+ /// Get a random-access iterator for one past the last element.
+ const_iterator end() const
+ {
+ return begin() + 1;
+ }
+};
+
+/// Holds a buffer that cannot be modified.
+/**
+ * The const_buffer class provides a safe representation of a buffer that cannot
+ * be modified. It does not own the underlying data, and so is cheap to copy or
+ * assign.
+ */
+class const_buffer
+{
+public:
+ /// Construct an empty buffer.
+ const_buffer()
+ : data_(0),
+ size_(0)
+ {
+ }
+
+ /// Construct a buffer to represent a given memory range.
+ const_buffer(const void* data, std::size_t size)
+ : data_(data),
+ size_(size)
+ {
+ }
+
+ /// Construct a non-modifiable buffer from a modifiable one.
+ const_buffer(const mutable_buffer& b)
+ : data_(boost::asio::detail::buffer_cast_helper(b)),
+ size_(boost::asio::detail::buffer_size_helper(b))
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , debug_check_(b.get_debug_check())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ {
+ }
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ const_buffer(const void* data, std::size_t size,
+ boost::function<void()> debug_check)
+ : data_(data),
+ size_(size),
+ debug_check_(debug_check)
+ {
+ }
+
+ const boost::function<void()>& get_debug_check() const
+ {
+ return debug_check_;
+ }
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+
+private:
+ friend const void* boost::asio::detail::buffer_cast_helper(
+ const const_buffer& b);
+ friend std::size_t boost::asio::detail::buffer_size_helper(
+ const const_buffer& b);
+
+ const void* data_;
+ std::size_t size_;
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ boost::function<void()> debug_check_;
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+};
+
+namespace detail {
+
+inline const void* buffer_cast_helper(const const_buffer& b)
+{
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ if (b.size_ && b.debug_check_)
+ b.debug_check_();
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ return b.data_;
+}
+
+inline std::size_t buffer_size_helper(const const_buffer& b)
+{
+ return b.size_;
+}
+
+} // namespace detail
+
+/// Cast a non-modifiable buffer to a specified pointer to POD type.
+/**
+ * @relates const_buffer
+ */
+template <typename PointerToPodType>
+inline PointerToPodType buffer_cast(const const_buffer& b)
+{
+ return static_cast<PointerToPodType>(detail::buffer_cast_helper(b));
+}
+
+/// Get the number of bytes in a non-modifiable buffer.
+/**
+ * @relates const_buffer
+ */
+inline std::size_t buffer_size(const const_buffer& b)
+{
+ return detail::buffer_size_helper(b);
+}
+
+/// Create a new non-modifiable buffer that is offset from the start of another.
+/**
+ * @relates const_buffer
+ */
+inline const_buffer operator+(const const_buffer& b, std::size_t start)
+{
+ if (start > buffer_size(b))
+ return const_buffer();
+ const char* new_data = buffer_cast<const char*>(b) + start;
+ std::size_t new_size = buffer_size(b) - start;
+ return const_buffer(new_data, new_size
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , b.get_debug_check()
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ );
+}
+
+/// Create a new non-modifiable buffer that is offset from the start of another.
+/**
+ * @relates const_buffer
+ */
+inline const_buffer operator+(std::size_t start, const const_buffer& b)
+{
+ if (start > buffer_size(b))
+ return const_buffer();
+ const char* new_data = buffer_cast<const char*>(b) + start;
+ std::size_t new_size = buffer_size(b) - start;
+ return const_buffer(new_data, new_size
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , b.get_debug_check()
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ );
+}
+
+/// Adapts a single non-modifiable buffer so that it meets the requirements of
+/// the ConstBufferSequence concept.
+class const_buffers_1
+ : public const_buffer
+{
+public:
+ /// The type for each element in the list of buffers.
+ typedef const_buffer value_type;
+
+ /// A random-access iterator type that may be used to read elements.
+ typedef const const_buffer* const_iterator;
+
+ /// Construct to represent a given memory range.
+ const_buffers_1(const void* data, std::size_t size)
+ : const_buffer(data, size)
+ {
+ }
+
+ /// Construct to represent a single non-modifiable buffer.
+ explicit const_buffers_1(const const_buffer& b)
+ : const_buffer(b)
+ {
+ }
+
+ /// Get a random-access iterator to the first element.
+ const_iterator begin() const
+ {
+ return this;
+ }
+
+ /// Get a random-access iterator for one past the last element.
+ const_iterator end() const
+ {
+ return begin() + 1;
+ }
+};
+
+/// An implementation of both the ConstBufferSequence and MutableBufferSequence
+/// concepts to represent a null buffer sequence.
+class null_buffers
+{
+public:
+ /// The type for each element in the list of buffers.
+ typedef mutable_buffer value_type;
+
+ /// A random-access iterator type that may be used to read elements.
+ typedef const mutable_buffer* const_iterator;
+
+ /// Get a random-access iterator to the first element.
+ const_iterator begin() const
+ {
+ return &buf_;
+ }
+
+ /// Get a random-access iterator for one past the last element.
+ const_iterator end() const
+ {
+ return &buf_;
+ }
+
+private:
+ mutable_buffer buf_;
+};
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+namespace detail {
+
+template <typename Iterator>
+class buffer_debug_check
+{
+public:
+ buffer_debug_check(Iterator iter)
+ : iter_(iter)
+ {
+ }
+
+ ~buffer_debug_check()
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ // MSVC's string iterator checking may crash in a std::string::iterator
+ // object's destructor when the iterator points to an already-destroyed
+ // std::string object, unless the iterator is cleared first.
+ iter_ = Iterator();
+#endif // BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+ }
+
+ void operator()()
+ {
+ *iter_;
+ }
+
+private:
+ Iterator iter_;
+};
+
+} // namespace detail
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+
+/** @defgroup buffer boost::asio::buffer
+ *
+ * @brief The boost::asio::buffer function is used to create a buffer object to
+ * represent raw memory, an array of POD elements, a vector of POD elements,
+ * or a std::string.
+ *
+ * A buffer object represents a contiguous region of memory as a 2-tuple
+ * consisting of a pointer and size in bytes. A tuple of the form <tt>{void*,
+ * size_t}</tt> specifies a mutable (modifiable) region of memory. Similarly, a
+ * tuple of the form <tt>{const void*, size_t}</tt> specifies a const
+ * (non-modifiable) region of memory. These two forms correspond to the classes
+ * mutable_buffer and const_buffer, respectively. To mirror C++'s conversion
+ * rules, a mutable_buffer is implicitly convertible to a const_buffer, and the
+ * opposite conversion is not permitted.
+ *
+ * The simplest use case involves reading or writing a single buffer of a
+ * specified size:
+ *
+ * @code sock.send(boost::asio::buffer(data, size)); @endcode
+ *
+ * In the above example, the return value of boost::asio::buffer meets the
+ * requirements of the ConstBufferSequence concept so that it may be directly
+ * passed to the socket's write function. A buffer created for modifiable
+ * memory also meets the requirements of the MutableBufferSequence concept.
+ *
+ * An individual buffer may be created from a builtin array, std::vector or
+ * boost::array of POD elements. This helps prevent buffer overruns by
+ * automatically determining the size of the buffer:
+ *
+ * @code char d1[128];
+ * size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));
+ *
+ * std::vector<char> d2(128);
+ * bytes_transferred = sock.receive(boost::asio::buffer(d2));
+ *
+ * boost::array<char, 128> d3;
+ * bytes_transferred = sock.receive(boost::asio::buffer(d3)); @endcode
+ *
+ * In all three cases above, the buffers created are exactly 128 bytes long.
+ * Note that a vector is @e never automatically resized when creating or using
+ * a buffer. The buffer size is determined using the vector's <tt>size()</tt>
+ * member function, and not its capacity.
+ *
+ * @par Accessing Buffer Contents
+ *
+ * The contents of a buffer may be accessed using the boost::asio::buffer_size
+ * and boost::asio::buffer_cast functions:
+ *
+ * @code boost::asio::mutable_buffer b1 = ...;
+ * std::size_t s1 = boost::asio::buffer_size(b1);
+ * unsigned char* p1 = boost::asio::buffer_cast<unsigned char*>(b1);
+ *
+ * boost::asio::const_buffer b2 = ...;
+ * std::size_t s2 = boost::asio::buffer_size(b2);
+ * const void* p2 = boost::asio::buffer_cast<const void*>(b2); @endcode
+ *
+ * The boost::asio::buffer_cast function permits violations of type safety, so
+ * uses of it in application code should be carefully considered.
+ *
+ * @par Buffer Invalidation
+ *
+ * A buffer object does not have any ownership of the memory it refers to. It
+ * is the responsibility of the application to ensure the memory region remains
+ * valid until it is no longer required for an I/O operation. When the memory
+ * is no longer available, the buffer is said to have been invalidated.
+ *
+ * For the boost::asio::buffer overloads that accept an argument of type
+ * std::vector, the buffer objects returned are invalidated by any vector
+ * operation that also invalidates all references, pointers and iterators
+ * referring to the elements in the sequence (C++ Std, 23.2.4)
+ *
+ * For the boost::asio::buffer overloads that accept an argument of type
+ * std::string, the buffer objects returned are invalidated according to the
+ * rules defined for invalidation of references, pointers and iterators
+ * referring to elements of the sequence (C++ Std, 21.3).
+ *
+ * @par Buffer Arithmetic
+ *
+ * Buffer objects may be manipulated using simple arithmetic in a safe way
+ * which helps prevent buffer overruns. Consider an array initialised as
+ * follows:
+ *
+ * @code boost::array<char, 6> a = { 'a', 'b', 'c', 'd', 'e' }; @endcode
+ *
+ * A buffer object @c b1 created using:
+ *
+ * @code b1 = boost::asio::buffer(a); @endcode
+ *
+ * represents the entire array, <tt>{ 'a', 'b', 'c', 'd', 'e' }</tt>. An
+ * optional second argument to the boost::asio::buffer function may be used to
+ * limit the size, in bytes, of the buffer:
+ *
+ * @code b2 = boost::asio::buffer(a, 3); @endcode
+ *
+ * such that @c b2 represents the data <tt>{ 'a', 'b', 'c' }</tt>. Even if the
+ * size argument exceeds the actual size of the array, the size of the buffer
+ * object created will be limited to the array size.
+ *
+ * An offset may be applied to an existing buffer to create a new one:
+ *
+ * @code b3 = b1 + 2; @endcode
+ *
+ * where @c b3 will set to represent <tt>{ 'c', 'd', 'e' }</tt>. If the offset
+ * exceeds the size of the existing buffer, the newly created buffer will be
+ * empty.
+ *
+ * Both an offset and size may be specified to create a buffer that corresponds
+ * to a specific range of bytes within an existing buffer:
+ *
+ * @code b4 = boost::asio::buffer(b1 + 1, 3); @endcode
+ *
+ * so that @c b4 will refer to the bytes <tt>{ 'b', 'c', 'd' }</tt>.
+ *
+ * @par Buffers and Scatter-Gather I/O
+ *
+ * To read or write using multiple buffers (i.e. scatter-gather I/O), multiple
+ * buffer objects may be assigned into a container that supports the
+ * MutableBufferSequence (for read) or ConstBufferSequence (for write) concepts:
+ *
+ * @code
+ * char d1[128];
+ * std::vector<char> d2(128);
+ * boost::array<char, 128> d3;
+ *
+ * boost::array<mutable_buffer, 3> bufs1 = {
+ * boost::asio::buffer(d1),
+ * boost::asio::buffer(d2),
+ * boost::asio::buffer(d3) };
+ * bytes_transferred = sock.receive(bufs1);
+ *
+ * std::vector<const_buffer> bufs2;
+ * bufs2.push_back(boost::asio::buffer(d1));
+ * bufs2.push_back(boost::asio::buffer(d2));
+ * bufs2.push_back(boost::asio::buffer(d3));
+ * bytes_transferred = sock.send(bufs2); @endcode
+ */
+/*@{*/
+
+/// Create a new modifiable buffer from an existing buffer.
+/**
+ * @returns <tt>mutable_buffers_1(b)</tt>.
+ */
+inline mutable_buffers_1 buffer(const mutable_buffer& b)
+{
+ return mutable_buffers_1(b);
+}
+
+/// Create a new modifiable buffer from an existing buffer.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * buffer_cast<void*>(b),
+ * min(buffer_size(b), max_size_in_bytes)); @endcode
+ */
+inline mutable_buffers_1 buffer(const mutable_buffer& b,
+ std::size_t max_size_in_bytes)
+{
+ return mutable_buffers_1(
+ mutable_buffer(buffer_cast<void*>(b),
+ buffer_size(b) < max_size_in_bytes
+ ? buffer_size(b) : max_size_in_bytes
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , b.get_debug_check()
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new non-modifiable buffer from an existing buffer.
+/**
+ * @returns <tt>const_buffers_1(b)</tt>.
+ */
+inline const_buffers_1 buffer(const const_buffer& b)
+{
+ return const_buffers_1(b);
+}
+
+/// Create a new non-modifiable buffer from an existing buffer.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * buffer_cast<const void*>(b),
+ * min(buffer_size(b), max_size_in_bytes)); @endcode
+ */
+inline const_buffers_1 buffer(const const_buffer& b,
+ std::size_t max_size_in_bytes)
+{
+ return const_buffers_1(
+ const_buffer(buffer_cast<const void*>(b),
+ buffer_size(b) < max_size_in_bytes
+ ? buffer_size(b) : max_size_in_bytes
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , b.get_debug_check()
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new modifiable buffer that represents the given memory range.
+/**
+ * @returns <tt>mutable_buffers_1(data, size_in_bytes)</tt>.
+ */
+inline mutable_buffers_1 buffer(void* data, std::size_t size_in_bytes)
+{
+ return mutable_buffers_1(mutable_buffer(data, size_in_bytes));
+}
+
+/// Create a new non-modifiable buffer that represents the given memory range.
+/**
+ * @returns <tt>const_buffers_1(data, size_in_bytes)</tt>.
+ */
+inline const_buffers_1 buffer(const void* data,
+ std::size_t size_in_bytes)
+{
+ return const_buffers_1(const_buffer(data, size_in_bytes));
+}
+
+/// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * static_cast<void*>(data),
+ * N * sizeof(PodType)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline mutable_buffers_1 buffer(PodType (&data)[N])
+{
+ return mutable_buffers_1(mutable_buffer(data, N * sizeof(PodType)));
+}
+
+/// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * static_cast<void*>(data),
+ * min(N * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline mutable_buffers_1 buffer(PodType (&data)[N],
+ std::size_t max_size_in_bytes)
+{
+ return mutable_buffers_1(
+ mutable_buffer(data,
+ N * sizeof(PodType) < max_size_in_bytes
+ ? N * sizeof(PodType) : max_size_in_bytes));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * static_cast<const void*>(data),
+ * N * sizeof(PodType)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline const_buffers_1 buffer(const PodType (&data)[N])
+{
+ return const_buffers_1(const_buffer(data, N * sizeof(PodType)));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * static_cast<const void*>(data),
+ * min(N * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline const_buffers_1 buffer(const PodType (&data)[N],
+ std::size_t max_size_in_bytes)
+{
+ return const_buffers_1(
+ const_buffer(data,
+ N * sizeof(PodType) < max_size_in_bytes
+ ? N * sizeof(PodType) : max_size_in_bytes));
+}
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
+
+// Borland C++ and Sun Studio think the overloads:
+//
+// unspecified buffer(boost::array<PodType, N>& array ...);
+//
+// and
+//
+// unspecified buffer(boost::array<const PodType, N>& array ...);
+//
+// are ambiguous. This will be worked around by using a buffer_types traits
+// class that contains typedefs for the appropriate buffer and container
+// classes, based on whether PodType is const or non-const.
+
+namespace detail {
+
+template <bool IsConst>
+struct buffer_types_base;
+
+template <>
+struct buffer_types_base<false>
+{
+ typedef mutable_buffer buffer_type;
+ typedef mutable_buffers_1 container_type;
+};
+
+template <>
+struct buffer_types_base<true>
+{
+ typedef const_buffer buffer_type;
+ typedef const_buffers_1 container_type;
+};
+
+template <typename PodType>
+struct buffer_types
+ : public buffer_types_base<boost::is_const<PodType>::value>
+{
+};
+
+} // namespace detail
+
+template <typename PodType, std::size_t N>
+inline typename detail::buffer_types<PodType>::container_type
+buffer(boost::array<PodType, N>& data)
+{
+ typedef typename boost::asio::detail::buffer_types<PodType>::buffer_type
+ buffer_type;
+ typedef typename boost::asio::detail::buffer_types<PodType>::container_type
+ container_type;
+ return container_type(
+ buffer_type(data.c_array(), data.size() * sizeof(PodType)));
+}
+
+template <typename PodType, std::size_t N>
+inline typename detail::buffer_types<PodType>::container_type
+buffer(boost::array<PodType, N>& data, std::size_t max_size_in_bytes)
+{
+ typedef typename boost::asio::detail::buffer_types<PodType>::buffer_type
+ buffer_type;
+ typedef typename boost::asio::detail::buffer_types<PodType>::container_type
+ container_type;
+ return container_type(
+ buffer_type(data.c_array(),
+ data.size() * sizeof(PodType) < max_size_in_bytes
+ ? data.size() * sizeof(PodType) : max_size_in_bytes));
+}
+
+#else // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ // || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
+
+/// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.data(),
+ * data.size() * sizeof(PodType)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline mutable_buffers_1 buffer(boost::array<PodType, N>& data)
+{
+ return mutable_buffers_1(
+ mutable_buffer(data.c_array(), data.size() * sizeof(PodType)));
+}
+
+/// Create a new modifiable buffer that represents the given POD array.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.data(),
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline mutable_buffers_1 buffer(boost::array<PodType, N>& data,
+ std::size_t max_size_in_bytes)
+{
+ return mutable_buffers_1(
+ mutable_buffer(data.c_array(),
+ data.size() * sizeof(PodType) < max_size_in_bytes
+ ? data.size() * sizeof(PodType) : max_size_in_bytes));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * data.size() * sizeof(PodType)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline const_buffers_1 buffer(boost::array<const PodType, N>& data)
+{
+ return const_buffers_1(
+ const_buffer(data.data(), data.size() * sizeof(PodType)));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline const_buffers_1 buffer(boost::array<const PodType, N>& data,
+ std::size_t max_size_in_bytes)
+{
+ return const_buffers_1(
+ const_buffer(data.data(),
+ data.size() * sizeof(PodType) < max_size_in_bytes
+ ? data.size() * sizeof(PodType) : max_size_in_bytes));
+}
+
+#endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ // || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
+
+/// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * data.size() * sizeof(PodType)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline const_buffers_1 buffer(const boost::array<PodType, N>& data)
+{
+ return const_buffers_1(
+ const_buffer(data.data(), data.size() * sizeof(PodType)));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD array.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ */
+template <typename PodType, std::size_t N>
+inline const_buffers_1 buffer(const boost::array<PodType, N>& data,
+ std::size_t max_size_in_bytes)
+{
+ return const_buffers_1(
+ const_buffer(data.data(),
+ data.size() * sizeof(PodType) < max_size_in_bytes
+ ? data.size() * sizeof(PodType) : max_size_in_bytes));
+}
+
+/// Create a new modifiable buffer that represents the given POD vector.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * data.size() * sizeof(PodType)); @endcode
+ *
+ * @note The buffer is invalidated by any vector operation that would also
+ * invalidate iterators.
+ */
+template <typename PodType, typename Allocator>
+inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data)
+{
+ return mutable_buffers_1(
+ mutable_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , detail::buffer_debug_check<
+ typename std::vector<PodType, Allocator>::iterator
+ >(data.begin())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new modifiable buffer that represents the given POD vector.
+/**
+ * @returns A mutable_buffers_1 value equivalent to:
+ * @code mutable_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ *
+ * @note The buffer is invalidated by any vector operation that would also
+ * invalidate iterators.
+ */
+template <typename PodType, typename Allocator>
+inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data,
+ std::size_t max_size_in_bytes)
+{
+ return mutable_buffers_1(
+ mutable_buffer(data.size() ? &data[0] : 0,
+ data.size() * sizeof(PodType) < max_size_in_bytes
+ ? data.size() * sizeof(PodType) : max_size_in_bytes
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , detail::buffer_debug_check<
+ typename std::vector<PodType, Allocator>::iterator
+ >(data.begin())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD vector.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * data.size() * sizeof(PodType)); @endcode
+ *
+ * @note The buffer is invalidated by any vector operation that would also
+ * invalidate iterators.
+ */
+template <typename PodType, typename Allocator>
+inline const_buffers_1 buffer(
+ const std::vector<PodType, Allocator>& data)
+{
+ return const_buffers_1(
+ const_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , detail::buffer_debug_check<
+ typename std::vector<PodType, Allocator>::const_iterator
+ >(data.begin())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new non-modifiable buffer that represents the given POD vector.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.size() ? &data[0] : 0,
+ * min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
+ *
+ * @note The buffer is invalidated by any vector operation that would also
+ * invalidate iterators.
+ */
+template <typename PodType, typename Allocator>
+inline const_buffers_1 buffer(
+ const std::vector<PodType, Allocator>& data, std::size_t max_size_in_bytes)
+{
+ return const_buffers_1(
+ const_buffer(data.size() ? &data[0] : 0,
+ data.size() * sizeof(PodType) < max_size_in_bytes
+ ? data.size() * sizeof(PodType) : max_size_in_bytes
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , detail::buffer_debug_check<
+ typename std::vector<PodType, Allocator>::const_iterator
+ >(data.begin())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new non-modifiable buffer that represents the given string.
+/**
+ * @returns <tt>const_buffers_1(data.data(), data.size())</tt>.
+ *
+ * @note The buffer is invalidated by any non-const operation called on the
+ * given string object.
+ */
+inline const_buffers_1 buffer(const std::string& data)
+{
+ return const_buffers_1(const_buffer(data.data(), data.size()
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , detail::buffer_debug_check<std::string::const_iterator>(data.begin())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/// Create a new non-modifiable buffer that represents the given string.
+/**
+ * @returns A const_buffers_1 value equivalent to:
+ * @code const_buffers_1(
+ * data.data(),
+ * min(data.size(), max_size_in_bytes)); @endcode
+ *
+ * @note The buffer is invalidated by any non-const operation called on the
+ * given string object.
+ */
+inline const_buffers_1 buffer(const std::string& data,
+ std::size_t max_size_in_bytes)
+{
+ return const_buffers_1(
+ const_buffer(data.data(),
+ data.size() < max_size_in_bytes
+ ? data.size() : max_size_in_bytes
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ , detail::buffer_debug_check<std::string::const_iterator>(data.begin())
+#endif // BOOST_ASIO_ENABLE_BUFFER_DEBUGGING
+ ));
+}
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFER_HPP
diff --git a/3rdParty/Boost/boost/asio/buffered_read_stream.hpp b/3rdParty/Boost/boost/asio/buffered_read_stream.hpp
new file mode 100644
index 0000000..742123b
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffered_read_stream.hpp
@@ -0,0 +1,422 @@
+//
+// buffered_read_stream.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERED_READ_STREAM_HPP
+#define BOOST_ASIO_BUFFERED_READ_STREAM_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <cstring>
+#include <boost/config.hpp>
+#include <boost/type_traits.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffered_read_stream_fwd.hpp>
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/buffer_resize_guard.hpp>
+#include <boost/asio/detail/buffered_stream_storage.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Adds buffering to the read-related operations of a stream.
+/**
+ * The buffered_read_stream class template can be used to add buffering to the
+ * synchronous and asynchronous read operations of a stream.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * AsyncReadStream, AsyncWriteStream, Stream, Sync_Read_Stream, SyncWriteStream.
+ */
+template <typename Stream>
+class buffered_read_stream
+ : private noncopyable
+{
+public:
+ /// The type of the next layer.
+ typedef typename boost::remove_reference<Stream>::type next_layer_type;
+
+ /// The type of the lowest layer.
+ typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
+
+#if defined(GENERATING_DOCUMENTATION)
+ /// The default buffer size.
+ static const std::size_t default_buffer_size = implementation_defined;
+#else
+ BOOST_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
+#endif
+
+ /// Construct, passing the specified argument to initialise the next layer.
+ template <typename Arg>
+ explicit buffered_read_stream(Arg& a)
+ : next_layer_(a),
+ storage_(default_buffer_size)
+ {
+ }
+
+ /// Construct, passing the specified argument to initialise the next layer.
+ template <typename Arg>
+ buffered_read_stream(Arg& a, std::size_t buffer_size)
+ : next_layer_(a),
+ storage_(buffer_size)
+ {
+ }
+
+ /// Get a reference to the next layer.
+ next_layer_type& next_layer()
+ {
+ return next_layer_;
+ }
+
+ /// Get a reference to the lowest layer.
+ lowest_layer_type& lowest_layer()
+ {
+ return next_layer_.lowest_layer();
+ }
+
+ /// Get a const reference to the lowest layer.
+ const lowest_layer_type& lowest_layer() const
+ {
+ return next_layer_.lowest_layer();
+ }
+
+ /// (Deprecated: use get_io_service().) Get the io_service associated with
+ /// the object.
+ boost::asio::io_service& io_service()
+ {
+ return next_layer_.get_io_service();
+ }
+
+ /// Get the io_service associated with the object.
+ boost::asio::io_service& get_io_service()
+ {
+ return next_layer_.get_io_service();
+ }
+
+ /// Close the stream.
+ void close()
+ {
+ next_layer_.close();
+ }
+
+ /// Close the stream.
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return next_layer_.close(ec);
+ }
+
+ /// Write the given data to the stream. Returns the number of bytes written.
+ /// Throws an exception on failure.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ return next_layer_.write_some(buffers);
+ }
+
+ /// Write the given data to the stream. Returns the number of bytes written,
+ /// or 0 if an error occurred.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return next_layer_.write_some(buffers, ec);
+ }
+
+ /// Start an asynchronous write. The data being written must be valid for the
+ /// lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ next_layer_.async_write_some(buffers, handler);
+ }
+
+ /// Fill the buffer with some data. Returns the number of bytes placed in the
+ /// buffer as a result of the operation. Throws an exception on failure.
+ std::size_t fill()
+ {
+ detail::buffer_resize_guard<detail::buffered_stream_storage>
+ resize_guard(storage_);
+ std::size_t previous_size = storage_.size();
+ storage_.resize(storage_.capacity());
+ storage_.resize(previous_size + next_layer_.read_some(buffer(
+ storage_.data() + previous_size,
+ storage_.size() - previous_size)));
+ resize_guard.commit();
+ return storage_.size() - previous_size;
+ }
+
+ /// Fill the buffer with some data. Returns the number of bytes placed in the
+ /// buffer as a result of the operation, or 0 if an error occurred.
+ std::size_t fill(boost::system::error_code& ec)
+ {
+ detail::buffer_resize_guard<detail::buffered_stream_storage>
+ resize_guard(storage_);
+ std::size_t previous_size = storage_.size();
+ storage_.resize(storage_.capacity());
+ storage_.resize(previous_size + next_layer_.read_some(buffer(
+ storage_.data() + previous_size,
+ storage_.size() - previous_size),
+ ec));
+ resize_guard.commit();
+ return storage_.size() - previous_size;
+ }
+
+ template <typename ReadHandler>
+ class fill_handler
+ {
+ public:
+ fill_handler(boost::asio::io_service& io_service,
+ detail::buffered_stream_storage& storage,
+ std::size_t previous_size, ReadHandler handler)
+ : io_service_(io_service),
+ storage_(storage),
+ previous_size_(previous_size),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ storage_.resize(previous_size_ + bytes_transferred);
+ io_service_.dispatch(detail::bind_handler(
+ handler_, ec, bytes_transferred));
+ }
+
+ private:
+ boost::asio::io_service& io_service_;
+ detail::buffered_stream_storage& storage_;
+ std::size_t previous_size_;
+ ReadHandler handler_;
+ };
+
+ /// Start an asynchronous fill.
+ template <typename ReadHandler>
+ void async_fill(ReadHandler handler)
+ {
+ std::size_t previous_size = storage_.size();
+ storage_.resize(storage_.capacity());
+ next_layer_.async_read_some(
+ buffer(
+ storage_.data() + previous_size,
+ storage_.size() - previous_size),
+ fill_handler<ReadHandler>(get_io_service(),
+ storage_, previous_size, handler));
+ }
+
+ /// Read some data from the stream. Returns the number of bytes read. Throws
+ /// an exception on failure.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ if (storage_.empty())
+ fill();
+ return copy(buffers);
+ }
+
+ /// Read some data from the stream. Returns the number of bytes read or 0 if
+ /// an error occurred.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ ec = boost::system::error_code();
+ if (storage_.empty() && !fill(ec))
+ return 0;
+ return copy(buffers);
+ }
+
+ template <typename MutableBufferSequence, typename ReadHandler>
+ class read_some_handler
+ {
+ public:
+ read_some_handler(boost::asio::io_service& io_service,
+ detail::buffered_stream_storage& storage,
+ const MutableBufferSequence& buffers, ReadHandler handler)
+ : io_service_(io_service),
+ storage_(storage),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec, std::size_t)
+ {
+ if (ec || storage_.empty())
+ {
+ std::size_t length = 0;
+ io_service_.dispatch(detail::bind_handler(handler_, ec, length));
+ }
+ else
+ {
+ using namespace std; // For memcpy.
+
+ std::size_t bytes_avail = storage_.size();
+ std::size_t bytes_copied = 0;
+
+ typename MutableBufferSequence::const_iterator iter = buffers_.begin();
+ typename MutableBufferSequence::const_iterator end = buffers_.end();
+ for (; iter != end && bytes_avail > 0; ++iter)
+ {
+ std::size_t max_length = buffer_size(*iter);
+ std::size_t length = (max_length < bytes_avail)
+ ? max_length : bytes_avail;
+ memcpy(buffer_cast<void*>(*iter),
+ storage_.data() + bytes_copied, length);
+ bytes_copied += length;
+ bytes_avail -= length;
+ }
+
+ storage_.consume(bytes_copied);
+ io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_copied));
+ }
+ }
+
+ private:
+ boost::asio::io_service& io_service_;
+ detail::buffered_stream_storage& storage_;
+ MutableBufferSequence buffers_;
+ ReadHandler handler_;
+ };
+
+ /// Start an asynchronous read. The buffer into which the data will be read
+ /// must be valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ if (storage_.empty())
+ {
+ async_fill(read_some_handler<MutableBufferSequence, ReadHandler>(
+ get_io_service(), storage_, buffers, handler));
+ }
+ else
+ {
+ std::size_t length = copy(buffers);
+ get_io_service().post(detail::bind_handler(
+ handler, boost::system::error_code(), length));
+ }
+ }
+
+ /// Peek at the incoming data on the stream. Returns the number of bytes read.
+ /// Throws an exception on failure.
+ template <typename MutableBufferSequence>
+ std::size_t peek(const MutableBufferSequence& buffers)
+ {
+ if (storage_.empty())
+ fill();
+ return peek_copy(buffers);
+ }
+
+ /// Peek at the incoming data on the stream. Returns the number of bytes read,
+ /// or 0 if an error occurred.
+ template <typename MutableBufferSequence>
+ std::size_t peek(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ ec = boost::system::error_code();
+ if (storage_.empty() && !fill(ec))
+ return 0;
+ return peek_copy(buffers);
+ }
+
+ /// Determine the amount of data that may be read without blocking.
+ std::size_t in_avail()
+ {
+ return storage_.size();
+ }
+
+ /// Determine the amount of data that may be read without blocking.
+ std::size_t in_avail(boost::system::error_code& ec)
+ {
+ ec = boost::system::error_code();
+ return storage_.size();
+ }
+
+private:
+ /// Copy data out of the internal buffer to the specified target buffer.
+ /// Returns the number of bytes copied.
+ template <typename MutableBufferSequence>
+ std::size_t copy(const MutableBufferSequence& buffers)
+ {
+ using namespace std; // For memcpy.
+
+ std::size_t bytes_avail = storage_.size();
+ std::size_t bytes_copied = 0;
+
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ for (; iter != end && bytes_avail > 0; ++iter)
+ {
+ std::size_t max_length = buffer_size(*iter);
+ std::size_t length = (max_length < bytes_avail)
+ ? max_length : bytes_avail;
+ memcpy(buffer_cast<void*>(*iter), storage_.data() + bytes_copied, length);
+ bytes_copied += length;
+ bytes_avail -= length;
+ }
+
+ storage_.consume(bytes_copied);
+ return bytes_copied;
+ }
+
+ /// Copy data from the internal buffer to the specified target buffer, without
+ /// removing the data from the internal buffer. Returns the number of bytes
+ /// copied.
+ template <typename MutableBufferSequence>
+ std::size_t peek_copy(const MutableBufferSequence& buffers)
+ {
+ using namespace std; // For memcpy.
+
+ std::size_t bytes_avail = storage_.size();
+ std::size_t bytes_copied = 0;
+
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ for (; iter != end && bytes_avail > 0; ++iter)
+ {
+ std::size_t max_length = buffer_size(*iter);
+ std::size_t length = (max_length < bytes_avail)
+ ? max_length : bytes_avail;
+ memcpy(buffer_cast<void*>(*iter), storage_.data() + bytes_copied, length);
+ bytes_copied += length;
+ bytes_avail -= length;
+ }
+
+ return bytes_copied;
+ }
+
+ /// The next layer.
+ Stream next_layer_;
+
+ // The data in the buffer.
+ detail::buffered_stream_storage storage_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERED_READ_STREAM_HPP
diff --git a/3rdParty/Boost/boost/asio/buffered_read_stream_fwd.hpp b/3rdParty/Boost/boost/asio/buffered_read_stream_fwd.hpp
new file mode 100644
index 0000000..da9765e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffered_read_stream_fwd.hpp
@@ -0,0 +1,31 @@
+//
+// buffered_read_stream_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERED_READ_STREAM_FWD_HPP
+#define BOOST_ASIO_BUFFERED_READ_STREAM_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename Stream>
+class buffered_read_stream;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERED_READ_STREAM_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/buffered_stream.hpp b/3rdParty/Boost/boost/asio/buffered_stream.hpp
new file mode 100644
index 0000000..e1b8d38
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffered_stream.hpp
@@ -0,0 +1,258 @@
+//
+// buffered_stream.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERED_STREAM_HPP
+#define BOOST_ASIO_BUFFERED_STREAM_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffered_read_stream.hpp>
+#include <boost/asio/buffered_write_stream.hpp>
+#include <boost/asio/buffered_stream_fwd.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Adds buffering to the read- and write-related operations of a stream.
+/**
+ * The buffered_stream class template can be used to add buffering to the
+ * synchronous and asynchronous read and write operations of a stream.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
+ */
+template <typename Stream>
+class buffered_stream
+ : private noncopyable
+{
+public:
+ /// The type of the next layer.
+ typedef typename boost::remove_reference<Stream>::type next_layer_type;
+
+ /// The type of the lowest layer.
+ typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
+
+ /// Construct, passing the specified argument to initialise the next layer.
+ template <typename Arg>
+ explicit buffered_stream(Arg& a)
+ : inner_stream_impl_(a),
+ stream_impl_(inner_stream_impl_)
+ {
+ }
+
+ /// Construct, passing the specified argument to initialise the next layer.
+ template <typename Arg>
+ explicit buffered_stream(Arg& a, std::size_t read_buffer_size,
+ std::size_t write_buffer_size)
+ : inner_stream_impl_(a, write_buffer_size),
+ stream_impl_(inner_stream_impl_, read_buffer_size)
+ {
+ }
+
+ /// Get a reference to the next layer.
+ next_layer_type& next_layer()
+ {
+ return stream_impl_.next_layer().next_layer();
+ }
+
+ /// Get a reference to the lowest layer.
+ lowest_layer_type& lowest_layer()
+ {
+ return stream_impl_.lowest_layer();
+ }
+
+ /// Get a const reference to the lowest layer.
+ const lowest_layer_type& lowest_layer() const
+ {
+ return stream_impl_.lowest_layer();
+ }
+
+ /// (Deprecated: use get_io_service().) Get the io_service associated with
+ /// the object.
+ boost::asio::io_service& io_service()
+ {
+ return stream_impl_.get_io_service();
+ }
+
+ /// Get the io_service associated with the object.
+ boost::asio::io_service& get_io_service()
+ {
+ return stream_impl_.get_io_service();
+ }
+
+ /// Close the stream.
+ void close()
+ {
+ stream_impl_.close();
+ }
+
+ /// Close the stream.
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return stream_impl_.close(ec);
+ }
+
+ /// Flush all data from the buffer to the next layer. Returns the number of
+ /// bytes written to the next layer on the last write operation. Throws an
+ /// exception on failure.
+ std::size_t flush()
+ {
+ return stream_impl_.next_layer().flush();
+ }
+
+ /// Flush all data from the buffer to the next layer. Returns the number of
+ /// bytes written to the next layer on the last write operation, or 0 if an
+ /// error occurred.
+ std::size_t flush(boost::system::error_code& ec)
+ {
+ return stream_impl_.next_layer().flush(ec);
+ }
+
+ /// Start an asynchronous flush.
+ template <typename WriteHandler>
+ void async_flush(WriteHandler handler)
+ {
+ return stream_impl_.next_layer().async_flush(handler);
+ }
+
+ /// Write the given data to the stream. Returns the number of bytes written.
+ /// Throws an exception on failure.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ return stream_impl_.write_some(buffers);
+ }
+
+ /// Write the given data to the stream. Returns the number of bytes written,
+ /// or 0 if an error occurred.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return stream_impl_.write_some(buffers, ec);
+ }
+
+ /// Start an asynchronous write. The data being written must be valid for the
+ /// lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ stream_impl_.async_write_some(buffers, handler);
+ }
+
+ /// Fill the buffer with some data. Returns the number of bytes placed in the
+ /// buffer as a result of the operation. Throws an exception on failure.
+ std::size_t fill()
+ {
+ return stream_impl_.fill();
+ }
+
+ /// Fill the buffer with some data. Returns the number of bytes placed in the
+ /// buffer as a result of the operation, or 0 if an error occurred.
+ std::size_t fill(boost::system::error_code& ec)
+ {
+ return stream_impl_.fill(ec);
+ }
+
+ /// Start an asynchronous fill.
+ template <typename ReadHandler>
+ void async_fill(ReadHandler handler)
+ {
+ stream_impl_.async_fill(handler);
+ }
+
+ /// Read some data from the stream. Returns the number of bytes read. Throws
+ /// an exception on failure.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ return stream_impl_.read_some(buffers);
+ }
+
+ /// Read some data from the stream. Returns the number of bytes read or 0 if
+ /// an error occurred.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return stream_impl_.read_some(buffers, ec);
+ }
+
+ /// Start an asynchronous read. The buffer into which the data will be read
+ /// must be valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ stream_impl_.async_read_some(buffers, handler);
+ }
+
+ /// Peek at the incoming data on the stream. Returns the number of bytes read.
+ /// Throws an exception on failure.
+ template <typename MutableBufferSequence>
+ std::size_t peek(const MutableBufferSequence& buffers)
+ {
+ return stream_impl_.peek(buffers);
+ }
+
+ /// Peek at the incoming data on the stream. Returns the number of bytes read,
+ /// or 0 if an error occurred.
+ template <typename MutableBufferSequence>
+ std::size_t peek(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return stream_impl_.peek(buffers, ec);
+ }
+
+ /// Determine the amount of data that may be read without blocking.
+ std::size_t in_avail()
+ {
+ return stream_impl_.in_avail();
+ }
+
+ /// Determine the amount of data that may be read without blocking.
+ std::size_t in_avail(boost::system::error_code& ec)
+ {
+ return stream_impl_.in_avail(ec);
+ }
+
+private:
+ // The buffered write stream.
+ typedef buffered_write_stream<Stream> write_stream_type;
+ write_stream_type inner_stream_impl_;
+
+ // The buffered read stream.
+ typedef buffered_read_stream<write_stream_type&> read_stream_type;
+ read_stream_type stream_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERED_STREAM_HPP
diff --git a/3rdParty/Boost/boost/asio/buffered_stream_fwd.hpp b/3rdParty/Boost/boost/asio/buffered_stream_fwd.hpp
new file mode 100644
index 0000000..7641235
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffered_stream_fwd.hpp
@@ -0,0 +1,31 @@
+//
+// buffered_stream_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERED_STREAM_FWD_HPP
+#define BOOST_ASIO_BUFFERED_STREAM_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename Stream>
+class buffered_stream;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERED_STREAM_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/buffered_write_stream.hpp b/3rdParty/Boost/boost/asio/buffered_write_stream.hpp
new file mode 100644
index 0000000..1d06541
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffered_write_stream.hpp
@@ -0,0 +1,376 @@
+//
+// buffered_write_stream.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERED_WRITE_STREAM_HPP
+#define BOOST_ASIO_BUFFERED_WRITE_STREAM_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <cstring>
+#include <boost/config.hpp>
+#include <boost/type_traits.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffered_write_stream_fwd.hpp>
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/write.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/buffered_stream_storage.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Adds buffering to the write-related operations of a stream.
+/**
+ * The buffered_write_stream class template can be used to add buffering to the
+ * synchronous and asynchronous write operations of a stream.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
+ */
+template <typename Stream>
+class buffered_write_stream
+ : private noncopyable
+{
+public:
+ /// The type of the next layer.
+ typedef typename boost::remove_reference<Stream>::type next_layer_type;
+
+ /// The type of the lowest layer.
+ typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
+
+#if defined(GENERATING_DOCUMENTATION)
+ /// The default buffer size.
+ static const std::size_t default_buffer_size = implementation_defined;
+#else
+ BOOST_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
+#endif
+
+ /// Construct, passing the specified argument to initialise the next layer.
+ template <typename Arg>
+ explicit buffered_write_stream(Arg& a)
+ : next_layer_(a),
+ storage_(default_buffer_size)
+ {
+ }
+
+ /// Construct, passing the specified argument to initialise the next layer.
+ template <typename Arg>
+ buffered_write_stream(Arg& a, std::size_t buffer_size)
+ : next_layer_(a),
+ storage_(buffer_size)
+ {
+ }
+
+ /// Get a reference to the next layer.
+ next_layer_type& next_layer()
+ {
+ return next_layer_;
+ }
+
+ /// Get a reference to the lowest layer.
+ lowest_layer_type& lowest_layer()
+ {
+ return next_layer_.lowest_layer();
+ }
+
+ /// Get a const reference to the lowest layer.
+ const lowest_layer_type& lowest_layer() const
+ {
+ return next_layer_.lowest_layer();
+ }
+
+ /// (Deprecated: use get_io_service().) Get the io_service associated with
+ /// the object.
+ boost::asio::io_service& io_service()
+ {
+ return next_layer_.get_io_service();
+ }
+
+ /// Get the io_service associated with the object.
+ boost::asio::io_service& get_io_service()
+ {
+ return next_layer_.get_io_service();
+ }
+
+ /// Close the stream.
+ void close()
+ {
+ next_layer_.close();
+ }
+
+ /// Close the stream.
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return next_layer_.close(ec);
+ }
+
+ /// Flush all data from the buffer to the next layer. Returns the number of
+ /// bytes written to the next layer on the last write operation. Throws an
+ /// exception on failure.
+ std::size_t flush()
+ {
+ std::size_t bytes_written = write(next_layer_,
+ buffer(storage_.data(), storage_.size()));
+ storage_.consume(bytes_written);
+ return bytes_written;
+ }
+
+ /// Flush all data from the buffer to the next layer. Returns the number of
+ /// bytes written to the next layer on the last write operation, or 0 if an
+ /// error occurred.
+ std::size_t flush(boost::system::error_code& ec)
+ {
+ std::size_t bytes_written = write(next_layer_,
+ buffer(storage_.data(), storage_.size()),
+ transfer_all(), ec);
+ storage_.consume(bytes_written);
+ return bytes_written;
+ }
+
+ template <typename WriteHandler>
+ class flush_handler
+ {
+ public:
+ flush_handler(boost::asio::io_service& io_service,
+ detail::buffered_stream_storage& storage, WriteHandler handler)
+ : io_service_(io_service),
+ storage_(storage),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_written)
+ {
+ storage_.consume(bytes_written);
+ io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_written));
+ }
+
+ private:
+ boost::asio::io_service& io_service_;
+ detail::buffered_stream_storage& storage_;
+ WriteHandler handler_;
+ };
+
+ /// Start an asynchronous flush.
+ template <typename WriteHandler>
+ void async_flush(WriteHandler handler)
+ {
+ async_write(next_layer_, buffer(storage_.data(), storage_.size()),
+ flush_handler<WriteHandler>(get_io_service(), storage_, handler));
+ }
+
+ /// Write the given data to the stream. Returns the number of bytes written.
+ /// Throws an exception on failure.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ if (storage_.size() == storage_.capacity())
+ flush();
+ return copy(buffers);
+ }
+
+ /// Write the given data to the stream. Returns the number of bytes written,
+ /// or 0 if an error occurred and the error handler did not throw.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ ec = boost::system::error_code();
+ if (storage_.size() == storage_.capacity() && !flush(ec))
+ return 0;
+ return copy(buffers);
+ }
+
+ template <typename ConstBufferSequence, typename WriteHandler>
+ class write_some_handler
+ {
+ public:
+ write_some_handler(boost::asio::io_service& io_service,
+ detail::buffered_stream_storage& storage,
+ const ConstBufferSequence& buffers, WriteHandler handler)
+ : io_service_(io_service),
+ storage_(storage),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec, std::size_t)
+ {
+ if (ec)
+ {
+ std::size_t length = 0;
+ io_service_.dispatch(detail::bind_handler(handler_, ec, length));
+ }
+ else
+ {
+ using namespace std; // For memcpy.
+
+ std::size_t orig_size = storage_.size();
+ std::size_t space_avail = storage_.capacity() - orig_size;
+ std::size_t bytes_copied = 0;
+
+ typename ConstBufferSequence::const_iterator iter = buffers_.begin();
+ typename ConstBufferSequence::const_iterator end = buffers_.end();
+ for (; iter != end && space_avail > 0; ++iter)
+ {
+ std::size_t bytes_avail = buffer_size(*iter);
+ std::size_t length = (bytes_avail < space_avail)
+ ? bytes_avail : space_avail;
+ storage_.resize(orig_size + bytes_copied + length);
+ memcpy(storage_.data() + orig_size + bytes_copied,
+ buffer_cast<const void*>(*iter), length);
+ bytes_copied += length;
+ space_avail -= length;
+ }
+
+ io_service_.dispatch(detail::bind_handler(handler_, ec, bytes_copied));
+ }
+ }
+
+ private:
+ boost::asio::io_service& io_service_;
+ detail::buffered_stream_storage& storage_;
+ ConstBufferSequence buffers_;
+ WriteHandler handler_;
+ };
+
+ /// Start an asynchronous write. The data being written must be valid for the
+ /// lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ if (storage_.size() == storage_.capacity())
+ {
+ async_flush(write_some_handler<ConstBufferSequence, WriteHandler>(
+ get_io_service(), storage_, buffers, handler));
+ }
+ else
+ {
+ std::size_t bytes_copied = copy(buffers);
+ get_io_service().post(detail::bind_handler(
+ handler, boost::system::error_code(), bytes_copied));
+ }
+ }
+
+ /// Read some data from the stream. Returns the number of bytes read. Throws
+ /// an exception on failure.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ return next_layer_.read_some(buffers);
+ }
+
+ /// Read some data from the stream. Returns the number of bytes read or 0 if
+ /// an error occurred.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return next_layer_.read_some(buffers, ec);
+ }
+
+ /// Start an asynchronous read. The buffer into which the data will be read
+ /// must be valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ next_layer_.async_read_some(buffers, handler);
+ }
+
+ /// Peek at the incoming data on the stream. Returns the number of bytes read.
+ /// Throws an exception on failure.
+ template <typename MutableBufferSequence>
+ std::size_t peek(const MutableBufferSequence& buffers)
+ {
+ return next_layer_.peek(buffers);
+ }
+
+ /// Peek at the incoming data on the stream. Returns the number of bytes read,
+ /// or 0 if an error occurred.
+ template <typename MutableBufferSequence>
+ std::size_t peek(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return next_layer_.peek(buffers, ec);
+ }
+
+ /// Determine the amount of data that may be read without blocking.
+ std::size_t in_avail()
+ {
+ return next_layer_.in_avail();
+ }
+
+ /// Determine the amount of data that may be read without blocking.
+ std::size_t in_avail(boost::system::error_code& ec)
+ {
+ return next_layer_.in_avail(ec);
+ }
+
+private:
+ /// Copy data into the internal buffer from the specified source buffer.
+ /// Returns the number of bytes copied.
+ template <typename ConstBufferSequence>
+ std::size_t copy(const ConstBufferSequence& buffers)
+ {
+ using namespace std; // For memcpy.
+
+ std::size_t orig_size = storage_.size();
+ std::size_t space_avail = storage_.capacity() - orig_size;
+ std::size_t bytes_copied = 0;
+
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ for (; iter != end && space_avail > 0; ++iter)
+ {
+ std::size_t bytes_avail = buffer_size(*iter);
+ std::size_t length = (bytes_avail < space_avail)
+ ? bytes_avail : space_avail;
+ storage_.resize(orig_size + bytes_copied + length);
+ memcpy(storage_.data() + orig_size + bytes_copied,
+ buffer_cast<const void*>(*iter), length);
+ bytes_copied += length;
+ space_avail -= length;
+ }
+
+ return bytes_copied;
+ }
+
+ /// The next layer.
+ Stream next_layer_;
+
+ // The data in the buffer.
+ detail::buffered_stream_storage storage_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERED_WRITE_STREAM_HPP
diff --git a/3rdParty/Boost/boost/asio/buffered_write_stream_fwd.hpp b/3rdParty/Boost/boost/asio/buffered_write_stream_fwd.hpp
new file mode 100644
index 0000000..4774e89
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffered_write_stream_fwd.hpp
@@ -0,0 +1,31 @@
+//
+// buffered_write_stream_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
+#define BOOST_ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename Stream>
+class buffered_write_stream;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/buffers_iterator.hpp b/3rdParty/Boost/boost/asio/buffers_iterator.hpp
new file mode 100644
index 0000000..f9d61da
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/buffers_iterator.hpp
@@ -0,0 +1,327 @@
+//
+// buffers_iterator.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_BUFFERS_ITERATOR_HPP
+#define BOOST_ASIO_BUFFERS_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/assert.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+
+namespace boost {
+namespace asio {
+
+namespace detail
+{
+ template <bool IsMutable>
+ struct buffers_iterator_types_helper;
+
+ template <>
+ struct buffers_iterator_types_helper<false>
+ {
+ typedef const_buffer buffer_type;
+ template <typename ByteType>
+ struct byte_type
+ {
+ typedef typename boost::add_const<ByteType>::type type;
+ };
+ };
+
+ template <>
+ struct buffers_iterator_types_helper<true>
+ {
+ typedef mutable_buffer buffer_type;
+ template <typename ByteType>
+ struct byte_type
+ {
+ typedef ByteType type;
+ };
+ };
+
+ template <typename BufferSequence, typename ByteType>
+ struct buffers_iterator_types
+ {
+ enum
+ {
+ is_mutable = boost::is_convertible<
+ typename BufferSequence::value_type, mutable_buffer>::value
+ };
+ typedef buffers_iterator_types_helper<is_mutable> helper;
+ typedef typename helper::buffer_type buffer_type;
+ typedef typename helper::template byte_type<ByteType>::type byte_type;
+ };
+}
+
+/// A random access iterator over the bytes in a buffer sequence.
+template <typename BufferSequence, typename ByteType = char>
+class buffers_iterator
+ : public boost::iterator_facade<
+ buffers_iterator<BufferSequence, ByteType>,
+ typename detail::buffers_iterator_types<
+ BufferSequence, ByteType>::byte_type,
+ boost::random_access_traversal_tag>
+{
+private:
+ typedef typename detail::buffers_iterator_types<
+ BufferSequence, ByteType>::buffer_type buffer_type;
+ typedef typename detail::buffers_iterator_types<
+ BufferSequence, ByteType>::byte_type byte_type;
+
+public:
+ /// Default constructor. Creates an iterator in an undefined state.
+ buffers_iterator()
+ : current_buffer_(),
+ current_buffer_position_(0),
+ begin_(),
+ current_(),
+ end_(),
+ position_(0)
+ {
+ }
+
+ /// Construct an iterator representing the beginning of the buffers' data.
+ static buffers_iterator begin(const BufferSequence& buffers)
+#if BOOST_WORKAROUND(__GNUC__, == 4) && BOOST_WORKAROUND(__GNUC_MINOR__, == 3)
+ __attribute__ ((noinline))
+#endif
+ {
+ buffers_iterator new_iter;
+ new_iter.begin_ = buffers.begin();
+ new_iter.current_ = buffers.begin();
+ new_iter.end_ = buffers.end();
+ while (new_iter.current_ != new_iter.end_)
+ {
+ new_iter.current_buffer_ = *new_iter.current_;
+ if (boost::asio::buffer_size(new_iter.current_buffer_) > 0)
+ break;
+ ++new_iter.current_;
+ }
+ return new_iter;
+ }
+
+ /// Construct an iterator representing the end of the buffers' data.
+ static buffers_iterator end(const BufferSequence& buffers)
+#if BOOST_WORKAROUND(__GNUC__, == 4) && BOOST_WORKAROUND(__GNUC_MINOR__, == 3)
+ __attribute__ ((noinline))
+#endif
+ {
+ buffers_iterator new_iter;
+ new_iter.begin_ = buffers.begin();
+ new_iter.current_ = buffers.begin();
+ new_iter.end_ = buffers.end();
+ while (new_iter.current_ != new_iter.end_)
+ {
+ buffer_type buffer = *new_iter.current_;
+ new_iter.position_ += boost::asio::buffer_size(buffer);
+ ++new_iter.current_;
+ }
+ return new_iter;
+ }
+
+private:
+ friend class boost::iterator_core_access;
+
+ // Dereference the iterator.
+ byte_type& dereference() const
+ {
+ return buffer_cast<byte_type*>(current_buffer_)[current_buffer_position_];
+ }
+
+ // Compare two iterators for equality.
+ bool equal(const buffers_iterator& other) const
+ {
+ return position_ == other.position_;
+ }
+
+ // Increment the iterator.
+ void increment()
+ {
+ BOOST_ASSERT(current_ != end_ && "iterator out of bounds");
+ ++position_;
+
+ // Check if the increment can be satisfied by the current buffer.
+ ++current_buffer_position_;
+ if (current_buffer_position_ != boost::asio::buffer_size(current_buffer_))
+ return;
+
+ // Find the next non-empty buffer.
+ ++current_;
+ current_buffer_position_ = 0;
+ while (current_ != end_)
+ {
+ current_buffer_ = *current_;
+ if (boost::asio::buffer_size(current_buffer_) > 0)
+ return;
+ ++current_;
+ }
+ }
+
+ // Decrement the iterator.
+ void decrement()
+ {
+ BOOST_ASSERT(position_ > 0 && "iterator out of bounds");
+ --position_;
+
+ // Check if the decrement can be satisfied by the current buffer.
+ if (current_buffer_position_ != 0)
+ {
+ --current_buffer_position_;
+ return;
+ }
+
+ // Find the previous non-empty buffer.
+ typename BufferSequence::const_iterator iter = current_;
+ while (iter != begin_)
+ {
+ --iter;
+ buffer_type buffer = *iter;
+ std::size_t buffer_size = boost::asio::buffer_size(buffer);
+ if (buffer_size > 0)
+ {
+ current_ = iter;
+ current_buffer_ = buffer;
+ current_buffer_position_ = buffer_size - 1;
+ return;
+ }
+ }
+ }
+
+ // Advance the iterator by the specified distance.
+ void advance(std::ptrdiff_t n)
+ {
+ if (n > 0)
+ {
+ BOOST_ASSERT(current_ != end_ && "iterator out of bounds");
+ for (;;)
+ {
+ std::ptrdiff_t current_buffer_balance
+ = boost::asio::buffer_size(current_buffer_)
+ - current_buffer_position_;
+
+ // Check if the advance can be satisfied by the current buffer.
+ if (current_buffer_balance > n)
+ {
+ position_ += n;
+ current_buffer_position_ += n;
+ return;
+ }
+
+ // Update position.
+ n -= current_buffer_balance;
+ position_ += current_buffer_balance;
+
+ // Move to next buffer. If it is empty then it will be skipped on the
+ // next iteration of this loop.
+ if (++current_ == end_)
+ {
+ BOOST_ASSERT(n == 0 && "iterator out of bounds");
+ current_buffer_ = buffer_type();
+ current_buffer_position_ = 0;
+ return;
+ }
+ current_buffer_ = *current_;
+ current_buffer_position_ = 0;
+ }
+ }
+ else if (n < 0)
+ {
+ std::size_t abs_n = -n;
+ BOOST_ASSERT(position_ >= abs_n && "iterator out of bounds");
+ for (;;)
+ {
+ // Check if the advance can be satisfied by the current buffer.
+ if (current_buffer_position_ >= abs_n)
+ {
+ position_ -= abs_n;
+ current_buffer_position_ -= abs_n;
+ return;
+ }
+
+ // Update position.
+ abs_n -= current_buffer_position_;
+ position_ -= current_buffer_position_;
+
+ // Check if we've reached the beginning of the buffers.
+ if (current_ == begin_)
+ {
+ BOOST_ASSERT(abs_n == 0 && "iterator out of bounds");
+ current_buffer_position_ = 0;
+ return;
+ }
+
+ // Find the previous non-empty buffer.
+ typename BufferSequence::const_iterator iter = current_;
+ while (iter != begin_)
+ {
+ --iter;
+ buffer_type buffer = *iter;
+ std::size_t buffer_size = boost::asio::buffer_size(buffer);
+ if (buffer_size > 0)
+ {
+ current_ = iter;
+ current_buffer_ = buffer;
+ current_buffer_position_ = buffer_size;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Determine the distance between two iterators.
+ std::ptrdiff_t distance_to(const buffers_iterator& other) const
+ {
+ return other.position_ - position_;
+ }
+
+ buffer_type current_buffer_;
+ std::size_t current_buffer_position_;
+ typename BufferSequence::const_iterator begin_;
+ typename BufferSequence::const_iterator current_;
+ typename BufferSequence::const_iterator end_;
+ std::size_t position_;
+};
+
+/// Construct an iterator representing the beginning of the buffers' data.
+template <typename BufferSequence>
+inline buffers_iterator<BufferSequence> buffers_begin(
+ const BufferSequence& buffers)
+{
+ return buffers_iterator<BufferSequence>::begin(buffers);
+}
+
+/// Construct an iterator representing the end of the buffers' data.
+template <typename BufferSequence>
+inline buffers_iterator<BufferSequence> buffers_end(
+ const BufferSequence& buffers)
+{
+ return buffers_iterator<BufferSequence>::end(buffers);
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_BUFFERS_ITERATOR_HPP
diff --git a/3rdParty/Boost/boost/asio/completion_condition.hpp b/3rdParty/Boost/boost/asio/completion_condition.hpp
new file mode 100644
index 0000000..c317c02
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/completion_condition.hpp
@@ -0,0 +1,166 @@
+//
+// completion_condition.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_COMPLETION_CONDITION_HPP
+#define BOOST_ASIO_COMPLETION_CONDITION_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+
+namespace detail {
+
+// The default maximum number of bytes to transfer in a single operation.
+enum { default_max_transfer_size = 65536 };
+
+// Adapt result of old-style completion conditions (which had a bool result
+// where true indicated that the operation was complete).
+inline std::size_t adapt_completion_condition_result(bool result)
+{
+ return result ? 0 : default_max_transfer_size;
+}
+
+// Adapt result of current completion conditions (which have a size_t result
+// where 0 means the operation is complete, and otherwise the result is the
+// maximum number of bytes to transfer on the next underlying operation).
+inline std::size_t adapt_completion_condition_result(std::size_t result)
+{
+ return result;
+}
+
+class transfer_all_t
+{
+public:
+ typedef std::size_t result_type;
+
+ template <typename Error>
+ std::size_t operator()(const Error& err, std::size_t)
+ {
+ return !!err ? 0 : default_max_transfer_size;
+ }
+};
+
+class transfer_at_least_t
+{
+public:
+ typedef std::size_t result_type;
+
+ explicit transfer_at_least_t(std::size_t minimum)
+ : minimum_(minimum)
+ {
+ }
+
+ template <typename Error>
+ std::size_t operator()(const Error& err, std::size_t bytes_transferred)
+ {
+ return (!!err || bytes_transferred >= minimum_)
+ ? 0 : default_max_transfer_size;
+ }
+
+private:
+ std::size_t minimum_;
+};
+
+} // namespace detail
+
+/**
+ * @defgroup completion_condition Completion Condition Function Objects
+ *
+ * Function objects used for determining when a read or write operation should
+ * complete.
+ */
+/*@{*/
+
+/// Return a completion condition function object that indicates that a read or
+/// write operation should continue until all of the data has been transferred,
+/// or until an error occurs.
+/**
+ * This function is used to create an object, of unspecified type, that meets
+ * CompletionCondition requirements.
+ *
+ * @par Example
+ * Reading until a buffer is full:
+ * @code
+ * boost::array<char, 128> buf;
+ * boost::system::error_code ec;
+ * std::size_t n = boost::asio::read(
+ * sock, boost::asio::buffer(buf),
+ * boost::asio::transfer_all(), ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * else
+ * {
+ * // n == 128
+ * }
+ * @endcode
+ */
+#if defined(GENERATING_DOCUMENTATION)
+unspecified transfer_all();
+#else
+inline detail::transfer_all_t transfer_all()
+{
+ return detail::transfer_all_t();
+}
+#endif
+
+/// Return a completion condition function object that indicates that a read or
+/// write operation should continue until a minimum number of bytes has been
+/// transferred, or until an error occurs.
+/**
+ * This function is used to create an object, of unspecified type, that meets
+ * CompletionCondition requirements.
+ *
+ * @par Example
+ * Reading until a buffer is full or contains at least 64 bytes:
+ * @code
+ * boost::array<char, 128> buf;
+ * boost::system::error_code ec;
+ * std::size_t n = boost::asio::read(
+ * sock, boost::asio::buffer(buf),
+ * boost::asio::transfer_at_least(64), ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * else
+ * {
+ * // n >= 64 && n <= 128
+ * }
+ * @endcode
+ */
+#if defined(GENERATING_DOCUMENTATION)
+unspecified transfer_at_least(std::size_t minimum);
+#else
+inline detail::transfer_at_least_t transfer_at_least(std::size_t minimum)
+{
+ return detail::transfer_at_least_t(minimum);
+}
+#endif
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_COMPLETION_CONDITION_HPP
diff --git a/3rdParty/Boost/boost/asio/datagram_socket_service.hpp b/3rdParty/Boost/boost/asio/datagram_socket_service.hpp
new file mode 100644
index 0000000..8cc6617
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/datagram_socket_service.hpp
@@ -0,0 +1,325 @@
+//
+// datagram_socket_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DATAGRAM_SOCKET_SERVICE_HPP
+#define BOOST_ASIO_DATAGRAM_SOCKET_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/reactive_socket_service.hpp>
+#include <boost/asio/detail/win_iocp_socket_service.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default service implementation for a datagram socket.
+template <typename Protocol>
+class datagram_socket_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<datagram_socket_service<Protocol> >
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::reactive_socket_service<
+ Protocol, detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The type of a datagram socket.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef typename service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native socket type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef typename service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new datagram socket service for the specified io_service.
+ explicit datagram_socket_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ datagram_socket_service<Protocol> >(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new datagram socket implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a datagram socket implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ // Open a new datagram socket implementation.
+ boost::system::error_code open(implementation_type& impl,
+ const protocol_type& protocol, boost::system::error_code& ec)
+ {
+ if (protocol.type() == SOCK_DGRAM)
+ service_impl_.open(impl, protocol, ec);
+ else
+ ec = boost::asio::error::invalid_argument;
+ return ec;
+ }
+
+ /// Assign an existing native socket to a datagram socket.
+ boost::system::error_code assign(implementation_type& impl,
+ const protocol_type& protocol, const native_type& native_socket,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, protocol, native_socket, ec);
+ }
+
+ /// Determine whether the socket is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a datagram socket implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native socket implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the socket.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Determine whether the socket is at the out-of-band data mark.
+ bool at_mark(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.at_mark(impl, ec);
+ }
+
+ /// Determine the number of bytes available for reading.
+ std::size_t available(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.available(impl, ec);
+ }
+
+ // Bind the datagram socket to the specified local endpoint.
+ boost::system::error_code bind(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.bind(impl, endpoint, ec);
+ }
+
+ /// Connect the datagram socket to the specified endpoint.
+ boost::system::error_code connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.connect(impl, peer_endpoint, ec);
+ }
+
+ /// Start an asynchronous connect.
+ template <typename ConnectHandler>
+ void async_connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, ConnectHandler handler)
+ {
+ service_impl_.async_connect(impl, peer_endpoint, handler);
+ }
+
+ /// Set a socket option.
+ template <typename SettableSocketOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSocketOption& option, boost::system::error_code& ec)
+ {
+ return service_impl_.set_option(impl, option, ec);
+ }
+
+ /// Get a socket option.
+ template <typename GettableSocketOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSocketOption& option, boost::system::error_code& ec) const
+ {
+ return service_impl_.get_option(impl, option, ec);
+ }
+
+ /// Perform an IO control command on the socket.
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(implementation_type& impl,
+ IoControlCommand& command, boost::system::error_code& ec)
+ {
+ return service_impl_.io_control(impl, command, ec);
+ }
+
+ /// Get the local endpoint.
+ endpoint_type local_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.local_endpoint(impl, ec);
+ }
+
+ /// Get the remote endpoint.
+ endpoint_type remote_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.remote_endpoint(impl, ec);
+ }
+
+ /// Disable sends or receives on the socket.
+ boost::system::error_code shutdown(implementation_type& impl,
+ socket_base::shutdown_type what, boost::system::error_code& ec)
+ {
+ return service_impl_.shutdown(impl, what, ec);
+ }
+
+ /// Send the given data to the peer.
+ template <typename ConstBufferSequence>
+ std::size_t send(implementation_type& impl,
+ const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.send(impl, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(implementation_type& impl, const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ service_impl_.async_send(impl, buffers, flags, handler);
+ }
+
+ /// Send a datagram to the specified endpoint.
+ template <typename ConstBufferSequence>
+ std::size_t send_to(implementation_type& impl,
+ const ConstBufferSequence& buffers, const endpoint_type& destination,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.send_to(impl, buffers, destination, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send_to(implementation_type& impl,
+ const ConstBufferSequence& buffers, const endpoint_type& destination,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ service_impl_.async_send_to(impl, buffers, destination, flags, handler);
+ }
+
+ /// Receive some data from the peer.
+ template <typename MutableBufferSequence>
+ std::size_t receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.receive(impl, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous receive.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ service_impl_.async_receive(impl, buffers, flags, handler);
+ }
+
+ /// Receive a datagram with the endpoint of the sender.
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.receive_from(impl, buffers, sender_endpoint, flags,
+ ec);
+ }
+
+ /// Start an asynchronous receive that will get the endpoint of the sender.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ service_impl_.async_receive_from(impl, buffers, sender_endpoint, flags,
+ handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DATAGRAM_SOCKET_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/deadline_timer.hpp b/3rdParty/Boost/boost/asio/deadline_timer.hpp
new file mode 100644
index 0000000..a62a2ce
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/deadline_timer.hpp
@@ -0,0 +1,39 @@
+//
+// deadline_timer.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DEADLINE_TIMER_HPP
+#define BOOST_ASIO_DEADLINE_TIMER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp> // Must come before posix_time.
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_deadline_timer.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Typedef for the typical usage of timer.
+typedef basic_deadline_timer<boost::posix_time::ptime> deadline_timer;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DEADLINE_TIMER_HPP
diff --git a/3rdParty/Boost/boost/asio/deadline_timer_service.hpp b/3rdParty/Boost/boost/asio/deadline_timer_service.hpp
new file mode 100644
index 0000000..dccd139
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/deadline_timer_service.hpp
@@ -0,0 +1,170 @@
+//
+// deadline_timer_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DEADLINE_TIMER_SERVICE_HPP
+#define BOOST_ASIO_DEADLINE_TIMER_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/time_traits.hpp>
+#include <boost/asio/detail/deadline_timer_service.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/win_iocp_io_service.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default service implementation for a timer.
+template <typename TimeType,
+ typename TimeTraits = boost::asio::time_traits<TimeType> >
+class deadline_timer_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<
+ deadline_timer_service<TimeType, TimeTraits> >
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+ /// The time traits type.
+ typedef TimeTraits traits_type;
+
+ /// The time type.
+ typedef typename traits_type::time_type time_type;
+
+ /// The duration type.
+ typedef typename traits_type::duration_type duration_type;
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::deadline_timer_service<
+ traits_type, detail::win_iocp_io_service> service_impl_type;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::deadline_timer_service<
+ traits_type, detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::deadline_timer_service<
+ traits_type, detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::deadline_timer_service<
+ traits_type, detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::deadline_timer_service<
+ traits_type, detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The implementation type of the deadline timer.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef typename service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// Construct a new timer service for the specified io_service.
+ explicit deadline_timer_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ deadline_timer_service<TimeType, TimeTraits> >(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new timer implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a timer implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Cancel any asynchronous wait operations associated with the timer.
+ std::size_t cancel(implementation_type& impl, boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Get the expiry time for the timer as an absolute time.
+ time_type expires_at(const implementation_type& impl) const
+ {
+ return service_impl_.expires_at(impl);
+ }
+
+ /// Set the expiry time for the timer as an absolute time.
+ std::size_t expires_at(implementation_type& impl,
+ const time_type& expiry_time, boost::system::error_code& ec)
+ {
+ return service_impl_.expires_at(impl, expiry_time, ec);
+ }
+
+ /// Get the expiry time for the timer relative to now.
+ duration_type expires_from_now(const implementation_type& impl) const
+ {
+ return service_impl_.expires_from_now(impl);
+ }
+
+ /// Set the expiry time for the timer relative to now.
+ std::size_t expires_from_now(implementation_type& impl,
+ const duration_type& expiry_time, boost::system::error_code& ec)
+ {
+ return service_impl_.expires_from_now(impl, expiry_time, ec);
+ }
+
+ // Perform a blocking wait on the timer.
+ void wait(implementation_type& impl, boost::system::error_code& ec)
+ {
+ service_impl_.wait(impl, ec);
+ }
+
+ // Start an asynchronous wait on the timer.
+ template <typename WaitHandler>
+ void async_wait(implementation_type& impl, WaitHandler handler)
+ {
+ service_impl_.async_wait(impl, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DEADLINE_TIMER_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/bind_handler.hpp b/3rdParty/Boost/boost/asio/detail/bind_handler.hpp
new file mode 100644
index 0000000..3a9ad01
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/bind_handler.hpp
@@ -0,0 +1,351 @@
+//
+// bind_handler.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_BIND_HANDLER_HPP
+#define BOOST_ASIO_DETAIL_BIND_HANDLER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Handler, typename Arg1>
+class binder1
+{
+public:
+ binder1(const Handler& handler, const Arg1& arg1)
+ : handler_(handler),
+ arg1_(arg1)
+ {
+ }
+
+ void operator()()
+ {
+ handler_(arg1_);
+ }
+
+ void operator()() const
+ {
+ handler_(arg1_);
+ }
+
+//private:
+ Handler handler_;
+ Arg1 arg1_;
+};
+
+template <typename Handler, typename Arg1>
+inline void* asio_handler_allocate(std::size_t size,
+ binder1<Handler, Arg1>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ binder1<Handler, Arg1>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Handler, typename Arg1>
+inline void asio_handler_invoke(const Function& function,
+ binder1<Handler, Arg1>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1>
+inline binder1<Handler, Arg1> bind_handler(const Handler& handler,
+ const Arg1& arg1)
+{
+ return binder1<Handler, Arg1>(handler, arg1);
+}
+
+template <typename Handler, typename Arg1, typename Arg2>
+class binder2
+{
+public:
+ binder2(const Handler& handler, const Arg1& arg1, const Arg2& arg2)
+ : handler_(handler),
+ arg1_(arg1),
+ arg2_(arg2)
+ {
+ }
+
+ void operator()()
+ {
+ handler_(arg1_, arg2_);
+ }
+
+ void operator()() const
+ {
+ handler_(arg1_, arg2_);
+ }
+
+//private:
+ Handler handler_;
+ Arg1 arg1_;
+ Arg2 arg2_;
+};
+
+template <typename Handler, typename Arg1, typename Arg2>
+inline void* asio_handler_allocate(std::size_t size,
+ binder2<Handler, Arg1, Arg2>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ binder2<Handler, Arg1, Arg2>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Handler, typename Arg1, typename Arg2>
+inline void asio_handler_invoke(const Function& function,
+ binder2<Handler, Arg1, Arg2>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2>
+inline binder2<Handler, Arg1, Arg2> bind_handler(const Handler& handler,
+ const Arg1& arg1, const Arg2& arg2)
+{
+ return binder2<Handler, Arg1, Arg2>(handler, arg1, arg2);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
+class binder3
+{
+public:
+ binder3(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
+ const Arg3& arg3)
+ : handler_(handler),
+ arg1_(arg1),
+ arg2_(arg2),
+ arg3_(arg3)
+ {
+ }
+
+ void operator()()
+ {
+ handler_(arg1_, arg2_, arg3_);
+ }
+
+ void operator()() const
+ {
+ handler_(arg1_, arg2_, arg3_);
+ }
+
+//private:
+ Handler handler_;
+ Arg1 arg1_;
+ Arg2 arg2_;
+ Arg3 arg3_;
+};
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
+inline void* asio_handler_allocate(std::size_t size,
+ binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Handler, typename Arg1, typename Arg2,
+ typename Arg3>
+inline void asio_handler_invoke(const Function& function,
+ binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
+inline binder3<Handler, Arg1, Arg2, Arg3> bind_handler(const Handler& handler,
+ const Arg1& arg1, const Arg2& arg2, const Arg3& arg3)
+{
+ return binder3<Handler, Arg1, Arg2, Arg3>(handler, arg1, arg2, arg3);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4>
+class binder4
+{
+public:
+ binder4(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
+ const Arg3& arg3, const Arg4& arg4)
+ : handler_(handler),
+ arg1_(arg1),
+ arg2_(arg2),
+ arg3_(arg3),
+ arg4_(arg4)
+ {
+ }
+
+ void operator()()
+ {
+ handler_(arg1_, arg2_, arg3_, arg4_);
+ }
+
+ void operator()() const
+ {
+ handler_(arg1_, arg2_, arg3_, arg4_);
+ }
+
+//private:
+ Handler handler_;
+ Arg1 arg1_;
+ Arg2 arg2_;
+ Arg3 arg3_;
+ Arg4 arg4_;
+};
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4>
+inline void* asio_handler_allocate(std::size_t size,
+ binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Handler, typename Arg1, typename Arg2,
+ typename Arg3, typename Arg4>
+inline void asio_handler_invoke(const Function& function,
+ binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4>
+inline binder4<Handler, Arg1, Arg2, Arg3, Arg4> bind_handler(
+ const Handler& handler, const Arg1& arg1, const Arg2& arg2,
+ const Arg3& arg3, const Arg4& arg4)
+{
+ return binder4<Handler, Arg1, Arg2, Arg3, Arg4>(handler, arg1, arg2, arg3,
+ arg4);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4, typename Arg5>
+class binder5
+{
+public:
+ binder5(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
+ const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
+ : handler_(handler),
+ arg1_(arg1),
+ arg2_(arg2),
+ arg3_(arg3),
+ arg4_(arg4),
+ arg5_(arg5)
+ {
+ }
+
+ void operator()()
+ {
+ handler_(arg1_, arg2_, arg3_, arg4_, arg5_);
+ }
+
+ void operator()() const
+ {
+ handler_(arg1_, arg2_, arg3_, arg4_, arg5_);
+ }
+
+//private:
+ Handler handler_;
+ Arg1 arg1_;
+ Arg2 arg2_;
+ Arg3 arg3_;
+ Arg4 arg4_;
+ Arg5 arg5_;
+};
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4, typename Arg5>
+inline void* asio_handler_allocate(std::size_t size,
+ binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4, typename Arg5>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Handler, typename Arg1, typename Arg2,
+ typename Arg3, typename Arg4, typename Arg5>
+inline void asio_handler_invoke(const Function& function,
+ binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+}
+
+template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
+ typename Arg4, typename Arg5>
+inline binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5> bind_handler(
+ const Handler& handler, const Arg1& arg1, const Arg2& arg2,
+ const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
+{
+ return binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>(handler, arg1, arg2,
+ arg3, arg4, arg5);
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_BIND_HANDLER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/buffer_resize_guard.hpp b/3rdParty/Boost/boost/asio/detail/buffer_resize_guard.hpp
new file mode 100644
index 0000000..63d957c
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/buffer_resize_guard.hpp
@@ -0,0 +1,72 @@
+//
+// buffer_resize_guard.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
+#define BOOST_ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <limits>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Helper class to manage buffer resizing in an exception safe way.
+template <typename Buffer>
+class buffer_resize_guard
+{
+public:
+ // Constructor.
+ buffer_resize_guard(Buffer& buffer)
+ : buffer_(buffer),
+ old_size_(buffer.size())
+ {
+ }
+
+ // Destructor rolls back the buffer resize unless commit was called.
+ ~buffer_resize_guard()
+ {
+ if (old_size_
+ != std::numeric_limits<size_t>::max BOOST_PREVENT_MACRO_SUBSTITUTION())
+ {
+ buffer_.resize(old_size_);
+ }
+ }
+
+ // Commit the resize transaction.
+ void commit()
+ {
+ old_size_
+ = std::numeric_limits<size_t>::max BOOST_PREVENT_MACRO_SUBSTITUTION();
+ }
+
+private:
+ // The buffer being managed.
+ Buffer& buffer_;
+
+ // The size of the buffer at the time the guard was constructed.
+ size_t old_size_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/buffered_stream_storage.hpp b/3rdParty/Boost/boost/asio/detail/buffered_stream_storage.hpp
new file mode 100644
index 0000000..f20bf27
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/buffered_stream_storage.hpp
@@ -0,0 +1,129 @@
+//
+// buffered_stream_storage.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
+#define BOOST_ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <cassert>
+#include <cstddef>
+#include <cstring>
+#include <vector>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class buffered_stream_storage
+{
+public:
+ // The type of the bytes stored in the buffer.
+ typedef unsigned char byte_type;
+
+ // The type used for offsets into the buffer.
+ typedef std::size_t size_type;
+
+ // Constructor.
+ explicit buffered_stream_storage(std::size_t capacity)
+ : begin_offset_(0),
+ end_offset_(0),
+ buffer_(capacity)
+ {
+ }
+
+ /// Clear the buffer.
+ void clear()
+ {
+ begin_offset_ = 0;
+ end_offset_ = 0;
+ }
+
+ // Return a pointer to the beginning of the unread data.
+ byte_type* data()
+ {
+ return &buffer_[0] + begin_offset_;
+ }
+
+ // Return a pointer to the beginning of the unread data.
+ const byte_type* data() const
+ {
+ return &buffer_[0] + begin_offset_;
+ }
+
+ // Is there no unread data in the buffer.
+ bool empty() const
+ {
+ return begin_offset_ == end_offset_;
+ }
+
+ // Return the amount of unread data the is in the buffer.
+ size_type size() const
+ {
+ return end_offset_ - begin_offset_;
+ }
+
+ // Resize the buffer to the specified length.
+ void resize(size_type length)
+ {
+ assert(length <= capacity());
+ if (begin_offset_ + length <= capacity())
+ {
+ end_offset_ = begin_offset_ + length;
+ }
+ else
+ {
+ using namespace std; // For memmove.
+ memmove(&buffer_[0], &buffer_[0] + begin_offset_, size());
+ end_offset_ = length;
+ begin_offset_ = 0;
+ }
+ }
+
+ // Return the maximum size for data in the buffer.
+ size_type capacity() const
+ {
+ return buffer_.size();
+ }
+
+ // Consume multiple bytes from the beginning of the buffer.
+ void consume(size_type count)
+ {
+ assert(begin_offset_ + count <= end_offset_);
+ begin_offset_ += count;
+ if (empty())
+ clear();
+ }
+
+private:
+ // The offset to the beginning of the unread data.
+ size_type begin_offset_;
+
+ // The offset to the end of the unread data.
+ size_type end_offset_;
+
+ // The data in the buffer.
+ std::vector<byte_type> buffer_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/call_stack.hpp b/3rdParty/Boost/boost/asio/detail/call_stack.hpp
new file mode 100644
index 0000000..0096741
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/call_stack.hpp
@@ -0,0 +1,92 @@
+//
+// call_stack.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_CALL_STACK_HPP
+#define BOOST_ASIO_DETAIL_CALL_STACK_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/tss_ptr.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Helper class to determine whether or not the current thread is inside an
+// invocation of io_service::run() for a specified io_service object.
+template <typename Owner>
+class call_stack
+{
+public:
+ // Context class automatically pushes an owner on to the stack.
+ class context
+ : private noncopyable
+ {
+ public:
+ // Push the owner on to the stack.
+ explicit context(Owner* d)
+ : owner_(d),
+ next_(call_stack<Owner>::top_)
+ {
+ call_stack<Owner>::top_ = this;
+ }
+
+ // Pop the owner from the stack.
+ ~context()
+ {
+ call_stack<Owner>::top_ = next_;
+ }
+
+ private:
+ friend class call_stack<Owner>;
+
+ // The owner associated with the context.
+ Owner* owner_;
+
+ // The next element in the stack.
+ context* next_;
+ };
+
+ friend class context;
+
+ // Determine whether the specified owner is on the stack.
+ static bool contains(Owner* d)
+ {
+ context* elem = top_;
+ while (elem)
+ {
+ if (elem->owner_ == d)
+ return true;
+ elem = elem->next_;
+ }
+ return false;
+ }
+
+private:
+ // The top of the stack of calls for the current thread.
+ static tss_ptr<context> top_;
+};
+
+template <typename Owner>
+tss_ptr<typename call_stack<Owner>::context>
+call_stack<Owner>::top_;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_CALL_STACK_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/consuming_buffers.hpp b/3rdParty/Boost/boost/asio/detail/consuming_buffers.hpp
new file mode 100644
index 0000000..0ed811d
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/consuming_buffers.hpp
@@ -0,0 +1,246 @@
+//
+// consuming_buffers.hpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_CONSUMING_BUFFERS_HPP
+#define BOOST_ASIO_DETAIL_CONSUMING_BUFFERS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <algorithm>
+#include <cstddef>
+#include <limits>
+#include <boost/config.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// A proxy iterator for a sub-range in a list of buffers.
+template <typename Buffer, typename Buffer_Iterator>
+class consuming_buffers_iterator
+ : public boost::iterator_facade<
+ consuming_buffers_iterator<Buffer, Buffer_Iterator>,
+ const Buffer, boost::forward_traversal_tag>
+{
+public:
+ // Default constructor creates an end iterator.
+ consuming_buffers_iterator()
+ : at_end_(true)
+ {
+ }
+
+ // Construct with a buffer for the first entry and an iterator
+ // range for the remaining entries.
+ consuming_buffers_iterator(bool at_end, const Buffer& first,
+ Buffer_Iterator begin_remainder, Buffer_Iterator end_remainder,
+ std::size_t max_size)
+ : at_end_(max_size > 0 ? at_end : true),
+ first_(buffer(first, max_size)),
+ begin_remainder_(begin_remainder),
+ end_remainder_(end_remainder),
+ offset_(0),
+ max_size_(max_size)
+ {
+ }
+
+private:
+ friend class boost::iterator_core_access;
+
+ void increment()
+ {
+ if (!at_end_)
+ {
+ if (begin_remainder_ == end_remainder_
+ || offset_ + buffer_size(first_) >= max_size_)
+ {
+ at_end_ = true;
+ }
+ else
+ {
+ offset_ += buffer_size(first_);
+ first_ = buffer(*begin_remainder_++, max_size_ - offset_);
+ }
+ }
+ }
+
+ bool equal(const consuming_buffers_iterator& other) const
+ {
+ if (at_end_ && other.at_end_)
+ return true;
+ return !at_end_ && !other.at_end_
+ && buffer_cast<const void*>(first_)
+ == buffer_cast<const void*>(other.first_)
+ && buffer_size(first_) == buffer_size(other.first_)
+ && begin_remainder_ == other.begin_remainder_
+ && end_remainder_ == other.end_remainder_;
+ }
+
+ const Buffer& dereference() const
+ {
+ return first_;
+ }
+
+ bool at_end_;
+ Buffer first_;
+ Buffer_Iterator begin_remainder_;
+ Buffer_Iterator end_remainder_;
+ std::size_t offset_;
+ std::size_t max_size_;
+};
+
+// A proxy for a sub-range in a list of buffers.
+template <typename Buffer, typename Buffers>
+class consuming_buffers
+{
+public:
+ // The type for each element in the list of buffers.
+ typedef Buffer value_type;
+
+ // A forward-only iterator type that may be used to read elements.
+ typedef consuming_buffers_iterator<Buffer, typename Buffers::const_iterator>
+ const_iterator;
+
+ // Construct to represent the entire list of buffers.
+ consuming_buffers(const Buffers& buffers)
+ : buffers_(buffers),
+ at_end_(buffers_.begin() == buffers_.end()),
+ first_(*buffers_.begin()),
+ begin_remainder_(buffers_.begin()),
+ max_size_((std::numeric_limits<std::size_t>::max)())
+ {
+ if (!at_end_)
+ ++begin_remainder_;
+ }
+
+ // Copy constructor.
+ consuming_buffers(const consuming_buffers& other)
+ : buffers_(other.buffers_),
+ at_end_(other.at_end_),
+ first_(other.first_),
+ begin_remainder_(buffers_.begin()),
+ max_size_(other.max_size_)
+ {
+ typename Buffers::const_iterator first = other.buffers_.begin();
+ typename Buffers::const_iterator second = other.begin_remainder_;
+ std::advance(begin_remainder_, std::distance(first, second));
+ }
+
+ // Assignment operator.
+ consuming_buffers& operator=(const consuming_buffers& other)
+ {
+ buffers_ = other.buffers_;
+ at_end_ = other.at_end_;
+ first_ = other.first_;
+ begin_remainder_ = buffers_.begin();
+ typename Buffers::const_iterator first = other.buffers_.begin();
+ typename Buffers::const_iterator second = other.begin_remainder_;
+ std::advance(begin_remainder_, std::distance(first, second));
+ max_size_ = other.max_size_;
+ return *this;
+ }
+
+ // Get a forward-only iterator to the first element.
+ const_iterator begin() const
+ {
+ return const_iterator(at_end_, first_,
+ begin_remainder_, buffers_.end(), max_size_);
+ }
+
+ // Get a forward-only iterator for one past the last element.
+ const_iterator end() const
+ {
+ return const_iterator();
+ }
+
+ // Set the maximum size for a single transfer.
+ void set_max_size(std::size_t max_size)
+ {
+ max_size_ = max_size;
+ }
+
+ // Consume the specified number of bytes from the buffers.
+ void consume(std::size_t size)
+ {
+ // Remove buffers from the start until the specified size is reached.
+ while (size > 0 && !at_end_)
+ {
+ if (buffer_size(first_) <= size)
+ {
+ size -= buffer_size(first_);
+ if (begin_remainder_ == buffers_.end())
+ at_end_ = true;
+ else
+ first_ = *begin_remainder_++;
+ }
+ else
+ {
+ first_ = first_ + size;
+ size = 0;
+ }
+ }
+
+ // Remove any more empty buffers at the start.
+ while (!at_end_ && buffer_size(first_) == 0)
+ {
+ if (begin_remainder_ == buffers_.end())
+ at_end_ = true;
+ else
+ first_ = *begin_remainder_++;
+ }
+ }
+
+private:
+ Buffers buffers_;
+ bool at_end_;
+ Buffer first_;
+ typename Buffers::const_iterator begin_remainder_;
+ std::size_t max_size_;
+};
+
+// Specialisation for null_buffers to ensure that the null_buffers type is
+// always passed through to the underlying read or write operation.
+template <typename Buffer>
+class consuming_buffers<Buffer, boost::asio::null_buffers>
+ : public boost::asio::null_buffers
+{
+public:
+ consuming_buffers(const boost::asio::null_buffers&)
+ {
+ // No-op.
+ }
+
+ void set_max_size(std::size_t)
+ {
+ // No-op.
+ }
+
+ void consume(std::size_t)
+ {
+ // No-op.
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_CONSUMING_BUFFERS_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/deadline_timer_service.hpp b/3rdParty/Boost/boost/asio/detail/deadline_timer_service.hpp
new file mode 100644
index 0000000..16206a7
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/deadline_timer_service.hpp
@@ -0,0 +1,203 @@
+//
+// deadline_timer_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_base_from_member.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/timer_queue.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Time_Traits, typename Timer_Scheduler>
+class deadline_timer_service
+ : public boost::asio::detail::service_base<
+ deadline_timer_service<Time_Traits, Timer_Scheduler> >
+{
+public:
+ // The time type.
+ typedef typename Time_Traits::time_type time_type;
+
+ // The duration type.
+ typedef typename Time_Traits::duration_type duration_type;
+
+ // The implementation type of the timer. This type is dependent on the
+ // underlying implementation of the timer service.
+ struct implementation_type
+ : private boost::asio::detail::noncopyable
+ {
+ time_type expiry;
+ bool might_have_pending_waits;
+ };
+
+ // Constructor.
+ deadline_timer_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ deadline_timer_service<Time_Traits, Timer_Scheduler> >(io_service),
+ scheduler_(boost::asio::use_service<Timer_Scheduler>(io_service))
+ {
+ scheduler_.init_task();
+ scheduler_.add_timer_queue(timer_queue_);
+ }
+
+ // Destructor.
+ ~deadline_timer_service()
+ {
+ scheduler_.remove_timer_queue(timer_queue_);
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ // Construct a new timer implementation.
+ void construct(implementation_type& impl)
+ {
+ impl.expiry = time_type();
+ impl.might_have_pending_waits = false;
+ }
+
+ // Destroy a timer implementation.
+ void destroy(implementation_type& impl)
+ {
+ boost::system::error_code ec;
+ cancel(impl, ec);
+ }
+
+ // Cancel any asynchronous wait operations associated with the timer.
+ std::size_t cancel(implementation_type& impl, boost::system::error_code& ec)
+ {
+ if (!impl.might_have_pending_waits)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+ std::size_t count = scheduler_.cancel_timer(timer_queue_, &impl);
+ impl.might_have_pending_waits = false;
+ ec = boost::system::error_code();
+ return count;
+ }
+
+ // Get the expiry time for the timer as an absolute time.
+ time_type expires_at(const implementation_type& impl) const
+ {
+ return impl.expiry;
+ }
+
+ // Set the expiry time for the timer as an absolute time.
+ std::size_t expires_at(implementation_type& impl,
+ const time_type& expiry_time, boost::system::error_code& ec)
+ {
+ std::size_t count = cancel(impl, ec);
+ impl.expiry = expiry_time;
+ ec = boost::system::error_code();
+ return count;
+ }
+
+ // Get the expiry time for the timer relative to now.
+ duration_type expires_from_now(const implementation_type& impl) const
+ {
+ return Time_Traits::subtract(expires_at(impl), Time_Traits::now());
+ }
+
+ // Set the expiry time for the timer relative to now.
+ std::size_t expires_from_now(implementation_type& impl,
+ const duration_type& expiry_time, boost::system::error_code& ec)
+ {
+ return expires_at(impl,
+ Time_Traits::add(Time_Traits::now(), expiry_time), ec);
+ }
+
+ // Perform a blocking wait on the timer.
+ void wait(implementation_type& impl, boost::system::error_code& ec)
+ {
+ time_type now = Time_Traits::now();
+ while (Time_Traits::less_than(now, impl.expiry))
+ {
+ boost::posix_time::time_duration timeout =
+ Time_Traits::to_posix_duration(Time_Traits::subtract(impl.expiry, now));
+ ::timeval tv;
+ tv.tv_sec = timeout.total_seconds();
+ tv.tv_usec = timeout.total_microseconds() % 1000000;
+ boost::system::error_code ec;
+ socket_ops::select(0, 0, 0, 0, &tv, ec);
+ now = Time_Traits::now();
+ }
+ ec = boost::system::error_code();
+ }
+
+ template <typename Handler>
+ class wait_handler :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ wait_handler(boost::asio::io_service& io_service, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ io_service_(io_service),
+ work_(io_service)
+ {
+ }
+
+ void operator()(const boost::system::error_code& result)
+ {
+ io_service_.post(detail::bind_handler(this->handler_, result));
+ }
+
+ private:
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ };
+
+ // Start an asynchronous wait on the timer.
+ template <typename Handler>
+ void async_wait(implementation_type& impl, Handler handler)
+ {
+ impl.might_have_pending_waits = true;
+ scheduler_.schedule_timer(timer_queue_, impl.expiry,
+ wait_handler<Handler>(this->get_io_service(), handler), &impl);
+ }
+
+private:
+ // The queue of timers.
+ timer_queue<Time_Traits> timer_queue_;
+
+ // The object that schedules and executes timers. Usually a reactor.
+ Timer_Scheduler& scheduler_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/descriptor_ops.hpp b/3rdParty/Boost/boost/asio/detail/descriptor_ops.hpp
new file mode 100644
index 0000000..2ee1988
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/descriptor_ops.hpp
@@ -0,0 +1,178 @@
+//
+// descriptor_ops.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_DESCRIPTOR_OPS_HPP
+#define BOOST_ASIO_DETAIL_DESCRIPTOR_OPS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <cerrno>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+namespace boost {
+namespace asio {
+namespace detail {
+namespace descriptor_ops {
+
+inline void clear_error(boost::system::error_code& ec)
+{
+ errno = 0;
+ ec = boost::system::error_code();
+}
+
+template <typename ReturnType>
+inline ReturnType error_wrapper(ReturnType return_value,
+ boost::system::error_code& ec)
+{
+ ec = boost::system::error_code(errno,
+ boost::asio::error::get_system_category());
+ return return_value;
+}
+
+inline int open(const char* path, int flags, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::open(path, flags), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int close(int d, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::close(d), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+inline void init_buf_iov_base(void*& base, void* addr)
+{
+ base = addr;
+}
+
+template <typename T>
+inline void init_buf_iov_base(T& base, void* addr)
+{
+ base = static_cast<T>(addr);
+}
+
+typedef iovec buf;
+
+inline void init_buf(buf& b, void* data, size_t size)
+{
+ init_buf_iov_base(b.iov_base, data);
+ b.iov_len = size;
+}
+
+inline void init_buf(buf& b, const void* data, size_t size)
+{
+ init_buf_iov_base(b.iov_base, const_cast<void*>(data));
+ b.iov_len = size;
+}
+
+inline int scatter_read(int d, buf* bufs, size_t count,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::readv(d, bufs, static_cast<int>(count)), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int gather_write(int d, const buf* bufs, size_t count,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::writev(d, bufs, static_cast<int>(count)), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int ioctl(int d, long cmd, ioctl_arg_type* arg,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::ioctl(d, cmd, arg), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int fcntl(int d, long cmd, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::fcntl(d, cmd), ec);
+ if (result != -1)
+ clear_error(ec);
+ return result;
+}
+
+inline int fcntl(int d, long cmd, long arg, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::fcntl(d, cmd, arg), ec);
+ if (result != -1)
+ clear_error(ec);
+ return result;
+}
+
+inline int poll_read(int d, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ pollfd fds;
+ fds.fd = d;
+ fds.events = POLLIN;
+ fds.revents = 0;
+ clear_error(ec);
+ int result = error_wrapper(::poll(&fds, 1, -1), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int poll_write(int d, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ pollfd fds;
+ fds.fd = d;
+ fds.events = POLLOUT;
+ fds.revents = 0;
+ clear_error(ec);
+ int result = error_wrapper(::poll(&fds, 1, -1), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+} // namespace descriptor_ops
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_DESCRIPTOR_OPS_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/dev_poll_reactor.hpp b/3rdParty/Boost/boost/asio/detail/dev_poll_reactor.hpp
new file mode 100644
index 0000000..8739085
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/dev_poll_reactor.hpp
@@ -0,0 +1,678 @@
+//
+// dev_poll_reactor.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_HPP
+#define BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/dev_poll_reactor_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_DEV_POLL)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <vector>
+#include <boost/config.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/throw_exception.hpp>
+#include <sys/devpoll.h>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/hash_map.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/task_io_service.hpp>
+#include <boost/asio/detail/thread.hpp>
+#include <boost/asio/detail/reactor_op_queue.hpp>
+#include <boost/asio/detail/select_interrupter.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/signal_blocker.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/timer_queue.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class dev_poll_reactor
+ : public boost::asio::detail::service_base<dev_poll_reactor<Own_Thread> >
+{
+public:
+ // Per-descriptor data.
+ struct per_descriptor_data
+ {
+ };
+
+ // Constructor.
+ dev_poll_reactor(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ dev_poll_reactor<Own_Thread> >(io_service),
+ mutex_(),
+ dev_poll_fd_(do_dev_poll_create()),
+ wait_in_progress_(false),
+ interrupter_(),
+ read_op_queue_(),
+ write_op_queue_(),
+ except_op_queue_(),
+ pending_cancellations_(),
+ stop_thread_(false),
+ thread_(0),
+ shutdown_(false)
+ {
+ // Start the reactor's internal thread only if needed.
+ if (Own_Thread)
+ {
+ boost::asio::detail::signal_blocker sb;
+ thread_ = new boost::asio::detail::thread(
+ bind_handler(&dev_poll_reactor::call_run_thread, this));
+ }
+
+ // Add the interrupter's descriptor to /dev/poll.
+ ::pollfd ev = { 0 };
+ ev.fd = interrupter_.read_descriptor();
+ ev.events = POLLIN | POLLERR;
+ ev.revents = 0;
+ ::write(dev_poll_fd_, &ev, sizeof(ev));
+ }
+
+ // Destructor.
+ ~dev_poll_reactor()
+ {
+ shutdown_service();
+ ::close(dev_poll_fd_);
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ shutdown_ = true;
+ stop_thread_ = true;
+ lock.unlock();
+
+ if (thread_)
+ {
+ interrupter_.interrupt();
+ thread_->join();
+ delete thread_;
+ thread_ = 0;
+ }
+
+ read_op_queue_.destroy_operations();
+ write_op_queue_.destroy_operations();
+ except_op_queue_.destroy_operations();
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->destroy_timers();
+ timer_queues_.clear();
+ }
+
+ // Initialise the task, but only if the reactor is not in its own thread.
+ void init_task()
+ {
+ if (!Own_Thread)
+ {
+ typedef task_io_service<dev_poll_reactor<Own_Thread> >
+ task_io_service_type;
+ use_service<task_io_service_type>(this->get_io_service()).init_task();
+ }
+ }
+
+ // Register a socket with the reactor. Returns 0 on success, system error
+ // code on failure.
+ int register_descriptor(socket_type, per_descriptor_data&)
+ {
+ return 0;
+ }
+
+ // Start a new read operation. The handler object will be invoked when the
+ // given descriptor is ready to be read, or an error has occurred.
+ template <typename Handler>
+ void start_read_op(socket_type descriptor, per_descriptor_data&,
+ Handler handler, bool allow_speculative_read = true)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (allow_speculative_read)
+ {
+ if (!read_op_queue_.has_operation(descriptor))
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+ }
+ }
+
+ if (read_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ ::pollfd& ev = add_pending_event_change(descriptor);
+ ev.events = POLLIN | POLLERR | POLLHUP;
+ if (write_op_queue_.has_operation(descriptor))
+ ev.events |= POLLOUT;
+ if (except_op_queue_.has_operation(descriptor))
+ ev.events |= POLLPRI;
+ interrupter_.interrupt();
+ }
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // given descriptor is ready to be written, or an error has occurred.
+ template <typename Handler>
+ void start_write_op(socket_type descriptor, per_descriptor_data&,
+ Handler handler, bool allow_speculative_write = true)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (allow_speculative_write)
+ {
+ if (!write_op_queue_.has_operation(descriptor))
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+ }
+ }
+
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ ::pollfd& ev = add_pending_event_change(descriptor);
+ ev.events = POLLOUT | POLLERR | POLLHUP;
+ if (read_op_queue_.has_operation(descriptor))
+ ev.events |= POLLIN;
+ if (except_op_queue_.has_operation(descriptor))
+ ev.events |= POLLPRI;
+ interrupter_.interrupt();
+ }
+ }
+
+ // Start a new exception operation. The handler object will be invoked when
+ // the given descriptor has exception information, or an error has occurred.
+ template <typename Handler>
+ void start_except_op(socket_type descriptor,
+ per_descriptor_data&, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (except_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ ::pollfd& ev = add_pending_event_change(descriptor);
+ ev.events = POLLPRI | POLLERR | POLLHUP;
+ if (read_op_queue_.has_operation(descriptor))
+ ev.events |= POLLIN;
+ if (write_op_queue_.has_operation(descriptor))
+ ev.events |= POLLOUT;
+ interrupter_.interrupt();
+ }
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // information available, or an error has occurred.
+ template <typename Handler>
+ void start_connect_op(socket_type descriptor,
+ per_descriptor_data&, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ ::pollfd& ev = add_pending_event_change(descriptor);
+ ev.events = POLLOUT | POLLERR | POLLHUP;
+ if (read_op_queue_.has_operation(descriptor))
+ ev.events |= POLLIN;
+ if (except_op_queue_.has_operation(descriptor))
+ ev.events |= POLLPRI;
+ interrupter_.interrupt();
+ }
+ }
+
+ // Cancel all operations associated with the given descriptor. The
+ // handlers associated with the descriptor will be invoked with the
+ // operation_aborted error.
+ void cancel_ops(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Cancel any operations that are running against the descriptor and remove
+ // its registration from the reactor.
+ void close_descriptor(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Remove the descriptor from /dev/poll.
+ ::pollfd& ev = add_pending_event_change(descriptor);
+ ev.events = POLLREMOVE;
+ interrupter_.interrupt();
+
+ // Cancel any outstanding operations associated with the descriptor.
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Add a new timer queue to the reactor.
+ template <typename Time_Traits>
+ void add_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ timer_queues_.push_back(&timer_queue);
+ }
+
+ // Remove a timer queue from the reactor.
+ template <typename Time_Traits>
+ void remove_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ if (timer_queues_[i] == &timer_queue)
+ {
+ timer_queues_.erase(timer_queues_.begin() + i);
+ return;
+ }
+ }
+ }
+
+ // Schedule a timer in the given timer queue to expire at the specified
+ // absolute time. The handler object will be invoked when the timer expires.
+ template <typename Time_Traits, typename Handler>
+ void schedule_timer(timer_queue<Time_Traits>& timer_queue,
+ const typename Time_Traits::time_type& time, Handler handler, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (timer_queue.enqueue_timer(time, handler, token))
+ interrupter_.interrupt();
+ }
+
+ // Cancel the timer associated with the given token. Returns the number of
+ // handlers that have been posted or dispatched.
+ template <typename Time_Traits>
+ std::size_t cancel_timer(timer_queue<Time_Traits>& timer_queue, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ std::size_t n = timer_queue.cancel_timer(token);
+ if (n > 0)
+ interrupter_.interrupt();
+ return n;
+ }
+
+private:
+ friend class task_io_service<dev_poll_reactor<Own_Thread> >;
+
+ // Run /dev/poll once until interrupted or events are ready to be dispatched.
+ void run(bool block)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Dispatch any operation cancellations that were made while the select
+ // loop was not running.
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->dispatch_cancellations();
+
+ // Check if the thread is supposed to stop.
+ if (stop_thread_)
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // We can return immediately if there's no work to do and the reactor is
+ // not supposed to block.
+ if (!block && read_op_queue_.empty() && write_op_queue_.empty()
+ && except_op_queue_.empty() && all_timer_queues_are_empty())
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // Write the pending event registration changes to the /dev/poll descriptor.
+ std::size_t events_size = sizeof(::pollfd) * pending_event_changes_.size();
+ errno = 0;
+ int result = ::write(dev_poll_fd_,
+ &pending_event_changes_[0], events_size);
+ if (result != static_cast<int>(events_size))
+ {
+ for (std::size_t i = 0; i < pending_event_changes_.size(); ++i)
+ {
+ int descriptor = pending_event_changes_[i].fd;
+ boost::system::error_code ec = boost::system::error_code(
+ errno, boost::asio::error::get_system_category());
+ read_op_queue_.perform_all_operations(descriptor, ec);
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ except_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ pending_event_changes_.clear();
+ pending_event_change_index_.clear();
+
+ int timeout = block ? get_timeout() : 0;
+ wait_in_progress_ = true;
+ lock.unlock();
+
+ // Block on the /dev/poll descriptor.
+ ::pollfd events[128] = { { 0 } };
+ ::dvpoll dp = { 0 };
+ dp.dp_fds = events;
+ dp.dp_nfds = 128;
+ dp.dp_timeout = timeout;
+ int num_events = ::ioctl(dev_poll_fd_, DP_POLL, &dp);
+
+ lock.lock();
+ wait_in_progress_ = false;
+
+ // Block signals while performing operations.
+ boost::asio::detail::signal_blocker sb;
+
+ // Dispatch the waiting events.
+ for (int i = 0; i < num_events; ++i)
+ {
+ int descriptor = events[i].fd;
+ if (descriptor == interrupter_.read_descriptor())
+ {
+ interrupter_.reset();
+ }
+ else
+ {
+ bool more_reads = false;
+ bool more_writes = false;
+ bool more_except = false;
+ boost::system::error_code ec;
+
+ // Exception operations must be processed first to ensure that any
+ // out-of-band data is read before normal data.
+ if (events[i].events & (POLLPRI | POLLERR | POLLHUP))
+ more_except = except_op_queue_.perform_operation(descriptor, ec);
+ else
+ more_except = except_op_queue_.has_operation(descriptor);
+
+ if (events[i].events & (POLLIN | POLLERR | POLLHUP))
+ more_reads = read_op_queue_.perform_operation(descriptor, ec);
+ else
+ more_reads = read_op_queue_.has_operation(descriptor);
+
+ if (events[i].events & (POLLOUT | POLLERR | POLLHUP))
+ more_writes = write_op_queue_.perform_operation(descriptor, ec);
+ else
+ more_writes = write_op_queue_.has_operation(descriptor);
+
+ if ((events[i].events & (POLLERR | POLLHUP)) != 0
+ && (events[i].events & ~(POLLERR | POLLHUP)) == 0
+ && !more_except && !more_reads && !more_writes)
+ {
+ // If we have an event and no operations associated with the
+ // descriptor then we need to delete the descriptor from /dev/poll.
+ // The poll operation can produce POLLHUP or POLLERR events when there
+ // is no operation pending, so if we do not remove the descriptor we
+ // can end up in a tight polling loop.
+ ::pollfd ev = { 0 };
+ ev.fd = descriptor;
+ ev.events = POLLREMOVE;
+ ev.revents = 0;
+ ::write(dev_poll_fd_, &ev, sizeof(ev));
+ }
+ else
+ {
+ ::pollfd ev = { 0 };
+ ev.fd = descriptor;
+ ev.events = POLLERR | POLLHUP;
+ if (more_reads)
+ ev.events |= POLLIN;
+ if (more_writes)
+ ev.events |= POLLOUT;
+ if (more_except)
+ ev.events |= POLLPRI;
+ ev.revents = 0;
+ int result = ::write(dev_poll_fd_, &ev, sizeof(ev));
+ if (result != sizeof(ev))
+ {
+ ec = boost::system::error_code(errno,
+ boost::asio::error::get_system_category());
+ read_op_queue_.perform_all_operations(descriptor, ec);
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ except_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+ }
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ timer_queues_[i]->dispatch_timers();
+ timer_queues_[i]->dispatch_cancellations();
+ }
+
+ // Issue any pending cancellations.
+ for (size_t i = 0; i < pending_cancellations_.size(); ++i)
+ cancel_ops_unlocked(pending_cancellations_[i]);
+ pending_cancellations_.clear();
+
+ complete_operations_and_timers(lock);
+ }
+
+ // Run the select loop in the thread.
+ void run_thread()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ while (!stop_thread_)
+ {
+ lock.unlock();
+ run(true);
+ lock.lock();
+ }
+ }
+
+ // Entry point for the select loop thread.
+ static void call_run_thread(dev_poll_reactor* reactor)
+ {
+ reactor->run_thread();
+ }
+
+ // Interrupt the select loop.
+ void interrupt()
+ {
+ interrupter_.interrupt();
+ }
+
+ // Create the /dev/poll file descriptor. Throws an exception if the descriptor
+ // cannot be created.
+ static int do_dev_poll_create()
+ {
+ int fd = ::open("/dev/poll", O_RDWR);
+ if (fd == -1)
+ {
+ boost::throw_exception(
+ boost::system::system_error(
+ boost::system::error_code(errno,
+ boost::asio::error::get_system_category()),
+ "/dev/poll"));
+ }
+ return fd;
+ }
+
+ // Check if all timer queues are empty.
+ bool all_timer_queues_are_empty() const
+ {
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ if (!timer_queues_[i]->empty())
+ return false;
+ return true;
+ }
+
+ // Get the timeout value for the /dev/poll DP_POLL operation. The timeout
+ // value is returned as a number of milliseconds. A return value of -1
+ // indicates that the poll should block indefinitely.
+ int get_timeout()
+ {
+ if (all_timer_queues_are_empty())
+ return -1;
+
+ // By default we will wait no longer than 5 minutes. This will ensure that
+ // any changes to the system clock are detected after no longer than this.
+ boost::posix_time::time_duration minimum_wait_duration
+ = boost::posix_time::minutes(5);
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ boost::posix_time::time_duration wait_duration
+ = timer_queues_[i]->wait_duration();
+ if (wait_duration < minimum_wait_duration)
+ minimum_wait_duration = wait_duration;
+ }
+
+ if (minimum_wait_duration > boost::posix_time::time_duration())
+ {
+ int milliseconds = minimum_wait_duration.total_milliseconds();
+ return milliseconds > 0 ? milliseconds : 1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ // Cancel all operations associated with the given descriptor. The do_cancel
+ // function of the handler objects will be invoked. This function does not
+ // acquire the dev_poll_reactor's mutex.
+ void cancel_ops_unlocked(socket_type descriptor)
+ {
+ bool interrupt = read_op_queue_.cancel_operations(descriptor);
+ interrupt = write_op_queue_.cancel_operations(descriptor) || interrupt;
+ interrupt = except_op_queue_.cancel_operations(descriptor) || interrupt;
+ if (interrupt)
+ interrupter_.interrupt();
+ }
+
+ // Clean up operations and timers. We must not hold the lock since the
+ // destructors may make calls back into this reactor. We make a copy of the
+ // vector of timer queues since the original may be modified while the lock
+ // is not held.
+ void complete_operations_and_timers(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ timer_queues_for_cleanup_ = timer_queues_;
+ lock.unlock();
+ read_op_queue_.complete_operations();
+ write_op_queue_.complete_operations();
+ except_op_queue_.complete_operations();
+ for (std::size_t i = 0; i < timer_queues_for_cleanup_.size(); ++i)
+ timer_queues_for_cleanup_[i]->complete_timers();
+ }
+
+ // Add a pending event entry for the given descriptor.
+ ::pollfd& add_pending_event_change(int descriptor)
+ {
+ hash_map<int, std::size_t>::iterator iter
+ = pending_event_change_index_.find(descriptor);
+ if (iter == pending_event_change_index_.end())
+ {
+ std::size_t index = pending_event_changes_.size();
+ pending_event_changes_.reserve(pending_event_changes_.size() + 1);
+ pending_event_change_index_.insert(std::make_pair(descriptor, index));
+ pending_event_changes_.push_back(::pollfd());
+ pending_event_changes_[index].fd = descriptor;
+ pending_event_changes_[index].revents = 0;
+ return pending_event_changes_[index];
+ }
+ else
+ {
+ return pending_event_changes_[iter->second];
+ }
+ }
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // The /dev/poll file descriptor.
+ int dev_poll_fd_;
+
+ // Vector of /dev/poll events waiting to be written to the descriptor.
+ std::vector< ::pollfd> pending_event_changes_;
+
+ // Hash map to associate a descriptor with a pending event change index.
+ hash_map<int, std::size_t> pending_event_change_index_;
+
+ // Whether the DP_POLL operation is currently in progress
+ bool wait_in_progress_;
+
+ // The interrupter is used to break a blocking DP_POLL operation.
+ select_interrupter interrupter_;
+
+ // The queue of read operations.
+ reactor_op_queue<socket_type> read_op_queue_;
+
+ // The queue of write operations.
+ reactor_op_queue<socket_type> write_op_queue_;
+
+ // The queue of except operations.
+ reactor_op_queue<socket_type> except_op_queue_;
+
+ // The timer queues.
+ std::vector<timer_queue_base*> timer_queues_;
+
+ // A copy of the timer queues, used when cleaning up timers. The copy is
+ // stored as a class data member to avoid unnecessary memory allocation.
+ std::vector<timer_queue_base*> timer_queues_for_cleanup_;
+
+ // The descriptors that are pending cancellation.
+ std::vector<socket_type> pending_cancellations_;
+
+ // Does the reactor loop thread need to stop.
+ bool stop_thread_;
+
+ // The thread that is running the reactor loop.
+ boost::asio::detail::thread* thread_;
+
+ // Whether the service has been shut down.
+ bool shutdown_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_DEV_POLL)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/dev_poll_reactor_fwd.hpp b/3rdParty/Boost/boost/asio/detail/dev_poll_reactor_fwd.hpp
new file mode 100644
index 0000000..3308575
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/dev_poll_reactor_fwd.hpp
@@ -0,0 +1,42 @@
+//
+// dev_poll_reactor_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_FWD_HPP
+#define BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_DEV_POLL)
+#if defined(__sun) // This service is only supported on Solaris.
+
+// Define this to indicate that /dev/poll is supported on the target platform.
+#define BOOST_ASIO_HAS_DEV_POLL 1
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class dev_poll_reactor;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(__sun)
+#endif // !defined(BOOST_ASIO_DISABLE_DEV_POLL)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_DEV_POLL_REACTOR_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/epoll_reactor.hpp b/3rdParty/Boost/boost/asio/detail/epoll_reactor.hpp
new file mode 100644
index 0000000..2770c6a
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/epoll_reactor.hpp
@@ -0,0 +1,733 @@
+//
+// epoll_reactor.hpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_EPOLL_REACTOR_HPP
+#define BOOST_ASIO_DETAIL_EPOLL_REACTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/epoll_reactor_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_EPOLL)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <vector>
+#include <sys/epoll.h>
+#include <boost/config.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/hash_map.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/task_io_service.hpp>
+#include <boost/asio/detail/thread.hpp>
+#include <boost/asio/detail/reactor_op_queue.hpp>
+#include <boost/asio/detail/select_interrupter.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/signal_blocker.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/timer_queue.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class epoll_reactor
+ : public boost::asio::detail::service_base<epoll_reactor<Own_Thread> >
+{
+public:
+ // Per-descriptor data.
+ struct per_descriptor_data
+ {
+ bool allow_speculative_read;
+ bool allow_speculative_write;
+ };
+
+ // Constructor.
+ epoll_reactor(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<epoll_reactor<Own_Thread> >(io_service),
+ mutex_(),
+ epoll_fd_(do_epoll_create()),
+ wait_in_progress_(false),
+ interrupter_(),
+ read_op_queue_(),
+ write_op_queue_(),
+ except_op_queue_(),
+ pending_cancellations_(),
+ stop_thread_(false),
+ thread_(0),
+ shutdown_(false),
+ need_epoll_wait_(true)
+ {
+ // Start the reactor's internal thread only if needed.
+ if (Own_Thread)
+ {
+ boost::asio::detail::signal_blocker sb;
+ thread_ = new boost::asio::detail::thread(
+ bind_handler(&epoll_reactor::call_run_thread, this));
+ }
+
+ // Add the interrupter's descriptor to epoll.
+ epoll_event ev = { 0, { 0 } };
+ ev.events = EPOLLIN | EPOLLERR;
+ ev.data.fd = interrupter_.read_descriptor();
+ epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev);
+ }
+
+ // Destructor.
+ ~epoll_reactor()
+ {
+ shutdown_service();
+ close(epoll_fd_);
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ shutdown_ = true;
+ stop_thread_ = true;
+ lock.unlock();
+
+ if (thread_)
+ {
+ interrupter_.interrupt();
+ thread_->join();
+ delete thread_;
+ thread_ = 0;
+ }
+
+ read_op_queue_.destroy_operations();
+ write_op_queue_.destroy_operations();
+ except_op_queue_.destroy_operations();
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->destroy_timers();
+ timer_queues_.clear();
+ }
+
+ // Initialise the task, but only if the reactor is not in its own thread.
+ void init_task()
+ {
+ if (!Own_Thread)
+ {
+ typedef task_io_service<epoll_reactor<Own_Thread> > task_io_service_type;
+ use_service<task_io_service_type>(this->get_io_service()).init_task();
+ }
+ }
+
+ // Register a socket with the reactor. Returns 0 on success, system error
+ // code on failure.
+ int register_descriptor(socket_type descriptor,
+ per_descriptor_data& descriptor_data)
+ {
+ // No need to lock according to epoll documentation.
+
+ descriptor_data.allow_speculative_read = true;
+ descriptor_data.allow_speculative_write = true;
+
+ epoll_event ev = { 0, { 0 } };
+ ev.events = 0;
+ ev.data.fd = descriptor;
+ int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
+ if (result != 0)
+ return errno;
+ return 0;
+ }
+
+ // Start a new read operation. The handler object will be invoked when the
+ // given descriptor is ready to be read, or an error has occurred.
+ template <typename Handler>
+ void start_read_op(socket_type descriptor,
+ per_descriptor_data& descriptor_data,
+ Handler handler, bool allow_speculative_read = true)
+ {
+ if (allow_speculative_read && descriptor_data.allow_speculative_read)
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+
+ // We only get one shot at a speculative read in this function.
+ allow_speculative_read = false;
+ }
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (!allow_speculative_read)
+ need_epoll_wait_ = true;
+ else if (!read_op_queue_.has_operation(descriptor))
+ {
+ // Speculative reads are ok as there are no queued read operations.
+ descriptor_data.allow_speculative_read = true;
+
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+ }
+
+ // Speculative reads are not ok as there will be queued read operations.
+ descriptor_data.allow_speculative_read = false;
+
+ if (read_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ epoll_event ev = { 0, { 0 } };
+ ev.events = EPOLLIN | EPOLLERR | EPOLLHUP;
+ if (write_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLOUT;
+ if (except_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLPRI;
+ ev.data.fd = descriptor;
+
+ int result = epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
+ if (result != 0 && errno == ENOENT)
+ result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
+ if (result != 0)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ read_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // given descriptor is ready to be written, or an error has occurred.
+ template <typename Handler>
+ void start_write_op(socket_type descriptor,
+ per_descriptor_data& descriptor_data,
+ Handler handler, bool allow_speculative_write = true)
+ {
+ if (allow_speculative_write && descriptor_data.allow_speculative_write)
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+
+ // We only get one shot at a speculative write in this function.
+ allow_speculative_write = false;
+ }
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (!allow_speculative_write)
+ need_epoll_wait_ = true;
+ else if (!write_op_queue_.has_operation(descriptor))
+ {
+ // Speculative writes are ok as there are no queued write operations.
+ descriptor_data.allow_speculative_write = true;
+
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+ }
+
+ // Speculative writes are not ok as there will be queued write operations.
+ descriptor_data.allow_speculative_write = false;
+
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ epoll_event ev = { 0, { 0 } };
+ ev.events = EPOLLOUT | EPOLLERR | EPOLLHUP;
+ if (read_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLIN;
+ if (except_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLPRI;
+ ev.data.fd = descriptor;
+
+ int result = epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
+ if (result != 0 && errno == ENOENT)
+ result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
+ if (result != 0)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Start a new exception operation. The handler object will be invoked when
+ // the given descriptor has exception information, or an error has occurred.
+ template <typename Handler>
+ void start_except_op(socket_type descriptor,
+ per_descriptor_data&, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (except_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ epoll_event ev = { 0, { 0 } };
+ ev.events = EPOLLPRI | EPOLLERR | EPOLLHUP;
+ if (read_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLIN;
+ if (write_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLOUT;
+ ev.data.fd = descriptor;
+
+ int result = epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
+ if (result != 0 && errno == ENOENT)
+ result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
+ if (result != 0)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ except_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // given descriptor is ready for writing or an error has occurred. Speculative
+ // writes are not allowed.
+ template <typename Handler>
+ void start_connect_op(socket_type descriptor,
+ per_descriptor_data& descriptor_data, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ // Speculative writes are not ok as there will be queued write operations.
+ descriptor_data.allow_speculative_write = false;
+
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ epoll_event ev = { 0, { 0 } };
+ ev.events = EPOLLOUT | EPOLLERR | EPOLLHUP;
+ if (read_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLIN;
+ if (except_op_queue_.has_operation(descriptor))
+ ev.events |= EPOLLPRI;
+ ev.data.fd = descriptor;
+
+ int result = epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
+ if (result != 0 && errno == ENOENT)
+ result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
+ if (result != 0)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Cancel all operations associated with the given descriptor. The
+ // handlers associated with the descriptor will be invoked with the
+ // operation_aborted error.
+ void cancel_ops(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Cancel any operations that are running against the descriptor and remove
+ // its registration from the reactor.
+ void close_descriptor(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Remove the descriptor from epoll.
+ epoll_event ev = { 0, { 0 } };
+ epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
+
+ // Cancel any outstanding operations associated with the descriptor.
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Add a new timer queue to the reactor.
+ template <typename Time_Traits>
+ void add_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ timer_queues_.push_back(&timer_queue);
+ }
+
+ // Remove a timer queue from the reactor.
+ template <typename Time_Traits>
+ void remove_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ if (timer_queues_[i] == &timer_queue)
+ {
+ timer_queues_.erase(timer_queues_.begin() + i);
+ return;
+ }
+ }
+ }
+
+ // Schedule a timer in the given timer queue to expire at the specified
+ // absolute time. The handler object will be invoked when the timer expires.
+ template <typename Time_Traits, typename Handler>
+ void schedule_timer(timer_queue<Time_Traits>& timer_queue,
+ const typename Time_Traits::time_type& time, Handler handler, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (timer_queue.enqueue_timer(time, handler, token))
+ interrupter_.interrupt();
+ }
+
+ // Cancel the timer associated with the given token. Returns the number of
+ // handlers that have been posted or dispatched.
+ template <typename Time_Traits>
+ std::size_t cancel_timer(timer_queue<Time_Traits>& timer_queue, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ std::size_t n = timer_queue.cancel_timer(token);
+ if (n > 0)
+ interrupter_.interrupt();
+ return n;
+ }
+
+private:
+ friend class task_io_service<epoll_reactor<Own_Thread> >;
+
+ // Run epoll once until interrupted or events are ready to be dispatched.
+ void run(bool block)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Dispatch any operation cancellations that were made while the select
+ // loop was not running.
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->dispatch_cancellations();
+
+ // Check if the thread is supposed to stop.
+ if (stop_thread_)
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // We can return immediately if there's no work to do and the reactor is
+ // not supposed to block.
+ if (!block && read_op_queue_.empty() && write_op_queue_.empty()
+ && except_op_queue_.empty() && all_timer_queues_are_empty())
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ int timeout = block ? get_timeout() : 0;
+ wait_in_progress_ = true;
+ lock.unlock();
+
+ // Block on the epoll descriptor.
+ epoll_event events[128];
+ int num_events = (block || need_epoll_wait_)
+ ? epoll_wait(epoll_fd_, events, 128, timeout)
+ : 0;
+
+ lock.lock();
+ wait_in_progress_ = false;
+
+ // Block signals while performing operations.
+ boost::asio::detail::signal_blocker sb;
+
+ // Dispatch the waiting events.
+ for (int i = 0; i < num_events; ++i)
+ {
+ int descriptor = events[i].data.fd;
+ if (descriptor == interrupter_.read_descriptor())
+ {
+ interrupter_.reset();
+ }
+ else
+ {
+ bool more_reads = false;
+ bool more_writes = false;
+ bool more_except = false;
+ boost::system::error_code ec;
+
+ // Exception operations must be processed first to ensure that any
+ // out-of-band data is read before normal data.
+ if (events[i].events & (EPOLLPRI | EPOLLERR | EPOLLHUP))
+ more_except = except_op_queue_.perform_operation(descriptor, ec);
+ else
+ more_except = except_op_queue_.has_operation(descriptor);
+
+ if (events[i].events & (EPOLLIN | EPOLLERR | EPOLLHUP))
+ more_reads = read_op_queue_.perform_operation(descriptor, ec);
+ else
+ more_reads = read_op_queue_.has_operation(descriptor);
+
+ if (events[i].events & (EPOLLOUT | EPOLLERR | EPOLLHUP))
+ more_writes = write_op_queue_.perform_operation(descriptor, ec);
+ else
+ more_writes = write_op_queue_.has_operation(descriptor);
+
+ if ((events[i].events & (EPOLLERR | EPOLLHUP)) != 0
+ && (events[i].events & ~(EPOLLERR | EPOLLHUP)) == 0
+ && !more_except && !more_reads && !more_writes)
+ {
+ // If we have an event and no operations associated with the
+ // descriptor then we need to delete the descriptor from epoll. The
+ // epoll_wait system call can produce EPOLLHUP or EPOLLERR events
+ // when there is no operation pending, so if we do not remove the
+ // descriptor we can end up in a tight loop of repeated
+ // calls to epoll_wait.
+ epoll_event ev = { 0, { 0 } };
+ epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
+ }
+ else
+ {
+ epoll_event ev = { 0, { 0 } };
+ ev.events = EPOLLERR | EPOLLHUP;
+ if (more_reads)
+ ev.events |= EPOLLIN;
+ if (more_writes)
+ ev.events |= EPOLLOUT;
+ if (more_except)
+ ev.events |= EPOLLPRI;
+ ev.data.fd = descriptor;
+ int result = epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
+ if (result != 0 && errno == ENOENT)
+ result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
+ if (result != 0)
+ {
+ ec = boost::system::error_code(errno,
+ boost::asio::error::get_system_category());
+ read_op_queue_.perform_all_operations(descriptor, ec);
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ except_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+ }
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ timer_queues_[i]->dispatch_timers();
+ timer_queues_[i]->dispatch_cancellations();
+ }
+
+ // Issue any pending cancellations.
+ for (size_t i = 0; i < pending_cancellations_.size(); ++i)
+ cancel_ops_unlocked(pending_cancellations_[i]);
+ pending_cancellations_.clear();
+
+ // Determine whether epoll_wait should be called when the reactor next runs.
+ need_epoll_wait_ = !read_op_queue_.empty()
+ || !write_op_queue_.empty() || !except_op_queue_.empty();
+
+ complete_operations_and_timers(lock);
+ }
+
+ // Run the select loop in the thread.
+ void run_thread()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ while (!stop_thread_)
+ {
+ lock.unlock();
+ run(true);
+ lock.lock();
+ }
+ }
+
+ // Entry point for the select loop thread.
+ static void call_run_thread(epoll_reactor* reactor)
+ {
+ reactor->run_thread();
+ }
+
+ // Interrupt the select loop.
+ void interrupt()
+ {
+ interrupter_.interrupt();
+ }
+
+ // The hint to pass to epoll_create to size its data structures.
+ enum { epoll_size = 20000 };
+
+ // Create the epoll file descriptor. Throws an exception if the descriptor
+ // cannot be created.
+ static int do_epoll_create()
+ {
+ int fd = epoll_create(epoll_size);
+ if (fd == -1)
+ {
+ boost::throw_exception(
+ boost::system::system_error(
+ boost::system::error_code(errno,
+ boost::asio::error::get_system_category()),
+ "epoll"));
+ }
+ return fd;
+ }
+
+ // Check if all timer queues are empty.
+ bool all_timer_queues_are_empty() const
+ {
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ if (!timer_queues_[i]->empty())
+ return false;
+ return true;
+ }
+
+ // Get the timeout value for the epoll_wait call. The timeout value is
+ // returned as a number of milliseconds. A return value of -1 indicates
+ // that epoll_wait should block indefinitely.
+ int get_timeout()
+ {
+ if (all_timer_queues_are_empty())
+ return -1;
+
+ // By default we will wait no longer than 5 minutes. This will ensure that
+ // any changes to the system clock are detected after no longer than this.
+ boost::posix_time::time_duration minimum_wait_duration
+ = boost::posix_time::minutes(5);
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ boost::posix_time::time_duration wait_duration
+ = timer_queues_[i]->wait_duration();
+ if (wait_duration < minimum_wait_duration)
+ minimum_wait_duration = wait_duration;
+ }
+
+ if (minimum_wait_duration > boost::posix_time::time_duration())
+ {
+ int milliseconds = minimum_wait_duration.total_milliseconds();
+ return milliseconds > 0 ? milliseconds : 1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ // Cancel all operations associated with the given descriptor. The do_cancel
+ // function of the handler objects will be invoked. This function does not
+ // acquire the epoll_reactor's mutex.
+ void cancel_ops_unlocked(socket_type descriptor)
+ {
+ bool interrupt = read_op_queue_.cancel_operations(descriptor);
+ interrupt = write_op_queue_.cancel_operations(descriptor) || interrupt;
+ interrupt = except_op_queue_.cancel_operations(descriptor) || interrupt;
+ if (interrupt)
+ interrupter_.interrupt();
+ }
+
+ // Clean up operations and timers. We must not hold the lock since the
+ // destructors may make calls back into this reactor. We make a copy of the
+ // vector of timer queues since the original may be modified while the lock
+ // is not held.
+ void complete_operations_and_timers(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ timer_queues_for_cleanup_ = timer_queues_;
+ lock.unlock();
+ read_op_queue_.complete_operations();
+ write_op_queue_.complete_operations();
+ except_op_queue_.complete_operations();
+ for (std::size_t i = 0; i < timer_queues_for_cleanup_.size(); ++i)
+ timer_queues_for_cleanup_[i]->complete_timers();
+ }
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // The epoll file descriptor.
+ int epoll_fd_;
+
+ // Whether the epoll_wait call is currently in progress
+ bool wait_in_progress_;
+
+ // The interrupter is used to break a blocking epoll_wait call.
+ select_interrupter interrupter_;
+
+ // The queue of read operations.
+ reactor_op_queue<socket_type> read_op_queue_;
+
+ // The queue of write operations.
+ reactor_op_queue<socket_type> write_op_queue_;
+
+ // The queue of except operations.
+ reactor_op_queue<socket_type> except_op_queue_;
+
+ // The timer queues.
+ std::vector<timer_queue_base*> timer_queues_;
+
+ // A copy of the timer queues, used when cleaning up timers. The copy is
+ // stored as a class data member to avoid unnecessary memory allocation.
+ std::vector<timer_queue_base*> timer_queues_for_cleanup_;
+
+ // The descriptors that are pending cancellation.
+ std::vector<socket_type> pending_cancellations_;
+
+ // Does the reactor loop thread need to stop.
+ bool stop_thread_;
+
+ // The thread that is running the reactor loop.
+ boost::asio::detail::thread* thread_;
+
+ // Whether the service has been shut down.
+ bool shutdown_;
+
+ // Whether we need to call epoll_wait the next time the reactor is run.
+ bool need_epoll_wait_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_EPOLL)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_EPOLL_REACTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/epoll_reactor_fwd.hpp b/3rdParty/Boost/boost/asio/detail/epoll_reactor_fwd.hpp
new file mode 100644
index 0000000..567a966
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/epoll_reactor_fwd.hpp
@@ -0,0 +1,49 @@
+//
+// epoll_reactor_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_EPOLL_REACTOR_FWD_HPP
+#define BOOST_ASIO_DETAIL_EPOLL_REACTOR_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_EPOLL)
+#if defined(__linux__) // This service is only supported on Linux.
+
+#include <boost/asio/detail/push_options.hpp>
+#include <linux/version.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION (2,5,45) // Only kernels >= 2.5.45.
+
+// Define this to indicate that epoll is supported on the target platform.
+#define BOOST_ASIO_HAS_EPOLL 1
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class epoll_reactor;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // LINUX_VERSION_CODE >= KERNEL_VERSION (2,5,45)
+#endif // defined(__linux__)
+#endif // !defined(BOOST_ASIO_DISABLE_EPOLL)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_EPOLL_REACTOR_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/event.hpp b/3rdParty/Boost/boost/asio/detail/event.hpp
new file mode 100644
index 0000000..67a0118
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/event.hpp
@@ -0,0 +1,52 @@
+//
+// event.hpp
+// ~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_EVENT_HPP
+#define BOOST_ASIO_DETAIL_EVENT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+# include <boost/asio/detail/null_event.hpp>
+#elif defined(BOOST_WINDOWS)
+# include <boost/asio/detail/win_event.hpp>
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/asio/detail/posix_event.hpp>
+#else
+# error Only Windows and POSIX are supported!
+#endif
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if !defined(BOOST_HAS_THREADS)
+typedef null_event event;
+#elif defined(BOOST_WINDOWS)
+typedef win_event event;
+#elif defined(BOOST_HAS_PTHREADS)
+typedef posix_event event;
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_EVENT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/eventfd_select_interrupter.hpp b/3rdParty/Boost/boost/asio/detail/eventfd_select_interrupter.hpp
new file mode 100644
index 0000000..cac8405
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/eventfd_select_interrupter.hpp
@@ -0,0 +1,157 @@
+//
+// eventfd_select_interrupter.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
+#define BOOST_ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(linux)
+# if !defined(BOOST_ASIO_DISABLE_EVENTFD)
+# include <linux/version.h>
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+# define BOOST_ASIO_HAS_EVENTFD
+# endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+# endif // !defined(BOOST_ASIO_DISABLE_EVENTFD)
+#endif // defined(linux)
+
+#if defined(BOOST_ASIO_HAS_EVENTFD)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <fcntl.h>
+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
+# include <asm/unistd.h>
+#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
+# include <sys/eventfd.h>
+#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class eventfd_select_interrupter
+{
+public:
+ // Constructor.
+ eventfd_select_interrupter()
+ {
+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
+ write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0);
+#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
+ write_descriptor_ = read_descriptor_ = ::eventfd(0, 0);
+#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
+ if (read_descriptor_ != -1)
+ {
+ ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
+ }
+ else
+ {
+ int pipe_fds[2];
+ if (pipe(pipe_fds) == 0)
+ {
+ read_descriptor_ = pipe_fds[0];
+ ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
+ write_descriptor_ = pipe_fds[1];
+ ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK);
+ }
+ else
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ boost::system::system_error e(ec, "eventfd_select_interrupter");
+ boost::throw_exception(e);
+ }
+ }
+ }
+
+ // Destructor.
+ ~eventfd_select_interrupter()
+ {
+ if (write_descriptor_ != -1 && write_descriptor_ != read_descriptor_)
+ ::close(write_descriptor_);
+ if (read_descriptor_ != -1)
+ ::close(read_descriptor_);
+ }
+
+ // Interrupt the select call.
+ void interrupt()
+ {
+ uint64_t counter(1UL);
+ int result = ::write(write_descriptor_, &counter, sizeof(uint64_t));
+ (void)result;
+ }
+
+ // Reset the select interrupt. Returns true if the call was interrupted.
+ bool reset()
+ {
+ if (write_descriptor_ == read_descriptor_)
+ {
+ // Only perform one read. The kernel maintains an atomic counter.
+ uint64_t counter(0);
+ int bytes_read = ::read(read_descriptor_, &counter, sizeof(uint64_t));
+ bool was_interrupted = (bytes_read > 0);
+ return was_interrupted;
+ }
+ else
+ {
+ // Clear all data from the pipe.
+ char data[1024];
+ int bytes_read = ::read(read_descriptor_, data, sizeof(data));
+ bool was_interrupted = (bytes_read > 0);
+ while (bytes_read == sizeof(data))
+ bytes_read = ::read(read_descriptor_, data, sizeof(data));
+ return was_interrupted;
+ }
+ }
+
+ // Get the read descriptor to be passed to select.
+ int read_descriptor() const
+ {
+ return read_descriptor_;
+ }
+
+private:
+ // The read end of a connection used to interrupt the select call. This file
+ // descriptor is passed to select such that when it is time to stop, a single
+ // 64bit value will be written on the other end of the connection and this
+ // descriptor will become readable.
+ int read_descriptor_;
+
+ // The write end of a connection used to interrupt the select call. A single
+ // 64bit non-zero value may be written to this to wake up the select which is
+ // waiting for the other end to become readable. This descriptor will only
+ // differ from the read descriptor when a pipe is used.
+ int write_descriptor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_EVENTFD)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/fd_set_adapter.hpp b/3rdParty/Boost/boost/asio/detail/fd_set_adapter.hpp
new file mode 100644
index 0000000..3fff01e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/fd_set_adapter.hpp
@@ -0,0 +1,43 @@
+//
+// fd_set_adapter.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_FD_SET_ADAPTER_HPP
+#define BOOST_ASIO_DETAIL_FD_SET_ADAPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/posix_fd_set_adapter.hpp>
+#include <boost/asio/detail/win_fd_set_adapter.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+typedef win_fd_set_adapter fd_set_adapter;
+#else
+typedef posix_fd_set_adapter fd_set_adapter;
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_FD_SET_ADAPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/handler_alloc_helpers.hpp b/3rdParty/Boost/boost/asio/detail/handler_alloc_helpers.hpp
new file mode 100644
index 0000000..bfc918b
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/handler_alloc_helpers.hpp
@@ -0,0 +1,258 @@
+//
+// handler_alloc_helpers.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
+#define BOOST_ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/handler_alloc_hook.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+// Calls to asio_handler_allocate and asio_handler_deallocate must be made from
+// a namespace that does not contain any overloads of these functions. The
+// boost_asio_handler_alloc_helpers namespace is defined here for that purpose.
+namespace boost_asio_handler_alloc_helpers {
+
+template <typename Handler>
+inline void* allocate(std::size_t s, Handler* h)
+{
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ return ::operator new(s);
+#else
+ using namespace boost::asio;
+ return asio_handler_allocate(s, h);
+#endif
+}
+
+template <typename Handler>
+inline void deallocate(void* p, std::size_t s, Handler* h)
+{
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ ::operator delete(p);
+#else
+ using namespace boost::asio;
+ asio_handler_deallocate(p, s, h);
+#endif
+}
+
+} // namespace boost_asio_handler_alloc_helpers
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Traits for handler allocation.
+template <typename Handler, typename Object>
+struct handler_alloc_traits
+{
+ typedef Handler handler_type;
+ typedef Object value_type;
+ typedef Object* pointer_type;
+ BOOST_STATIC_CONSTANT(std::size_t, value_size = sizeof(Object));
+};
+
+template <typename Alloc_Traits>
+class handler_ptr;
+
+// Helper class to provide RAII on uninitialised handler memory.
+template <typename Alloc_Traits>
+class raw_handler_ptr
+ : private noncopyable
+{
+public:
+ typedef typename Alloc_Traits::handler_type handler_type;
+ typedef typename Alloc_Traits::value_type value_type;
+ typedef typename Alloc_Traits::pointer_type pointer_type;
+ BOOST_STATIC_CONSTANT(std::size_t, value_size = Alloc_Traits::value_size);
+
+ // Constructor allocates the memory.
+ raw_handler_ptr(handler_type& handler)
+ : handler_(handler),
+ pointer_(static_cast<pointer_type>(
+ boost_asio_handler_alloc_helpers::allocate(value_size, &handler_)))
+ {
+ }
+
+ // Destructor automatically deallocates memory, unless it has been stolen by
+ // a handler_ptr object.
+ ~raw_handler_ptr()
+ {
+ if (pointer_)
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer_, value_size, &handler_);
+ }
+
+private:
+ friend class handler_ptr<Alloc_Traits>;
+ handler_type& handler_;
+ pointer_type pointer_;
+};
+
+// Helper class to provide RAII on uninitialised handler memory.
+template <typename Alloc_Traits>
+class handler_ptr
+ : private noncopyable
+{
+public:
+ typedef typename Alloc_Traits::handler_type handler_type;
+ typedef typename Alloc_Traits::value_type value_type;
+ typedef typename Alloc_Traits::pointer_type pointer_type;
+ BOOST_STATIC_CONSTANT(std::size_t, value_size = Alloc_Traits::value_size);
+ typedef raw_handler_ptr<Alloc_Traits> raw_ptr_type;
+
+ // Take ownership of existing memory.
+ handler_ptr(handler_type& handler, pointer_type pointer)
+ : handler_(handler),
+ pointer_(pointer)
+ {
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ handler_ptr(raw_ptr_type& raw_ptr)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type)
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1, a2))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2, typename Arg3>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2, Arg3& a3)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1, a2, a3))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2, Arg3& a3, Arg4& a4)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1, a2, a3, a4))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
+ typename Arg5>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2, Arg3& a3, Arg4& a4,
+ Arg5& a5)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1, a2, a3, a4, a5))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
+ typename Arg5, typename Arg6>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2, Arg3& a3, Arg4& a4,
+ Arg5& a5, Arg6& a6)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1, a2, a3, a4, a5, a6))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
+ typename Arg5, typename Arg6, typename Arg7>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2, Arg3& a3, Arg4& a4,
+ Arg5& a5, Arg6& a6, Arg7& a7)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(a1, a2, a3, a4, a5, a6, a7))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Construct object in raw memory and take ownership if construction succeeds.
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
+ typename Arg5, typename Arg6, typename Arg7, typename Arg8>
+ handler_ptr(raw_ptr_type& raw_ptr, Arg1& a1, Arg2& a2, Arg3& a3, Arg4& a4,
+ Arg5& a5, Arg6& a6, Arg7& a7, Arg8& a8)
+ : handler_(raw_ptr.handler_),
+ pointer_(new (raw_ptr.pointer_) value_type(
+ a1, a2, a3, a4, a5, a6, a7, a8))
+ {
+ raw_ptr.pointer_ = 0;
+ }
+
+ // Destructor automatically deallocates memory, unless it has been released.
+ ~handler_ptr()
+ {
+ reset();
+ }
+
+ // Get the memory.
+ pointer_type get() const
+ {
+ return pointer_;
+ }
+
+ // Release ownership of the memory.
+ pointer_type release()
+ {
+ pointer_type tmp = pointer_;
+ pointer_ = 0;
+ return tmp;
+ }
+
+ // Explicitly destroy and deallocate the memory.
+ void reset()
+ {
+ if (pointer_)
+ {
+ pointer_->value_type::~value_type();
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer_, value_size, &handler_);
+ pointer_ = 0;
+ }
+ }
+
+private:
+ handler_type& handler_;
+ pointer_type pointer_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/handler_base_from_member.hpp b/3rdParty/Boost/boost/asio/detail/handler_base_from_member.hpp
new file mode 100644
index 0000000..4bd95ed
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/handler_base_from_member.hpp
@@ -0,0 +1,78 @@
+//
+// handler_base_from_member.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_HANDLER_BASE_FROM_MEMBER_HPP
+#define BOOST_ASIO_DETAIL_HANDLER_BASE_FROM_MEMBER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Base class for classes that need a handler data member. Forwards the custom
+// allocation and invocation hooks to the contained handler.
+template <typename Handler>
+class handler_base_from_member
+{
+public:
+ handler_base_from_member(Handler handler)
+ : handler_(handler)
+ {
+ }
+
+//protected:
+ Handler handler_;
+
+protected:
+ // Protected destructor to prevent deletion through this type.
+ ~handler_base_from_member()
+ {
+ }
+};
+
+template <typename Handler>
+inline void* asio_handler_allocate(std::size_t size,
+ handler_base_from_member<Handler>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Handler>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ handler_base_from_member<Handler>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Handler>
+inline void asio_handler_invoke(const Function& function,
+ handler_base_from_member<Handler>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_HANDLER_BASE_FROM_MEMBER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/handler_invoke_helpers.hpp b/3rdParty/Boost/boost/asio/detail/handler_invoke_helpers.hpp
new file mode 100644
index 0000000..4da384a
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/handler_invoke_helpers.hpp
@@ -0,0 +1,47 @@
+//
+// handler_invoke_helpers.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
+#define BOOST_ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/handler_invoke_hook.hpp>
+
+// Calls to asio_handler_invoke must be made from a namespace that does not
+// contain overloads of this function. The boost_asio_handler_invoke_helpers
+// namespace is defined here for that purpose.
+namespace boost_asio_handler_invoke_helpers {
+
+template <typename Function, typename Context>
+inline void invoke(const Function& function, Context* context)
+{
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ Function tmp(function);
+ tmp();
+#else
+ using namespace boost::asio;
+ asio_handler_invoke(function, context);
+#endif
+}
+
+} // namespace boost_asio_handler_invoke_helpers
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/handler_queue.hpp b/3rdParty/Boost/boost/asio/detail/handler_queue.hpp
new file mode 100644
index 0000000..ccc1b0c
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/handler_queue.hpp
@@ -0,0 +1,231 @@
+//
+// handler_queue.hpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_HANDLER_QUEUE_HPP
+#define BOOST_ASIO_DETAIL_HANDLER_QUEUE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class handler_queue
+ : private noncopyable
+{
+public:
+ // Base class for handlers in the queue.
+ class handler
+ : private noncopyable
+ {
+ public:
+ void invoke()
+ {
+ invoke_func_(this);
+ }
+
+ void destroy()
+ {
+ destroy_func_(this);
+ }
+
+ protected:
+ typedef void (*invoke_func_type)(handler*);
+ typedef void (*destroy_func_type)(handler*);
+
+ handler(invoke_func_type invoke_func,
+ destroy_func_type destroy_func)
+ : next_(0),
+ invoke_func_(invoke_func),
+ destroy_func_(destroy_func)
+ {
+ }
+
+ ~handler()
+ {
+ }
+
+ private:
+ friend class handler_queue;
+ handler* next_;
+ invoke_func_type invoke_func_;
+ destroy_func_type destroy_func_;
+ };
+
+ // Smart point to manager handler lifetimes.
+ class scoped_ptr
+ : private noncopyable
+ {
+ public:
+ explicit scoped_ptr(handler* h)
+ : handler_(h)
+ {
+ }
+
+ ~scoped_ptr()
+ {
+ if (handler_)
+ handler_->destroy();
+ }
+
+ handler* get() const
+ {
+ return handler_;
+ }
+
+ handler* release()
+ {
+ handler* tmp = handler_;
+ handler_ = 0;
+ return tmp;
+ }
+
+ private:
+ handler* handler_;
+ };
+
+ // Constructor.
+ handler_queue()
+ : front_(0),
+ back_(0)
+ {
+ }
+
+ // Wrap a handler to be pushed into the queue.
+ template <typename Handler>
+ static handler* wrap(Handler h)
+ {
+ // Allocate and construct an object to wrap the handler.
+ typedef handler_wrapper<Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(h);
+ handler_ptr<alloc_traits> ptr(raw_ptr, h);
+ return ptr.release();
+ }
+
+ // Get the handler at the front of the queue.
+ handler* front()
+ {
+ return front_;
+ }
+
+ // Pop a handler from the front of the queue.
+ void pop()
+ {
+ if (front_)
+ {
+ handler* tmp = front_;
+ front_ = front_->next_;
+ if (front_ == 0)
+ back_ = 0;
+ tmp->next_= 0;
+ }
+ }
+
+ // Push a handler on to the back of the queue.
+ void push(handler* h)
+ {
+ h->next_ = 0;
+ if (back_)
+ {
+ back_->next_ = h;
+ back_ = h;
+ }
+ else
+ {
+ front_ = back_ = h;
+ }
+ }
+
+ // Whether the queue is empty.
+ bool empty() const
+ {
+ return front_ == 0;
+ }
+
+private:
+ // Template wrapper for handlers.
+ template <typename Handler>
+ class handler_wrapper
+ : public handler
+ {
+ public:
+ handler_wrapper(Handler h)
+ : handler(
+ &handler_wrapper<Handler>::do_call,
+ &handler_wrapper<Handler>::do_destroy),
+ handler_(h)
+ {
+ }
+
+ static void do_call(handler* base)
+ {
+ // Take ownership of the handler object.
+ typedef handler_wrapper<Handler> this_type;
+ this_type* h(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(h->handler_, h);
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(h->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Make the upcall.
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ }
+
+ static void do_destroy(handler* base)
+ {
+ // Take ownership of the handler object.
+ typedef handler_wrapper<Handler> this_type;
+ this_type* h(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(h->handler_, h);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(h->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ private:
+ Handler handler_;
+ };
+
+ // The front of the queue.
+ handler* front_;
+
+ // The back of the queue.
+ handler* back_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_HANDLER_QUEUE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/hash_map.hpp b/3rdParty/Boost/boost/asio/detail/hash_map.hpp
new file mode 100644
index 0000000..923ae57
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/hash_map.hpp
@@ -0,0 +1,292 @@
+//
+// hash_map.hpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_HASH_MAP_HPP
+#define BOOST_ASIO_DETAIL_HASH_MAP_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cassert>
+#include <list>
+#include <utility>
+#include <vector>
+#include <boost/functional/hash.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename T>
+inline std::size_t calculate_hash_value(const T& t)
+{
+ return boost::hash_value(t);
+}
+
+#if defined(_WIN64)
+inline std::size_t calculate_hash_value(SOCKET s)
+{
+ return static_cast<std::size_t>(s);
+}
+#endif // defined(_WIN64)
+
+// Note: assumes K and V are POD types.
+template <typename K, typename V>
+class hash_map
+ : private noncopyable
+{
+public:
+ // The type of a value in the map.
+ typedef std::pair<K, V> value_type;
+
+ // The type of a non-const iterator over the hash map.
+ typedef typename std::list<value_type>::iterator iterator;
+
+ // The type of a const iterator over the hash map.
+ typedef typename std::list<value_type>::const_iterator const_iterator;
+
+ // Constructor.
+ hash_map()
+ : size_(0)
+ {
+ rehash(hash_size(0));
+ }
+
+ // Get an iterator for the beginning of the map.
+ iterator begin()
+ {
+ return values_.begin();
+ }
+
+ // Get an iterator for the beginning of the map.
+ const_iterator begin() const
+ {
+ return values_.begin();
+ }
+
+ // Get an iterator for the end of the map.
+ iterator end()
+ {
+ return values_.end();
+ }
+
+ // Get an iterator for the end of the map.
+ const_iterator end() const
+ {
+ return values_.end();
+ }
+
+ // Check whether the map is empty.
+ bool empty() const
+ {
+ return values_.empty();
+ }
+
+ // Find an entry in the map.
+ iterator find(const K& k)
+ {
+ size_t bucket = calculate_hash_value(k) % buckets_.size();
+ iterator it = buckets_[bucket].first;
+ if (it == values_.end())
+ return values_.end();
+ iterator end = buckets_[bucket].last;
+ ++end;
+ while (it != end)
+ {
+ if (it->first == k)
+ return it;
+ ++it;
+ }
+ return values_.end();
+ }
+
+ // Find an entry in the map.
+ const_iterator find(const K& k) const
+ {
+ size_t bucket = calculate_hash_value(k) % buckets_.size();
+ const_iterator it = buckets_[bucket].first;
+ if (it == values_.end())
+ return it;
+ const_iterator end = buckets_[bucket].last;
+ ++end;
+ while (it != end)
+ {
+ if (it->first == k)
+ return it;
+ ++it;
+ }
+ return values_.end();
+ }
+
+ // Insert a new entry into the map.
+ std::pair<iterator, bool> insert(const value_type& v)
+ {
+ if (size_ + 1 >= buckets_.size())
+ rehash(hash_size(size_ + 1));
+ size_t bucket = calculate_hash_value(v.first) % buckets_.size();
+ iterator it = buckets_[bucket].first;
+ if (it == values_.end())
+ {
+ buckets_[bucket].first = buckets_[bucket].last =
+ values_insert(values_.end(), v);
+ ++size_;
+ return std::pair<iterator, bool>(buckets_[bucket].last, true);
+ }
+ iterator end = buckets_[bucket].last;
+ ++end;
+ while (it != end)
+ {
+ if (it->first == v.first)
+ return std::pair<iterator, bool>(it, false);
+ ++it;
+ }
+ buckets_[bucket].last = values_insert(end, v);
+ ++size_;
+ return std::pair<iterator, bool>(buckets_[bucket].last, true);
+ }
+
+ // Erase an entry from the map.
+ void erase(iterator it)
+ {
+ assert(it != values_.end());
+
+ size_t bucket = calculate_hash_value(it->first) % buckets_.size();
+ bool is_first = (it == buckets_[bucket].first);
+ bool is_last = (it == buckets_[bucket].last);
+ if (is_first && is_last)
+ buckets_[bucket].first = buckets_[bucket].last = values_.end();
+ else if (is_first)
+ ++buckets_[bucket].first;
+ else if (is_last)
+ --buckets_[bucket].last;
+
+ values_erase(it);
+ --size_;
+ }
+
+ // Remove all entries from the map.
+ void clear()
+ {
+ // Clear the values.
+ values_.clear();
+ size_ = 0;
+
+ // Initialise all buckets to empty.
+ for (size_t i = 0; i < buckets_.size(); ++i)
+ buckets_[i].first = buckets_[i].last = values_.end();
+ }
+
+private:
+ // Calculate the hash size for the specified number of elements.
+ static std::size_t hash_size(std::size_t num_elems)
+ {
+ static std::size_t sizes[] =
+ {
+#if defined(BOOST_ASIO_HASH_MAP_BUCKETS)
+ BOOST_ASIO_HASH_MAP_BUCKETS
+#else // BOOST_ASIO_HASH_MAP_BUCKETS
+ 3, 13, 23, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593,
+ 49157, 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469,
+ 12582917, 25165843
+#endif // BOOST_ASIO_HASH_MAP_BUCKETS
+ };
+ const std::size_t nth_size = sizeof(sizes) / sizeof(std::size_t) - 1;
+ for (std::size_t i = 0; i < nth_size; ++i)
+ if (num_elems < sizes[i])
+ return sizes[i];
+ return sizes[nth_size];
+ }
+
+ // Re-initialise the hash from the values already contained in the list.
+ void rehash(std::size_t num_buckets)
+ {
+ iterator end = values_.end();
+
+ // Update number of buckets and initialise all buckets to empty.
+ buckets_.resize(num_buckets);
+ for (std::size_t i = 0; i < buckets_.size(); ++i)
+ buckets_[i].first = buckets_[i].last = end;
+
+ // Put all values back into the hash.
+ iterator iter = values_.begin();
+ while (iter != end)
+ {
+ std::size_t bucket = calculate_hash_value(iter->first) % buckets_.size();
+ if (buckets_[bucket].last == end)
+ {
+ buckets_[bucket].first = buckets_[bucket].last = iter++;
+ }
+ else
+ {
+ values_.splice(++buckets_[bucket].last, values_, iter++);
+ --buckets_[bucket].last;
+ }
+ }
+ }
+
+ // Insert an element into the values list by splicing from the spares list,
+ // if a spare is available, and otherwise by inserting a new element.
+ iterator values_insert(iterator it, const value_type& v)
+ {
+ if (spares_.empty())
+ {
+ return values_.insert(it, v);
+ }
+ else
+ {
+ spares_.front() = v;
+ values_.splice(it, spares_, spares_.begin());
+ return --it;
+ }
+ }
+
+ // Erase an element from the values list by splicing it to the spares list.
+ void values_erase(iterator it)
+ {
+ *it = value_type();
+ spares_.splice(spares_.begin(), values_, it);
+ }
+
+ // The number of elements in the hash.
+ std::size_t size_;
+
+ // The list of all values in the hash map.
+ std::list<value_type> values_;
+
+ // The list of spare nodes waiting to be recycled. Assumes that POD types only
+ // are stored in the hash map.
+ std::list<value_type> spares_;
+
+ // The type for a bucket in the hash table.
+ struct bucket_type
+ {
+ iterator first;
+ iterator last;
+ };
+
+ // The buckets in the hash.
+ std::vector<bucket_type> buckets_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_HASH_MAP_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/indirect_handler_queue.hpp b/3rdParty/Boost/boost/asio/detail/indirect_handler_queue.hpp
new file mode 100644
index 0000000..2775078
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/indirect_handler_queue.hpp
@@ -0,0 +1,293 @@
+//
+// indirect_handler_queue.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_INDIRECT_HANDLER_QUEUE_HPP
+#define BOOST_ASIO_DETAIL_INDIRECT_HANDLER_QUEUE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1310)
+extern "C" void _ReadWriteBarrier();
+# pragma intrinsic(_ReadWriteBarrier)
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1310)
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class indirect_handler_queue
+ : private noncopyable
+{
+public:
+ class handler;
+
+ // Element for a node in the queue.
+ class node
+ {
+ public:
+ node()
+ : version_(0),
+ handler_(0),
+ next_(0)
+ {
+ }
+
+ private:
+ friend class indirect_handler_queue;
+ unsigned long version_;
+ handler* handler_;
+ node* next_;
+ };
+
+ // Base class for handlers in the queue.
+ class handler
+ : private noncopyable
+ {
+ public:
+ void invoke()
+ {
+ invoke_func_(this);
+ }
+
+ void destroy()
+ {
+ destroy_func_(this);
+ }
+
+ protected:
+ typedef void (*invoke_func_type)(handler*);
+ typedef void (*destroy_func_type)(handler*);
+
+ handler(invoke_func_type invoke_func,
+ destroy_func_type destroy_func)
+ : node_(new node),
+ invoke_func_(invoke_func),
+ destroy_func_(destroy_func)
+ {
+ }
+
+ ~handler()
+ {
+ if (node_)
+ delete node_;
+ }
+
+ private:
+ friend class indirect_handler_queue;
+ node* node_;
+ invoke_func_type invoke_func_;
+ destroy_func_type destroy_func_;
+ };
+
+ // Smart point to manager handler lifetimes.
+ class scoped_ptr
+ : private noncopyable
+ {
+ public:
+ explicit scoped_ptr(handler* h)
+ : handler_(h)
+ {
+ }
+
+ ~scoped_ptr()
+ {
+ if (handler_)
+ handler_->destroy();
+ }
+
+ handler* get() const
+ {
+ return handler_;
+ }
+
+ handler* release()
+ {
+ handler* tmp = handler_;
+ handler_ = 0;
+ return tmp;
+ }
+
+ private:
+ handler* handler_;
+ };
+
+ // Constructor.
+ indirect_handler_queue()
+ : front_(new node),
+ back_(front_),
+ next_version_(1)
+ {
+ }
+
+ // Destructor.
+ ~indirect_handler_queue()
+ {
+ while (front_)
+ {
+ node* tmp = front_;
+ front_ = front_->next_;
+ delete tmp;
+ }
+ }
+
+ // Wrap a handler to be pushed into the queue.
+ template <typename Handler>
+ static handler* wrap(Handler h)
+ {
+ // Allocate and construct an object to wrap the handler.
+ typedef handler_wrapper<Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(h);
+ handler_ptr<alloc_traits> ptr(raw_ptr, h);
+ return ptr.release();
+ }
+
+ // Determine whether the queue has something ready to pop.
+ bool poppable()
+ {
+ return front_->next_ != 0;
+ }
+
+ // The version number at the front of the queue.
+ unsigned long front_version()
+ {
+ return front_->version_;
+ }
+
+ // The version number at the back of the queue.
+ unsigned long back_version()
+ {
+ return back_->version_;
+ }
+
+ // Pop a handler from the front of the queue.
+ handler* pop()
+ {
+ node* n = front_;
+ node* new_front = n->next_;
+ if (new_front)
+ {
+ handler* h = new_front->handler_;
+ h->node_ = n;
+ new_front->handler_ = 0;
+ front_ = new_front;
+ return h;
+ }
+ return 0;
+ }
+
+ // Push a handler on to the back of the queue.
+ void push(handler* h)
+ {
+ node* n = h->node_;
+ h->node_ = 0;
+ n->version_ = next_version_;
+ next_version_ += 2;
+ n->handler_ = h;
+ n->next_ = 0;
+ memory_barrier();
+ back_->next_ = n;
+ back_ = n;
+ }
+
+private:
+ // Template wrapper for handlers.
+ template <typename Handler>
+ class handler_wrapper
+ : public handler
+ {
+ public:
+ handler_wrapper(Handler h)
+ : handler(
+ &handler_wrapper<Handler>::do_call,
+ &handler_wrapper<Handler>::do_destroy),
+ handler_(h)
+ {
+ }
+
+ static void do_call(handler* base)
+ {
+ // Take ownership of the handler object.
+ typedef handler_wrapper<Handler> this_type;
+ this_type* h(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(h->handler_, h);
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(h->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Make the upcall.
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ }
+
+ static void do_destroy(handler* base)
+ {
+ // Take ownership of the handler object.
+ typedef handler_wrapper<Handler> this_type;
+ this_type* h(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(h->handler_, h);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(h->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ private:
+ Handler handler_;
+ };
+
+ // Helper function to create a memory barrier.
+ static void memory_barrier()
+ {
+#if defined(_GLIBCXX_WRITE_MEM_BARRIER)
+ _GLIBCXX_WRITE_MEM_BARRIER;
+#elif defined(_MSC_VER) && (_MSC_VER >= 1310)
+ _ReadWriteBarrier();
+#else
+# error memory barrier required
+#endif
+ }
+
+ // The front of the queue.
+ node* front_;
+
+ // The back of the queue.
+ node* back_;
+
+ // The next version counter to be assigned to a node.
+ unsigned long next_version_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_INDIRECT_HANDLER_QUEUE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/io_control.hpp b/3rdParty/Boost/boost/asio/detail/io_control.hpp
new file mode 100644
index 0000000..6730dc3
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/io_control.hpp
@@ -0,0 +1,139 @@
+//
+// io_control.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_IO_CONTROL_HPP
+#define BOOST_ASIO_DETAIL_IO_CONTROL_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+namespace io_control {
+
+// IO control command for non-blocking I/O.
+class non_blocking_io
+{
+public:
+ // Default constructor.
+ non_blocking_io()
+ : value_(0)
+ {
+ }
+
+ // Construct with a specific command value.
+ non_blocking_io(bool value)
+ : value_(value ? 1 : 0)
+ {
+ }
+
+ // Get the name of the IO control command.
+ int name() const
+ {
+ return FIONBIO;
+ }
+
+ // Set the value of the I/O control command.
+ void set(bool value)
+ {
+ value_ = value ? 1 : 0;
+ }
+
+ // Get the current value of the I/O control command.
+ bool get() const
+ {
+ return value_ != 0;
+ }
+
+ // Get the address of the command data.
+ detail::ioctl_arg_type* data()
+ {
+ return &value_;
+ }
+
+ // Get the address of the command data.
+ const detail::ioctl_arg_type* data() const
+ {
+ return &value_;
+ }
+
+private:
+ detail::ioctl_arg_type value_;
+};
+
+// I/O control command for getting number of bytes available.
+class bytes_readable
+{
+public:
+ // Default constructor.
+ bytes_readable()
+ : value_(0)
+ {
+ }
+
+ // Construct with a specific command value.
+ bytes_readable(std::size_t value)
+ : value_(static_cast<detail::ioctl_arg_type>(value))
+ {
+ }
+
+ // Get the name of the IO control command.
+ int name() const
+ {
+ return FIONREAD;
+ }
+
+ // Set the value of the I/O control command.
+ void set(std::size_t value)
+ {
+ value_ = static_cast<detail::ioctl_arg_type>(value);
+ }
+
+ // Get the current value of the I/O control command.
+ std::size_t get() const
+ {
+ return static_cast<std::size_t>(value_);
+ }
+
+ // Get the address of the command data.
+ detail::ioctl_arg_type* data()
+ {
+ return &value_;
+ }
+
+ // Get the address of the command data.
+ const detail::ioctl_arg_type* data() const
+ {
+ return &value_;
+ }
+
+private:
+ detail::ioctl_arg_type value_;
+};
+
+} // namespace io_control
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_IO_CONTROL_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/kqueue_reactor.hpp b/3rdParty/Boost/boost/asio/detail/kqueue_reactor.hpp
new file mode 100644
index 0000000..179b7d4
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/kqueue_reactor.hpp
@@ -0,0 +1,714 @@
+//
+// kqueue_reactor.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_KQUEUE_REACTOR_HPP
+#define BOOST_ASIO_DETAIL_KQUEUE_REACTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/kqueue_reactor_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_KQUEUE)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <vector>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/time.h>
+#include <boost/config.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/task_io_service.hpp>
+#include <boost/asio/detail/thread.hpp>
+#include <boost/asio/detail/reactor_op_queue.hpp>
+#include <boost/asio/detail/select_interrupter.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/signal_blocker.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/timer_queue.hpp>
+
+// Older versions of Mac OS X may not define EV_OOBAND.
+#if !defined(EV_OOBAND)
+# define EV_OOBAND EV_FLAG1
+#endif // !defined(EV_OOBAND)
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class kqueue_reactor
+ : public boost::asio::detail::service_base<kqueue_reactor<Own_Thread> >
+{
+public:
+ // Per-descriptor data.
+ struct per_descriptor_data
+ {
+ bool allow_speculative_read;
+ bool allow_speculative_write;
+ };
+
+ // Constructor.
+ kqueue_reactor(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ kqueue_reactor<Own_Thread> >(io_service),
+ mutex_(),
+ kqueue_fd_(do_kqueue_create()),
+ wait_in_progress_(false),
+ interrupter_(),
+ read_op_queue_(),
+ write_op_queue_(),
+ except_op_queue_(),
+ pending_cancellations_(),
+ stop_thread_(false),
+ thread_(0),
+ shutdown_(false),
+ need_kqueue_wait_(true)
+ {
+ // Start the reactor's internal thread only if needed.
+ if (Own_Thread)
+ {
+ boost::asio::detail::signal_blocker sb;
+ thread_ = new boost::asio::detail::thread(
+ bind_handler(&kqueue_reactor::call_run_thread, this));
+ }
+
+ // Add the interrupter's descriptor to the kqueue.
+ struct kevent event;
+ EV_SET(&event, interrupter_.read_descriptor(),
+ EVFILT_READ, EV_ADD, 0, 0, 0);
+ ::kevent(kqueue_fd_, &event, 1, 0, 0, 0);
+ }
+
+ // Destructor.
+ ~kqueue_reactor()
+ {
+ shutdown_service();
+ close(kqueue_fd_);
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ shutdown_ = true;
+ stop_thread_ = true;
+ lock.unlock();
+
+ if (thread_)
+ {
+ interrupter_.interrupt();
+ thread_->join();
+ delete thread_;
+ thread_ = 0;
+ }
+
+ read_op_queue_.destroy_operations();
+ write_op_queue_.destroy_operations();
+ except_op_queue_.destroy_operations();
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->destroy_timers();
+ timer_queues_.clear();
+ }
+
+ // Initialise the task, but only if the reactor is not in its own thread.
+ void init_task()
+ {
+ if (!Own_Thread)
+ {
+ typedef task_io_service<kqueue_reactor<Own_Thread> > task_io_service_type;
+ use_service<task_io_service_type>(this->get_io_service()).init_task();
+ }
+ }
+
+ // Register a socket with the reactor. Returns 0 on success, system error
+ // code on failure.
+ int register_descriptor(socket_type, per_descriptor_data& descriptor_data)
+ {
+ descriptor_data.allow_speculative_read = true;
+ descriptor_data.allow_speculative_write = true;
+
+ return 0;
+ }
+
+ // Start a new read operation. The handler object will be invoked when the
+ // given descriptor is ready to be read, or an error has occurred.
+ template <typename Handler>
+ void start_read_op(socket_type descriptor,
+ per_descriptor_data& descriptor_data, Handler handler,
+ bool allow_speculative_read = true)
+ {
+ if (allow_speculative_read && descriptor_data.allow_speculative_read)
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+
+ // We only get one shot at a speculative read in this function.
+ allow_speculative_read = false;
+ }
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (!allow_speculative_read)
+ need_kqueue_wait_ = true;
+ else if (!read_op_queue_.has_operation(descriptor))
+ {
+ // Speculative reads are ok as there are no queued read operations.
+ descriptor_data.allow_speculative_read = true;
+
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+ }
+
+ // Speculative reads are not ok as there will be queued read operations.
+ descriptor_data.allow_speculative_read = false;
+
+ if (read_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ struct kevent event;
+ EV_SET(&event, descriptor, EVFILT_READ, EV_ADD, 0, 0, 0);
+ if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ read_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // given descriptor is ready to be written, or an error has occurred.
+ template <typename Handler>
+ void start_write_op(socket_type descriptor,
+ per_descriptor_data& descriptor_data, Handler handler,
+ bool allow_speculative_write = true)
+ {
+ if (allow_speculative_write && descriptor_data.allow_speculative_write)
+ {
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+
+ // We only get one shot at a speculative write in this function.
+ allow_speculative_write = false;
+ }
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (!allow_speculative_write)
+ need_kqueue_wait_ = true;
+ else if (!write_op_queue_.has_operation(descriptor))
+ {
+ // Speculative writes are ok as there are no queued write operations.
+ descriptor_data.allow_speculative_write = true;
+
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = 0;
+ if (handler.perform(ec, bytes_transferred))
+ {
+ handler.complete(ec, bytes_transferred);
+ return;
+ }
+ }
+
+ // Speculative writes are not ok as there will be queued write operations.
+ descriptor_data.allow_speculative_write = false;
+
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ struct kevent event;
+ EV_SET(&event, descriptor, EVFILT_WRITE, EV_ADD, 0, 0, 0);
+ if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Start a new exception operation. The handler object will be invoked when
+ // the given descriptor has exception information, or an error has occurred.
+ template <typename Handler>
+ void start_except_op(socket_type descriptor,
+ per_descriptor_data&, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ if (except_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ struct kevent event;
+ if (read_op_queue_.has_operation(descriptor))
+ EV_SET(&event, descriptor, EVFILT_READ, EV_ADD, 0, 0, 0);
+ else
+ EV_SET(&event, descriptor, EVFILT_READ, EV_ADD, EV_OOBAND, 0, 0);
+ if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ except_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // given descriptor is ready to be written, or an error has occurred.
+ template <typename Handler>
+ void start_connect_op(socket_type descriptor,
+ per_descriptor_data& descriptor_data, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ if (shutdown_)
+ return;
+
+ // Speculative writes are not ok as there will be queued write operations.
+ descriptor_data.allow_speculative_write = false;
+
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ {
+ struct kevent event;
+ EV_SET(&event, descriptor, EVFILT_WRITE, EV_ADD, 0, 0, 0);
+ if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ write_op_queue_.perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Cancel all operations associated with the given descriptor. The
+ // handlers associated with the descriptor will be invoked with the
+ // operation_aborted error.
+ void cancel_ops(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Cancel any operations that are running against the descriptor and remove
+ // its registration from the reactor.
+ void close_descriptor(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Remove the descriptor from kqueue.
+ struct kevent event[2];
+ EV_SET(&event[0], descriptor, EVFILT_READ, EV_DELETE, 0, 0, 0);
+ EV_SET(&event[1], descriptor, EVFILT_WRITE, EV_DELETE, 0, 0, 0);
+ ::kevent(kqueue_fd_, event, 2, 0, 0, 0);
+
+ // Cancel any outstanding operations associated with the descriptor.
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Add a new timer queue to the reactor.
+ template <typename Time_Traits>
+ void add_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ timer_queues_.push_back(&timer_queue);
+ }
+
+ // Remove a timer queue from the reactor.
+ template <typename Time_Traits>
+ void remove_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ if (timer_queues_[i] == &timer_queue)
+ {
+ timer_queues_.erase(timer_queues_.begin() + i);
+ return;
+ }
+ }
+ }
+
+ // Schedule a timer in the given timer queue to expire at the specified
+ // absolute time. The handler object will be invoked when the timer expires.
+ template <typename Time_Traits, typename Handler>
+ void schedule_timer(timer_queue<Time_Traits>& timer_queue,
+ const typename Time_Traits::time_type& time, Handler handler, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (timer_queue.enqueue_timer(time, handler, token))
+ interrupter_.interrupt();
+ }
+
+ // Cancel the timer associated with the given token. Returns the number of
+ // handlers that have been posted or dispatched.
+ template <typename Time_Traits>
+ std::size_t cancel_timer(timer_queue<Time_Traits>& timer_queue, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ std::size_t n = timer_queue.cancel_timer(token);
+ if (n > 0)
+ interrupter_.interrupt();
+ return n;
+ }
+
+private:
+ friend class task_io_service<kqueue_reactor<Own_Thread> >;
+
+ // Run the kqueue loop.
+ void run(bool block)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Dispatch any operation cancellations that were made while the select
+ // loop was not running.
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->dispatch_cancellations();
+
+ // Check if the thread is supposed to stop.
+ if (stop_thread_)
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // We can return immediately if there's no work to do and the reactor is
+ // not supposed to block.
+ if (!block && read_op_queue_.empty() && write_op_queue_.empty()
+ && except_op_queue_.empty() && all_timer_queues_are_empty())
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // Determine how long to block while waiting for events.
+ timespec timeout_buf = { 0, 0 };
+ timespec* timeout = block ? get_timeout(timeout_buf) : &timeout_buf;
+
+ wait_in_progress_ = true;
+ lock.unlock();
+
+ // Block on the kqueue descriptor.
+ struct kevent events[128];
+ int num_events = (block || need_kqueue_wait_)
+ ? kevent(kqueue_fd_, 0, 0, events, 128, timeout)
+ : 0;
+
+ lock.lock();
+ wait_in_progress_ = false;
+
+ // Block signals while performing operations.
+ boost::asio::detail::signal_blocker sb;
+
+ // Dispatch the waiting events.
+ for (int i = 0; i < num_events; ++i)
+ {
+ int descriptor = events[i].ident;
+ if (descriptor == interrupter_.read_descriptor())
+ {
+ interrupter_.reset();
+ }
+ else if (events[i].filter == EVFILT_READ)
+ {
+ // Dispatch operations associated with the descriptor.
+ bool more_reads = false;
+ bool more_except = false;
+ if (events[i].flags & EV_ERROR)
+ {
+ boost::system::error_code error(
+ events[i].data, boost::asio::error::get_system_category());
+ except_op_queue_.perform_all_operations(descriptor, error);
+ read_op_queue_.perform_all_operations(descriptor, error);
+ }
+ else if (events[i].flags & EV_OOBAND)
+ {
+ boost::system::error_code error;
+ more_except = except_op_queue_.perform_operation(descriptor, error);
+ if (events[i].data > 0)
+ more_reads = read_op_queue_.perform_operation(descriptor, error);
+ else
+ more_reads = read_op_queue_.has_operation(descriptor);
+ }
+ else
+ {
+ boost::system::error_code error;
+ more_reads = read_op_queue_.perform_operation(descriptor, error);
+ more_except = except_op_queue_.has_operation(descriptor);
+ }
+
+ // Update the descriptor in the kqueue.
+ struct kevent event;
+ if (more_reads)
+ EV_SET(&event, descriptor, EVFILT_READ, EV_ADD, 0, 0, 0);
+ else if (more_except)
+ EV_SET(&event, descriptor, EVFILT_READ, EV_ADD, EV_OOBAND, 0, 0);
+ else
+ EV_SET(&event, descriptor, EVFILT_READ, EV_DELETE, 0, 0, 0);
+ if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
+ {
+ boost::system::error_code error(errno,
+ boost::asio::error::get_system_category());
+ except_op_queue_.perform_all_operations(descriptor, error);
+ read_op_queue_.perform_all_operations(descriptor, error);
+ }
+ }
+ else if (events[i].filter == EVFILT_WRITE)
+ {
+ // Dispatch operations associated with the descriptor.
+ bool more_writes = false;
+ if (events[i].flags & EV_ERROR)
+ {
+ boost::system::error_code error(
+ events[i].data, boost::asio::error::get_system_category());
+ write_op_queue_.perform_all_operations(descriptor, error);
+ }
+ else
+ {
+ boost::system::error_code error;
+ more_writes = write_op_queue_.perform_operation(descriptor, error);
+ }
+
+ // Update the descriptor in the kqueue.
+ struct kevent event;
+ if (more_writes)
+ EV_SET(&event, descriptor, EVFILT_WRITE, EV_ADD, 0, 0, 0);
+ else
+ EV_SET(&event, descriptor, EVFILT_WRITE, EV_DELETE, 0, 0, 0);
+ if (::kevent(kqueue_fd_, &event, 1, 0, 0, 0) == -1)
+ {
+ boost::system::error_code error(errno,
+ boost::asio::error::get_system_category());
+ write_op_queue_.perform_all_operations(descriptor, error);
+ }
+ }
+ }
+
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ timer_queues_[i]->dispatch_timers();
+ timer_queues_[i]->dispatch_cancellations();
+ }
+
+ // Issue any pending cancellations.
+ for (std::size_t i = 0; i < pending_cancellations_.size(); ++i)
+ cancel_ops_unlocked(pending_cancellations_[i]);
+ pending_cancellations_.clear();
+
+ // Determine whether kqueue needs to be called next time the reactor is run.
+ need_kqueue_wait_ = !read_op_queue_.empty()
+ || !write_op_queue_.empty() || !except_op_queue_.empty();
+
+ complete_operations_and_timers(lock);
+ }
+
+ // Run the select loop in the thread.
+ void run_thread()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ while (!stop_thread_)
+ {
+ lock.unlock();
+ run(true);
+ lock.lock();
+ }
+ }
+
+ // Entry point for the select loop thread.
+ static void call_run_thread(kqueue_reactor* reactor)
+ {
+ reactor->run_thread();
+ }
+
+ // Interrupt the select loop.
+ void interrupt()
+ {
+ interrupter_.interrupt();
+ }
+
+ // Create the kqueue file descriptor. Throws an exception if the descriptor
+ // cannot be created.
+ static int do_kqueue_create()
+ {
+ int fd = kqueue();
+ if (fd == -1)
+ {
+ boost::throw_exception(
+ boost::system::system_error(
+ boost::system::error_code(errno,
+ boost::asio::error::get_system_category()),
+ "kqueue"));
+ }
+ return fd;
+ }
+
+ // Check if all timer queues are empty.
+ bool all_timer_queues_are_empty() const
+ {
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ if (!timer_queues_[i]->empty())
+ return false;
+ return true;
+ }
+
+ // Get the timeout value for the kevent call.
+ timespec* get_timeout(timespec& ts)
+ {
+ if (all_timer_queues_are_empty())
+ return 0;
+
+ // By default we will wait no longer than 5 minutes. This will ensure that
+ // any changes to the system clock are detected after no longer than this.
+ boost::posix_time::time_duration minimum_wait_duration
+ = boost::posix_time::minutes(5);
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ boost::posix_time::time_duration wait_duration
+ = timer_queues_[i]->wait_duration();
+ if (wait_duration < minimum_wait_duration)
+ minimum_wait_duration = wait_duration;
+ }
+
+ if (minimum_wait_duration > boost::posix_time::time_duration())
+ {
+ ts.tv_sec = minimum_wait_duration.total_seconds();
+ ts.tv_nsec = minimum_wait_duration.total_nanoseconds() % 1000000000;
+ }
+ else
+ {
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ }
+
+ return &ts;
+ }
+
+ // Cancel all operations associated with the given descriptor. The do_cancel
+ // function of the handler objects will be invoked. This function does not
+ // acquire the kqueue_reactor's mutex.
+ void cancel_ops_unlocked(socket_type descriptor)
+ {
+ bool interrupt = read_op_queue_.cancel_operations(descriptor);
+ interrupt = write_op_queue_.cancel_operations(descriptor) || interrupt;
+ interrupt = except_op_queue_.cancel_operations(descriptor) || interrupt;
+ if (interrupt)
+ interrupter_.interrupt();
+ }
+
+ // Clean up operations and timers. We must not hold the lock since the
+ // destructors may make calls back into this reactor. We make a copy of the
+ // vector of timer queues since the original may be modified while the lock
+ // is not held.
+ void complete_operations_and_timers(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ timer_queues_for_cleanup_ = timer_queues_;
+ lock.unlock();
+ read_op_queue_.complete_operations();
+ write_op_queue_.complete_operations();
+ except_op_queue_.complete_operations();
+ for (std::size_t i = 0; i < timer_queues_for_cleanup_.size(); ++i)
+ timer_queues_for_cleanup_[i]->complete_timers();
+ }
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // The kqueue file descriptor.
+ int kqueue_fd_;
+
+ // Whether the kqueue wait call is currently in progress
+ bool wait_in_progress_;
+
+ // The interrupter is used to break a blocking kevent call.
+ select_interrupter interrupter_;
+
+ // The queue of read operations.
+ reactor_op_queue<socket_type> read_op_queue_;
+
+ // The queue of write operations.
+ reactor_op_queue<socket_type> write_op_queue_;
+
+ // The queue of except operations.
+ reactor_op_queue<socket_type> except_op_queue_;
+
+ // The timer queues.
+ std::vector<timer_queue_base*> timer_queues_;
+
+ // A copy of the timer queues, used when cleaning up timers. The copy is
+ // stored as a class data member to avoid unnecessary memory allocation.
+ std::vector<timer_queue_base*> timer_queues_for_cleanup_;
+
+ // The descriptors that are pending cancellation.
+ std::vector<socket_type> pending_cancellations_;
+
+ // Does the reactor loop thread need to stop.
+ bool stop_thread_;
+
+ // The thread that is running the reactor loop.
+ boost::asio::detail::thread* thread_;
+
+ // Whether the service has been shut down.
+ bool shutdown_;
+
+ // Whether we need to call kqueue the next time the reactor is run.
+ bool need_kqueue_wait_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_KQUEUE)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_KQUEUE_REACTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/kqueue_reactor_fwd.hpp b/3rdParty/Boost/boost/asio/detail/kqueue_reactor_fwd.hpp
new file mode 100644
index 0000000..e3df284
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/kqueue_reactor_fwd.hpp
@@ -0,0 +1,43 @@
+//
+// kqueue_reactor_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_KQUEUE_REACTOR_FWD_HPP
+#define BOOST_ASIO_DETAIL_KQUEUE_REACTOR_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_KQUEUE)
+#if defined(__MACH__) && defined(__APPLE__)
+
+// Define this to indicate that epoll is supported on the target platform.
+#define BOOST_ASIO_HAS_KQUEUE 1
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class kqueue_reactor;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(__MACH__) && defined(__APPLE__)
+#endif // !defined(BOOST_ASIO_DISABLE_KQUEUE)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_KQUEUE_REACTOR_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/mutex.hpp b/3rdParty/Boost/boost/asio/detail/mutex.hpp
new file mode 100644
index 0000000..4f64a28
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/mutex.hpp
@@ -0,0 +1,52 @@
+//
+// mutex.hpp
+// ~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_MUTEX_HPP
+#define BOOST_ASIO_DETAIL_MUTEX_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+# include <boost/asio/detail/null_mutex.hpp>
+#elif defined(BOOST_WINDOWS)
+# include <boost/asio/detail/win_mutex.hpp>
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/asio/detail/posix_mutex.hpp>
+#else
+# error Only Windows and POSIX are supported!
+#endif
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if !defined(BOOST_HAS_THREADS)
+typedef null_mutex mutex;
+#elif defined(BOOST_WINDOWS)
+typedef win_mutex mutex;
+#elif defined(BOOST_HAS_PTHREADS)
+typedef posix_mutex mutex;
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_MUTEX_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/noncopyable.hpp b/3rdParty/Boost/boost/asio/detail/noncopyable.hpp
new file mode 100644
index 0000000..3a09538
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/noncopyable.hpp
@@ -0,0 +1,57 @@
+//
+// noncopyable.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_NONCOPYABLE_HPP
+#define BOOST_ASIO_DETAIL_NONCOPYABLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+// Redefine the noncopyable class for Borland C++ since that compiler does not
+// apply the empty base optimisation unless the base class contains a dummy
+// char data member.
+class noncopyable
+{
+protected:
+ noncopyable() {}
+ ~noncopyable() {}
+private:
+ noncopyable(const noncopyable&);
+ const noncopyable& operator=(const noncopyable&);
+ char dummy_;
+};
+#else
+using boost::noncopyable;
+#endif
+
+} // namespace detail
+
+using boost::asio::detail::noncopyable;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_NONCOPYABLE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/null_event.hpp b/3rdParty/Boost/boost/asio/detail/null_event.hpp
new file mode 100644
index 0000000..4b667e7
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/null_event.hpp
@@ -0,0 +1,73 @@
+//
+// null_event.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_NULL_EVENT_HPP
+#define BOOST_ASIO_DETAIL_NULL_EVENT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class null_event
+ : private noncopyable
+{
+public:
+ // Constructor.
+ null_event()
+ {
+ }
+
+ // Destructor.
+ ~null_event()
+ {
+ }
+
+ // Signal the event.
+ template <typename Lock>
+ void signal(Lock&)
+ {
+ }
+
+ // Reset the event.
+ template <typename Lock>
+ void clear(Lock&)
+ {
+ }
+
+ // Wait for the event to become signalled.
+ template <typename Lock>
+ void wait(Lock&)
+ {
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_NULL_EVENT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/null_mutex.hpp b/3rdParty/Boost/boost/asio/detail/null_mutex.hpp
new file mode 100644
index 0000000..64bf871
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/null_mutex.hpp
@@ -0,0 +1,68 @@
+//
+// null_mutex.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_NULL_MUTEX_HPP
+#define BOOST_ASIO_DETAIL_NULL_MUTEX_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/scoped_lock.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class null_mutex
+ : private noncopyable
+{
+public:
+ typedef boost::asio::detail::scoped_lock<null_mutex> scoped_lock;
+
+ // Constructor.
+ null_mutex()
+ {
+ }
+
+ // Destructor.
+ ~null_mutex()
+ {
+ }
+
+ // Lock the mutex.
+ void lock()
+ {
+ }
+
+ // Unlock the mutex.
+ void unlock()
+ {
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_NULL_MUTEX_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/null_signal_blocker.hpp b/3rdParty/Boost/boost/asio/detail/null_signal_blocker.hpp
new file mode 100644
index 0000000..1fc65c8
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/null_signal_blocker.hpp
@@ -0,0 +1,65 @@
+//
+// null_signal_blocker.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
+#define BOOST_ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class null_signal_blocker
+ : private noncopyable
+{
+public:
+ // Constructor blocks all signals for the calling thread.
+ null_signal_blocker()
+ {
+ }
+
+ // Destructor restores the previous signal mask.
+ ~null_signal_blocker()
+ {
+ }
+
+ // Block all signals for the calling thread.
+ void block()
+ {
+ }
+
+ // Restore the previous signal mask.
+ void unblock()
+ {
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/null_thread.hpp b/3rdParty/Boost/boost/asio/detail/null_thread.hpp
new file mode 100644
index 0000000..5aed211
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/null_thread.hpp
@@ -0,0 +1,70 @@
+//
+// null_thread.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_NULL_THREAD_HPP
+#define BOOST_ASIO_DETAIL_NULL_THREAD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class null_thread
+ : private noncopyable
+{
+public:
+ // Constructor.
+ template <typename Function>
+ null_thread(Function f)
+ {
+ boost::system::system_error e(
+ boost::asio::error::operation_not_supported, "thread");
+ boost::throw_exception(e);
+ }
+
+ // Destructor.
+ ~null_thread()
+ {
+ }
+
+ // Wait for the thread to exit.
+ void join()
+ {
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_NULL_THREAD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/null_tss_ptr.hpp b/3rdParty/Boost/boost/asio/detail/null_tss_ptr.hpp
new file mode 100644
index 0000000..ba4b8f8
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/null_tss_ptr.hpp
@@ -0,0 +1,72 @@
+//
+// null_tss_ptr.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_NULL_TSS_PTR_HPP
+#define BOOST_ASIO_DETAIL_NULL_TSS_PTR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename T>
+class null_tss_ptr
+ : private noncopyable
+{
+public:
+ // Constructor.
+ null_tss_ptr()
+ : value_(0)
+ {
+ }
+
+ // Destructor.
+ ~null_tss_ptr()
+ {
+ }
+
+ // Get the value.
+ operator T*() const
+ {
+ return value_;
+ }
+
+ // Set the value.
+ void operator=(T* value)
+ {
+ value_ = value;
+ }
+
+private:
+ T* value_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_HAS_THREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_NULL_TSS_PTR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/old_win_sdk_compat.hpp b/3rdParty/Boost/boost/asio/detail/old_win_sdk_compat.hpp
new file mode 100644
index 0000000..5f0aba1
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/old_win_sdk_compat.hpp
@@ -0,0 +1,342 @@
+//
+// old_win_sdk_compat.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
+#define BOOST_ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+// Guess whether we are building against on old Platform SDK.
+#if !defined(IN6ADDR_ANY_INIT)
+#define BOOST_ASIO_HAS_OLD_WIN_SDK 1
+#endif // !defined(IN6ADDR_ANY_INIT)
+
+#if defined(BOOST_ASIO_HAS_OLD_WIN_SDK)
+
+// Emulation of types that are missing from old Platform SDKs.
+//
+// N.B. this emulation is also used if building for a Windows 2000 target with
+// a recent (i.e. Vista or later) SDK, as the SDK does not provide IPv6 support
+// in that case.
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+enum
+{
+ sockaddr_storage_maxsize = 128, // Maximum size.
+ sockaddr_storage_alignsize = (sizeof(__int64)), // Desired alignment.
+ sockaddr_storage_pad1size = (sockaddr_storage_alignsize - sizeof(short)),
+ sockaddr_storage_pad2size = (sockaddr_storage_maxsize -
+ (sizeof(short) + sockaddr_storage_pad1size + sockaddr_storage_alignsize))
+};
+
+struct sockaddr_storage_emulation
+{
+ short ss_family;
+ char __ss_pad1[sockaddr_storage_pad1size];
+ __int64 __ss_align;
+ char __ss_pad2[sockaddr_storage_pad2size];
+};
+
+struct in6_addr_emulation
+{
+ union
+ {
+ u_char Byte[16];
+ u_short Word[8];
+ } u;
+};
+
+#if !defined(s6_addr)
+# define _S6_un u
+# define _S6_u8 Byte
+# define s6_addr _S6_un._S6_u8
+#endif // !defined(s6_addr)
+
+struct sockaddr_in6_emulation
+{
+ short sin6_family;
+ u_short sin6_port;
+ u_long sin6_flowinfo;
+ in6_addr_emulation sin6_addr;
+ u_long sin6_scope_id;
+};
+
+struct ipv6_mreq_emulation
+{
+ in6_addr_emulation ipv6mr_multiaddr;
+ unsigned int ipv6mr_interface;
+};
+
+#if !defined(IN6ADDR_ANY_INIT)
+# define IN6ADDR_ANY_INIT { 0 }
+#endif
+
+#if !defined(IN6ADDR_LOOPBACK_INIT)
+# define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }
+#endif
+
+struct addrinfo_emulation
+{
+ int ai_flags;
+ int ai_family;
+ int ai_socktype;
+ int ai_protocol;
+ size_t ai_addrlen;
+ char* ai_canonname;
+ sockaddr* ai_addr;
+ addrinfo_emulation* ai_next;
+};
+
+#if !defined(AI_PASSIVE)
+# define AI_PASSIVE 0x1
+#endif
+
+#if !defined(AI_CANONNAME)
+# define AI_CANONNAME 0x2
+#endif
+
+#if !defined(AI_NUMERICHOST)
+# define AI_NUMERICHOST 0x4
+#endif
+
+#if !defined(EAI_AGAIN)
+# define EAI_AGAIN WSATRY_AGAIN
+#endif
+
+#if !defined(EAI_BADFLAGS)
+# define EAI_BADFLAGS WSAEINVAL
+#endif
+
+#if !defined(EAI_FAIL)
+# define EAI_FAIL WSANO_RECOVERY
+#endif
+
+#if !defined(EAI_FAMILY)
+# define EAI_FAMILY WSAEAFNOSUPPORT
+#endif
+
+#if !defined(EAI_MEMORY)
+# define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
+#endif
+
+#if !defined(EAI_NODATA)
+# define EAI_NODATA WSANO_DATA
+#endif
+
+#if !defined(EAI_NONAME)
+# define EAI_NONAME WSAHOST_NOT_FOUND
+#endif
+
+#if !defined(EAI_SERVICE)
+# define EAI_SERVICE WSATYPE_NOT_FOUND
+#endif
+
+#if !defined(EAI_SOCKTYPE)
+# define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
+#endif
+
+#if !defined(NI_NOFQDN)
+# define NI_NOFQDN 0x01
+#endif
+
+#if !defined(NI_NUMERICHOST)
+# define NI_NUMERICHOST 0x02
+#endif
+
+#if !defined(NI_NAMEREQD)
+# define NI_NAMEREQD 0x04
+#endif
+
+#if !defined(NI_NUMERICSERV)
+# define NI_NUMERICSERV 0x08
+#endif
+
+#if !defined(NI_DGRAM)
+# define NI_DGRAM 0x10
+#endif
+
+#if !defined(IPPROTO_IPV6)
+# define IPPROTO_IPV6 41
+#endif
+
+#if !defined(IPV6_UNICAST_HOPS)
+# define IPV6_UNICAST_HOPS 4
+#endif
+
+#if !defined(IPV6_MULTICAST_IF)
+# define IPV6_MULTICAST_IF 9
+#endif
+
+#if !defined(IPV6_MULTICAST_HOPS)
+# define IPV6_MULTICAST_HOPS 10
+#endif
+
+#if !defined(IPV6_MULTICAST_LOOP)
+# define IPV6_MULTICAST_LOOP 11
+#endif
+
+#if !defined(IPV6_JOIN_GROUP)
+# define IPV6_JOIN_GROUP 12
+#endif
+
+#if !defined(IPV6_LEAVE_GROUP)
+# define IPV6_LEAVE_GROUP 13
+#endif
+
+inline int IN6_IS_ADDR_UNSPECIFIED(const in6_addr_emulation* a)
+{
+ return ((a->s6_addr[0] == 0)
+ && (a->s6_addr[1] == 0)
+ && (a->s6_addr[2] == 0)
+ && (a->s6_addr[3] == 0)
+ && (a->s6_addr[4] == 0)
+ && (a->s6_addr[5] == 0)
+ && (a->s6_addr[6] == 0)
+ && (a->s6_addr[7] == 0)
+ && (a->s6_addr[8] == 0)
+ && (a->s6_addr[9] == 0)
+ && (a->s6_addr[10] == 0)
+ && (a->s6_addr[11] == 0)
+ && (a->s6_addr[12] == 0)
+ && (a->s6_addr[13] == 0)
+ && (a->s6_addr[14] == 0)
+ && (a->s6_addr[15] == 0));
+}
+
+inline int IN6_IS_ADDR_LOOPBACK(const in6_addr_emulation* a)
+{
+ return ((a->s6_addr[0] == 0)
+ && (a->s6_addr[1] == 0)
+ && (a->s6_addr[2] == 0)
+ && (a->s6_addr[3] == 0)
+ && (a->s6_addr[4] == 0)
+ && (a->s6_addr[5] == 0)
+ && (a->s6_addr[6] == 0)
+ && (a->s6_addr[7] == 0)
+ && (a->s6_addr[8] == 0)
+ && (a->s6_addr[9] == 0)
+ && (a->s6_addr[10] == 0)
+ && (a->s6_addr[11] == 0)
+ && (a->s6_addr[12] == 0)
+ && (a->s6_addr[13] == 0)
+ && (a->s6_addr[14] == 0)
+ && (a->s6_addr[15] == 1));
+}
+
+inline int IN6_IS_ADDR_MULTICAST(const in6_addr_emulation* a)
+{
+ return (a->s6_addr[0] == 0xff);
+}
+
+inline int IN6_IS_ADDR_LINKLOCAL(const in6_addr_emulation* a)
+{
+ return ((a->s6_addr[0] == 0xfe) && ((a->s6_addr[1] & 0xc0) == 0x80));
+}
+
+inline int IN6_IS_ADDR_SITELOCAL(const in6_addr_emulation* a)
+{
+ return ((a->s6_addr[0] == 0xfe) && ((a->s6_addr[1] & 0xc0) == 0xc0));
+}
+
+inline int IN6_IS_ADDR_V4MAPPED(const in6_addr_emulation* a)
+{
+ return ((a->s6_addr[0] == 0)
+ && (a->s6_addr[1] == 0)
+ && (a->s6_addr[2] == 0)
+ && (a->s6_addr[3] == 0)
+ && (a->s6_addr[4] == 0)
+ && (a->s6_addr[5] == 0)
+ && (a->s6_addr[6] == 0)
+ && (a->s6_addr[7] == 0)
+ && (a->s6_addr[8] == 0)
+ && (a->s6_addr[9] == 0)
+ && (a->s6_addr[10] == 0xff)
+ && (a->s6_addr[11] == 0xff));
+}
+
+inline int IN6_IS_ADDR_V4COMPAT(const in6_addr_emulation* a)
+{
+ return ((a->s6_addr[0] == 0)
+ && (a->s6_addr[1] == 0)
+ && (a->s6_addr[2] == 0)
+ && (a->s6_addr[3] == 0)
+ && (a->s6_addr[4] == 0)
+ && (a->s6_addr[5] == 0)
+ && (a->s6_addr[6] == 0)
+ && (a->s6_addr[7] == 0)
+ && (a->s6_addr[8] == 0)
+ && (a->s6_addr[9] == 0)
+ && (a->s6_addr[10] == 0xff)
+ && (a->s6_addr[11] == 0xff)
+ && !((a->s6_addr[12] == 0)
+ && (a->s6_addr[13] == 0)
+ && (a->s6_addr[14] == 0)
+ && ((a->s6_addr[15] == 0) || (a->s6_addr[15] == 1))));
+}
+
+inline int IN6_IS_ADDR_MC_NODELOCAL(const in6_addr_emulation* a)
+{
+ return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 1);
+}
+
+inline int IN6_IS_ADDR_MC_LINKLOCAL(const in6_addr_emulation* a)
+{
+ return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 2);
+}
+
+inline int IN6_IS_ADDR_MC_SITELOCAL(const in6_addr_emulation* a)
+{
+ return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 5);
+}
+
+inline int IN6_IS_ADDR_MC_ORGLOCAL(const in6_addr_emulation* a)
+{
+ return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 8);
+}
+
+inline int IN6_IS_ADDR_MC_GLOBAL(const in6_addr_emulation* a)
+{
+ return IN6_IS_ADDR_MULTICAST(a) && ((a->s6_addr[1] & 0xf) == 0xe);
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_OLD_WIN_SDK)
+
+// Even newer Platform SDKs that support IPv6 may not define IPV6_V6ONLY.
+#if !defined(IPV6_V6ONLY)
+# define IPV6_V6ONLY 27
+#endif
+
+// Some SDKs (e.g. Windows CE) don't define IPPROTO_ICMPV6.
+#if !defined(IPPROTO_ICMPV6)
+# define IPPROTO_ICMPV6 58
+#endif
+
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/pipe_select_interrupter.hpp b/3rdParty/Boost/boost/asio/detail/pipe_select_interrupter.hpp
new file mode 100644
index 0000000..51b8c02
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/pipe_select_interrupter.hpp
@@ -0,0 +1,117 @@
+//
+// pipe_select_interrupter.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
+#define BOOST_ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <fcntl.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class pipe_select_interrupter
+{
+public:
+ // Constructor.
+ pipe_select_interrupter()
+ {
+ int pipe_fds[2];
+ if (pipe(pipe_fds) == 0)
+ {
+ read_descriptor_ = pipe_fds[0];
+ ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
+ write_descriptor_ = pipe_fds[1];
+ ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK);
+ }
+ else
+ {
+ boost::system::error_code ec(errno,
+ boost::asio::error::get_system_category());
+ boost::system::system_error e(ec, "pipe_select_interrupter");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~pipe_select_interrupter()
+ {
+ if (read_descriptor_ != -1)
+ ::close(read_descriptor_);
+ if (write_descriptor_ != -1)
+ ::close(write_descriptor_);
+ }
+
+ // Interrupt the select call.
+ void interrupt()
+ {
+ char byte = 0;
+ int result = ::write(write_descriptor_, &byte, 1);
+ (void)result;
+ }
+
+ // Reset the select interrupt. Returns true if the call was interrupted.
+ bool reset()
+ {
+ char data[1024];
+ int bytes_read = ::read(read_descriptor_, data, sizeof(data));
+ bool was_interrupted = (bytes_read > 0);
+ while (bytes_read == sizeof(data))
+ bytes_read = ::read(read_descriptor_, data, sizeof(data));
+ return was_interrupted;
+ }
+
+ // Get the read descriptor to be passed to select.
+ int read_descriptor() const
+ {
+ return read_descriptor_;
+ }
+
+private:
+ // The read end of a connection used to interrupt the select call. This file
+ // descriptor is passed to select such that when it is time to stop, a single
+ // byte will be written on the other end of the connection and this
+ // descriptor will become readable.
+ int read_descriptor_;
+
+ // The write end of a connection used to interrupt the select call. A single
+ // byte may be written to this to wake up the select which is waiting for the
+ // other end to become readable.
+ int write_descriptor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/pop_options.hpp b/3rdParty/Boost/boost/asio/detail/pop_options.hpp
new file mode 100644
index 0000000..7f56662
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/pop_options.hpp
@@ -0,0 +1,88 @@
+//
+// pop_options.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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)
+//
+
+// No header guard
+
+#if defined(__COMO__)
+
+// Comeau C++
+
+#elif defined(__DMC__)
+
+// Digital Mars C++
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) \
+ || defined(__ICC) || defined(__ECC)
+
+// Intel C++
+
+#elif defined(__GNUC__)
+
+// GNU C++
+
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# pragma pack (pop)
+# endif
+
+#elif defined(__KCC)
+
+// Kai C++
+
+#elif defined(__sgi)
+
+// SGI MIPSpro C++
+
+#elif defined(__DECCXX)
+
+// Compaq Tru64 Unix cxx
+
+#elif defined(__ghs)
+
+// Greenhills C++
+
+#elif defined(__BORLANDC__)
+
+// Borland C++
+
+# pragma option pop
+# pragma nopushoptwarn
+# pragma nopackwarning
+
+#elif defined(__MWERKS__)
+
+// Metrowerks CodeWarrior
+
+#elif defined(__SUNPRO_CC)
+
+// Sun Workshop Compiler C++
+
+#elif defined(__HP_aCC)
+
+// HP aCC
+
+#elif defined(__MRC__) || defined(__SC__)
+
+// MPW MrCpp or SCpp
+
+#elif defined(__IBMCPP__)
+
+// IBM Visual Age
+
+#elif defined(_MSC_VER)
+
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for example)
+// also #define _MSC_VER
+
+# pragma warning (pop)
+# pragma pack (pop)
+
+#endif
diff --git a/3rdParty/Boost/boost/asio/detail/posix_event.hpp b/3rdParty/Boost/boost/asio/detail/posix_event.hpp
new file mode 100644
index 0000000..f838342
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/posix_event.hpp
@@ -0,0 +1,106 @@
+//
+// posix_event.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_POSIX_EVENT_HPP
+#define BOOST_ASIO_DETAIL_POSIX_EVENT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/assert.hpp>
+#include <boost/throw_exception.hpp>
+#include <pthread.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class posix_event
+ : private noncopyable
+{
+public:
+ // Constructor.
+ posix_event()
+ : signalled_(false)
+ {
+ int error = ::pthread_cond_init(&cond_, 0);
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "event");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~posix_event()
+ {
+ ::pthread_cond_destroy(&cond_);
+ }
+
+ // Signal the event.
+ template <typename Lock>
+ void signal(Lock& lock)
+ {
+ BOOST_ASSERT(lock.locked());
+ (void)lock;
+ signalled_ = true;
+ ::pthread_cond_signal(&cond_); // Ignore EINVAL.
+ }
+
+ // Reset the event.
+ template <typename Lock>
+ void clear(Lock& lock)
+ {
+ BOOST_ASSERT(lock.locked());
+ (void)lock;
+ signalled_ = false;
+ }
+
+ // Wait for the event to become signalled.
+ template <typename Lock>
+ void wait(Lock& lock)
+ {
+ BOOST_ASSERT(lock.locked());
+ while (!signalled_)
+ ::pthread_cond_wait(&cond_, &lock.mutex().mutex_); // Ignore EINVAL.
+ }
+
+private:
+ ::pthread_cond_t cond_;
+ bool signalled_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_POSIX_EVENT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/posix_fd_set_adapter.hpp b/3rdParty/Boost/boost/asio/detail/posix_fd_set_adapter.hpp
new file mode 100644
index 0000000..121b396
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/posix_fd_set_adapter.hpp
@@ -0,0 +1,83 @@
+//
+// posix_fd_set_adapter.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
+#define BOOST_ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstring>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements.
+class posix_fd_set_adapter
+{
+public:
+ posix_fd_set_adapter()
+ : max_descriptor_(invalid_socket)
+ {
+ using namespace std; // Needed for memset on Solaris.
+ FD_ZERO(&fd_set_);
+ }
+
+ bool set(socket_type descriptor)
+ {
+ if (descriptor < (socket_type)FD_SETSIZE)
+ {
+ if (max_descriptor_ == invalid_socket || descriptor > max_descriptor_)
+ max_descriptor_ = descriptor;
+ FD_SET(descriptor, &fd_set_);
+ return true;
+ }
+ return false;
+ }
+
+ bool is_set(socket_type descriptor) const
+ {
+ return FD_ISSET(descriptor, &fd_set_) != 0;
+ }
+
+ operator fd_set*()
+ {
+ return &fd_set_;
+ }
+
+ socket_type max_descriptor() const
+ {
+ return max_descriptor_;
+ }
+
+private:
+ mutable fd_set fd_set_;
+ socket_type max_descriptor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/posix_mutex.hpp b/3rdParty/Boost/boost/asio/detail/posix_mutex.hpp
new file mode 100644
index 0000000..219d6d0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/posix_mutex.hpp
@@ -0,0 +1,109 @@
+//
+// posix_mutex.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_POSIX_MUTEX_HPP
+#define BOOST_ASIO_DETAIL_POSIX_MUTEX_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <pthread.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/scoped_lock.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class posix_event;
+
+class posix_mutex
+ : private noncopyable
+{
+public:
+ typedef boost::asio::detail::scoped_lock<posix_mutex> scoped_lock;
+
+ // Constructor.
+ posix_mutex()
+ {
+ int error = ::pthread_mutex_init(&mutex_, 0);
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "mutex");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~posix_mutex()
+ {
+ ::pthread_mutex_destroy(&mutex_);
+ }
+
+ // Lock the mutex.
+ void lock()
+ {
+ int error = ::pthread_mutex_lock(&mutex_);
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "mutex");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Unlock the mutex.
+ void unlock()
+ {
+ int error = ::pthread_mutex_unlock(&mutex_);
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "mutex");
+ boost::throw_exception(e);
+ }
+ }
+
+private:
+ friend class posix_event;
+ ::pthread_mutex_t mutex_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_POSIX_MUTEX_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/posix_signal_blocker.hpp b/3rdParty/Boost/boost/asio/detail/posix_signal_blocker.hpp
new file mode 100644
index 0000000..f8234fb
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/posix_signal_blocker.hpp
@@ -0,0 +1,92 @@
+//
+// posix_signal_blocker.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
+#define BOOST_ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <csignal>
+#include <pthread.h>
+#include <signal.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class posix_signal_blocker
+ : private noncopyable
+{
+public:
+ // Constructor blocks all signals for the calling thread.
+ posix_signal_blocker()
+ : blocked_(false)
+ {
+ sigset_t new_mask;
+ sigfillset(&new_mask);
+ blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0);
+ }
+
+ // Destructor restores the previous signal mask.
+ ~posix_signal_blocker()
+ {
+ if (blocked_)
+ pthread_sigmask(SIG_SETMASK, &old_mask_, 0);
+ }
+
+ // Block all signals for the calling thread.
+ void block()
+ {
+ if (!blocked_)
+ {
+ sigset_t new_mask;
+ sigfillset(&new_mask);
+ blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0);
+ }
+ }
+
+ // Restore the previous signal mask.
+ void unblock()
+ {
+ if (blocked_)
+ blocked_ = (pthread_sigmask(SIG_SETMASK, &old_mask_, 0) != 0);
+ }
+
+private:
+ // Have signals been blocked.
+ bool blocked_;
+
+ // The previous signal mask.
+ sigset_t old_mask_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/posix_thread.hpp b/3rdParty/Boost/boost/asio/detail/posix_thread.hpp
new file mode 100644
index 0000000..1e38618
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/posix_thread.hpp
@@ -0,0 +1,131 @@
+//
+// posix_thread.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_POSIX_THREAD_HPP
+#define BOOST_ASIO_DETAIL_POSIX_THREAD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <memory>
+#include <boost/throw_exception.hpp>
+#include <pthread.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+extern "C" void* asio_detail_posix_thread_function(void* arg);
+
+class posix_thread
+ : private noncopyable
+{
+public:
+ // Constructor.
+ template <typename Function>
+ posix_thread(Function f)
+ : joined_(false)
+ {
+ std::auto_ptr<func_base> arg(new func<Function>(f));
+ int error = ::pthread_create(&thread_, 0,
+ asio_detail_posix_thread_function, arg.get());
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "thread");
+ boost::throw_exception(e);
+ }
+ arg.release();
+ }
+
+ // Destructor.
+ ~posix_thread()
+ {
+ if (!joined_)
+ ::pthread_detach(thread_);
+ }
+
+ // Wait for the thread to exit.
+ void join()
+ {
+ if (!joined_)
+ {
+ ::pthread_join(thread_, 0);
+ joined_ = true;
+ }
+ }
+
+private:
+ friend void* asio_detail_posix_thread_function(void* arg);
+
+ class func_base
+ {
+ public:
+ virtual ~func_base() {}
+ virtual void run() = 0;
+ };
+
+ template <typename Function>
+ class func
+ : public func_base
+ {
+ public:
+ func(Function f)
+ : f_(f)
+ {
+ }
+
+ virtual void run()
+ {
+ f_();
+ }
+
+ private:
+ Function f_;
+ };
+
+ ::pthread_t thread_;
+ bool joined_;
+};
+
+inline void* asio_detail_posix_thread_function(void* arg)
+{
+ std::auto_ptr<posix_thread::func_base> f(
+ static_cast<posix_thread::func_base*>(arg));
+ f->run();
+ return 0;
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_POSIX_THREAD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/posix_tss_ptr.hpp b/3rdParty/Boost/boost/asio/detail/posix_tss_ptr.hpp
new file mode 100644
index 0000000..f53c2dc
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/posix_tss_ptr.hpp
@@ -0,0 +1,90 @@
+//
+// posix_tss_ptr.hpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_POSIX_TSS_PTR_HPP
+#define BOOST_ASIO_DETAIL_POSIX_TSS_PTR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <pthread.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename T>
+class posix_tss_ptr
+ : private noncopyable
+{
+public:
+ // Constructor.
+ posix_tss_ptr()
+ {
+ int error = ::pthread_key_create(&tss_key_, 0);
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "tss");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~posix_tss_ptr()
+ {
+ ::pthread_key_delete(tss_key_);
+ }
+
+ // Get the value.
+ operator T*() const
+ {
+ return static_cast<T*>(::pthread_getspecific(tss_key_));
+ }
+
+ // Set the value.
+ void operator=(T* value)
+ {
+ ::pthread_setspecific(tss_key_, value);
+ }
+
+private:
+ // Thread-specific storage to allow unlocked access to determine whether a
+ // thread is a member of the pool.
+ pthread_key_t tss_key_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_HAS_PTHREADS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_POSIX_TSS_PTR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/push_options.hpp b/3rdParty/Boost/boost/asio/detail/push_options.hpp
new file mode 100644
index 0000000..47524b2
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/push_options.hpp
@@ -0,0 +1,114 @@
+//
+// push_options.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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)
+//
+
+// No header guard
+
+#if defined(__COMO__)
+
+// Comeau C++
+
+#elif defined(__DMC__)
+
+// Digital Mars C++
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) \
+ || defined(__ICC) || defined(__ECC)
+
+// Intel C++
+
+#elif defined(__GNUC__)
+
+// GNU C++
+
+# if defined(__MINGW32__) || defined(__CYGWIN__)
+# pragma pack (push, 8)
+# endif
+
+#elif defined(__KCC)
+
+// Kai C++
+
+#elif defined(__sgi)
+
+// SGI MIPSpro C++
+
+#elif defined(__DECCXX)
+
+// Compaq Tru64 Unix cxx
+
+#elif defined(__ghs)
+
+// Greenhills C++
+
+#elif defined(__BORLANDC__)
+
+// Borland C++
+
+# pragma option push -a8 -b -Ve- -Vx- -w-inl -vi-
+# pragma nopushoptwarn
+# pragma nopackwarning
+# if !defined(__MT__)
+# error Multithreaded RTL must be selected.
+# endif // !defined(__MT__)
+
+#elif defined(__MWERKS__)
+
+// Metrowerks CodeWarrior
+
+#elif defined(__SUNPRO_CC)
+
+// Sun Workshop Compiler C++
+
+#elif defined(__HP_aCC)
+
+// HP aCC
+
+#elif defined(__MRC__) || defined(__SC__)
+
+// MPW MrCpp or SCpp
+
+#elif defined(__IBMCPP__)
+
+// IBM Visual Age
+
+#elif defined(_MSC_VER)
+
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for example)
+// also #define _MSC_VER
+
+# pragma warning (disable:4103)
+# pragma warning (push)
+# pragma warning (disable:4127)
+# pragma warning (disable:4244)
+# pragma warning (disable:4355)
+# pragma warning (disable:4512)
+# pragma warning (disable:4675)
+# if defined(_M_IX86) && defined(_Wp64)
+// The /Wp64 option is broken. If you want to check 64 bit portability, use a
+// 64 bit compiler!
+# pragma warning (disable:4311)
+# pragma warning (disable:4312)
+# endif // defined(_M_IX86) && defined(_Wp64)
+# pragma pack (push, 8)
+// Note that if the /Og optimisation flag is enabled with MSVC6, the compiler
+// has a tendency to incorrectly optimise away some calls to member template
+// functions, even though those functions contain code that should not be
+// optimised away! Therefore we will always disable this optimisation option
+// for the MSVC6 compiler.
+# if (_MSC_VER < 1300)
+# pragma optimize ("g", off)
+# endif
+# if !defined(_MT)
+# error Multithreaded RTL must be selected.
+# endif // !defined(_MT)
+
+#endif
diff --git a/3rdParty/Boost/boost/asio/detail/reactive_descriptor_service.hpp b/3rdParty/Boost/boost/asio/detail/reactive_descriptor_service.hpp
new file mode 100644
index 0000000..ad828aa
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/reactive_descriptor_service.hpp
@@ -0,0 +1,712 @@
+//
+// reactive_descriptor_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_base_from_member.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/descriptor_ops.hpp>
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Reactor>
+class reactive_descriptor_service
+ : public boost::asio::detail::service_base<
+ reactive_descriptor_service<Reactor> >
+{
+public:
+ // The native type of a descriptor.
+ typedef int native_type;
+
+ // The implementation type of the descriptor.
+ class implementation_type
+ : private boost::asio::detail::noncopyable
+ {
+ public:
+ // Default constructor.
+ implementation_type()
+ : descriptor_(-1),
+ flags_(0)
+ {
+ }
+
+ private:
+ // Only this service will have access to the internal values.
+ friend class reactive_descriptor_service<Reactor>;
+
+ // The native descriptor representation.
+ int descriptor_;
+
+ enum
+ {
+ user_set_non_blocking = 1, // The user wants a non-blocking descriptor.
+ internal_non_blocking = 2 // The descriptor has been set non-blocking.
+ };
+
+ // Flags indicating the current state of the descriptor.
+ unsigned char flags_;
+
+ // Per-descriptor data used by the reactor.
+ typename Reactor::per_descriptor_data reactor_data_;
+ };
+
+ // The maximum number of buffers to support in a single operation.
+ enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
+
+ // Constructor.
+ reactive_descriptor_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ reactive_descriptor_service<Reactor> >(io_service),
+ reactor_(boost::asio::use_service<Reactor>(io_service))
+ {
+ reactor_.init_task();
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ // Construct a new descriptor implementation.
+ void construct(implementation_type& impl)
+ {
+ impl.descriptor_ = -1;
+ impl.flags_ = 0;
+ }
+
+ // Destroy a descriptor implementation.
+ void destroy(implementation_type& impl)
+ {
+ if (impl.descriptor_ != -1)
+ {
+ reactor_.close_descriptor(impl.descriptor_, impl.reactor_data_);
+
+ if (impl.flags_ & implementation_type::internal_non_blocking)
+ {
+ ioctl_arg_type non_blocking = 0;
+ boost::system::error_code ignored_ec;
+ descriptor_ops::ioctl(impl.descriptor_,
+ FIONBIO, &non_blocking, ignored_ec);
+ impl.flags_ &= ~implementation_type::internal_non_blocking;
+ }
+
+ boost::system::error_code ignored_ec;
+ descriptor_ops::close(impl.descriptor_, ignored_ec);
+
+ impl.descriptor_ = -1;
+ }
+ }
+
+ // Assign a native descriptor to a descriptor implementation.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_descriptor, boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ if (int err = reactor_.register_descriptor(
+ native_descriptor, impl.reactor_data_))
+ {
+ ec = boost::system::error_code(err,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ impl.descriptor_ = native_descriptor;
+ impl.flags_ = 0;
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Determine whether the descriptor is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return impl.descriptor_ != -1;
+ }
+
+ // Destroy a descriptor implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ reactor_.close_descriptor(impl.descriptor_, impl.reactor_data_);
+
+ if (impl.flags_ & implementation_type::internal_non_blocking)
+ {
+ ioctl_arg_type non_blocking = 0;
+ boost::system::error_code ignored_ec;
+ descriptor_ops::ioctl(impl.descriptor_,
+ FIONBIO, &non_blocking, ignored_ec);
+ impl.flags_ &= ~implementation_type::internal_non_blocking;
+ }
+
+ if (descriptor_ops::close(impl.descriptor_, ec) == -1)
+ return ec;
+
+ impl.descriptor_ = -1;
+ }
+
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Get the native descriptor representation.
+ native_type native(const implementation_type& impl) const
+ {
+ return impl.descriptor_;
+ }
+
+ // Cancel all operations associated with the descriptor.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ reactor_.cancel_ops(impl.descriptor_, impl.reactor_data_);
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Perform an IO control command on the descriptor.
+ template <typename IO_Control_Command>
+ boost::system::error_code io_control(implementation_type& impl,
+ IO_Control_Command& command, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ if (command.name() == static_cast<int>(FIONBIO))
+ {
+ if (command.get())
+ impl.flags_ |= implementation_type::user_set_non_blocking;
+ else
+ impl.flags_ &= ~implementation_type::user_set_non_blocking;
+ ec = boost::system::error_code();
+ }
+ else
+ {
+ descriptor_ops::ioctl(impl.descriptor_, command.name(),
+ static_cast<ioctl_arg_type*>(command.data()), ec);
+ }
+ return ec;
+ }
+
+ // Write some data to the descriptor.
+ template <typename ConstBufferSequence>
+ size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into array.
+ descriptor_ops::buf bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ descriptor_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<const void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to read_some 0 bytes on a stream is a no-op.
+ if (total_buffer_size == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Make descriptor non-blocking if user wants non-blocking.
+ if (impl.flags_ & implementation_type::user_set_non_blocking)
+ {
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ if (descriptor_ops::ioctl(impl.descriptor_,
+ FIONBIO, &non_blocking, ec))
+ return 0;
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+ }
+
+ // Send the data.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ int bytes_sent = descriptor_ops::gather_write(
+ impl.descriptor_, bufs, i, ec);
+
+ // Check if operation succeeded.
+ if (bytes_sent >= 0)
+ return bytes_sent;
+
+ // Operation failed.
+ if ((impl.flags_ & implementation_type::user_set_non_blocking)
+ || (ec != boost::asio::error::would_block
+ && ec != boost::asio::error::try_again))
+ return 0;
+
+ // Wait for descriptor to become ready.
+ if (descriptor_ops::poll_write(impl.descriptor_, ec) < 0)
+ return 0;
+ }
+ }
+
+ // Wait until data can be written without blocking.
+ size_t write_some(implementation_type& impl,
+ const null_buffers&, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for descriptor to become ready.
+ descriptor_ops::poll_write(impl.descriptor_, ec);
+
+ return 0;
+ }
+
+ template <typename ConstBufferSequence, typename Handler>
+ class write_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ write_operation(int descriptor, boost::asio::io_service& io_service,
+ const ConstBufferSequence& buffers, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ descriptor_(descriptor),
+ io_service_(io_service),
+ work_(io_service),
+ buffers_(buffers)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ // Copy buffers into array.
+ descriptor_ops::buf bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers_.begin();
+ typename ConstBufferSequence::const_iterator end = buffers_.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ descriptor_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<const void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Write the data.
+ int bytes = descriptor_ops::gather_write(descriptor_, bufs, i, ec);
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+
+ bytes_transferred = (bytes < 0 ? 0 : bytes);
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ io_service_.post(bind_handler(this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ int descriptor_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ ConstBufferSequence buffers_;
+ };
+
+ // Start an asynchronous write. The data being sent must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Determine total size of buffers.
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to read_some 0 bytes on a stream is a no-op.
+ if (total_buffer_size == 0)
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::system::error_code(), 0));
+ return;
+ }
+
+ // Make descriptor non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (descriptor_ops::ioctl(impl.descriptor_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ reactor_.start_write_op(impl.descriptor_, impl.reactor_data_,
+ write_operation<ConstBufferSequence, Handler>(
+ impl.descriptor_, this->get_io_service(), buffers, handler));
+ }
+ }
+
+ template <typename Handler>
+ class null_buffers_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ null_buffers_operation(boost::asio::io_service& io_service, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ work_(io_service)
+ {
+ }
+
+ bool perform(boost::system::error_code&,
+ std::size_t& bytes_transferred)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ work_.get_io_service().post(bind_handler(
+ this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ boost::asio::io_service::work work_;
+ };
+
+ // Start an asynchronous wait until data can be written without blocking.
+ template <typename Handler>
+ void async_write_some(implementation_type& impl,
+ const null_buffers&, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ reactor_.start_write_op(impl.descriptor_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+ // Read some data from the stream. Returns the number of bytes read.
+ template <typename MutableBufferSequence>
+ size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into array.
+ descriptor_ops::buf bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ descriptor_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to read_some 0 bytes on a stream is a no-op.
+ if (total_buffer_size == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Make descriptor non-blocking if user wants non-blocking.
+ if (impl.flags_ & implementation_type::user_set_non_blocking)
+ {
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ if (descriptor_ops::ioctl(impl.descriptor_, FIONBIO, &non_blocking, ec))
+ return 0;
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+ }
+
+ // Read some data.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ int bytes_read = descriptor_ops::scatter_read(
+ impl.descriptor_, bufs, i, ec);
+
+ // Check if operation succeeded.
+ if (bytes_read > 0)
+ return bytes_read;
+
+ // Check for EOF.
+ if (bytes_read == 0)
+ {
+ ec = boost::asio::error::eof;
+ return 0;
+ }
+
+ // Operation failed.
+ if ((impl.flags_ & implementation_type::user_set_non_blocking)
+ || (ec != boost::asio::error::would_block
+ && ec != boost::asio::error::try_again))
+ return 0;
+
+ // Wait for descriptor to become ready.
+ if (descriptor_ops::poll_read(impl.descriptor_, ec) < 0)
+ return 0;
+ }
+ }
+
+ // Wait until data can be read without blocking.
+ size_t read_some(implementation_type& impl,
+ const null_buffers&, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for descriptor to become ready.
+ descriptor_ops::poll_read(impl.descriptor_, ec);
+
+ return 0;
+ }
+
+ template <typename MutableBufferSequence, typename Handler>
+ class read_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ read_operation(int descriptor, boost::asio::io_service& io_service,
+ const MutableBufferSequence& buffers, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ descriptor_(descriptor),
+ io_service_(io_service),
+ work_(io_service),
+ buffers_(buffers)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ // Copy buffers into array.
+ descriptor_ops::buf bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers_.begin();
+ typename MutableBufferSequence::const_iterator end = buffers_.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ descriptor_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Read some data.
+ int bytes = descriptor_ops::scatter_read(descriptor_, bufs, i, ec);
+ if (bytes == 0)
+ ec = boost::asio::error::eof;
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+
+ bytes_transferred = (bytes < 0 ? 0 : bytes);
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ io_service_.post(bind_handler(this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ int descriptor_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ MutableBufferSequence buffers_;
+ };
+
+ // Start an asynchronous read. The buffer for the data being read must be
+ // valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Determine total size of buffers.
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to read_some 0 bytes on a stream is a no-op.
+ if (total_buffer_size == 0)
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::system::error_code(), 0));
+ return;
+ }
+
+ // Make descriptor non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (descriptor_ops::ioctl(impl.descriptor_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ reactor_.start_read_op(impl.descriptor_, impl.reactor_data_,
+ read_operation<MutableBufferSequence, Handler>(
+ impl.descriptor_, this->get_io_service(), buffers, handler));
+ }
+ }
+
+ // Wait until data can be read without blocking.
+ template <typename Handler>
+ void async_read_some(implementation_type& impl,
+ const null_buffers&, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ reactor_.start_read_op(impl.descriptor_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+private:
+ // The selector that performs event demultiplexing for the service.
+ Reactor& reactor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/reactive_serial_port_service.hpp b/3rdParty/Boost/boost/asio/detail/reactive_serial_port_service.hpp
new file mode 100644
index 0000000..0beff14
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/reactive_serial_port_service.hpp
@@ -0,0 +1,270 @@
+//
+// reactive_serial_port_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstring>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/serial_port_base.hpp>
+
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
+ && !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/descriptor_ops.hpp>
+#include <boost/asio/detail/reactive_descriptor_service.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Extend reactive_descriptor_service to provide serial port support.
+template <typename Reactor>
+class reactive_serial_port_service
+ : public boost::asio::detail::service_base<
+ reactive_serial_port_service<Reactor> >
+{
+public:
+ // The native type of a stream handle.
+ typedef typename reactive_descriptor_service<Reactor>::native_type
+ native_type;
+
+ // The implementation type of the stream handle.
+ typedef typename reactive_descriptor_service<Reactor>::implementation_type
+ implementation_type;
+
+ reactive_serial_port_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ reactive_serial_port_service>(io_service),
+ descriptor_service_(boost::asio::use_service<
+ reactive_descriptor_service<Reactor> >(io_service))
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ // Construct a new handle implementation.
+ void construct(implementation_type& impl)
+ {
+ descriptor_service_.construct(impl);
+ }
+
+ // Destroy a handle implementation.
+ void destroy(implementation_type& impl)
+ {
+ descriptor_service_.destroy(impl);
+ }
+
+ // Open the serial port using the specified device name.
+ boost::system::error_code open(implementation_type& impl,
+ const std::string& device, boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ int fd = descriptor_ops::open(device.c_str(),
+ O_RDWR | O_NONBLOCK | O_NOCTTY, ec);
+ if (fd < 0)
+ return ec;
+
+ int s = descriptor_ops::fcntl(fd, F_GETFL, ec);
+ if (s >= 0)
+ s = descriptor_ops::fcntl(fd, F_SETFL, s | O_NONBLOCK, ec);
+ if (s < 0)
+ {
+ boost::system::error_code ignored_ec;
+ descriptor_ops::close(fd, ignored_ec);
+ return ec;
+ }
+
+ // Set up default serial port options.
+ termios ios;
+ descriptor_ops::clear_error(ec);
+ s = descriptor_ops::error_wrapper(::tcgetattr(fd, &ios), ec);
+ if (s >= 0)
+ {
+#if defined(_BSD_SOURCE)
+ ::cfmakeraw(&ios);
+#else
+ ios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK
+ | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
+ ios.c_oflag &= ~OPOST;
+ ios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
+ ios.c_cflag &= ~(CSIZE | PARENB);
+ ios.c_cflag |= CS8;
+#endif
+ ios.c_iflag |= IGNPAR;
+ ios.c_cflag |= CREAD | CLOCAL;
+ descriptor_ops::clear_error(ec);
+ s = descriptor_ops::error_wrapper(::tcsetattr(fd, TCSANOW, &ios), ec);
+ }
+ if (s < 0)
+ {
+ boost::system::error_code ignored_ec;
+ descriptor_ops::close(fd, ignored_ec);
+ return ec;
+ }
+
+ // We're done. Take ownership of the serial port descriptor.
+ if (descriptor_service_.assign(impl, fd, ec))
+ {
+ boost::system::error_code ignored_ec;
+ descriptor_ops::close(fd, ignored_ec);
+ }
+
+ return ec;
+ }
+
+ // Assign a native handle to a handle implementation.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_descriptor, boost::system::error_code& ec)
+ {
+ return descriptor_service_.assign(impl, native_descriptor, ec);
+ }
+
+ // Determine whether the handle is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return descriptor_service_.is_open(impl);
+ }
+
+ // Destroy a handle implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return descriptor_service_.close(impl, ec);
+ }
+
+ // Get the native handle representation.
+ native_type native(implementation_type& impl)
+ {
+ return descriptor_service_.native(impl);
+ }
+
+ // Cancel all operations associated with the handle.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return descriptor_service_.cancel(impl, ec);
+ }
+
+ // Set an option on the serial port.
+ template <typename SettableSerialPortOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSerialPortOption& option, boost::system::error_code& ec)
+ {
+ termios ios;
+ descriptor_ops::clear_error(ec);
+ descriptor_ops::error_wrapper(::tcgetattr(
+ descriptor_service_.native(impl), &ios), ec);
+ if (ec)
+ return ec;
+
+ if (option.store(ios, ec))
+ return ec;
+
+ descriptor_ops::clear_error(ec);
+ descriptor_ops::error_wrapper(::tcsetattr(
+ descriptor_service_.native(impl), TCSANOW, &ios), ec);
+ return ec;
+ }
+
+ // Get an option from the serial port.
+ template <typename GettableSerialPortOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSerialPortOption& option, boost::system::error_code& ec) const
+ {
+ termios ios;
+ descriptor_ops::clear_error(ec);
+ descriptor_ops::error_wrapper(::tcgetattr(
+ descriptor_service_.native(impl), &ios), ec);
+ if (ec)
+ return ec;
+
+ return option.load(ios, ec);
+ }
+
+ // Send a break sequence to the serial port.
+ boost::system::error_code send_break(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ descriptor_ops::clear_error(ec);
+ descriptor_ops::error_wrapper(::tcsendbreak(
+ descriptor_service_.native(impl), 0), ec);
+ return ec;
+ }
+
+ // Write the given data. Returns the number of bytes sent.
+ template <typename ConstBufferSequence>
+ size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return descriptor_service_.write_some(impl, buffers, ec);
+ }
+
+ // Start an asynchronous write. The data being written must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, Handler handler)
+ {
+ descriptor_service_.async_write_some(impl, buffers, handler);
+ }
+
+ // Read some data. Returns the number of bytes received.
+ template <typename MutableBufferSequence>
+ size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return descriptor_service_.read_some(impl, buffers, ec);
+ }
+
+ // Start an asynchronous read. The buffer for the data being received must be
+ // valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, Handler handler)
+ {
+ descriptor_service_.async_read_some(impl, buffers, handler);
+ }
+
+private:
+ // The handle service used for initiating asynchronous operations.
+ reactive_descriptor_service<Reactor>& descriptor_service_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ // && !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/reactive_socket_service.hpp b/3rdParty/Boost/boost/asio/detail/reactive_socket_service.hpp
new file mode 100644
index 0000000..54b8cbd
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/reactive_socket_service.hpp
@@ -0,0 +1,1788 @@
+//
+// reactive_socket_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/socket_base.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_base_from_member.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/socket_holder.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Protocol, typename Reactor>
+class reactive_socket_service
+ : public boost::asio::detail::service_base<
+ reactive_socket_service<Protocol, Reactor> >
+{
+public:
+ // The protocol type.
+ typedef Protocol protocol_type;
+
+ // The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ // The native type of a socket.
+ typedef socket_type native_type;
+
+ // The implementation type of the socket.
+ class implementation_type
+ : private boost::asio::detail::noncopyable
+ {
+ public:
+ // Default constructor.
+ implementation_type()
+ : socket_(invalid_socket),
+ flags_(0),
+ protocol_(endpoint_type().protocol())
+ {
+ }
+
+ private:
+ // Only this service will have access to the internal values.
+ friend class reactive_socket_service<Protocol, Reactor>;
+
+ // The native socket representation.
+ socket_type socket_;
+
+ enum
+ {
+ // The user wants a non-blocking socket.
+ user_set_non_blocking = 1,
+
+ // The implementation wants a non-blocking socket (in order to be able to
+ // perform asynchronous read and write operations).
+ internal_non_blocking = 2,
+
+ // Helper "flag" used to determine whether the socket is non-blocking.
+ non_blocking = user_set_non_blocking | internal_non_blocking,
+
+ // User wants connection_aborted errors, which are disabled by default.
+ enable_connection_aborted = 4,
+
+ // The user set the linger option. Needs to be checked when closing.
+ user_set_linger = 8
+ };
+
+ // Flags indicating the current state of the socket.
+ unsigned char flags_;
+
+ // The protocol associated with the socket.
+ protocol_type protocol_;
+
+ // Per-descriptor data used by the reactor.
+ typename Reactor::per_descriptor_data reactor_data_;
+ };
+
+ // The maximum number of buffers to support in a single operation.
+ enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
+
+ // Constructor.
+ reactive_socket_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ reactive_socket_service<Protocol, Reactor> >(io_service),
+ reactor_(boost::asio::use_service<Reactor>(io_service))
+ {
+ reactor_.init_task();
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ // Construct a new socket implementation.
+ void construct(implementation_type& impl)
+ {
+ impl.socket_ = invalid_socket;
+ impl.flags_ = 0;
+ }
+
+ // Destroy a socket implementation.
+ void destroy(implementation_type& impl)
+ {
+ if (impl.socket_ != invalid_socket)
+ {
+ reactor_.close_descriptor(impl.socket_, impl.reactor_data_);
+
+ if (impl.flags_ & implementation_type::non_blocking)
+ {
+ ioctl_arg_type non_blocking = 0;
+ boost::system::error_code ignored_ec;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ignored_ec);
+ impl.flags_ &= ~implementation_type::non_blocking;
+ }
+
+ if (impl.flags_ & implementation_type::user_set_linger)
+ {
+ ::linger opt;
+ opt.l_onoff = 0;
+ opt.l_linger = 0;
+ boost::system::error_code ignored_ec;
+ socket_ops::setsockopt(impl.socket_,
+ SOL_SOCKET, SO_LINGER, &opt, sizeof(opt), ignored_ec);
+ }
+
+ boost::system::error_code ignored_ec;
+ socket_ops::close(impl.socket_, ignored_ec);
+
+ impl.socket_ = invalid_socket;
+ }
+ }
+
+ // Open a new socket implementation.
+ boost::system::error_code open(implementation_type& impl,
+ const protocol_type& protocol, boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ socket_holder sock(socket_ops::socket(protocol.family(),
+ protocol.type(), protocol.protocol(), ec));
+ if (sock.get() == invalid_socket)
+ return ec;
+
+ if (int err = reactor_.register_descriptor(sock.get(), impl.reactor_data_))
+ {
+ ec = boost::system::error_code(err,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ impl.socket_ = sock.release();
+ impl.flags_ = 0;
+ impl.protocol_ = protocol;
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Assign a native socket to a socket implementation.
+ boost::system::error_code assign(implementation_type& impl,
+ const protocol_type& protocol, const native_type& native_socket,
+ boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ if (int err = reactor_.register_descriptor(
+ native_socket, impl.reactor_data_))
+ {
+ ec = boost::system::error_code(err,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ impl.socket_ = native_socket;
+ impl.flags_ = 0;
+ impl.protocol_ = protocol;
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Determine whether the socket is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return impl.socket_ != invalid_socket;
+ }
+
+ // Destroy a socket implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ reactor_.close_descriptor(impl.socket_, impl.reactor_data_);
+
+ if (impl.flags_ & implementation_type::non_blocking)
+ {
+ ioctl_arg_type non_blocking = 0;
+ boost::system::error_code ignored_ec;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ignored_ec);
+ impl.flags_ &= ~implementation_type::non_blocking;
+ }
+
+ if (socket_ops::close(impl.socket_, ec) == socket_error_retval)
+ return ec;
+
+ impl.socket_ = invalid_socket;
+ }
+
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Get the native socket representation.
+ native_type native(implementation_type& impl)
+ {
+ return impl.socket_;
+ }
+
+ // Cancel all operations associated with the socket.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ reactor_.cancel_ops(impl.socket_, impl.reactor_data_);
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Determine whether the socket is at the out-of-band data mark.
+ bool at_mark(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return false;
+ }
+
+ boost::asio::detail::ioctl_arg_type value = 0;
+ socket_ops::ioctl(impl.socket_, SIOCATMARK, &value, ec);
+#if defined(ENOTTY)
+ if (ec.value() == ENOTTY)
+ ec = boost::asio::error::not_socket;
+#endif // defined(ENOTTY)
+ return ec ? false : value != 0;
+ }
+
+ // Determine the number of bytes available for reading.
+ std::size_t available(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ boost::asio::detail::ioctl_arg_type value = 0;
+ socket_ops::ioctl(impl.socket_, FIONREAD, &value, ec);
+#if defined(ENOTTY)
+ if (ec.value() == ENOTTY)
+ ec = boost::asio::error::not_socket;
+#endif // defined(ENOTTY)
+ return ec ? static_cast<std::size_t>(0) : static_cast<std::size_t>(value);
+ }
+
+ // Bind the socket to the specified local endpoint.
+ boost::system::error_code bind(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec);
+ return ec;
+ }
+
+ // Place the socket into the state where it will listen for new connections.
+ boost::system::error_code listen(implementation_type& impl, int backlog,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::listen(impl.socket_, backlog, ec);
+ return ec;
+ }
+
+ // Set a socket option.
+ template <typename Option>
+ boost::system::error_code set_option(implementation_type& impl,
+ const Option& option, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ if (option.level(impl.protocol_) == custom_socket_option_level
+ && option.name(impl.protocol_) == enable_connection_aborted_option)
+ {
+ if (option.size(impl.protocol_) != sizeof(int))
+ {
+ ec = boost::asio::error::invalid_argument;
+ }
+ else
+ {
+ if (*reinterpret_cast<const int*>(option.data(impl.protocol_)))
+ impl.flags_ |= implementation_type::enable_connection_aborted;
+ else
+ impl.flags_ &= ~implementation_type::enable_connection_aborted;
+ ec = boost::system::error_code();
+ }
+ return ec;
+ }
+ else
+ {
+ if (option.level(impl.protocol_) == SOL_SOCKET
+ && option.name(impl.protocol_) == SO_LINGER)
+ {
+ impl.flags_ |= implementation_type::user_set_linger;
+ }
+
+ socket_ops::setsockopt(impl.socket_,
+ option.level(impl.protocol_), option.name(impl.protocol_),
+ option.data(impl.protocol_), option.size(impl.protocol_), ec);
+
+#if defined(__MACH__) && defined(__APPLE__) \
+|| defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ // To implement portable behaviour for SO_REUSEADDR with UDP sockets we
+ // need to also set SO_REUSEPORT on BSD-based platforms.
+ if (!ec && impl.protocol_.type() == SOCK_DGRAM
+ && option.level(impl.protocol_) == SOL_SOCKET
+ && option.name(impl.protocol_) == SO_REUSEADDR)
+ {
+ boost::system::error_code ignored_ec;
+ socket_ops::setsockopt(impl.socket_, SOL_SOCKET, SO_REUSEPORT,
+ option.data(impl.protocol_), option.size(impl.protocol_),
+ ignored_ec);
+ }
+#endif
+
+ return ec;
+ }
+ }
+
+ // Set a socket option.
+ template <typename Option>
+ boost::system::error_code get_option(const implementation_type& impl,
+ Option& option, boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ if (option.level(impl.protocol_) == custom_socket_option_level
+ && option.name(impl.protocol_) == enable_connection_aborted_option)
+ {
+ if (option.size(impl.protocol_) != sizeof(int))
+ {
+ ec = boost::asio::error::invalid_argument;
+ }
+ else
+ {
+ int* target = reinterpret_cast<int*>(option.data(impl.protocol_));
+ if (impl.flags_ & implementation_type::enable_connection_aborted)
+ *target = 1;
+ else
+ *target = 0;
+ option.resize(impl.protocol_, sizeof(int));
+ ec = boost::system::error_code();
+ }
+ return ec;
+ }
+ else
+ {
+ size_t size = option.size(impl.protocol_);
+ socket_ops::getsockopt(impl.socket_,
+ option.level(impl.protocol_), option.name(impl.protocol_),
+ option.data(impl.protocol_), &size, ec);
+ if (!ec)
+ option.resize(impl.protocol_, size);
+ return ec;
+ }
+ }
+
+ // Perform an IO control command on the socket.
+ template <typename IO_Control_Command>
+ boost::system::error_code io_control(implementation_type& impl,
+ IO_Control_Command& command, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ if (command.name() == static_cast<int>(FIONBIO))
+ {
+ // Flags are manipulated in a temporary variable so that the socket
+ // implementation is not updated unless the ioctl operation succeeds.
+ unsigned char new_flags = impl.flags_;
+ if (*static_cast<ioctl_arg_type*>(command.data()))
+ new_flags |= implementation_type::user_set_non_blocking;
+ else
+ new_flags &= ~implementation_type::user_set_non_blocking;
+
+ // Perform ioctl on socket if the non-blocking state has changed.
+ if (!(impl.flags_ & implementation_type::non_blocking)
+ && (new_flags & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec);
+ }
+ else if ((impl.flags_ & implementation_type::non_blocking)
+ && !(new_flags & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 0;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec);
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+
+ // Update socket implementation's flags only if successful.
+ if (!ec)
+ impl.flags_ = new_flags;
+ }
+ else
+ {
+ socket_ops::ioctl(impl.socket_, command.name(),
+ static_cast<ioctl_arg_type*>(command.data()), ec);
+ }
+ return ec;
+ }
+
+ // Get the local endpoint.
+ endpoint_type local_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return endpoint_type();
+ }
+
+ endpoint_type endpoint;
+ std::size_t addr_len = endpoint.capacity();
+ if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec))
+ return endpoint_type();
+ endpoint.resize(addr_len);
+ return endpoint;
+ }
+
+ // Get the remote endpoint.
+ endpoint_type remote_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return endpoint_type();
+ }
+
+ endpoint_type endpoint;
+ std::size_t addr_len = endpoint.capacity();
+ if (socket_ops::getpeername(impl.socket_, endpoint.data(), &addr_len, ec))
+ return endpoint_type();
+ endpoint.resize(addr_len);
+ return endpoint;
+ }
+
+ /// Disable sends or receives on the socket.
+ boost::system::error_code shutdown(implementation_type& impl,
+ socket_base::shutdown_type what, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::shutdown(impl.socket_, what, ec);
+ return ec;
+ }
+
+ // Send the given data to the peer.
+ template <typename ConstBufferSequence>
+ size_t send(implementation_type& impl, const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<const void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (impl.protocol_.type() == SOCK_STREAM && total_buffer_size == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Send the data.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ int bytes_sent = socket_ops::send(impl.socket_, bufs, i, flags, ec);
+
+ // Check if operation succeeded.
+ if (bytes_sent >= 0)
+ return bytes_sent;
+
+ // Operation failed.
+ if ((impl.flags_ & implementation_type::user_set_non_blocking)
+ || (ec != boost::asio::error::would_block
+ && ec != boost::asio::error::try_again))
+ return 0;
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_write(impl.socket_, ec) < 0)
+ return 0;
+ }
+ }
+
+ // Wait until data can be sent without blocking.
+ size_t send(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_write(impl.socket_, ec);
+
+ return 0;
+ }
+
+ template <typename ConstBufferSequence, typename Handler>
+ class send_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ send_operation(socket_type socket, boost::asio::io_service& io_service,
+ const ConstBufferSequence& buffers, socket_base::message_flags flags,
+ Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ socket_(socket),
+ io_service_(io_service),
+ work_(io_service),
+ buffers_(buffers),
+ flags_(flags)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers_.begin();
+ typename ConstBufferSequence::const_iterator end = buffers_.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<const void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Send the data.
+ int bytes = socket_ops::send(socket_, bufs, i, flags_, ec);
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+
+ bytes_transferred = (bytes < 0 ? 0 : bytes);
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ io_service_.post(bind_handler(this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ socket_type socket_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ ConstBufferSequence buffers_;
+ socket_base::message_flags flags_;
+ };
+
+ // Start an asynchronous send. The data being sent must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_send(implementation_type& impl, const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ if (impl.protocol_.type() == SOCK_STREAM)
+ {
+ // Determine total size of buffers.
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (total_buffer_size == 0)
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::system::error_code(), 0));
+ return;
+ }
+ }
+
+ // Make socket non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ if (!(impl.flags_ & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ reactor_.start_write_op(impl.socket_, impl.reactor_data_,
+ send_operation<ConstBufferSequence, Handler>(
+ impl.socket_, this->get_io_service(), buffers, flags, handler));
+ }
+ }
+
+ template <typename Handler>
+ class null_buffers_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ null_buffers_operation(boost::asio::io_service& io_service, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ work_(io_service)
+ {
+ }
+
+ bool perform(boost::system::error_code&,
+ std::size_t& bytes_transferred)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ work_.get_io_service().post(bind_handler(
+ this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ boost::asio::io_service::work work_;
+ };
+
+ // Start an asynchronous wait until data can be sent without blocking.
+ template <typename Handler>
+ void async_send(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ reactor_.start_write_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+ // Send a datagram to the specified endpoint. Returns the number of bytes
+ // sent.
+ template <typename ConstBufferSequence>
+ size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<const void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Send the data.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ int bytes_sent = socket_ops::sendto(impl.socket_, bufs, i, flags,
+ destination.data(), destination.size(), ec);
+
+ // Check if operation succeeded.
+ if (bytes_sent >= 0)
+ return bytes_sent;
+
+ // Operation failed.
+ if ((impl.flags_ & implementation_type::user_set_non_blocking)
+ || (ec != boost::asio::error::would_block
+ && ec != boost::asio::error::try_again))
+ return 0;
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_write(impl.socket_, ec) < 0)
+ return 0;
+ }
+ }
+
+ // Wait until data can be sent without blocking.
+ size_t send_to(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, const endpoint_type&,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_write(impl.socket_, ec);
+
+ return 0;
+ }
+
+ template <typename ConstBufferSequence, typename Handler>
+ class send_to_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ send_to_operation(socket_type socket, boost::asio::io_service& io_service,
+ const ConstBufferSequence& buffers, const endpoint_type& endpoint,
+ socket_base::message_flags flags, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ socket_(socket),
+ io_service_(io_service),
+ work_(io_service),
+ buffers_(buffers),
+ destination_(endpoint),
+ flags_(flags)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers_.begin();
+ typename ConstBufferSequence::const_iterator end = buffers_.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<const void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Send the data.
+ int bytes = socket_ops::sendto(socket_, bufs, i, flags_,
+ destination_.data(), destination_.size(), ec);
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+
+ bytes_transferred = (bytes < 0 ? 0 : bytes);
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ io_service_.post(bind_handler(this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ socket_type socket_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ ConstBufferSequence buffers_;
+ endpoint_type destination_;
+ socket_base::message_flags flags_;
+ };
+
+ // Start an asynchronous send. The data being sent must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_send_to(implementation_type& impl,
+ const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Make socket non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ if (!(impl.flags_ & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ reactor_.start_write_op(impl.socket_, impl.reactor_data_,
+ send_to_operation<ConstBufferSequence, Handler>(
+ impl.socket_, this->get_io_service(), buffers,
+ destination, flags, handler));
+ }
+ }
+
+ // Start an asynchronous wait until data can be sent without blocking.
+ template <typename Handler>
+ void async_send_to(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, const endpoint_type&, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ reactor_.start_write_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+ // Receive some data from the peer. Returns the number of bytes received.
+ template <typename MutableBufferSequence>
+ size_t receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (impl.protocol_.type() == SOCK_STREAM && total_buffer_size == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Receive some data.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ int bytes_recvd = socket_ops::recv(impl.socket_, bufs, i, flags, ec);
+
+ // Check if operation succeeded.
+ if (bytes_recvd > 0)
+ return bytes_recvd;
+
+ // Check for EOF.
+ if (bytes_recvd == 0 && impl.protocol_.type() == SOCK_STREAM)
+ {
+ ec = boost::asio::error::eof;
+ return 0;
+ }
+
+ // Operation failed.
+ if ((impl.flags_ & implementation_type::user_set_non_blocking)
+ || (ec != boost::asio::error::would_block
+ && ec != boost::asio::error::try_again))
+ return 0;
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_read(impl.socket_, ec) < 0)
+ return 0;
+ }
+ }
+
+ // Wait until data can be received without blocking.
+ size_t receive(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_read(impl.socket_, ec);
+
+ return 0;
+ }
+
+ template <typename MutableBufferSequence, typename Handler>
+ class receive_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ receive_operation(socket_type socket, int protocol_type,
+ boost::asio::io_service& io_service,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ socket_(socket),
+ protocol_type_(protocol_type),
+ io_service_(io_service),
+ work_(io_service),
+ buffers_(buffers),
+ flags_(flags)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers_.begin();
+ typename MutableBufferSequence::const_iterator end = buffers_.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Receive some data.
+ int bytes = socket_ops::recv(socket_, bufs, i, flags_, ec);
+ if (bytes == 0 && protocol_type_ == SOCK_STREAM)
+ ec = boost::asio::error::eof;
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+
+ bytes_transferred = (bytes < 0 ? 0 : bytes);
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ io_service_.post(bind_handler(this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ socket_type socket_;
+ int protocol_type_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ MutableBufferSequence buffers_;
+ socket_base::message_flags flags_;
+ };
+
+ // Start an asynchronous receive. The buffer for the data being received
+ // must be valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ if (impl.protocol_.type() == SOCK_STREAM)
+ {
+ // Determine total size of buffers.
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (total_buffer_size == 0)
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::system::error_code(), 0));
+ return;
+ }
+ }
+
+ // Make socket non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ if (!(impl.flags_ & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ if (flags & socket_base::message_out_of_band)
+ {
+ reactor_.start_except_op(impl.socket_, impl.reactor_data_,
+ receive_operation<MutableBufferSequence, Handler>(
+ impl.socket_, impl.protocol_.type(),
+ this->get_io_service(), buffers, flags, handler));
+ }
+ else
+ {
+ reactor_.start_read_op(impl.socket_, impl.reactor_data_,
+ receive_operation<MutableBufferSequence, Handler>(
+ impl.socket_, impl.protocol_.type(),
+ this->get_io_service(), buffers, flags, handler));
+ }
+ }
+ }
+
+ // Wait until data can be received without blocking.
+ template <typename Handler>
+ void async_receive(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else if (flags & socket_base::message_out_of_band)
+ {
+ reactor_.start_except_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler));
+ }
+ else
+ {
+ reactor_.start_read_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+ // Receive a datagram with the endpoint of the sender. Returns the number of
+ // bytes received.
+ template <typename MutableBufferSequence>
+ size_t receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Receive some data.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ std::size_t addr_len = sender_endpoint.capacity();
+ int bytes_recvd = socket_ops::recvfrom(impl.socket_, bufs, i, flags,
+ sender_endpoint.data(), &addr_len, ec);
+
+ // Check if operation succeeded.
+ if (bytes_recvd > 0)
+ {
+ sender_endpoint.resize(addr_len);
+ return bytes_recvd;
+ }
+
+ // Check for EOF.
+ if (bytes_recvd == 0 && impl.protocol_.type() == SOCK_STREAM)
+ {
+ ec = boost::asio::error::eof;
+ return 0;
+ }
+
+ // Operation failed.
+ if ((impl.flags_ & implementation_type::user_set_non_blocking)
+ || (ec != boost::asio::error::would_block
+ && ec != boost::asio::error::try_again))
+ return 0;
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_read(impl.socket_, ec) < 0)
+ return 0;
+ }
+ }
+
+ // Wait until data can be received without blocking.
+ size_t receive_from(implementation_type& impl, const null_buffers&,
+ endpoint_type& sender_endpoint, socket_base::message_flags,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_read(impl.socket_, ec);
+
+ // Reset endpoint since it can be given no sensible value at this time.
+ sender_endpoint = endpoint_type();
+
+ return 0;
+ }
+
+ template <typename MutableBufferSequence, typename Handler>
+ class receive_from_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ receive_from_operation(socket_type socket, int protocol_type,
+ boost::asio::io_service& io_service,
+ const MutableBufferSequence& buffers, endpoint_type& endpoint,
+ socket_base::message_flags flags, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ socket_(socket),
+ protocol_type_(protocol_type),
+ io_service_(io_service),
+ work_(io_service),
+ buffers_(buffers),
+ sender_endpoint_(endpoint),
+ flags_(flags)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ // Copy buffers into array.
+ socket_ops::buf bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers_.begin();
+ typename MutableBufferSequence::const_iterator end = buffers_.end();
+ size_t i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ socket_ops::init_buf(bufs[i],
+ boost::asio::buffer_cast<void*>(buffer),
+ boost::asio::buffer_size(buffer));
+ }
+
+ // Receive some data.
+ std::size_t addr_len = sender_endpoint_.capacity();
+ int bytes = socket_ops::recvfrom(socket_, bufs, i, flags_,
+ sender_endpoint_.data(), &addr_len, ec);
+ if (bytes == 0 && protocol_type_ == SOCK_STREAM)
+ ec = boost::asio::error::eof;
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+
+ sender_endpoint_.resize(addr_len);
+ bytes_transferred = (bytes < 0 ? 0 : bytes);
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ io_service_.post(bind_handler(this->handler_, ec, bytes_transferred));
+ }
+
+ private:
+ socket_type socket_;
+ int protocol_type_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ MutableBufferSequence buffers_;
+ endpoint_type& sender_endpoint_;
+ socket_base::message_flags flags_;
+ };
+
+ // Start an asynchronous receive. The buffer for the data being received and
+ // the sender_endpoint object must both be valid for the lifetime of the
+ // asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Make socket non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ if (!(impl.flags_ & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec, 0));
+ return;
+ }
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ reactor_.start_read_op(impl.socket_, impl.reactor_data_,
+ receive_from_operation<MutableBufferSequence, Handler>(
+ impl.socket_, impl.protocol_.type(), this->get_io_service(),
+ buffers, sender_endpoint, flags, handler));
+ }
+ }
+
+ // Wait until data can be received without blocking.
+ template <typename Handler>
+ void async_receive_from(implementation_type& impl,
+ const null_buffers&, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Reset endpoint since it can be given no sensible value at this time.
+ sender_endpoint = endpoint_type();
+
+ if (flags & socket_base::message_out_of_band)
+ {
+ reactor_.start_except_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler));
+ }
+ else
+ {
+ reactor_.start_read_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+ }
+
+ // Accept a new connection.
+ template <typename Socket>
+ boost::system::error_code accept(implementation_type& impl,
+ Socket& peer, endpoint_type* peer_endpoint, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ // We cannot accept a socket that is already open.
+ if (peer.is_open())
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ // Accept a socket.
+ for (;;)
+ {
+ // Try to complete the operation without blocking.
+ boost::system::error_code ec;
+ socket_holder new_socket;
+ std::size_t addr_len = 0;
+ if (peer_endpoint)
+ {
+ addr_len = peer_endpoint->capacity();
+ new_socket.reset(socket_ops::accept(impl.socket_,
+ peer_endpoint->data(), &addr_len, ec));
+ }
+ else
+ {
+ new_socket.reset(socket_ops::accept(impl.socket_, 0, 0, ec));
+ }
+
+ // Check if operation succeeded.
+ if (new_socket.get() >= 0)
+ {
+ if (peer_endpoint)
+ peer_endpoint->resize(addr_len);
+ peer.assign(impl.protocol_, new_socket.get(), ec);
+ if (!ec)
+ new_socket.release();
+ return ec;
+ }
+
+ // Operation failed.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ {
+ if (impl.flags_ & implementation_type::user_set_non_blocking)
+ return ec;
+ // Fall through to retry operation.
+ }
+ else if (ec == boost::asio::error::connection_aborted)
+ {
+ if (impl.flags_ & implementation_type::enable_connection_aborted)
+ return ec;
+ // Fall through to retry operation.
+ }
+#if defined(EPROTO)
+ else if (ec.value() == EPROTO)
+ {
+ if (impl.flags_ & implementation_type::enable_connection_aborted)
+ return ec;
+ // Fall through to retry operation.
+ }
+#endif // defined(EPROTO)
+ else
+ return ec;
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_read(impl.socket_, ec) < 0)
+ return ec;
+ }
+ }
+
+ template <typename Socket, typename Handler>
+ class accept_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ accept_operation(socket_type socket, boost::asio::io_service& io_service,
+ Socket& peer, const protocol_type& protocol,
+ endpoint_type* peer_endpoint, bool enable_connection_aborted,
+ Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ socket_(socket),
+ io_service_(io_service),
+ work_(io_service),
+ peer_(peer),
+ protocol_(protocol),
+ peer_endpoint_(peer_endpoint),
+ enable_connection_aborted_(enable_connection_aborted)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec, std::size_t&)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ return true;
+
+ // Accept the waiting connection.
+ socket_holder new_socket;
+ std::size_t addr_len = 0;
+ if (peer_endpoint_)
+ {
+ addr_len = peer_endpoint_->capacity();
+ new_socket.reset(socket_ops::accept(socket_,
+ peer_endpoint_->data(), &addr_len, ec));
+ }
+ else
+ {
+ new_socket.reset(socket_ops::accept(socket_, 0, 0, ec));
+ }
+
+ // Check if we need to run the operation again.
+ if (ec == boost::asio::error::would_block
+ || ec == boost::asio::error::try_again)
+ return false;
+ if (ec == boost::asio::error::connection_aborted
+ && !enable_connection_aborted_)
+ return false;
+#if defined(EPROTO)
+ if (ec.value() == EPROTO && !enable_connection_aborted_)
+ return false;
+#endif // defined(EPROTO)
+
+ // Transfer ownership of the new socket to the peer object.
+ if (!ec)
+ {
+ if (peer_endpoint_)
+ peer_endpoint_->resize(addr_len);
+ peer_.assign(protocol_, new_socket.get(), ec);
+ if (!ec)
+ new_socket.release();
+ }
+
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec, std::size_t)
+ {
+ io_service_.post(bind_handler(this->handler_, ec));
+ }
+
+ private:
+ socket_type socket_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ Socket& peer_;
+ protocol_type protocol_;
+ endpoint_type* peer_endpoint_;
+ bool enable_connection_aborted_;
+ };
+
+ // Start an asynchronous accept. The peer and peer_endpoint objects
+ // must be valid until the accept's handler is invoked.
+ template <typename Socket, typename Handler>
+ void async_accept(implementation_type& impl, Socket& peer,
+ endpoint_type* peer_endpoint, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor));
+ }
+ else if (peer.is_open())
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::already_open));
+ }
+ else
+ {
+ // Make socket non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ if (!(impl.flags_ & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec));
+ return;
+ }
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ reactor_.start_read_op(impl.socket_, impl.reactor_data_,
+ accept_operation<Socket, Handler>(
+ impl.socket_, this->get_io_service(),
+ peer, impl.protocol_, peer_endpoint,
+ (impl.flags_ & implementation_type::enable_connection_aborted) != 0,
+ handler));
+ }
+ }
+
+ // Connect the socket to the specified endpoint.
+ boost::system::error_code connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ // Perform the connect operation.
+ socket_ops::connect(impl.socket_,
+ peer_endpoint.data(), peer_endpoint.size(), ec);
+ if (ec != boost::asio::error::in_progress
+ && ec != boost::asio::error::would_block)
+ {
+ // The connect operation finished immediately.
+ return ec;
+ }
+
+ // Wait for socket to become ready.
+ if (socket_ops::poll_connect(impl.socket_, ec) < 0)
+ return ec;
+
+ // Get the error code from the connect operation.
+ int connect_error = 0;
+ size_t connect_error_len = sizeof(connect_error);
+ if (socket_ops::getsockopt(impl.socket_, SOL_SOCKET, SO_ERROR,
+ &connect_error, &connect_error_len, ec) == socket_error_retval)
+ return ec;
+
+ // Return the result of the connect operation.
+ ec = boost::system::error_code(connect_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ template <typename Handler>
+ class connect_operation :
+ public handler_base_from_member<Handler>
+ {
+ public:
+ connect_operation(socket_type socket,
+ boost::asio::io_service& io_service, Handler handler)
+ : handler_base_from_member<Handler>(handler),
+ socket_(socket),
+ io_service_(io_service),
+ work_(io_service)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec, std::size_t&)
+ {
+ // Check whether the operation was successful.
+ if (ec)
+ return true;
+
+ // Get the error code from the connect operation.
+ int connect_error = 0;
+ size_t connect_error_len = sizeof(connect_error);
+ if (socket_ops::getsockopt(socket_, SOL_SOCKET, SO_ERROR,
+ &connect_error, &connect_error_len, ec) == socket_error_retval)
+ return true;
+
+ // The connection failed so the handler will be posted with an error code.
+ if (connect_error)
+ {
+ ec = boost::system::error_code(connect_error,
+ boost::asio::error::get_system_category());
+ return true;
+ }
+
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec, std::size_t)
+ {
+ io_service_.post(bind_handler(this->handler_, ec));
+ }
+
+ private:
+ socket_type socket_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ };
+
+ // Start an asynchronous connect.
+ template <typename Handler>
+ void async_connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor));
+ return;
+ }
+
+ // Make socket non-blocking.
+ if (!(impl.flags_ & implementation_type::internal_non_blocking))
+ {
+ if (!(impl.flags_ & implementation_type::non_blocking))
+ {
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec));
+ return;
+ }
+ }
+ impl.flags_ |= implementation_type::internal_non_blocking;
+ }
+
+ // Start the connect operation. The socket is already marked as non-blocking
+ // so the connection will take place asynchronously.
+ boost::system::error_code ec;
+ if (socket_ops::connect(impl.socket_, peer_endpoint.data(),
+ peer_endpoint.size(), ec) == 0)
+ {
+ // The connect operation has finished successfully so we need to post the
+ // handler immediately.
+ this->get_io_service().post(bind_handler(handler,
+ boost::system::error_code()));
+ }
+ else if (ec == boost::asio::error::in_progress
+ || ec == boost::asio::error::would_block)
+ {
+ // The connection is happening in the background, and we need to wait
+ // until the socket becomes writeable.
+ reactor_.start_connect_op(impl.socket_, impl.reactor_data_,
+ connect_operation<Handler>(impl.socket_,
+ this->get_io_service(), handler));
+ }
+ else
+ {
+ // The connect operation has failed, so post the handler immediately.
+ this->get_io_service().post(bind_handler(handler, ec));
+ }
+ }
+
+private:
+ // The selector that performs event demultiplexing for the service.
+ Reactor& reactor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/reactor_op_queue.hpp b/3rdParty/Boost/boost/asio/detail/reactor_op_queue.hpp
new file mode 100644
index 0000000..0fbbf23
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/reactor_op_queue.hpp
@@ -0,0 +1,456 @@
+//
+// reactor_op_queue.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
+#define BOOST_ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <memory>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/hash_map.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Descriptor>
+class reactor_op_queue
+ : private noncopyable
+{
+public:
+ // Constructor.
+ reactor_op_queue()
+ : operations_(),
+ cancelled_operations_(0),
+ complete_operations_(0)
+ {
+ }
+
+ // Add a new operation to the queue. Returns true if this is the only
+ // operation for the given descriptor, in which case the reactor's event
+ // demultiplexing function call may need to be interrupted and restarted.
+ template <typename Operation>
+ bool enqueue_operation(Descriptor descriptor, Operation operation)
+ {
+ // Allocate and construct an object to wrap the handler.
+ typedef handler_alloc_traits<Operation, op<Operation> > alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(operation);
+ handler_ptr<alloc_traits> ptr(raw_ptr, descriptor, operation);
+
+ typedef typename operation_map::iterator iterator;
+ typedef typename operation_map::value_type value_type;
+ std::pair<iterator, bool> entry =
+ operations_.insert(value_type(descriptor, ptr.get()));
+ if (entry.second)
+ {
+ ptr.release();
+ return true;
+ }
+
+ op_base* current_op = entry.first->second;
+ while (current_op->next_)
+ current_op = current_op->next_;
+ current_op->next_ = ptr.release();
+
+ return false;
+ }
+
+ // Cancel all operations associated with the descriptor. Any operations
+ // pending for the descriptor will be notified that they have been cancelled
+ // next time perform_cancellations is called. Returns true if any operations
+ // were cancelled, in which case the reactor's event demultiplexing function
+ // may need to be interrupted and restarted.
+ bool cancel_operations(Descriptor descriptor)
+ {
+ typename operation_map::iterator i = operations_.find(descriptor);
+ if (i != operations_.end())
+ {
+ op_base* last_op = i->second;
+ while (last_op->next_)
+ last_op = last_op->next_;
+ last_op->next_ = cancelled_operations_;
+ cancelled_operations_ = i->second;
+ operations_.erase(i);
+ return true;
+ }
+
+ return false;
+ }
+
+ // Whether there are no operations in the queue.
+ bool empty() const
+ {
+ return operations_.empty();
+ }
+
+ // Determine whether there are any operations associated with the descriptor.
+ bool has_operation(Descriptor descriptor) const
+ {
+ return operations_.find(descriptor) != operations_.end();
+ }
+
+ // Perform the first operation corresponding to the descriptor. Returns true
+ // if there are more operations queued for the descriptor.
+ bool perform_operation(Descriptor descriptor,
+ const boost::system::error_code& result)
+ {
+ typename operation_map::iterator i = operations_.find(descriptor);
+ if (i != operations_.end())
+ {
+ op_base* this_op = i->second;
+ i->second = this_op->next_;
+ this_op->next_ = complete_operations_;
+ complete_operations_ = this_op;
+ bool done = this_op->perform(result);
+ if (done)
+ {
+ // Operation has finished.
+ if (i->second)
+ {
+ return true;
+ }
+ else
+ {
+ operations_.erase(i);
+ return false;
+ }
+ }
+ else
+ {
+ // Operation wants to be called again. Leave it at the front of the
+ // queue for this descriptor, and remove from the completed list.
+ complete_operations_ = this_op->next_;
+ this_op->next_ = i->second;
+ i->second = this_op;
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // Perform all operations corresponding to the descriptor.
+ void perform_all_operations(Descriptor descriptor,
+ const boost::system::error_code& result)
+ {
+ typename operation_map::iterator i = operations_.find(descriptor);
+ if (i != operations_.end())
+ {
+ while (i->second)
+ {
+ op_base* this_op = i->second;
+ i->second = this_op->next_;
+ this_op->next_ = complete_operations_;
+ complete_operations_ = this_op;
+ bool done = this_op->perform(result);
+ if (!done)
+ {
+ // Operation has not finished yet, so leave at front of queue, and
+ // remove from the completed list.
+ complete_operations_ = this_op->next_;
+ this_op->next_ = i->second;
+ i->second = this_op;
+ return;
+ }
+ }
+ operations_.erase(i);
+ }
+ }
+
+ // Fill a descriptor set with the descriptors corresponding to each active
+ // operation.
+ template <typename Descriptor_Set>
+ void get_descriptors(Descriptor_Set& descriptors)
+ {
+ typename operation_map::iterator i = operations_.begin();
+ while (i != operations_.end())
+ {
+ Descriptor descriptor = i->first;
+ ++i;
+ if (!descriptors.set(descriptor))
+ {
+ boost::system::error_code ec(error::fd_set_failure);
+ perform_all_operations(descriptor, ec);
+ }
+ }
+ }
+
+ // Perform the operations corresponding to the ready file descriptors
+ // contained in the given descriptor set.
+ template <typename Descriptor_Set>
+ void perform_operations_for_descriptors(const Descriptor_Set& descriptors,
+ const boost::system::error_code& result)
+ {
+ typename operation_map::iterator i = operations_.begin();
+ while (i != operations_.end())
+ {
+ typename operation_map::iterator op_iter = i++;
+ if (descriptors.is_set(op_iter->first))
+ {
+ op_base* this_op = op_iter->second;
+ op_iter->second = this_op->next_;
+ this_op->next_ = complete_operations_;
+ complete_operations_ = this_op;
+ bool done = this_op->perform(result);
+ if (done)
+ {
+ if (!op_iter->second)
+ operations_.erase(op_iter);
+ }
+ else
+ {
+ // Operation has not finished yet, so leave at front of queue, and
+ // remove from the completed list.
+ complete_operations_ = this_op->next_;
+ this_op->next_ = op_iter->second;
+ op_iter->second = this_op;
+ }
+ }
+ }
+ }
+
+ // Perform any pending cancels for operations.
+ void perform_cancellations()
+ {
+ while (cancelled_operations_)
+ {
+ op_base* this_op = cancelled_operations_;
+ cancelled_operations_ = this_op->next_;
+ this_op->next_ = complete_operations_;
+ complete_operations_ = this_op;
+ this_op->perform(boost::asio::error::operation_aborted);
+ }
+ }
+
+ // Complete all operations that are waiting to be completed.
+ void complete_operations()
+ {
+ while (complete_operations_)
+ {
+ op_base* next_op = complete_operations_->next_;
+ complete_operations_->next_ = 0;
+ complete_operations_->complete();
+ complete_operations_ = next_op;
+ }
+ }
+
+ // Destroy all operations owned by the queue.
+ void destroy_operations()
+ {
+ while (cancelled_operations_)
+ {
+ op_base* next_op = cancelled_operations_->next_;
+ cancelled_operations_->next_ = 0;
+ cancelled_operations_->destroy();
+ cancelled_operations_ = next_op;
+ }
+
+ while (complete_operations_)
+ {
+ op_base* next_op = complete_operations_->next_;
+ complete_operations_->next_ = 0;
+ complete_operations_->destroy();
+ complete_operations_ = next_op;
+ }
+
+ typename operation_map::iterator i = operations_.begin();
+ while (i != operations_.end())
+ {
+ typename operation_map::iterator op_iter = i++;
+ op_base* curr_op = op_iter->second;
+ operations_.erase(op_iter);
+ while (curr_op)
+ {
+ op_base* next_op = curr_op->next_;
+ curr_op->next_ = 0;
+ curr_op->destroy();
+ curr_op = next_op;
+ }
+ }
+ }
+
+private:
+ // Base class for reactor operations. A function pointer is used instead of
+ // virtual functions to avoid the associated overhead.
+ class op_base
+ {
+ public:
+ // Get the descriptor associated with the operation.
+ Descriptor descriptor() const
+ {
+ return descriptor_;
+ }
+
+ // Perform the operation.
+ bool perform(const boost::system::error_code& result)
+ {
+ result_ = result;
+ return perform_func_(this, result_, bytes_transferred_);
+ }
+
+ // Destroy the operation and post the handler.
+ void complete()
+ {
+ complete_func_(this, result_, bytes_transferred_);
+ }
+
+ // Destroy the operation.
+ void destroy()
+ {
+ destroy_func_(this);
+ }
+
+ protected:
+ typedef bool (*perform_func_type)(op_base*,
+ boost::system::error_code&, std::size_t&);
+ typedef void (*complete_func_type)(op_base*,
+ const boost::system::error_code&, std::size_t);
+ typedef void (*destroy_func_type)(op_base*);
+
+ // Construct an operation for the given descriptor.
+ op_base(perform_func_type perform_func, complete_func_type complete_func,
+ destroy_func_type destroy_func, Descriptor descriptor)
+ : perform_func_(perform_func),
+ complete_func_(complete_func),
+ destroy_func_(destroy_func),
+ descriptor_(descriptor),
+ result_(),
+ bytes_transferred_(0),
+ next_(0)
+ {
+ }
+
+ // Prevent deletion through this type.
+ ~op_base()
+ {
+ }
+
+ private:
+ friend class reactor_op_queue<Descriptor>;
+
+ // The function to be called to perform the operation.
+ perform_func_type perform_func_;
+
+ // The function to be called to delete the operation and post the handler.
+ complete_func_type complete_func_;
+
+ // The function to be called to delete the operation.
+ destroy_func_type destroy_func_;
+
+ // The descriptor associated with the operation.
+ Descriptor descriptor_;
+
+ // The result of the operation.
+ boost::system::error_code result_;
+
+ // The number of bytes transferred in the operation.
+ std::size_t bytes_transferred_;
+
+ // The next operation for the same file descriptor.
+ op_base* next_;
+ };
+
+ // Adaptor class template for operations.
+ template <typename Operation>
+ class op
+ : public op_base
+ {
+ public:
+ // Constructor.
+ op(Descriptor descriptor, Operation operation)
+ : op_base(&op<Operation>::do_perform, &op<Operation>::do_complete,
+ &op<Operation>::do_destroy, descriptor),
+ operation_(operation)
+ {
+ }
+
+ // Perform the operation.
+ static bool do_perform(op_base* base,
+ boost::system::error_code& result, std::size_t& bytes_transferred)
+ {
+ return static_cast<op<Operation>*>(base)->operation_.perform(
+ result, bytes_transferred);
+ }
+
+ // Destroy the operation and post the handler.
+ static void do_complete(op_base* base,
+ const boost::system::error_code& result, std::size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef op<Operation> this_type;
+ this_type* this_op(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Operation, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(this_op->operation_, this_op);
+
+ // Make a copy of the error_code and the operation so that the memory can
+ // be deallocated before the upcall is made.
+ boost::system::error_code ec(result);
+ Operation operation(this_op->operation_);
+
+ // Free the memory associated with the operation.
+ ptr.reset();
+
+ // Make the upcall.
+ operation.complete(ec, bytes_transferred);
+ }
+
+ // Destroy the operation.
+ static void do_destroy(op_base* base)
+ {
+ // Take ownership of the operation object.
+ typedef op<Operation> this_type;
+ this_type* this_op(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Operation, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(this_op->operation_, this_op);
+
+ // A sub-object of the operation may be the true owner of the memory
+ // associated with the operation. Consequently, a local copy of the
+ // operation is required to ensure that any owning sub-object remains
+ // valid until after we have deallocated the memory here.
+ Operation operation(this_op->operation_);
+ (void)operation;
+
+ // Free the memory associated with the operation.
+ ptr.reset();
+ }
+
+ private:
+ Operation operation_;
+ };
+
+ // The type for a map of operations.
+ typedef hash_map<Descriptor, op_base*> operation_map;
+
+ // The operations that are currently executing asynchronously.
+ operation_map operations_;
+
+ // The list of operations that have been cancelled.
+ op_base* cancelled_operations_;
+
+ // The list of operations waiting to be completed.
+ op_base* complete_operations_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/resolver_service.hpp b/3rdParty/Boost/boost/asio/detail/resolver_service.hpp
new file mode 100644
index 0000000..9b0aac9
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/resolver_service.hpp
@@ -0,0 +1,359 @@
+//
+// resolver_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_RESOLVER_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_RESOLVER_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstring>
+#include <boost/scoped_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/thread.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Protocol>
+class resolver_service
+ : public boost::asio::detail::service_base<resolver_service<Protocol> >
+{
+private:
+ // Helper class to perform exception-safe cleanup of addrinfo objects.
+ class auto_addrinfo
+ : private boost::asio::detail::noncopyable
+ {
+ public:
+ explicit auto_addrinfo(boost::asio::detail::addrinfo_type* ai)
+ : ai_(ai)
+ {
+ }
+
+ ~auto_addrinfo()
+ {
+ if (ai_)
+ socket_ops::freeaddrinfo(ai_);
+ }
+
+ operator boost::asio::detail::addrinfo_type*()
+ {
+ return ai_;
+ }
+
+ private:
+ boost::asio::detail::addrinfo_type* ai_;
+ };
+
+public:
+ // The implementation type of the resolver. The shared pointer is used as a
+ // cancellation token to indicate to the background thread that the operation
+ // has been cancelled.
+ typedef boost::shared_ptr<void> implementation_type;
+ struct noop_deleter { void operator()(void*) {} };
+
+ // The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ // The query type.
+ typedef typename Protocol::resolver_query query_type;
+
+ // The iterator type.
+ typedef typename Protocol::resolver_iterator iterator_type;
+
+ // Constructor.
+ resolver_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ resolver_service<Protocol> >(io_service),
+ mutex_(),
+ work_io_service_(new boost::asio::io_service),
+ work_(new boost::asio::io_service::work(*work_io_service_)),
+ work_thread_(0)
+ {
+ }
+
+ // Destructor.
+ ~resolver_service()
+ {
+ shutdown_service();
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ work_.reset();
+ if (work_io_service_)
+ {
+ work_io_service_->stop();
+ if (work_thread_)
+ {
+ work_thread_->join();
+ work_thread_.reset();
+ }
+ work_io_service_.reset();
+ }
+ }
+
+ // Construct a new resolver implementation.
+ void construct(implementation_type& impl)
+ {
+ impl.reset(static_cast<void*>(0), noop_deleter());
+ }
+
+ // Destroy a resolver implementation.
+ void destroy(implementation_type&)
+ {
+ }
+
+ // Cancel pending asynchronous operations.
+ void cancel(implementation_type& impl)
+ {
+ impl.reset(static_cast<void*>(0), noop_deleter());
+ }
+
+ // Resolve a query to a list of entries.
+ iterator_type resolve(implementation_type&, const query_type& query,
+ boost::system::error_code& ec)
+ {
+ boost::asio::detail::addrinfo_type* address_info = 0;
+ std::string host_name = query.host_name();
+ std::string service_name = query.service_name();
+ boost::asio::detail::addrinfo_type hints = query.hints();
+
+ socket_ops::getaddrinfo(host_name.length() ? host_name.c_str() : 0,
+ service_name.c_str(), &hints, &address_info, ec);
+ auto_addrinfo auto_address_info(address_info);
+
+ if (ec)
+ return iterator_type();
+
+ return iterator_type::create(address_info, host_name, service_name);
+ }
+
+ template <typename Handler>
+ class resolve_query_handler
+ {
+ public:
+ resolve_query_handler(implementation_type impl, const query_type& query,
+ boost::asio::io_service& io_service, Handler handler)
+ : impl_(impl),
+ query_(query),
+ io_service_(io_service),
+ work_(io_service),
+ handler_(handler)
+ {
+ }
+
+ void operator()()
+ {
+ // Check if the operation has been cancelled.
+ if (impl_.expired())
+ {
+ iterator_type iterator;
+ io_service_.post(boost::asio::detail::bind_handler(handler_,
+ boost::asio::error::operation_aborted, iterator));
+ return;
+ }
+
+ // Perform the blocking host resolution operation.
+ boost::asio::detail::addrinfo_type* address_info = 0;
+ std::string host_name = query_.host_name();
+ std::string service_name = query_.service_name();
+ boost::asio::detail::addrinfo_type hints = query_.hints();
+ boost::system::error_code ec;
+ socket_ops::getaddrinfo(host_name.length() ? host_name.c_str() : 0,
+ service_name.c_str(), &hints, &address_info, ec);
+ auto_addrinfo auto_address_info(address_info);
+
+ // Invoke the handler and pass the result.
+ iterator_type iterator;
+ if (!ec)
+ iterator = iterator_type::create(address_info, host_name, service_name);
+ io_service_.post(boost::asio::detail::bind_handler(
+ handler_, ec, iterator));
+ }
+
+ private:
+ boost::weak_ptr<void> impl_;
+ query_type query_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ Handler handler_;
+ };
+
+ // Asynchronously resolve a query to a list of entries.
+ template <typename Handler>
+ void async_resolve(implementation_type& impl, const query_type& query,
+ Handler handler)
+ {
+ if (work_io_service_)
+ {
+ start_work_thread();
+ work_io_service_->post(
+ resolve_query_handler<Handler>(
+ impl, query, this->get_io_service(), handler));
+ }
+ }
+
+ // Resolve an endpoint to a list of entries.
+ iterator_type resolve(implementation_type&,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ // First try resolving with the service name. If that fails try resolving
+ // but allow the service to be returned as a number.
+ char host_name[NI_MAXHOST];
+ char service_name[NI_MAXSERV];
+ int flags = endpoint.protocol().type() == SOCK_DGRAM ? NI_DGRAM : 0;
+ socket_ops::getnameinfo(endpoint.data(), endpoint.size(),
+ host_name, NI_MAXHOST, service_name, NI_MAXSERV, flags, ec);
+ if (ec)
+ {
+ flags |= NI_NUMERICSERV;
+ socket_ops::getnameinfo(endpoint.data(), endpoint.size(),
+ host_name, NI_MAXHOST, service_name, NI_MAXSERV, flags, ec);
+ }
+
+ if (ec)
+ return iterator_type();
+
+ return iterator_type::create(endpoint, host_name, service_name);
+ }
+
+ template <typename Handler>
+ class resolve_endpoint_handler
+ {
+ public:
+ resolve_endpoint_handler(implementation_type impl,
+ const endpoint_type& endpoint, boost::asio::io_service& io_service,
+ Handler handler)
+ : impl_(impl),
+ endpoint_(endpoint),
+ io_service_(io_service),
+ work_(io_service),
+ handler_(handler)
+ {
+ }
+
+ void operator()()
+ {
+ // Check if the operation has been cancelled.
+ if (impl_.expired())
+ {
+ iterator_type iterator;
+ io_service_.post(boost::asio::detail::bind_handler(handler_,
+ boost::asio::error::operation_aborted, iterator));
+ return;
+ }
+
+
+ // First try resolving with the service name. If that fails try resolving
+ // but allow the service to be returned as a number.
+ char host_name[NI_MAXHOST];
+ char service_name[NI_MAXSERV];
+ int flags = endpoint_.protocol().type() == SOCK_DGRAM ? NI_DGRAM : 0;
+ boost::system::error_code ec;
+ socket_ops::getnameinfo(endpoint_.data(), endpoint_.size(),
+ host_name, NI_MAXHOST, service_name, NI_MAXSERV, flags, ec);
+ if (ec)
+ {
+ flags |= NI_NUMERICSERV;
+ socket_ops::getnameinfo(endpoint_.data(), endpoint_.size(),
+ host_name, NI_MAXHOST, service_name, NI_MAXSERV, flags, ec);
+ }
+
+ // Invoke the handler and pass the result.
+ iterator_type iterator;
+ if (!ec)
+ iterator = iterator_type::create(endpoint_, host_name, service_name);
+ io_service_.post(boost::asio::detail::bind_handler(
+ handler_, ec, iterator));
+ }
+
+ private:
+ boost::weak_ptr<void> impl_;
+ endpoint_type endpoint_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ Handler handler_;
+ };
+
+ // Asynchronously resolve an endpoint to a list of entries.
+ template <typename Handler>
+ void async_resolve(implementation_type& impl, const endpoint_type& endpoint,
+ Handler handler)
+ {
+ if (work_io_service_)
+ {
+ start_work_thread();
+ work_io_service_->post(
+ resolve_endpoint_handler<Handler>(
+ impl, endpoint, this->get_io_service(), handler));
+ }
+ }
+
+private:
+ // Helper class to run the work io_service in a thread.
+ class work_io_service_runner
+ {
+ public:
+ work_io_service_runner(boost::asio::io_service& io_service)
+ : io_service_(io_service) {}
+ void operator()() { io_service_.run(); }
+ private:
+ boost::asio::io_service& io_service_;
+ };
+
+ // Start the work thread if it's not already running.
+ void start_work_thread()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!work_thread_)
+ {
+ work_thread_.reset(new boost::asio::detail::thread(
+ work_io_service_runner(*work_io_service_)));
+ }
+ }
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // Private io_service used for performing asynchronous host resolution.
+ boost::scoped_ptr<boost::asio::io_service> work_io_service_;
+
+ // Work for the private io_service to perform.
+ boost::scoped_ptr<boost::asio::io_service::work> work_;
+
+ // Thread used for running the work io_service's run loop.
+ boost::scoped_ptr<boost::asio::detail::thread> work_thread_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_RESOLVER_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/scoped_lock.hpp b/3rdParty/Boost/boost/asio/detail/scoped_lock.hpp
new file mode 100644
index 0000000..1dd2842
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/scoped_lock.hpp
@@ -0,0 +1,93 @@
+//
+// scoped_lock.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SCOPED_LOCK_HPP
+#define BOOST_ASIO_DETAIL_SCOPED_LOCK_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Helper class to lock and unlock a mutex automatically.
+template <typename Mutex>
+class scoped_lock
+ : private noncopyable
+{
+public:
+ // Constructor acquires the lock.
+ scoped_lock(Mutex& m)
+ : mutex_(m)
+ {
+ mutex_.lock();
+ locked_ = true;
+ }
+
+ // Destructor releases the lock.
+ ~scoped_lock()
+ {
+ if (locked_)
+ mutex_.unlock();
+ }
+
+ // Explicitly acquire the lock.
+ void lock()
+ {
+ if (!locked_)
+ {
+ mutex_.lock();
+ locked_ = true;
+ }
+ }
+
+ // Explicitly release the lock.
+ void unlock()
+ {
+ if (locked_)
+ {
+ mutex_.unlock();
+ locked_ = false;
+ }
+ }
+
+ // Test whether the lock is held.
+ bool locked() const
+ {
+ return locked_;
+ }
+
+ // Get the underlying mutex.
+ Mutex& mutex()
+ {
+ return mutex_;
+ }
+
+private:
+ // The underlying mutex.
+ Mutex& mutex_;
+
+ // Whether the mutex is currently locked or unlocked.
+ bool locked_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SCOPED_LOCK_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/select_interrupter.hpp b/3rdParty/Boost/boost/asio/detail/select_interrupter.hpp
new file mode 100644
index 0000000..8bb952c
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/select_interrupter.hpp
@@ -0,0 +1,46 @@
+//
+// select_interrupter.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SELECT_INTERRUPTER_HPP
+#define BOOST_ASIO_DETAIL_SELECT_INTERRUPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/eventfd_select_interrupter.hpp>
+#include <boost/asio/detail/pipe_select_interrupter.hpp>
+#include <boost/asio/detail/socket_select_interrupter.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+typedef socket_select_interrupter select_interrupter;
+#elif defined(BOOST_ASIO_HAS_EVENTFD)
+typedef eventfd_select_interrupter select_interrupter;
+#else
+typedef pipe_select_interrupter select_interrupter;
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SELECT_INTERRUPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/select_reactor.hpp b/3rdParty/Boost/boost/asio/detail/select_reactor.hpp
new file mode 100644
index 0000000..77caf54
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/select_reactor.hpp
@@ -0,0 +1,546 @@
+//
+// select_reactor.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SELECT_REACTOR_HPP
+#define BOOST_ASIO_DETAIL_SELECT_REACTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp> // Must come before posix_time.
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/fd_set_adapter.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/reactor_op_queue.hpp>
+#include <boost/asio/detail/select_interrupter.hpp>
+#include <boost/asio/detail/select_reactor_fwd.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/signal_blocker.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/task_io_service.hpp>
+#include <boost/asio/detail/thread.hpp>
+#include <boost/asio/detail/timer_queue.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class select_reactor
+ : public boost::asio::detail::service_base<select_reactor<Own_Thread> >
+{
+public:
+ // Per-descriptor data.
+ struct per_descriptor_data
+ {
+ };
+
+ // Constructor.
+ select_reactor(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ select_reactor<Own_Thread> >(io_service),
+ mutex_(),
+ select_in_progress_(false),
+ interrupter_(),
+ read_op_queue_(),
+ write_op_queue_(),
+ except_op_queue_(),
+ pending_cancellations_(),
+ stop_thread_(false),
+ thread_(0),
+ shutdown_(false)
+ {
+ if (Own_Thread)
+ {
+ boost::asio::detail::signal_blocker sb;
+ thread_ = new boost::asio::detail::thread(
+ bind_handler(&select_reactor::call_run_thread, this));
+ }
+ }
+
+ // Destructor.
+ ~select_reactor()
+ {
+ shutdown_service();
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ shutdown_ = true;
+ stop_thread_ = true;
+ lock.unlock();
+
+ if (thread_)
+ {
+ interrupter_.interrupt();
+ thread_->join();
+ delete thread_;
+ thread_ = 0;
+ }
+
+ read_op_queue_.destroy_operations();
+ write_op_queue_.destroy_operations();
+ except_op_queue_.destroy_operations();
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->destroy_timers();
+ timer_queues_.clear();
+ }
+
+ // Initialise the task, but only if the reactor is not in its own thread.
+ void init_task()
+ {
+ if (!Own_Thread)
+ {
+ typedef task_io_service<select_reactor<Own_Thread> > task_io_service_type;
+ use_service<task_io_service_type>(this->get_io_service()).init_task();
+ }
+ }
+
+ // Register a socket with the reactor. Returns 0 on success, system error
+ // code on failure.
+ int register_descriptor(socket_type, per_descriptor_data&)
+ {
+ return 0;
+ }
+
+ // Start a new read operation. The handler object will be invoked when the
+ // given descriptor is ready to be read, or an error has occurred.
+ template <typename Handler>
+ void start_read_op(socket_type descriptor, per_descriptor_data&,
+ Handler handler, bool /*allow_speculative_read*/ = true)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (read_op_queue_.enqueue_operation(descriptor, handler))
+ interrupter_.interrupt();
+ }
+
+ // Start a new write operation. The handler object will be invoked when the
+ // given descriptor is ready to be written, or an error has occurred.
+ template <typename Handler>
+ void start_write_op(socket_type descriptor, per_descriptor_data&,
+ Handler handler, bool /*allow_speculative_write*/ = true)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (write_op_queue_.enqueue_operation(descriptor, handler))
+ interrupter_.interrupt();
+ }
+
+ // Start a new exception operation. The handler object will be invoked when
+ // the given descriptor has exception information, or an error has occurred.
+ template <typename Handler>
+ void start_except_op(socket_type descriptor,
+ per_descriptor_data&, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (except_op_queue_.enqueue_operation(descriptor, handler))
+ interrupter_.interrupt();
+ }
+
+ // Wrapper for connect handlers to enable the handler object to be placed
+ // in both the write and the except operation queues, but ensure that only
+ // one of the handlers is called.
+ template <typename Handler>
+ class connect_handler_wrapper
+ {
+ public:
+ connect_handler_wrapper(socket_type descriptor,
+ boost::shared_ptr<bool> completed,
+ select_reactor<Own_Thread>& reactor, Handler handler)
+ : descriptor_(descriptor),
+ completed_(completed),
+ reactor_(reactor),
+ handler_(handler)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ // Check whether one of the handlers has already been called. If it has,
+ // then we don't want to do anything in this handler.
+ if (*completed_)
+ {
+ completed_.reset(); // Indicate that this handler should not complete.
+ return true;
+ }
+
+ // Cancel the other reactor operation for the connection.
+ *completed_ = true;
+ reactor_.enqueue_cancel_ops_unlocked(descriptor_);
+
+ // Call the contained handler.
+ return handler_.perform(ec, bytes_transferred);
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ if (completed_.get())
+ handler_.complete(ec, bytes_transferred);
+ }
+
+ private:
+ socket_type descriptor_;
+ boost::shared_ptr<bool> completed_;
+ select_reactor<Own_Thread>& reactor_;
+ Handler handler_;
+ };
+
+ // Start new write and exception operations. The handler object will be
+ // invoked when the given descriptor is ready for writing or has exception
+ // information available, or an error has occurred. The handler will be called
+ // only once.
+ template <typename Handler>
+ void start_connect_op(socket_type descriptor,
+ per_descriptor_data&, Handler handler)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ {
+ boost::shared_ptr<bool> completed(new bool(false));
+ connect_handler_wrapper<Handler> wrapped_handler(
+ descriptor, completed, *this, handler);
+ bool interrupt = write_op_queue_.enqueue_operation(
+ descriptor, wrapped_handler);
+ interrupt = except_op_queue_.enqueue_operation(
+ descriptor, wrapped_handler) || interrupt;
+ if (interrupt)
+ interrupter_.interrupt();
+ }
+ }
+
+ // Cancel all operations associated with the given descriptor. The
+ // handlers associated with the descriptor will be invoked with the
+ // operation_aborted error.
+ void cancel_ops(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Enqueue cancellation of all operations associated with the given
+ // descriptor. The handlers associated with the descriptor will be invoked
+ // with the operation_aborted error. This function does not acquire the
+ // select_reactor's mutex, and so should only be used when the reactor lock is
+ // already held.
+ void enqueue_cancel_ops_unlocked(socket_type descriptor)
+ {
+ pending_cancellations_.push_back(descriptor);
+ }
+
+ // Cancel any operations that are running against the descriptor and remove
+ // its registration from the reactor.
+ void close_descriptor(socket_type descriptor, per_descriptor_data&)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ cancel_ops_unlocked(descriptor);
+ }
+
+ // Add a new timer queue to the reactor.
+ template <typename Time_Traits>
+ void add_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ timer_queues_.push_back(&timer_queue);
+ }
+
+ // Remove a timer queue from the reactor.
+ template <typename Time_Traits>
+ void remove_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ if (timer_queues_[i] == &timer_queue)
+ {
+ timer_queues_.erase(timer_queues_.begin() + i);
+ return;
+ }
+ }
+ }
+
+ // Schedule a timer in the given timer queue to expire at the specified
+ // absolute time. The handler object will be invoked when the timer expires.
+ template <typename Time_Traits, typename Handler>
+ void schedule_timer(timer_queue<Time_Traits>& timer_queue,
+ const typename Time_Traits::time_type& time, Handler handler, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_)
+ if (timer_queue.enqueue_timer(time, handler, token))
+ interrupter_.interrupt();
+ }
+
+ // Cancel the timer associated with the given token. Returns the number of
+ // handlers that have been posted or dispatched.
+ template <typename Time_Traits>
+ std::size_t cancel_timer(timer_queue<Time_Traits>& timer_queue, void* token)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ std::size_t n = timer_queue.cancel_timer(token);
+ if (n > 0)
+ interrupter_.interrupt();
+ return n;
+ }
+
+private:
+ friend class task_io_service<select_reactor<Own_Thread> >;
+
+ // Run select once until interrupted or events are ready to be dispatched.
+ void run(bool block)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Dispatch any operation cancellations that were made while the select
+ // loop was not running.
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ except_op_queue_.perform_cancellations();
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->dispatch_cancellations();
+
+ // Check if the thread is supposed to stop.
+ if (stop_thread_)
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // We can return immediately if there's no work to do and the reactor is
+ // not supposed to block.
+ if (!block && read_op_queue_.empty() && write_op_queue_.empty()
+ && except_op_queue_.empty() && all_timer_queues_are_empty())
+ {
+ complete_operations_and_timers(lock);
+ return;
+ }
+
+ // Set up the descriptor sets.
+ fd_set_adapter read_fds;
+ read_fds.set(interrupter_.read_descriptor());
+ read_op_queue_.get_descriptors(read_fds);
+ fd_set_adapter write_fds;
+ write_op_queue_.get_descriptors(write_fds);
+ fd_set_adapter except_fds;
+ except_op_queue_.get_descriptors(except_fds);
+ socket_type max_fd = read_fds.max_descriptor();
+ if (write_fds.max_descriptor() > max_fd)
+ max_fd = write_fds.max_descriptor();
+ if (except_fds.max_descriptor() > max_fd)
+ max_fd = except_fds.max_descriptor();
+
+ // Block on the select call without holding the lock so that new
+ // operations can be started while the call is executing.
+ timeval tv_buf = { 0, 0 };
+ timeval* tv = block ? get_timeout(tv_buf) : &tv_buf;
+ select_in_progress_ = true;
+ lock.unlock();
+ boost::system::error_code ec;
+ int retval = socket_ops::select(static_cast<int>(max_fd + 1),
+ read_fds, write_fds, except_fds, tv, ec);
+ lock.lock();
+ select_in_progress_ = false;
+
+ // Block signals while dispatching operations.
+ boost::asio::detail::signal_blocker sb;
+
+ // Reset the interrupter.
+ if (retval > 0 && read_fds.is_set(interrupter_.read_descriptor()))
+ interrupter_.reset();
+
+ // Dispatch all ready operations.
+ if (retval > 0)
+ {
+ // Exception operations must be processed first to ensure that any
+ // out-of-band data is read before normal data.
+ except_op_queue_.perform_operations_for_descriptors(
+ except_fds, boost::system::error_code());
+ read_op_queue_.perform_operations_for_descriptors(
+ read_fds, boost::system::error_code());
+ write_op_queue_.perform_operations_for_descriptors(
+ write_fds, boost::system::error_code());
+ except_op_queue_.perform_cancellations();
+ read_op_queue_.perform_cancellations();
+ write_op_queue_.perform_cancellations();
+ }
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ timer_queues_[i]->dispatch_timers();
+ timer_queues_[i]->dispatch_cancellations();
+ }
+
+ // Issue any pending cancellations.
+ for (size_t i = 0; i < pending_cancellations_.size(); ++i)
+ cancel_ops_unlocked(pending_cancellations_[i]);
+ pending_cancellations_.clear();
+
+ complete_operations_and_timers(lock);
+ }
+
+ // Run the select loop in the thread.
+ void run_thread()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ while (!stop_thread_)
+ {
+ lock.unlock();
+ run(true);
+ lock.lock();
+ }
+ }
+
+ // Entry point for the select loop thread.
+ static void call_run_thread(select_reactor* reactor)
+ {
+ reactor->run_thread();
+ }
+
+ // Interrupt the select loop.
+ void interrupt()
+ {
+ interrupter_.interrupt();
+ }
+
+ // Check if all timer queues are empty.
+ bool all_timer_queues_are_empty() const
+ {
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ if (!timer_queues_[i]->empty())
+ return false;
+ return true;
+ }
+
+ // Get the timeout value for the select call.
+ timeval* get_timeout(timeval& tv)
+ {
+ if (all_timer_queues_are_empty())
+ return 0;
+
+ // By default we will wait no longer than 5 minutes. This will ensure that
+ // any changes to the system clock are detected after no longer than this.
+ boost::posix_time::time_duration minimum_wait_duration
+ = boost::posix_time::minutes(5);
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ boost::posix_time::time_duration wait_duration
+ = timer_queues_[i]->wait_duration();
+ if (wait_duration < minimum_wait_duration)
+ minimum_wait_duration = wait_duration;
+ }
+
+ if (minimum_wait_duration > boost::posix_time::time_duration())
+ {
+ tv.tv_sec = minimum_wait_duration.total_seconds();
+ tv.tv_usec = minimum_wait_duration.total_microseconds() % 1000000;
+ }
+ else
+ {
+ tv.tv_sec = 0;
+ tv.tv_usec = 0;
+ }
+
+ return &tv;
+ }
+
+ // Cancel all operations associated with the given descriptor. The do_cancel
+ // function of the handler objects will be invoked. This function does not
+ // acquire the select_reactor's mutex.
+ void cancel_ops_unlocked(socket_type descriptor)
+ {
+ bool interrupt = read_op_queue_.cancel_operations(descriptor);
+ interrupt = write_op_queue_.cancel_operations(descriptor) || interrupt;
+ interrupt = except_op_queue_.cancel_operations(descriptor) || interrupt;
+ if (interrupt)
+ interrupter_.interrupt();
+ }
+
+ // Clean up operations and timers. We must not hold the lock since the
+ // destructors may make calls back into this reactor. We make a copy of the
+ // vector of timer queues since the original may be modified while the lock
+ // is not held.
+ void complete_operations_and_timers(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ timer_queues_for_cleanup_ = timer_queues_;
+ lock.unlock();
+ read_op_queue_.complete_operations();
+ write_op_queue_.complete_operations();
+ except_op_queue_.complete_operations();
+ for (std::size_t i = 0; i < timer_queues_for_cleanup_.size(); ++i)
+ timer_queues_for_cleanup_[i]->complete_timers();
+ }
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // Whether the select loop is currently running or not.
+ bool select_in_progress_;
+
+ // The interrupter is used to break a blocking select call.
+ select_interrupter interrupter_;
+
+ // The queue of read operations.
+ reactor_op_queue<socket_type> read_op_queue_;
+
+ // The queue of write operations.
+ reactor_op_queue<socket_type> write_op_queue_;
+
+ // The queue of exception operations.
+ reactor_op_queue<socket_type> except_op_queue_;
+
+ // The timer queues.
+ std::vector<timer_queue_base*> timer_queues_;
+
+ // A copy of the timer queues, used when cleaning up timers. The copy is
+ // stored as a class data member to avoid unnecessary memory allocation.
+ std::vector<timer_queue_base*> timer_queues_for_cleanup_;
+
+ // The descriptors that are pending cancellation.
+ std::vector<socket_type> pending_cancellations_;
+
+ // Does the reactor loop thread need to stop.
+ bool stop_thread_;
+
+ // The thread that is running the reactor loop.
+ boost::asio::detail::thread* thread_;
+
+ // Whether the service has been shut down.
+ bool shutdown_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SELECT_REACTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/select_reactor_fwd.hpp b/3rdParty/Boost/boost/asio/detail/select_reactor_fwd.hpp
new file mode 100644
index 0000000..3bd5d86
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/select_reactor_fwd.hpp
@@ -0,0 +1,33 @@
+//
+// select_reactor_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SELECT_REACTOR_FWD_HPP
+#define BOOST_ASIO_DETAIL_SELECT_REACTOR_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <bool Own_Thread>
+class select_reactor;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SELECT_REACTOR_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/service_base.hpp b/3rdParty/Boost/boost/asio/detail/service_base.hpp
new file mode 100644
index 0000000..f01cdaf
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/service_base.hpp
@@ -0,0 +1,51 @@
+//
+// service_base.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SERVICE_BASE_HPP
+#define BOOST_ASIO_DETAIL_SERVICE_BASE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/service_id.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Special service base class to keep classes header-file only.
+template <typename Type>
+class service_base
+ : public boost::asio::io_service::service
+{
+public:
+ static boost::asio::detail::service_id<Type> id;
+
+ // Constructor.
+ service_base(boost::asio::io_service& io_service)
+ : boost::asio::io_service::service(io_service)
+ {
+ }
+};
+
+template <typename Type>
+boost::asio::detail::service_id<Type> service_base<Type>::id;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SERVICE_BASE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/service_id.hpp b/3rdParty/Boost/boost/asio/detail/service_id.hpp
new file mode 100644
index 0000000..f249ddf
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/service_id.hpp
@@ -0,0 +1,39 @@
+//
+// service_id.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SERVICE_ID_HPP
+#define BOOST_ASIO_DETAIL_SERVICE_ID_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Special derived service id type to keep classes header-file only.
+template <typename Type>
+class service_id
+ : public boost::asio::io_service::id
+{
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SERVICE_ID_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/service_registry.hpp b/3rdParty/Boost/boost/asio/detail/service_registry.hpp
new file mode 100644
index 0000000..6b25663
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/service_registry.hpp
@@ -0,0 +1,228 @@
+//
+// service_registry.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SERVICE_REGISTRY_HPP
+#define BOOST_ASIO_DETAIL_SERVICE_REGISTRY_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <memory>
+#include <typeinfo>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/service_id.hpp>
+
+#if defined(BOOST_NO_TYPEID)
+# if !defined(BOOST_ASIO_NO_TYPEID)
+# define BOOST_ASIO_NO_TYPEID
+# endif // !defined(BOOST_ASIO_NO_TYPEID)
+#endif // defined(BOOST_NO_TYPEID)
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility push (default)
+# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+#endif // defined(__GNUC__)
+
+template <typename T>
+class typeid_wrapper {};
+
+#if defined(__GNUC__)
+# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+# pragma GCC visibility pop
+# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
+#endif // defined(__GNUC__)
+
+class service_registry
+ : private noncopyable
+{
+public:
+ // Constructor.
+ service_registry(boost::asio::io_service& o)
+ : owner_(o),
+ first_service_(0)
+ {
+ }
+
+ // Destructor.
+ ~service_registry()
+ {
+ // Shutdown all services. This must be done in a separate loop before the
+ // services are destroyed since the destructors of user-defined handler
+ // objects may try to access other service objects.
+ boost::asio::io_service::service* service = first_service_;
+ while (service)
+ {
+ service->shutdown_service();
+ service = service->next_;
+ }
+
+ // Destroy all services.
+ while (first_service_)
+ {
+ boost::asio::io_service::service* next_service = first_service_->next_;
+ delete first_service_;
+ first_service_ = next_service;
+ }
+ }
+
+ // Get the service object corresponding to the specified service type. Will
+ // create a new service object automatically if no such object already
+ // exists. Ownership of the service object is not transferred to the caller.
+ template <typename Service>
+ Service& use_service()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // First see if there is an existing service object for the given type.
+ boost::asio::io_service::service* service = first_service_;
+ while (service)
+ {
+ if (service_id_matches(*service, Service::id))
+ return *static_cast<Service*>(service);
+ service = service->next_;
+ }
+
+ // Create a new service object. The service registry's mutex is not locked
+ // at this time to allow for nested calls into this function from the new
+ // service's constructor.
+ lock.unlock();
+ std::auto_ptr<Service> new_service(new Service(owner_));
+ init_service_id(*new_service, Service::id);
+ Service& new_service_ref = *new_service;
+ lock.lock();
+
+ // Check that nobody else created another service object of the same type
+ // while the lock was released.
+ service = first_service_;
+ while (service)
+ {
+ if (service_id_matches(*service, Service::id))
+ return *static_cast<Service*>(service);
+ service = service->next_;
+ }
+
+ // Service was successfully initialised, pass ownership to registry.
+ new_service->next_ = first_service_;
+ first_service_ = new_service.release();
+
+ return new_service_ref;
+ }
+
+ // Add a service object. Returns false on error, in which case ownership of
+ // the object is retained by the caller.
+ template <typename Service>
+ bool add_service(Service* new_service)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // Check if there is an existing service object for the given type.
+ boost::asio::io_service::service* service = first_service_;
+ while (service)
+ {
+ if (service_id_matches(*service, Service::id))
+ return false;
+ service = service->next_;
+ }
+
+ // Take ownership of the service object.
+ init_service_id(*new_service, Service::id);
+ new_service->next_ = first_service_;
+ first_service_ = new_service;
+
+ return true;
+ }
+
+ // Check whether a service object of the specified type already exists.
+ template <typename Service>
+ bool has_service() const
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ boost::asio::io_service::service* service = first_service_;
+ while (service)
+ {
+ if (service_id_matches(*service, Service::id))
+ return true;
+ service = service->next_;
+ }
+
+ return false;
+ }
+
+private:
+ // Set a service's id.
+ void init_service_id(boost::asio::io_service::service& service,
+ const boost::asio::io_service::id& id)
+ {
+ service.type_info_ = 0;
+ service.id_ = &id;
+ }
+
+#if !defined(BOOST_ASIO_NO_TYPEID)
+ // Set a service's id.
+ template <typename Service>
+ void init_service_id(boost::asio::io_service::service& service,
+ const boost::asio::detail::service_id<Service>& /*id*/)
+ {
+ service.type_info_ = &typeid(typeid_wrapper<Service>);
+ service.id_ = 0;
+ }
+#endif // !defined(BOOST_ASIO_NO_TYPEID)
+
+ // Check if a service matches the given id.
+ static bool service_id_matches(
+ const boost::asio::io_service::service& service,
+ const boost::asio::io_service::id& id)
+ {
+ return service.id_ == &id;
+ }
+
+#if !defined(BOOST_ASIO_NO_TYPEID)
+ // Check if a service matches the given id.
+ template <typename Service>
+ static bool service_id_matches(
+ const boost::asio::io_service::service& service,
+ const boost::asio::detail::service_id<Service>& /*id*/)
+ {
+ return service.type_info_ != 0
+ && *service.type_info_ == typeid(typeid_wrapper<Service>);
+ }
+#endif // !defined(BOOST_ASIO_NO_TYPEID)
+
+ // Mutex to protect access to internal data.
+ mutable boost::asio::detail::mutex mutex_;
+
+ // The owner of this service registry and the services it contains.
+ boost::asio::io_service& owner_;
+
+ // The first service in the list of contained services.
+ boost::asio::io_service::service* first_service_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SERVICE_REGISTRY_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/service_registry_fwd.hpp b/3rdParty/Boost/boost/asio/detail/service_registry_fwd.hpp
new file mode 100644
index 0000000..e32647b
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/service_registry_fwd.hpp
@@ -0,0 +1,32 @@
+//
+// service_registry_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SERVICE_REGISTRY_FWD_HPP
+#define BOOST_ASIO_DETAIL_SERVICE_REGISTRY_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class service_registry;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SERVICE_REGISTRY_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/signal_blocker.hpp b/3rdParty/Boost/boost/asio/detail/signal_blocker.hpp
new file mode 100644
index 0000000..a770549
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/signal_blocker.hpp
@@ -0,0 +1,52 @@
+//
+// signal_blocker.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SIGNAL_BLOCKER_HPP
+#define BOOST_ASIO_DETAIL_SIGNAL_BLOCKER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+# include <boost/asio/detail/null_signal_blocker.hpp>
+#elif defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# include <boost/asio/detail/win_signal_blocker.hpp>
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/asio/detail/posix_signal_blocker.hpp>
+#else
+# error Only Windows and POSIX are supported!
+#endif
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if !defined(BOOST_HAS_THREADS)
+typedef null_signal_blocker signal_blocker;
+#elif defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+typedef win_signal_blocker signal_blocker;
+#elif defined(BOOST_HAS_PTHREADS)
+typedef posix_signal_blocker signal_blocker;
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SIGNAL_BLOCKER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/signal_init.hpp b/3rdParty/Boost/boost/asio/detail/signal_init.hpp
new file mode 100644
index 0000000..e5a3d37
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/signal_init.hpp
@@ -0,0 +1,53 @@
+//
+// signal_init.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SIGNAL_INIT_HPP
+#define BOOST_ASIO_DETAIL_SIGNAL_INIT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <csignal>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <int Signal = SIGPIPE>
+class signal_init
+{
+public:
+ // Constructor.
+ signal_init()
+ {
+ std::signal(Signal, SIG_IGN);
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SIGNAL_INIT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/socket_holder.hpp b/3rdParty/Boost/boost/asio/detail/socket_holder.hpp
new file mode 100644
index 0000000..be144a6
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/socket_holder.hpp
@@ -0,0 +1,97 @@
+//
+// socket_holder.hpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SOCKET_HOLDER_HPP
+#define BOOST_ASIO_DETAIL_SOCKET_HOLDER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Implement the resource acquisition is initialisation idiom for sockets.
+class socket_holder
+ : private noncopyable
+{
+public:
+ // Construct as an uninitialised socket.
+ socket_holder()
+ : socket_(invalid_socket)
+ {
+ }
+
+ // Construct to take ownership of the specified socket.
+ explicit socket_holder(socket_type s)
+ : socket_(s)
+ {
+ }
+
+ // Destructor.
+ ~socket_holder()
+ {
+ if (socket_ != invalid_socket)
+ {
+ boost::system::error_code ec;
+ socket_ops::close(socket_, ec);
+ }
+ }
+
+ // Get the underlying socket.
+ socket_type get() const
+ {
+ return socket_;
+ }
+
+ // Reset to an uninitialised socket.
+ void reset()
+ {
+ if (socket_ != invalid_socket)
+ {
+ boost::system::error_code ec;
+ socket_ops::close(socket_, ec);
+ socket_ = invalid_socket;
+ }
+ }
+
+ // Reset to take ownership of the specified socket.
+ void reset(socket_type s)
+ {
+ reset();
+ socket_ = s;
+ }
+
+ // Release ownership of the socket.
+ socket_type release()
+ {
+ socket_type tmp = socket_;
+ socket_ = invalid_socket;
+ return tmp;
+ }
+
+private:
+ // The underlying socket.
+ socket_type socket_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SOCKET_HOLDER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/socket_ops.hpp b/3rdParty/Boost/boost/asio/detail/socket_ops.hpp
new file mode 100644
index 0000000..4969017
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/socket_ops.hpp
@@ -0,0 +1,1913 @@
+//
+// socket_ops.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SOCKET_OPS_HPP
+#define BOOST_ASIO_DETAIL_SOCKET_OPS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/assert.hpp>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cerrno>
+#include <boost/detail/workaround.hpp>
+#include <new>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+namespace socket_ops {
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+struct msghdr { int msg_namelen; };
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#if defined(__hpux)
+// HP-UX doesn't declare these functions extern "C", so they are declared again
+// here to avoid linker errors about undefined symbols.
+extern "C" char* if_indextoname(unsigned int, char*);
+extern "C" unsigned int if_nametoindex(const char*);
+#endif // defined(__hpux)
+
+inline void clear_error(boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ WSASetLastError(0);
+#else
+ errno = 0;
+#endif
+ ec = boost::system::error_code();
+}
+
+template <typename ReturnType>
+inline ReturnType error_wrapper(ReturnType return_value,
+ boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ ec = boost::system::error_code(WSAGetLastError(),
+ boost::asio::error::get_system_category());
+#else
+ ec = boost::system::error_code(errno,
+ boost::asio::error::get_system_category());
+#endif
+ return return_value;
+}
+
+template <typename SockLenType>
+inline socket_type call_accept(SockLenType msghdr::*,
+ socket_type s, socket_addr_type* addr, std::size_t* addrlen)
+{
+ SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0;
+ socket_type result = ::accept(s, addr, addrlen ? &tmp_addrlen : 0);
+ if (addrlen)
+ *addrlen = (std::size_t)tmp_addrlen;
+ return result;
+}
+
+inline socket_type accept(socket_type s, socket_addr_type* addr,
+ std::size_t* addrlen, boost::system::error_code& ec)
+{
+ clear_error(ec);
+
+ socket_type new_s = error_wrapper(call_accept(
+ &msghdr::msg_namelen, s, addr, addrlen), ec);
+ if (new_s == invalid_socket)
+ return new_s;
+
+#if defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
+ int optval = 1;
+ int result = error_wrapper(::setsockopt(new_s,
+ SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
+ if (result != 0)
+ {
+ ::close(new_s);
+ return invalid_socket;
+ }
+#endif
+
+ clear_error(ec);
+ return new_s;
+}
+
+template <typename SockLenType>
+inline int call_bind(SockLenType msghdr::*,
+ socket_type s, const socket_addr_type* addr, std::size_t addrlen)
+{
+ return ::bind(s, addr, (SockLenType)addrlen);
+}
+
+inline int bind(socket_type s, const socket_addr_type* addr,
+ std::size_t addrlen, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(call_bind(
+ &msghdr::msg_namelen, s, addr, addrlen), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int close(socket_type s, boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ int result = error_wrapper(::closesocket(s), ec);
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ int result = error_wrapper(::close(s), ec);
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int shutdown(socket_type s, int what, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::shutdown(s, what), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+template <typename SockLenType>
+inline int call_connect(SockLenType msghdr::*,
+ socket_type s, const socket_addr_type* addr, std::size_t addrlen)
+{
+ return ::connect(s, addr, (SockLenType)addrlen);
+}
+
+inline int connect(socket_type s, const socket_addr_type* addr,
+ std::size_t addrlen, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(call_connect(
+ &msghdr::msg_namelen, s, addr, addrlen), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int socketpair(int af, int type, int protocol,
+ socket_type sv[2], boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ (void)(af);
+ (void)(type);
+ (void)(protocol);
+ (void)(sv);
+ ec = boost::asio::error::operation_not_supported;
+ return -1;
+#else
+ clear_error(ec);
+ int result = error_wrapper(::socketpair(af, type, protocol, sv), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+#endif
+}
+
+inline int listen(socket_type s, int backlog, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::listen(s, backlog), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+inline void init_buf_iov_base(void*& base, void* addr)
+{
+ base = addr;
+}
+
+template <typename T>
+inline void init_buf_iov_base(T& base, void* addr)
+{
+ base = static_cast<T>(addr);
+}
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+typedef WSABUF buf;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+typedef iovec buf;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+inline void init_buf(buf& b, void* data, size_t size)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ b.buf = static_cast<char*>(data);
+ b.len = static_cast<u_long>(size);
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ init_buf_iov_base(b.iov_base, data);
+ b.iov_len = size;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline void init_buf(buf& b, const void* data, size_t size)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ b.buf = static_cast<char*>(const_cast<void*>(data));
+ b.len = static_cast<u_long>(size);
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ init_buf_iov_base(b.iov_base, const_cast<void*>(data));
+ b.iov_len = size;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline void init_msghdr_msg_name(void*& name, socket_addr_type* addr)
+{
+ name = addr;
+}
+
+inline void init_msghdr_msg_name(void*& name, const socket_addr_type* addr)
+{
+ name = const_cast<socket_addr_type*>(addr);
+}
+
+template <typename T>
+inline void init_msghdr_msg_name(T& name, socket_addr_type* addr)
+{
+ name = reinterpret_cast<T>(addr);
+}
+
+template <typename T>
+inline void init_msghdr_msg_name(T& name, const socket_addr_type* addr)
+{
+ name = reinterpret_cast<T>(const_cast<socket_addr_type*>(addr));
+}
+
+inline int recv(socket_type s, buf* bufs, size_t count, int flags,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ // Receive some data.
+ DWORD recv_buf_count = static_cast<DWORD>(count);
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int result = error_wrapper(::WSARecv(s, bufs,
+ recv_buf_count, &bytes_transferred, &recv_flags, 0, 0), ec);
+ if (result != 0)
+ return -1;
+ clear_error(ec);
+ return bytes_transferred;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ msghdr msg = msghdr();
+ msg.msg_iov = bufs;
+ msg.msg_iovlen = count;
+ int result = error_wrapper(::recvmsg(s, &msg, flags), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int recvfrom(socket_type s, buf* bufs, size_t count, int flags,
+ socket_addr_type* addr, std::size_t* addrlen,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ // Receive some data.
+ DWORD recv_buf_count = static_cast<DWORD>(count);
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int tmp_addrlen = (int)*addrlen;
+ int result = error_wrapper(::WSARecvFrom(s, bufs, recv_buf_count,
+ &bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0), ec);
+ *addrlen = (std::size_t)tmp_addrlen;
+ if (result != 0)
+ return -1;
+ clear_error(ec);
+ return bytes_transferred;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ msghdr msg = msghdr();
+ init_msghdr_msg_name(msg.msg_name, addr);
+ msg.msg_namelen = *addrlen;
+ msg.msg_iov = bufs;
+ msg.msg_iovlen = count;
+ int result = error_wrapper(::recvmsg(s, &msg, flags), ec);
+ *addrlen = msg.msg_namelen;
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int send(socket_type s, const buf* bufs, size_t count, int flags,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ // Send the data.
+ DWORD send_buf_count = static_cast<DWORD>(count);
+ DWORD bytes_transferred = 0;
+ DWORD send_flags = flags;
+ int result = error_wrapper(::WSASend(s, const_cast<buf*>(bufs),
+ send_buf_count, &bytes_transferred, send_flags, 0, 0), ec);
+ if (result != 0)
+ return -1;
+ clear_error(ec);
+ return bytes_transferred;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ msghdr msg = msghdr();
+ msg.msg_iov = const_cast<buf*>(bufs);
+ msg.msg_iovlen = count;
+#if defined(__linux__)
+ flags |= MSG_NOSIGNAL;
+#endif // defined(__linux__)
+ int result = error_wrapper(::sendmsg(s, &msg, flags), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int sendto(socket_type s, const buf* bufs, size_t count, int flags,
+ const socket_addr_type* addr, std::size_t addrlen,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ // Send the data.
+ DWORD send_buf_count = static_cast<DWORD>(count);
+ DWORD bytes_transferred = 0;
+ int result = error_wrapper(::WSASendTo(s, const_cast<buf*>(bufs),
+ send_buf_count, &bytes_transferred, flags, addr,
+ static_cast<int>(addrlen), 0, 0), ec);
+ if (result != 0)
+ return -1;
+ clear_error(ec);
+ return bytes_transferred;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ msghdr msg = msghdr();
+ init_msghdr_msg_name(msg.msg_name, addr);
+ msg.msg_namelen = addrlen;
+ msg.msg_iov = const_cast<buf*>(bufs);
+ msg.msg_iovlen = count;
+#if defined(__linux__)
+ flags |= MSG_NOSIGNAL;
+#endif // defined(__linux__)
+ int result = error_wrapper(::sendmsg(s, &msg, flags), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline socket_type socket(int af, int type, int protocol,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ socket_type s = error_wrapper(::WSASocket(af, type, protocol, 0, 0,
+ WSA_FLAG_OVERLAPPED), ec);
+ if (s == invalid_socket)
+ return s;
+
+ if (af == AF_INET6)
+ {
+ // Try to enable the POSIX default behaviour of having IPV6_V6ONLY set to
+ // false. This will only succeed on Windows Vista and later versions of
+ // Windows, where a dual-stack IPv4/v6 implementation is available.
+ DWORD optval = 0;
+ ::setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
+ reinterpret_cast<const char*>(&optval), sizeof(optval));
+ }
+
+ clear_error(ec);
+
+ return s;
+#elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
+ socket_type s = error_wrapper(::socket(af, type, protocol), ec);
+ if (s == invalid_socket)
+ return s;
+
+ int optval = 1;
+ int result = error_wrapper(::setsockopt(s,
+ SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
+ if (result != 0)
+ {
+ ::close(s);
+ return invalid_socket;
+ }
+
+ return s;
+#else
+ int s = error_wrapper(::socket(af, type, protocol), ec);
+ if (s >= 0)
+ clear_error(ec);
+ return s;
+#endif
+}
+
+template <typename SockLenType>
+inline int call_setsockopt(SockLenType msghdr::*,
+ socket_type s, int level, int optname,
+ const void* optval, std::size_t optlen)
+{
+ return ::setsockopt(s, level, optname,
+ (const char*)optval, (SockLenType)optlen);
+}
+
+inline int setsockopt(socket_type s, int level, int optname,
+ const void* optval, std::size_t optlen, boost::system::error_code& ec)
+{
+ if (level == custom_socket_option_level && optname == always_fail_option)
+ {
+ ec = boost::asio::error::invalid_argument;
+ return -1;
+ }
+
+#if defined(__BORLANDC__)
+ // Mysteriously, using the getsockopt and setsockopt functions directly with
+ // Borland C++ results in incorrect values being set and read. The bug can be
+ // worked around by using function addresses resolved with GetProcAddress.
+ if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
+ {
+ typedef int (WSAAPI *sso_t)(SOCKET, int, int, const char*, int);
+ if (sso_t sso = (sso_t)::GetProcAddress(winsock_module, "setsockopt"))
+ {
+ clear_error(ec);
+ return error_wrapper(sso(s, level, optname,
+ reinterpret_cast<const char*>(optval),
+ static_cast<int>(optlen)), ec);
+ }
+ }
+ ec = boost::asio::error::fault;
+ return -1;
+#else // defined(__BORLANDC__)
+ clear_error(ec);
+ int result = error_wrapper(call_setsockopt(&msghdr::msg_namelen,
+ s, level, optname, optval, optlen), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+#endif // defined(__BORLANDC__)
+}
+
+template <typename SockLenType>
+inline int call_getsockopt(SockLenType msghdr::*,
+ socket_type s, int level, int optname,
+ void* optval, std::size_t* optlen)
+{
+ SockLenType tmp_optlen = (SockLenType)*optlen;
+ int result = ::getsockopt(s, level, optname, (char*)optval, &tmp_optlen);
+ *optlen = (std::size_t)tmp_optlen;
+ return result;
+}
+
+inline int getsockopt(socket_type s, int level, int optname, void* optval,
+ size_t* optlen, boost::system::error_code& ec)
+{
+ if (level == custom_socket_option_level && optname == always_fail_option)
+ {
+ ec = boost::asio::error::invalid_argument;
+ return -1;
+ }
+
+#if defined(__BORLANDC__)
+ // Mysteriously, using the getsockopt and setsockopt functions directly with
+ // Borland C++ results in incorrect values being set and read. The bug can be
+ // worked around by using function addresses resolved with GetProcAddress.
+ if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
+ {
+ typedef int (WSAAPI *gso_t)(SOCKET, int, int, char*, int*);
+ if (gso_t gso = (gso_t)::GetProcAddress(winsock_module, "getsockopt"))
+ {
+ clear_error(ec);
+ int tmp_optlen = static_cast<int>(*optlen);
+ int result = error_wrapper(gso(s, level, optname,
+ reinterpret_cast<char*>(optval), &tmp_optlen), ec);
+ *optlen = static_cast<size_t>(tmp_optlen);
+ if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
+ && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
+ {
+ // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are
+ // only supported on Windows Vista and later. To simplify program logic
+ // we will fake success of getting this option and specify that the
+ // value is non-zero (i.e. true). This corresponds to the behavior of
+ // IPv6 sockets on Windows platforms pre-Vista.
+ *static_cast<DWORD*>(optval) = 1;
+ clear_error(ec);
+ }
+ return result;
+ }
+ }
+ ec = boost::asio::error::fault;
+ return -1;
+#elif defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ clear_error(ec);
+ int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
+ s, level, optname, optval, optlen), ec);
+ if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
+ && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
+ {
+ // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are only
+ // supported on Windows Vista and later. To simplify program logic we will
+ // fake success of getting this option and specify that the value is
+ // non-zero (i.e. true). This corresponds to the behavior of IPv6 sockets
+ // on Windows platforms pre-Vista.
+ *static_cast<DWORD*>(optval) = 1;
+ clear_error(ec);
+ }
+ if (result == 0)
+ clear_error(ec);
+ return result;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ clear_error(ec);
+ int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
+ s, level, optname, optval, optlen), ec);
+#if defined(__linux__)
+ if (result == 0 && level == SOL_SOCKET && *optlen == sizeof(int)
+ && (optname == SO_SNDBUF || optname == SO_RCVBUF))
+ {
+ // On Linux, setting SO_SNDBUF or SO_RCVBUF to N actually causes the kernel
+ // to set the buffer size to N*2. Linux puts additional stuff into the
+ // buffers so that only about half is actually available to the application.
+ // The retrieved value is divided by 2 here to make it appear as though the
+ // correct value has been set.
+ *static_cast<int*>(optval) /= 2;
+ }
+#endif // defined(__linux__)
+ if (result == 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+template <typename SockLenType>
+inline int call_getpeername(SockLenType msghdr::*,
+ socket_type s, socket_addr_type* addr, std::size_t* addrlen)
+{
+ SockLenType tmp_addrlen = (SockLenType)*addrlen;
+ int result = ::getpeername(s, addr, &tmp_addrlen);
+ *addrlen = (std::size_t)tmp_addrlen;
+ return result;
+}
+
+inline int getpeername(socket_type s, socket_addr_type* addr,
+ std::size_t* addrlen, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(call_getpeername(
+ &msghdr::msg_namelen, s, addr, addrlen), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+template <typename SockLenType>
+inline int call_getsockname(SockLenType msghdr::*,
+ socket_type s, socket_addr_type* addr, std::size_t* addrlen)
+{
+ SockLenType tmp_addrlen = (SockLenType)*addrlen;
+ int result = ::getsockname(s, addr, &tmp_addrlen);
+ *addrlen = (std::size_t)tmp_addrlen;
+ return result;
+}
+
+inline int getsockname(socket_type s, socket_addr_type* addr,
+ std::size_t* addrlen, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(call_getsockname(
+ &msghdr::msg_namelen, s, addr, addrlen), ec);
+ if (result == 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int ioctl(socket_type s, long cmd, ioctl_arg_type* arg,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ int result = error_wrapper(::ioctlsocket(s, cmd, arg), ec);
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ int result = error_wrapper(::ioctl(s, cmd, arg), ec);
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+}
+
+inline int select(int nfds, fd_set* readfds, fd_set* writefds,
+ fd_set* exceptfds, timeval* timeout, boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ if (!readfds && !writefds && !exceptfds && timeout)
+ {
+ DWORD milliseconds = timeout->tv_sec * 1000 + timeout->tv_usec / 1000;
+ if (milliseconds == 0)
+ milliseconds = 1; // Force context switch.
+ ::Sleep(milliseconds);
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // The select() call allows timeout values measured in microseconds, but the
+ // system clock (as wrapped by boost::posix_time::microsec_clock) typically
+ // has a resolution of 10 milliseconds. This can lead to a spinning select
+ // reactor, meaning increased CPU usage, when waiting for the earliest
+ // scheduled timeout if it's less than 10 milliseconds away. To avoid a tight
+ // spin we'll use a minimum timeout of 1 millisecond.
+ if (timeout && timeout->tv_sec == 0
+ && timeout->tv_usec > 0 && timeout->tv_usec < 1000)
+ timeout->tv_usec = 1000;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#if defined(__hpux) && defined(__HP_aCC)
+ timespec ts;
+ ts.tv_sec = timeout ? timeout->tv_sec : 0;
+ ts.tv_nsec = timeout ? timeout->tv_usec * 1000 : 0;
+ return error_wrapper(::pselect(nfds, readfds,
+ writefds, exceptfds, timeout ? &ts : 0, 0), ec);
+#else
+ int result = error_wrapper(::select(nfds, readfds,
+ writefds, exceptfds, timeout), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif
+}
+
+inline int poll_read(socket_type s, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ FD_SET fds;
+ FD_ZERO(&fds);
+ FD_SET(s, &fds);
+ clear_error(ec);
+ int result = error_wrapper(::select(s, &fds, 0, 0, 0), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ pollfd fds;
+ fds.fd = s;
+ fds.events = POLLIN;
+ fds.revents = 0;
+ clear_error(ec);
+ int result = error_wrapper(::poll(&fds, 1, -1), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int poll_write(socket_type s, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ FD_SET fds;
+ FD_ZERO(&fds);
+ FD_SET(s, &fds);
+ clear_error(ec);
+ int result = error_wrapper(::select(s, 0, &fds, 0, 0), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ pollfd fds;
+ fds.fd = s;
+ fds.events = POLLOUT;
+ fds.revents = 0;
+ clear_error(ec);
+ int result = error_wrapper(::poll(&fds, 1, -1), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int poll_connect(socket_type s, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ FD_SET write_fds;
+ FD_ZERO(&write_fds);
+ FD_SET(s, &write_fds);
+ FD_SET except_fds;
+ FD_ZERO(&except_fds);
+ FD_SET(s, &except_fds);
+ clear_error(ec);
+ int result = error_wrapper(::select(s, 0, &write_fds, &except_fds, 0), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ pollfd fds;
+ fds.fd = s;
+ fds.events = POLLOUT;
+ fds.revents = 0;
+ clear_error(ec);
+ int result = error_wrapper(::poll(&fds, 1, -1), ec);
+ if (result >= 0)
+ clear_error(ec);
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline const char* inet_ntop(int af, const void* src, char* dest, size_t length,
+ unsigned long scope_id, boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ using namespace std; // For memcpy.
+
+ if (af != AF_INET && af != AF_INET6)
+ {
+ ec = boost::asio::error::address_family_not_supported;
+ return 0;
+ }
+
+ union
+ {
+ socket_addr_type base;
+ sockaddr_storage_type storage;
+ sockaddr_in4_type v4;
+ sockaddr_in6_type v6;
+ } address;
+ DWORD address_length;
+ if (af == AF_INET)
+ {
+ address_length = sizeof(sockaddr_in4_type);
+ address.v4.sin_family = AF_INET;
+ address.v4.sin_port = 0;
+ memcpy(&address.v4.sin_addr, src, sizeof(in4_addr_type));
+ }
+ else // AF_INET6
+ {
+ address_length = sizeof(sockaddr_in6_type);
+ address.v6.sin6_family = AF_INET6;
+ address.v6.sin6_port = 0;
+ address.v6.sin6_flowinfo = 0;
+ address.v6.sin6_scope_id = scope_id;
+ memcpy(&address.v6.sin6_addr, src, sizeof(in6_addr_type));
+ }
+
+ DWORD string_length = static_cast<DWORD>(length);
+#if defined(BOOST_NO_ANSI_APIS)
+ LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR));
+ int result = error_wrapper(::WSAAddressToStringW(&address.base,
+ address_length, 0, string_buffer, &string_length), ec);
+ ::WideCharToMultiByte(CP_ACP, 0, string_buffer, -1, dest, length, 0, 0);
+#else
+ int result = error_wrapper(::WSAAddressToStringA(
+ &address.base, address_length, 0, dest, &string_length), ec);
+#endif
+
+ // Windows may set error code on success.
+ if (result != socket_error_retval)
+ clear_error(ec);
+
+ // Windows may not set an error code on failure.
+ else if (result == socket_error_retval && !ec)
+ ec = boost::asio::error::invalid_argument;
+
+ return result == socket_error_retval ? 0 : dest;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ const char* result = error_wrapper(::inet_ntop(af, src, dest, length), ec);
+ if (result == 0 && !ec)
+ ec = boost::asio::error::invalid_argument;
+ if (result != 0 && af == AF_INET6 && scope_id != 0)
+ {
+ using namespace std; // For strcat and sprintf.
+ char if_name[IF_NAMESIZE + 1] = "%";
+ const in6_addr_type* ipv6_address = static_cast<const in6_addr_type*>(src);
+ bool is_link_local = IN6_IS_ADDR_LINKLOCAL(ipv6_address);
+ if (!is_link_local || if_indextoname(scope_id, if_name + 1) == 0)
+ sprintf(if_name + 1, "%lu", scope_id);
+ strcat(dest, if_name);
+ }
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int inet_pton(int af, const char* src, void* dest,
+ unsigned long* scope_id, boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ using namespace std; // For memcpy and strcmp.
+
+ if (af != AF_INET && af != AF_INET6)
+ {
+ ec = boost::asio::error::address_family_not_supported;
+ return -1;
+ }
+
+ union
+ {
+ socket_addr_type base;
+ sockaddr_storage_type storage;
+ sockaddr_in4_type v4;
+ sockaddr_in6_type v6;
+ } address;
+ int address_length = sizeof(sockaddr_storage_type);
+#if defined(BOOST_NO_ANSI_APIS)
+ int num_wide_chars = strlen(src) + 1;
+ LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR));
+ ::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars);
+ int result = error_wrapper(::WSAStringToAddressW(
+ wide_buffer, af, 0, &address.base, &address_length), ec);
+#else
+ int result = error_wrapper(::WSAStringToAddressA(
+ const_cast<char*>(src), af, 0, &address.base, &address_length), ec);
+#endif
+
+ if (af == AF_INET)
+ {
+ if (result != socket_error_retval)
+ {
+ memcpy(dest, &address.v4.sin_addr, sizeof(in4_addr_type));
+ clear_error(ec);
+ }
+ else if (strcmp(src, "255.255.255.255") == 0)
+ {
+ static_cast<in4_addr_type*>(dest)->s_addr = INADDR_NONE;
+ clear_error(ec);
+ }
+ }
+ else // AF_INET6
+ {
+ if (result != socket_error_retval)
+ {
+ memcpy(dest, &address.v6.sin6_addr, sizeof(in6_addr_type));
+ if (scope_id)
+ *scope_id = address.v6.sin6_scope_id;
+ clear_error(ec);
+ }
+ }
+
+ // Windows may not set an error code on failure.
+ if (result == socket_error_retval && !ec)
+ ec = boost::asio::error::invalid_argument;
+
+ if (result != socket_error_retval)
+ clear_error(ec);
+
+ return result == socket_error_retval ? -1 : 1;
+#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ int result = error_wrapper(::inet_pton(af, src, dest), ec);
+ if (result <= 0 && !ec)
+ ec = boost::asio::error::invalid_argument;
+ if (result > 0 && af == AF_INET6 && scope_id)
+ {
+ using namespace std; // For strchr and atoi.
+ *scope_id = 0;
+ if (const char* if_name = strchr(src, '%'))
+ {
+ in6_addr_type* ipv6_address = static_cast<in6_addr_type*>(dest);
+ bool is_link_local = IN6_IS_ADDR_LINKLOCAL(ipv6_address);
+ if (is_link_local)
+ *scope_id = if_nametoindex(if_name + 1);
+ if (*scope_id == 0)
+ *scope_id = atoi(if_name + 1);
+ }
+ }
+ return result;
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+}
+
+inline int gethostname(char* name, int namelen, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ int result = error_wrapper(::gethostname(name, namelen), ec);
+#if defined(BOOST_WINDOWS)
+ if (result == 0)
+ clear_error(ec);
+#endif
+ return result;
+}
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__) \
+ || defined(__MACH__) && defined(__APPLE__)
+
+// The following functions are only needed for emulation of getaddrinfo and
+// getnameinfo.
+
+inline boost::system::error_code translate_netdb_error(int error)
+{
+ switch (error)
+ {
+ case 0:
+ return boost::system::error_code();
+ case HOST_NOT_FOUND:
+ return boost::asio::error::host_not_found;
+ case TRY_AGAIN:
+ return boost::asio::error::host_not_found_try_again;
+ case NO_RECOVERY:
+ return boost::asio::error::no_recovery;
+ case NO_DATA:
+ return boost::asio::error::no_data;
+ default:
+ BOOST_ASSERT(false);
+ return boost::asio::error::invalid_argument;
+ }
+}
+
+inline hostent* gethostbyaddr(const char* addr, int length, int af,
+ hostent* result, char* buffer, int buflength, boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ (void)(buffer);
+ (void)(buflength);
+ hostent* retval = error_wrapper(::gethostbyaddr(addr, length, af), ec);
+ if (!retval)
+ return 0;
+ clear_error(ec);
+ *result = *retval;
+ return retval;
+#elif defined(__sun) || defined(__QNX__)
+ int error = 0;
+ hostent* retval = error_wrapper(::gethostbyaddr_r(addr, length, af, result,
+ buffer, buflength, &error), ec);
+ if (error)
+ ec = translate_netdb_error(error);
+ return retval;
+#elif defined(__MACH__) && defined(__APPLE__)
+ (void)(buffer);
+ (void)(buflength);
+ int error = 0;
+ hostent* retval = error_wrapper(::getipnodebyaddr(
+ addr, length, af, &error), ec);
+ if (error)
+ ec = translate_netdb_error(error);
+ if (!retval)
+ return 0;
+ *result = *retval;
+ return retval;
+#else
+ hostent* retval = 0;
+ int error = 0;
+ error_wrapper(::gethostbyaddr_r(addr, length, af, result, buffer,
+ buflength, &retval, &error), ec);
+ if (error)
+ ec = translate_netdb_error(error);
+ return retval;
+#endif
+}
+
+inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
+ char* buffer, int buflength, int ai_flags, boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ (void)(buffer);
+ (void)(buflength);
+ (void)(ai_flags);
+ if (af != AF_INET)
+ {
+ ec = boost::asio::error::address_family_not_supported;
+ return 0;
+ }
+ hostent* retval = error_wrapper(::gethostbyname(name), ec);
+ if (!retval)
+ return 0;
+ clear_error(ec);
+ *result = *retval;
+ return result;
+#elif defined(__sun) || defined(__QNX__)
+ (void)(ai_flags);
+ if (af != AF_INET)
+ {
+ ec = boost::asio::error::address_family_not_supported;
+ return 0;
+ }
+ int error = 0;
+ hostent* retval = error_wrapper(::gethostbyname_r(name, result, buffer,
+ buflength, &error), ec);
+ if (error)
+ ec = translate_netdb_error(error);
+ return retval;
+#elif defined(__MACH__) && defined(__APPLE__)
+ (void)(buffer);
+ (void)(buflength);
+ int error = 0;
+ hostent* retval = error_wrapper(::getipnodebyname(
+ name, af, ai_flags, &error), ec);
+ if (error)
+ ec = translate_netdb_error(error);
+ if (!retval)
+ return 0;
+ *result = *retval;
+ return retval;
+#else
+ (void)(ai_flags);
+ if (af != AF_INET)
+ {
+ ec = boost::asio::error::address_family_not_supported;
+ return 0;
+ }
+ hostent* retval = 0;
+ int error = 0;
+ error_wrapper(::gethostbyname_r(name, result,
+ buffer, buflength, &retval, &error), ec);
+ if (error)
+ ec = translate_netdb_error(error);
+ return retval;
+#endif
+}
+
+inline void freehostent(hostent* h)
+{
+#if defined(__MACH__) && defined(__APPLE__)
+ if (h)
+ ::freehostent(h);
+#else
+ (void)(h);
+#endif
+}
+
+// Emulation of getaddrinfo based on implementation in:
+// Stevens, W. R., UNIX Network Programming Vol. 1, 2nd Ed., Prentice-Hall 1998.
+
+struct gai_search
+{
+ const char* host;
+ int family;
+};
+
+inline int gai_nsearch(const char* host,
+ const addrinfo_type* hints, gai_search (&search)[2])
+{
+ int search_count = 0;
+ if (host == 0 || host[0] == '\0')
+ {
+ if (hints->ai_flags & AI_PASSIVE)
+ {
+ // No host and AI_PASSIVE implies wildcard bind.
+ switch (hints->ai_family)
+ {
+ case AF_INET:
+ search[search_count].host = "0.0.0.0";
+ search[search_count].family = AF_INET;
+ ++search_count;
+ break;
+ case AF_INET6:
+ search[search_count].host = "0::0";
+ search[search_count].family = AF_INET6;
+ ++search_count;
+ break;
+ case AF_UNSPEC:
+ search[search_count].host = "0::0";
+ search[search_count].family = AF_INET6;
+ ++search_count;
+ search[search_count].host = "0.0.0.0";
+ search[search_count].family = AF_INET;
+ ++search_count;
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ {
+ // No host and not AI_PASSIVE means connect to local host.
+ switch (hints->ai_family)
+ {
+ case AF_INET:
+ search[search_count].host = "localhost";
+ search[search_count].family = AF_INET;
+ ++search_count;
+ break;
+ case AF_INET6:
+ search[search_count].host = "localhost";
+ search[search_count].family = AF_INET6;
+ ++search_count;
+ break;
+ case AF_UNSPEC:
+ search[search_count].host = "localhost";
+ search[search_count].family = AF_INET6;
+ ++search_count;
+ search[search_count].host = "localhost";
+ search[search_count].family = AF_INET;
+ ++search_count;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ else
+ {
+ // Host is specified.
+ switch (hints->ai_family)
+ {
+ case AF_INET:
+ search[search_count].host = host;
+ search[search_count].family = AF_INET;
+ ++search_count;
+ break;
+ case AF_INET6:
+ search[search_count].host = host;
+ search[search_count].family = AF_INET6;
+ ++search_count;
+ break;
+ case AF_UNSPEC:
+ search[search_count].host = host;
+ search[search_count].family = AF_INET6;
+ ++search_count;
+ search[search_count].host = host;
+ search[search_count].family = AF_INET;
+ ++search_count;
+ break;
+ default:
+ break;
+ }
+ }
+ return search_count;
+}
+
+template <typename T>
+inline T* gai_alloc(std::size_t size = sizeof(T))
+{
+ using namespace std;
+ T* p = static_cast<T*>(::operator new(size, std::nothrow));
+ if (p)
+ memset(p, 0, size);
+ return p;
+}
+
+inline void gai_free(void* p)
+{
+ ::operator delete(p);
+}
+
+inline void gai_strcpy(char* target, const char* source, std::size_t max_size)
+{
+ using namespace std;
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE)
+ strcpy_s(target, max_size, source);
+#else
+ *target = 0;
+ strncat(target, source, max_size);
+#endif
+}
+
+enum { gai_clone_flag = 1 << 30 };
+
+inline int gai_aistruct(addrinfo_type*** next, const addrinfo_type* hints,
+ const void* addr, int family)
+{
+ using namespace std;
+
+ addrinfo_type* ai = gai_alloc<addrinfo_type>();
+ if (ai == 0)
+ return EAI_MEMORY;
+
+ ai->ai_next = 0;
+ **next = ai;
+ *next = &ai->ai_next;
+
+ ai->ai_canonname = 0;
+ ai->ai_socktype = hints->ai_socktype;
+ if (ai->ai_socktype == 0)
+ ai->ai_flags |= gai_clone_flag;
+ ai->ai_protocol = hints->ai_protocol;
+ ai->ai_family = family;
+
+ switch (ai->ai_family)
+ {
+ case AF_INET:
+ {
+ sockaddr_in4_type* sinptr = gai_alloc<sockaddr_in4_type>();
+ if (sinptr == 0)
+ return EAI_MEMORY;
+ sinptr->sin_family = AF_INET;
+ memcpy(&sinptr->sin_addr, addr, sizeof(in4_addr_type));
+ ai->ai_addr = reinterpret_cast<sockaddr*>(sinptr);
+ ai->ai_addrlen = sizeof(sockaddr_in4_type);
+ break;
+ }
+ case AF_INET6:
+ {
+ sockaddr_in6_type* sin6ptr = gai_alloc<sockaddr_in6_type>();
+ if (sin6ptr == 0)
+ return EAI_MEMORY;
+ sin6ptr->sin6_family = AF_INET6;
+ memcpy(&sin6ptr->sin6_addr, addr, sizeof(in6_addr_type));
+ ai->ai_addr = reinterpret_cast<sockaddr*>(sin6ptr);
+ ai->ai_addrlen = sizeof(sockaddr_in6_type);
+ break;
+ }
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+inline addrinfo_type* gai_clone(addrinfo_type* ai)
+{
+ using namespace std;
+
+ addrinfo_type* new_ai = gai_alloc<addrinfo_type>();
+ if (new_ai == 0)
+ return new_ai;
+
+ new_ai->ai_next = ai->ai_next;
+ ai->ai_next = new_ai;
+
+ new_ai->ai_flags = 0;
+ new_ai->ai_family = ai->ai_family;
+ new_ai->ai_socktype = ai->ai_socktype;
+ new_ai->ai_protocol = ai->ai_protocol;
+ new_ai->ai_canonname = 0;
+ new_ai->ai_addrlen = ai->ai_addrlen;
+ new_ai->ai_addr = gai_alloc<sockaddr>(ai->ai_addrlen);
+ memcpy(new_ai->ai_addr, ai->ai_addr, ai->ai_addrlen);
+
+ return new_ai;
+}
+
+inline int gai_port(addrinfo_type* aihead, int port, int socktype)
+{
+ int num_found = 0;
+
+ for (addrinfo_type* ai = aihead; ai; ai = ai->ai_next)
+ {
+ if (ai->ai_flags & gai_clone_flag)
+ {
+ if (ai->ai_socktype != 0)
+ {
+ ai = gai_clone(ai);
+ if (ai == 0)
+ return -1;
+ // ai now points to newly cloned entry.
+ }
+ }
+ else if (ai->ai_socktype != socktype)
+ {
+ // Ignore if mismatch on socket type.
+ continue;
+ }
+
+ ai->ai_socktype = socktype;
+
+ switch (ai->ai_family)
+ {
+ case AF_INET:
+ {
+ sockaddr_in4_type* sinptr =
+ reinterpret_cast<sockaddr_in4_type*>(ai->ai_addr);
+ sinptr->sin_port = port;
+ ++num_found;
+ break;
+ }
+ case AF_INET6:
+ {
+ sockaddr_in6_type* sin6ptr =
+ reinterpret_cast<sockaddr_in6_type*>(ai->ai_addr);
+ sin6ptr->sin6_port = port;
+ ++num_found;
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ return num_found;
+}
+
+inline int gai_serv(addrinfo_type* aihead,
+ const addrinfo_type* hints, const char* serv)
+{
+ using namespace std;
+
+ int num_found = 0;
+
+ if (
+#if defined(AI_NUMERICSERV)
+ (hints->ai_flags & AI_NUMERICSERV) ||
+#endif
+ isdigit(serv[0]))
+ {
+ int port = htons(atoi(serv));
+ if (hints->ai_socktype)
+ {
+ // Caller specifies socket type.
+ int rc = gai_port(aihead, port, hints->ai_socktype);
+ if (rc < 0)
+ return EAI_MEMORY;
+ num_found += rc;
+ }
+ else
+ {
+ // Caller does not specify socket type.
+ int rc = gai_port(aihead, port, SOCK_STREAM);
+ if (rc < 0)
+ return EAI_MEMORY;
+ num_found += rc;
+ rc = gai_port(aihead, port, SOCK_DGRAM);
+ if (rc < 0)
+ return EAI_MEMORY;
+ num_found += rc;
+ }
+ }
+ else
+ {
+ // Try service name with TCP first, then UDP.
+ if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_STREAM)
+ {
+ servent* sptr = getservbyname(serv, "tcp");
+ if (sptr != 0)
+ {
+ int rc = gai_port(aihead, sptr->s_port, SOCK_STREAM);
+ if (rc < 0)
+ return EAI_MEMORY;
+ num_found += rc;
+ }
+ }
+ if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_DGRAM)
+ {
+ servent* sptr = getservbyname(serv, "udp");
+ if (sptr != 0)
+ {
+ int rc = gai_port(aihead, sptr->s_port, SOCK_DGRAM);
+ if (rc < 0)
+ return EAI_MEMORY;
+ num_found += rc;
+ }
+ }
+ }
+
+ if (num_found == 0)
+ {
+ if (hints->ai_socktype == 0)
+ {
+ // All calls to getservbyname() failed.
+ return EAI_NONAME;
+ }
+ else
+ {
+ // Service not supported for socket type.
+ return EAI_SERVICE;
+ }
+ }
+
+ return 0;
+}
+
+inline int gai_echeck(const char* host, const char* service,
+ int flags, int family, int socktype, int protocol)
+{
+ (void)(flags);
+ (void)(protocol);
+
+ // Host or service must be specified.
+ if (host == 0 || host[0] == '\0')
+ if (service == 0 || service[0] == '\0')
+ return EAI_NONAME;
+
+ // Check combination of family and socket type.
+ switch (family)
+ {
+ case AF_UNSPEC:
+ break;
+ case AF_INET:
+ case AF_INET6:
+ if (socktype != 0 && socktype != SOCK_STREAM && socktype != SOCK_DGRAM)
+ return EAI_SOCKTYPE;
+ break;
+ default:
+ return EAI_FAMILY;
+ }
+
+ return 0;
+}
+
+inline void freeaddrinfo_emulation(addrinfo_type* aihead)
+{
+ addrinfo_type* ai = aihead;
+ while (ai)
+ {
+ gai_free(ai->ai_addr);
+ gai_free(ai->ai_canonname);
+ addrinfo_type* ainext = ai->ai_next;
+ gai_free(ai);
+ ai = ainext;
+ }
+}
+
+inline int getaddrinfo_emulation(const char* host, const char* service,
+ const addrinfo_type* hintsp, addrinfo_type** result)
+{
+ // Set up linked list of addrinfo structures.
+ addrinfo_type* aihead = 0;
+ addrinfo_type** ainext = &aihead;
+ char* canon = 0;
+
+ // Supply default hints if not specified by caller.
+ addrinfo_type hints = addrinfo_type();
+ hints.ai_family = AF_UNSPEC;
+ if (hintsp)
+ hints = *hintsp;
+
+ // If the resolution is not specifically for AF_INET6, remove the AI_V4MAPPED
+ // and AI_ALL flags.
+#if defined(AI_V4MAPPED)
+ if (hints.ai_family != AF_INET6)
+ hints.ai_flags &= ~AI_V4MAPPED;
+#endif
+#if defined(AI_ALL)
+ if (hints.ai_family != AF_INET6)
+ hints.ai_flags &= ~AI_ALL;
+#endif
+
+ // Basic error checking.
+ int rc = gai_echeck(host, service, hints.ai_flags, hints.ai_family,
+ hints.ai_socktype, hints.ai_protocol);
+ if (rc != 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ return rc;
+ }
+
+ gai_search search[2];
+ int search_count = gai_nsearch(host, &hints, search);
+ for (gai_search* sptr = search; sptr < search + search_count; ++sptr)
+ {
+ // Check for IPv4 dotted decimal string.
+ in4_addr_type inaddr;
+ boost::system::error_code ec;
+ if (socket_ops::inet_pton(AF_INET, sptr->host, &inaddr, 0, ec) == 1)
+ {
+ if (hints.ai_family != AF_UNSPEC && hints.ai_family != AF_INET)
+ {
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ return EAI_FAMILY;
+ }
+ if (sptr->family == AF_INET)
+ {
+ rc = gai_aistruct(&ainext, &hints, &inaddr, AF_INET);
+ if (rc != 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ return rc;
+ }
+ }
+ continue;
+ }
+
+ // Check for IPv6 hex string.
+ in6_addr_type in6addr;
+ if (socket_ops::inet_pton(AF_INET6, sptr->host, &in6addr, 0, ec) == 1)
+ {
+ if (hints.ai_family != AF_UNSPEC && hints.ai_family != AF_INET6)
+ {
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ return EAI_FAMILY;
+ }
+ if (sptr->family == AF_INET6)
+ {
+ rc = gai_aistruct(&ainext, &hints, &in6addr, AF_INET6);
+ if (rc != 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ return rc;
+ }
+ }
+ continue;
+ }
+
+ // Look up hostname.
+ hostent hent;
+ char hbuf[8192] = "";
+ hostent* hptr = socket_ops::gethostbyname(sptr->host,
+ sptr->family, &hent, hbuf, sizeof(hbuf), hints.ai_flags, ec);
+ if (hptr == 0)
+ {
+ if (search_count == 2)
+ {
+ // Failure is OK if there are multiple searches.
+ continue;
+ }
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ if (ec == boost::asio::error::host_not_found)
+ return EAI_NONAME;
+ if (ec == boost::asio::error::host_not_found_try_again)
+ return EAI_AGAIN;
+ if (ec == boost::asio::error::no_recovery)
+ return EAI_FAIL;
+ if (ec == boost::asio::error::no_data)
+ return EAI_NONAME;
+ return EAI_NONAME;
+ }
+
+ // Check for address family mismatch if one was specified.
+ if (hints.ai_family != AF_UNSPEC && hints.ai_family != hptr->h_addrtype)
+ {
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ socket_ops::freehostent(hptr);
+ return EAI_FAMILY;
+ }
+
+ // Save canonical name first time.
+ if (host != 0 && host[0] != '\0' && hptr->h_name && hptr->h_name[0]
+ && (hints.ai_flags & AI_CANONNAME) && canon == 0)
+ {
+ std::size_t canon_len = strlen(hptr->h_name) + 1;
+ canon = gai_alloc<char>(canon_len);
+ if (canon == 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ socket_ops::freehostent(hptr);
+ return EAI_MEMORY;
+ }
+ gai_strcpy(canon, hptr->h_name, canon_len);
+ }
+
+ // Create an addrinfo structure for each returned address.
+ for (char** ap = hptr->h_addr_list; *ap; ++ap)
+ {
+ rc = gai_aistruct(&ainext, &hints, *ap, hptr->h_addrtype);
+ if (rc != 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ gai_free(canon);
+ socket_ops::freehostent(hptr);
+ return EAI_FAMILY;
+ }
+ }
+
+ socket_ops::freehostent(hptr);
+ }
+
+ // Check if we found anything.
+ if (aihead == 0)
+ {
+ gai_free(canon);
+ return EAI_NONAME;
+ }
+
+ // Return canonical name in first entry.
+ if (host != 0 && host[0] != '\0' && (hints.ai_flags & AI_CANONNAME))
+ {
+ if (canon)
+ {
+ aihead->ai_canonname = canon;
+ canon = 0;
+ }
+ else
+ {
+ std::size_t canonname_len = strlen(search[0].host) + 1;
+ aihead->ai_canonname = gai_alloc<char>(canonname_len);
+ if (aihead->ai_canonname == 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ return EAI_MEMORY;
+ }
+ gai_strcpy(aihead->ai_canonname, search[0].host, canonname_len);
+ }
+ }
+ gai_free(canon);
+
+ // Process the service name.
+ if (service != 0 && service[0] != '\0')
+ {
+ rc = gai_serv(aihead, &hints, service);
+ if (rc != 0)
+ {
+ freeaddrinfo_emulation(aihead);
+ return rc;
+ }
+ }
+
+ // Return result to caller.
+ *result = aihead;
+ return 0;
+}
+
+inline boost::system::error_code getnameinfo_emulation(
+ const socket_addr_type* sa, std::size_t salen, char* host,
+ std::size_t hostlen, char* serv, std::size_t servlen, int flags,
+ boost::system::error_code& ec)
+{
+ using namespace std;
+
+ const char* addr;
+ size_t addr_len;
+ unsigned short port;
+ switch (sa->sa_family)
+ {
+ case AF_INET:
+ if (salen != sizeof(sockaddr_in4_type))
+ {
+ return ec = boost::asio::error::invalid_argument;
+ }
+ addr = reinterpret_cast<const char*>(
+ &reinterpret_cast<const sockaddr_in4_type*>(sa)->sin_addr);
+ addr_len = sizeof(in4_addr_type);
+ port = reinterpret_cast<const sockaddr_in4_type*>(sa)->sin_port;
+ break;
+ case AF_INET6:
+ if (salen != sizeof(sockaddr_in6_type))
+ {
+ return ec = boost::asio::error::invalid_argument;
+ }
+ addr = reinterpret_cast<const char*>(
+ &reinterpret_cast<const sockaddr_in6_type*>(sa)->sin6_addr);
+ addr_len = sizeof(in6_addr_type);
+ port = reinterpret_cast<const sockaddr_in6_type*>(sa)->sin6_port;
+ break;
+ default:
+ return ec = boost::asio::error::address_family_not_supported;
+ }
+
+ if (host && hostlen > 0)
+ {
+ if (flags & NI_NUMERICHOST)
+ {
+ if (socket_ops::inet_ntop(sa->sa_family, addr, host, hostlen, 0, ec) == 0)
+ {
+ return ec;
+ }
+ }
+ else
+ {
+ hostent hent;
+ char hbuf[8192] = "";
+ hostent* hptr = socket_ops::gethostbyaddr(addr,
+ static_cast<int>(addr_len), sa->sa_family,
+ &hent, hbuf, sizeof(hbuf), ec);
+ if (hptr && hptr->h_name && hptr->h_name[0] != '\0')
+ {
+ if (flags & NI_NOFQDN)
+ {
+ char* dot = strchr(hptr->h_name, '.');
+ if (dot)
+ {
+ *dot = 0;
+ }
+ }
+ gai_strcpy(host, hptr->h_name, hostlen);
+ socket_ops::freehostent(hptr);
+ }
+ else
+ {
+ socket_ops::freehostent(hptr);
+ if (flags & NI_NAMEREQD)
+ {
+ return ec = boost::asio::error::host_not_found;
+ }
+ if (socket_ops::inet_ntop(sa->sa_family,
+ addr, host, hostlen, 0, ec) == 0)
+ {
+ return ec;
+ }
+ }
+ }
+ }
+
+ if (serv && servlen > 0)
+ {
+ if (flags & NI_NUMERICSERV)
+ {
+ if (servlen < 6)
+ {
+ return ec = boost::asio::error::no_buffer_space;
+ }
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE)
+ sprintf_s(serv, servlen, "%u", ntohs(port));
+#else
+ sprintf(serv, "%u", ntohs(port));
+#endif
+ }
+ else
+ {
+#if defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS)
+ static ::pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+ ::pthread_mutex_lock(&mutex);
+#endif // defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS)
+ servent* sptr = ::getservbyport(port, (flags & NI_DGRAM) ? "udp" : 0);
+ if (sptr && sptr->s_name && sptr->s_name[0] != '\0')
+ {
+ gai_strcpy(serv, sptr->s_name, servlen);
+ }
+ else
+ {
+ if (servlen < 6)
+ {
+ return ec = boost::asio::error::no_buffer_space;
+ }
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE)
+ sprintf_s(serv, servlen, "%u", ntohs(port));
+#else
+ sprintf(serv, "%u", ntohs(port));
+#endif
+ }
+#if defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS)
+ ::pthread_mutex_unlock(&mutex);
+#endif // defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS)
+ }
+ }
+
+ clear_error(ec);
+ return ec;
+}
+
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ // || defined(__MACH__) && defined(__APPLE__)
+
+inline boost::system::error_code translate_addrinfo_error(int error)
+{
+ switch (error)
+ {
+ case 0:
+ return boost::system::error_code();
+ case EAI_AGAIN:
+ return boost::asio::error::host_not_found_try_again;
+ case EAI_BADFLAGS:
+ return boost::asio::error::invalid_argument;
+ case EAI_FAIL:
+ return boost::asio::error::no_recovery;
+ case EAI_FAMILY:
+ return boost::asio::error::address_family_not_supported;
+ case EAI_MEMORY:
+ return boost::asio::error::no_memory;
+ case EAI_NONAME:
+#if defined(EAI_ADDRFAMILY)
+ case EAI_ADDRFAMILY:
+#endif
+#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME)
+ case EAI_NODATA:
+#endif
+ return boost::asio::error::host_not_found;
+ case EAI_SERVICE:
+ return boost::asio::error::service_not_found;
+ case EAI_SOCKTYPE:
+ return boost::asio::error::socket_type_not_supported;
+ default: // Possibly the non-portable EAI_SYSTEM.
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ return boost::system::error_code(
+ WSAGetLastError(), boost::asio::error::get_system_category());
+#else
+ return boost::system::error_code(
+ errno, boost::asio::error::get_system_category());
+#endif
+ }
+}
+
+inline boost::system::error_code getaddrinfo(const char* host,
+ const char* service, const addrinfo_type* hints, addrinfo_type** result,
+ boost::system::error_code& ec)
+{
+ clear_error(ec);
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) || defined(UNDER_CE)
+ // Building for Windows XP, Windows Server 2003, or later.
+ int error = ::getaddrinfo(host, service, hints, result);
+ return ec = translate_addrinfo_error(error);
+# else
+ // Building for Windows 2000 or earlier.
+ typedef int (WSAAPI *gai_t)(const char*,
+ const char*, const addrinfo_type*, addrinfo_type**);
+ if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
+ {
+ if (gai_t gai = (gai_t)::GetProcAddress(winsock_module, "getaddrinfo"))
+ {
+ int error = gai(host, service, hints, result);
+ return ec = translate_addrinfo_error(error);
+ }
+ }
+ int error = getaddrinfo_emulation(host, service, hints, result);
+ return ec = translate_addrinfo_error(error);
+# endif
+#elif defined(__MACH__) && defined(__APPLE__)
+ int error = getaddrinfo_emulation(host, service, hints, result);
+ return ec = translate_addrinfo_error(error);
+#else
+ int error = ::getaddrinfo(host, service, hints, result);
+ return ec = translate_addrinfo_error(error);
+#endif
+}
+
+inline void freeaddrinfo(addrinfo_type* ai)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) || defined(UNDER_CE)
+ // Building for Windows XP, Windows Server 2003, or later.
+ ::freeaddrinfo(ai);
+# else
+ // Building for Windows 2000 or earlier.
+ typedef int (WSAAPI *fai_t)(addrinfo_type*);
+ if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
+ {
+ if (fai_t fai = (fai_t)::GetProcAddress(winsock_module, "freeaddrinfo"))
+ {
+ fai(ai);
+ return;
+ }
+ }
+ freeaddrinfo_emulation(ai);
+# endif
+#elif defined(__MACH__) && defined(__APPLE__)
+ freeaddrinfo_emulation(ai);
+#else
+ ::freeaddrinfo(ai);
+#endif
+}
+
+inline boost::system::error_code getnameinfo(const socket_addr_type* addr,
+ std::size_t addrlen, char* host, std::size_t hostlen,
+ char* serv, std::size_t servlen, int flags, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501) || defined(UNDER_CE)
+ // Building for Windows XP, Windows Server 2003, or later.
+ clear_error(ec);
+ int error = ::getnameinfo(addr, static_cast<socklen_t>(addrlen),
+ host, static_cast<DWORD>(hostlen),
+ serv, static_cast<DWORD>(servlen), flags);
+ return ec = translate_addrinfo_error(error);
+# else
+ // Building for Windows 2000 or earlier.
+ typedef int (WSAAPI *gni_t)(const socket_addr_type*,
+ int, char*, DWORD, char*, DWORD, int);
+ if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
+ {
+ if (gni_t gni = (gni_t)::GetProcAddress(winsock_module, "getnameinfo"))
+ {
+ clear_error(ec);
+ int error = gni(addr, static_cast<int>(addrlen),
+ host, static_cast<DWORD>(hostlen),
+ serv, static_cast<DWORD>(servlen), flags);
+ return ec = translate_addrinfo_error(error);
+ }
+ }
+ clear_error(ec);
+ return getnameinfo_emulation(addr, addrlen,
+ host, hostlen, serv, servlen, flags, ec);
+# endif
+#elif defined(__MACH__) && defined(__APPLE__)
+ using namespace std; // For memcpy.
+ sockaddr_storage_type tmp_addr;
+ memcpy(&tmp_addr, addr, addrlen);
+ tmp_addr.ss_len = addrlen;
+ addr = reinterpret_cast<socket_addr_type*>(&tmp_addr);
+ clear_error(ec);
+ return getnameinfo_emulation(addr, addrlen,
+ host, hostlen, serv, servlen, flags, ec);
+#else
+ clear_error(ec);
+ int error = ::getnameinfo(addr, addrlen, host, hostlen, serv, servlen, flags);
+ return ec = translate_addrinfo_error(error);
+#endif
+}
+
+inline u_long_type network_to_host_long(u_long_type value)
+{
+ return ntohl(value);
+}
+
+inline u_long_type host_to_network_long(u_long_type value)
+{
+ return htonl(value);
+}
+
+inline u_short_type network_to_host_short(u_short_type value)
+{
+ return ntohs(value);
+}
+
+inline u_short_type host_to_network_short(u_short_type value)
+{
+ return htons(value);
+}
+
+} // namespace socket_ops
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SOCKET_OPS_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/socket_option.hpp b/3rdParty/Boost/boost/asio/detail/socket_option.hpp
new file mode 100644
index 0000000..c0d7b74
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/socket_option.hpp
@@ -0,0 +1,311 @@
+//
+// socket_option.hpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SOCKET_OPTION_HPP
+#define BOOST_ASIO_DETAIL_SOCKET_OPTION_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <stdexcept>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+namespace socket_option {
+
+// Helper template for implementing boolean-based options.
+template <int Level, int Name>
+class boolean
+{
+public:
+ // Default constructor.
+ boolean()
+ : value_(0)
+ {
+ }
+
+ // Construct with a specific option value.
+ explicit boolean(bool v)
+ : value_(v ? 1 : 0)
+ {
+ }
+
+ // Set the current value of the boolean.
+ boolean& operator=(bool v)
+ {
+ value_ = v ? 1 : 0;
+ return *this;
+ }
+
+ // Get the current value of the boolean.
+ bool value() const
+ {
+ return !!value_;
+ }
+
+ // Convert to bool.
+ operator bool() const
+ {
+ return !!value_;
+ }
+
+ // Test for false.
+ bool operator!() const
+ {
+ return !value_;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol&) const
+ {
+ return Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol&) const
+ {
+ return Name;
+ }
+
+ // Get the address of the boolean data.
+ template <typename Protocol>
+ int* data(const Protocol&)
+ {
+ return &value_;
+ }
+
+ // Get the address of the boolean data.
+ template <typename Protocol>
+ const int* data(const Protocol&) const
+ {
+ return &value_;
+ }
+
+ // Get the size of the boolean data.
+ template <typename Protocol>
+ std::size_t size(const Protocol&) const
+ {
+ return sizeof(value_);
+ }
+
+ // Set the size of the boolean data.
+ template <typename Protocol>
+ void resize(const Protocol&, std::size_t s)
+ {
+ // On some platforms (e.g. Windows Vista), the getsockopt function will
+ // return the size of a boolean socket option as one byte, even though a
+ // four byte integer was passed in.
+ switch (s)
+ {
+ case sizeof(char):
+ value_ = *reinterpret_cast<char*>(&value_) ? 1 : 0;
+ break;
+ case sizeof(value_):
+ break;
+ default:
+ throw std::length_error("boolean socket option resize");
+ }
+ }
+
+private:
+ int value_;
+};
+
+// Helper template for implementing integer options.
+template <int Level, int Name>
+class integer
+{
+public:
+ // Default constructor.
+ integer()
+ : value_(0)
+ {
+ }
+
+ // Construct with a specific option value.
+ explicit integer(int v)
+ : value_(v)
+ {
+ }
+
+ // Set the value of the int option.
+ integer& operator=(int v)
+ {
+ value_ = v;
+ return *this;
+ }
+
+ // Get the current value of the int option.
+ int value() const
+ {
+ return value_;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol&) const
+ {
+ return Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol&) const
+ {
+ return Name;
+ }
+
+ // Get the address of the int data.
+ template <typename Protocol>
+ int* data(const Protocol&)
+ {
+ return &value_;
+ }
+
+ // Get the address of the int data.
+ template <typename Protocol>
+ const int* data(const Protocol&) const
+ {
+ return &value_;
+ }
+
+ // Get the size of the int data.
+ template <typename Protocol>
+ std::size_t size(const Protocol&) const
+ {
+ return sizeof(value_);
+ }
+
+ // Set the size of the int data.
+ template <typename Protocol>
+ void resize(const Protocol&, std::size_t s)
+ {
+ if (s != sizeof(value_))
+ throw std::length_error("integer socket option resize");
+ }
+
+private:
+ int value_;
+};
+
+// Helper template for implementing linger options.
+template <int Level, int Name>
+class linger
+{
+public:
+ // Default constructor.
+ linger()
+ {
+ value_.l_onoff = 0;
+ value_.l_linger = 0;
+ }
+
+ // Construct with specific option values.
+ linger(bool e, int t)
+ {
+ enabled(e);
+ timeout BOOST_PREVENT_MACRO_SUBSTITUTION(t);
+ }
+
+ // Set the value for whether linger is enabled.
+ void enabled(bool value)
+ {
+ value_.l_onoff = value ? 1 : 0;
+ }
+
+ // Get the value for whether linger is enabled.
+ bool enabled() const
+ {
+ return value_.l_onoff != 0;
+ }
+
+ // Set the value for the linger timeout.
+ void timeout BOOST_PREVENT_MACRO_SUBSTITUTION(int value)
+ {
+#if defined(WIN32)
+ value_.l_linger = static_cast<u_short>(value);
+#else
+ value_.l_linger = value;
+#endif
+ }
+
+ // Get the value for the linger timeout.
+ int timeout BOOST_PREVENT_MACRO_SUBSTITUTION() const
+ {
+ return static_cast<int>(value_.l_linger);
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol&) const
+ {
+ return Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol&) const
+ {
+ return Name;
+ }
+
+ // Get the address of the linger data.
+ template <typename Protocol>
+ ::linger* data(const Protocol&)
+ {
+ return &value_;
+ }
+
+ // Get the address of the linger data.
+ template <typename Protocol>
+ const ::linger* data(const Protocol&) const
+ {
+ return &value_;
+ }
+
+ // Get the size of the linger data.
+ template <typename Protocol>
+ std::size_t size(const Protocol&) const
+ {
+ return sizeof(value_);
+ }
+
+ // Set the size of the int data.
+ template <typename Protocol>
+ void resize(const Protocol&, std::size_t s)
+ {
+ if (s != sizeof(value_))
+ throw std::length_error("linger socket option resize");
+ }
+
+private:
+ ::linger value_;
+};
+
+} // namespace socket_option
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SOCKET_OPTION_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/socket_select_interrupter.hpp b/3rdParty/Boost/boost/asio/detail/socket_select_interrupter.hpp
new file mode 100644
index 0000000..a767ba0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/socket_select_interrupter.hpp
@@ -0,0 +1,189 @@
+//
+// socket_select_interrupter.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
+#define BOOST_ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstdlib>
+#include <boost/throw_exception.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_holder.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class socket_select_interrupter
+{
+public:
+ // Constructor.
+ socket_select_interrupter()
+ {
+ boost::system::error_code ec;
+ socket_holder acceptor(socket_ops::socket(
+ AF_INET, SOCK_STREAM, IPPROTO_TCP, ec));
+ if (acceptor.get() == invalid_socket)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ int opt = 1;
+ socket_ops::setsockopt(acceptor.get(),
+ SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt), ec);
+
+ using namespace std; // For memset.
+ sockaddr_in4_type addr;
+ std::size_t addr_len = sizeof(addr);
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
+ addr.sin_port = 0;
+ if (socket_ops::bind(acceptor.get(), (const socket_addr_type*)&addr,
+ addr_len, ec) == socket_error_retval)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ if (socket_ops::getsockname(acceptor.get(), (socket_addr_type*)&addr,
+ &addr_len, ec) == socket_error_retval)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ if (socket_ops::listen(acceptor.get(),
+ SOMAXCONN, ec) == socket_error_retval)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ socket_holder client(socket_ops::socket(
+ AF_INET, SOCK_STREAM, IPPROTO_TCP, ec));
+ if (client.get() == invalid_socket)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ if (socket_ops::connect(client.get(), (const socket_addr_type*)&addr,
+ addr_len, ec) == socket_error_retval)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ socket_holder server(socket_ops::accept(acceptor.get(), 0, 0, ec));
+ if (server.get() == invalid_socket)
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ ioctl_arg_type non_blocking = 1;
+ if (socket_ops::ioctl(client.get(), FIONBIO, &non_blocking, ec))
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ opt = 1;
+ socket_ops::setsockopt(client.get(),
+ IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec);
+
+ non_blocking = 1;
+ if (socket_ops::ioctl(server.get(), FIONBIO, &non_blocking, ec))
+ {
+ boost::system::system_error e(ec, "socket_select_interrupter");
+ boost::throw_exception(e);
+ }
+
+ opt = 1;
+ socket_ops::setsockopt(server.get(),
+ IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec);
+
+ read_descriptor_ = server.release();
+ write_descriptor_ = client.release();
+ }
+
+ // Destructor.
+ ~socket_select_interrupter()
+ {
+ boost::system::error_code ec;
+ if (read_descriptor_ != invalid_socket)
+ socket_ops::close(read_descriptor_, ec);
+ if (write_descriptor_ != invalid_socket)
+ socket_ops::close(write_descriptor_, ec);
+ }
+
+ // Interrupt the select call.
+ void interrupt()
+ {
+ char byte = 0;
+ socket_ops::buf b;
+ socket_ops::init_buf(b, &byte, 1);
+ boost::system::error_code ec;
+ socket_ops::send(write_descriptor_, &b, 1, 0, ec);
+ }
+
+ // Reset the select interrupt. Returns true if the call was interrupted.
+ bool reset()
+ {
+ char data[1024];
+ socket_ops::buf b;
+ socket_ops::init_buf(b, data, sizeof(data));
+ boost::system::error_code ec;
+ int bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec);
+ bool was_interrupted = (bytes_read > 0);
+ while (bytes_read == sizeof(data))
+ bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec);
+ return was_interrupted;
+ }
+
+ // Get the read descriptor to be passed to select.
+ socket_type read_descriptor() const
+ {
+ return read_descriptor_;
+ }
+
+private:
+ // The read end of a connection used to interrupt the select call. This file
+ // descriptor is passed to select such that when it is time to stop, a single
+ // byte will be written on the other end of the connection and this
+ // descriptor will become readable.
+ socket_type read_descriptor_;
+
+ // The write end of a connection used to interrupt the select call. A single
+ // byte may be written to this to wake up the select which is waiting for the
+ // other end to become readable.
+ socket_type write_descriptor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/socket_types.hpp b/3rdParty/Boost/boost/asio/detail/socket_types.hpp
new file mode 100644
index 0000000..c7b6a75
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/socket_types.hpp
@@ -0,0 +1,212 @@
+//
+// socket_types.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_SOCKET_TYPES_HPP
+#define BOOST_ASIO_DETAIL_SOCKET_TYPES_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
+# error WinSock.h has already been included
+# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
+# if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+# pragma message( \
+ "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\
+ "- add -D_WIN32_WINNT=0x0501 to the compiler command line; or\n"\
+ "- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.\n"\
+ "Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).")
+# else // defined(_MSC_VER) || defined(__BORLANDC__)
+# warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.
+# warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line.
+# warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
+# endif // defined(_MSC_VER) || defined(__BORLANDC__)
+# define _WIN32_WINNT 0x0501
+# endif // !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
+# if defined(_MSC_VER)
+# if defined(_WIN32) && !defined(WIN32)
+# if !defined(_WINSOCK2API_)
+# define WIN32 // Needed for correct types in winsock2.h
+# else // !defined(_WINSOCK2API_)
+# error Please define the macro WIN32 in your compiler options
+# endif // !defined(_WINSOCK2API_)
+# endif // defined(_WIN32) && !defined(WIN32)
+# endif // defined(_MSC_VER)
+# if defined(__BORLANDC__)
+# include <stdlib.h> // Needed for __errno
+# if defined(__WIN32__) && !defined(WIN32)
+# if !defined(_WINSOCK2API_)
+# define WIN32 // Needed for correct types in winsock2.h
+# else // !defined(_WINSOCK2API_)
+# error Please define the macro WIN32 in your compiler options
+# endif // !defined(_WINSOCK2API_)
+# endif // defined(__WIN32__) && !defined(WIN32)
+# if !defined(_WSPIAPI_H_)
+# define _WSPIAPI_H_
+# define BOOST_ASIO_WSPIAPI_H_DEFINED
+# endif // !defined(_WSPIAPI_H_)
+# endif // defined(__BORLANDC__)
+# if !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
+# if !defined(WIN32_LEAN_AND_MEAN)
+# define WIN32_LEAN_AND_MEAN
+# endif // !defined(WIN32_LEAN_AND_MEAN)
+# endif // !defined(BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN)
+# if defined(__CYGWIN__)
+# if !defined(__USE_W32_SOCKETS)
+# error You must add -D__USE_W32_SOCKETS to your compiler options.
+# endif // !defined(__USE_W32_SOCKETS)
+# if !defined(NOMINMAX)
+# define NOMINMAX 1
+# endif // !defined(NOMINMAX)
+# endif // defined(__CYGWIN__)
+# include <winsock2.h>
+# include <ws2tcpip.h>
+# include <mswsock.h>
+# if defined(BOOST_ASIO_WSPIAPI_H_DEFINED)
+# undef _WSPIAPI_H_
+# undef BOOST_ASIO_WSPIAPI_H_DEFINED
+# endif // defined(BOOST_ASIO_WSPIAPI_H_DEFINED)
+# if !defined(BOOST_ASIO_NO_DEFAULT_LINKED_LIBS)
+# if defined(UNDER_CE)
+# pragma comment(lib, "ws2.lib")
+# elif defined(_MSC_VER) || defined(__BORLANDC__)
+# pragma comment(lib, "ws2_32.lib")
+# pragma comment(lib, "mswsock.lib")
+# endif // defined(_MSC_VER) || defined(__BORLANDC__)
+# endif // !defined(BOOST_ASIO_NO_DEFAULT_LINKED_LIBS)
+# include <boost/asio/detail/old_win_sdk_compat.hpp>
+#else
+# include <sys/ioctl.h>
+# include <sys/poll.h>
+# include <sys/types.h>
+# if defined(__hpux) && !defined(__HP_aCC)
+# include <sys/time.h>
+# else
+# include <sys/select.h>
+# endif
+# include <sys/socket.h>
+# include <sys/uio.h>
+# include <sys/un.h>
+# include <netinet/in.h>
+# include <netinet/tcp.h>
+# include <arpa/inet.h>
+# include <netdb.h>
+# include <net/if.h>
+# include <limits.h>
+# if defined(__sun)
+# include <sys/filio.h>
+# include <sys/sockio.h>
+# endif
+#endif
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+typedef SOCKET socket_type;
+const SOCKET invalid_socket = INVALID_SOCKET;
+const int socket_error_retval = SOCKET_ERROR;
+const int max_addr_v4_str_len = 256;
+const int max_addr_v6_str_len = 256;
+typedef sockaddr socket_addr_type;
+typedef in_addr in4_addr_type;
+typedef ip_mreq in4_mreq_type;
+typedef sockaddr_in sockaddr_in4_type;
+# if defined(BOOST_ASIO_HAS_OLD_WIN_SDK)
+typedef in6_addr_emulation in6_addr_type;
+typedef ipv6_mreq_emulation in6_mreq_type;
+typedef sockaddr_in6_emulation sockaddr_in6_type;
+typedef sockaddr_storage_emulation sockaddr_storage_type;
+typedef addrinfo_emulation addrinfo_type;
+# else
+typedef in6_addr in6_addr_type;
+typedef ipv6_mreq in6_mreq_type;
+typedef sockaddr_in6 sockaddr_in6_type;
+typedef sockaddr_storage sockaddr_storage_type;
+typedef addrinfo addrinfo_type;
+# endif
+typedef unsigned long ioctl_arg_type;
+typedef u_long u_long_type;
+typedef u_short u_short_type;
+const int shutdown_receive = SD_RECEIVE;
+const int shutdown_send = SD_SEND;
+const int shutdown_both = SD_BOTH;
+const int message_peek = MSG_PEEK;
+const int message_out_of_band = MSG_OOB;
+const int message_do_not_route = MSG_DONTROUTE;
+# if defined (_WIN32_WINNT)
+const int max_iov_len = 64;
+# else
+const int max_iov_len = 16;
+# endif
+#else
+typedef int socket_type;
+const int invalid_socket = -1;
+const int socket_error_retval = -1;
+const int max_addr_v4_str_len = INET_ADDRSTRLEN;
+const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE;
+typedef sockaddr socket_addr_type;
+typedef in_addr in4_addr_type;
+# if defined(__hpux)
+// HP-UX doesn't provide ip_mreq when _XOPEN_SOURCE_EXTENDED is defined.
+struct in4_mreq_type
+{
+ struct in_addr imr_multiaddr;
+ struct in_addr imr_interface;
+};
+# else
+typedef ip_mreq in4_mreq_type;
+# endif
+typedef sockaddr_in sockaddr_in4_type;
+typedef in6_addr in6_addr_type;
+typedef ipv6_mreq in6_mreq_type;
+typedef sockaddr_in6 sockaddr_in6_type;
+typedef sockaddr_storage sockaddr_storage_type;
+typedef sockaddr_un sockaddr_un_type;
+typedef addrinfo addrinfo_type;
+typedef int ioctl_arg_type;
+typedef uint32_t u_long_type;
+typedef uint16_t u_short_type;
+const int shutdown_receive = SHUT_RD;
+const int shutdown_send = SHUT_WR;
+const int shutdown_both = SHUT_RDWR;
+const int message_peek = MSG_PEEK;
+const int message_out_of_band = MSG_OOB;
+const int message_do_not_route = MSG_DONTROUTE;
+# if defined(IOV_MAX)
+const int max_iov_len = IOV_MAX;
+# else
+// POSIX platforms are not required to define IOV_MAX.
+const int max_iov_len = 16;
+# endif
+#endif
+const int custom_socket_option_level = 0xA5100000;
+const int enable_connection_aborted_option = 1;
+const int always_fail_option = 2;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_SOCKET_TYPES_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/strand_service.hpp b/3rdParty/Boost/boost/asio/detail/strand_service.hpp
new file mode 100644
index 0000000..2c89a61
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/strand_service.hpp
@@ -0,0 +1,532 @@
+//
+// strand_service.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_STRAND_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_STRAND_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/aligned_storage.hpp>
+#include <boost/assert.hpp>
+#include <boost/detail/atomic_count.hpp>
+#include <boost/intrusive_ptr.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/call_stack.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/service_base.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Default service implementation for a strand.
+class strand_service
+ : public boost::asio::detail::service_base<strand_service>
+{
+public:
+ class handler_base;
+ class invoke_current_handler;
+ class post_next_waiter_on_exit;
+
+ // The underlying implementation of a strand.
+ class strand_impl
+ {
+#if defined (__BORLANDC__)
+ public:
+#else
+ private:
+#endif
+ void add_ref()
+ {
+ ++ref_count_;
+ }
+
+ void release()
+ {
+ if (--ref_count_ == 0)
+ delete this;
+ }
+
+ private:
+ // Only this service will have access to the internal values.
+ friend class strand_service;
+ friend class post_next_waiter_on_exit;
+ friend class invoke_current_handler;
+
+ strand_impl(strand_service& owner)
+ : owner_(owner),
+ current_handler_(0),
+ first_waiter_(0),
+ last_waiter_(0),
+ ref_count_(0)
+ {
+ // Insert implementation into linked list of all implementations.
+ boost::asio::detail::mutex::scoped_lock lock(owner_.mutex_);
+ next_ = owner_.impl_list_;
+ prev_ = 0;
+ if (owner_.impl_list_)
+ owner_.impl_list_->prev_ = this;
+ owner_.impl_list_ = this;
+ }
+
+ ~strand_impl()
+ {
+ // Remove implementation from linked list of all implementations.
+ boost::asio::detail::mutex::scoped_lock lock(owner_.mutex_);
+ if (owner_.impl_list_ == this)
+ owner_.impl_list_ = next_;
+ if (prev_)
+ prev_->next_ = next_;
+ if (next_)
+ next_->prev_= prev_;
+ next_ = 0;
+ prev_ = 0;
+ lock.unlock();
+
+ if (current_handler_)
+ {
+ current_handler_->destroy();
+ }
+
+ while (first_waiter_)
+ {
+ handler_base* next = first_waiter_->next_;
+ first_waiter_->destroy();
+ first_waiter_ = next;
+ }
+ }
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // The service that owns this implementation.
+ strand_service& owner_;
+
+ // The handler that is ready to execute. If this pointer is non-null then it
+ // indicates that a handler holds the lock.
+ handler_base* current_handler_;
+
+ // The start of the list of waiting handlers for the strand.
+ handler_base* first_waiter_;
+
+ // The end of the list of waiting handlers for the strand.
+ handler_base* last_waiter_;
+
+ // Storage for posted handlers.
+ typedef boost::aligned_storage<128> handler_storage_type;
+#if defined(__BORLANDC__)
+ boost::aligned_storage<128> handler_storage_;
+#else
+ handler_storage_type handler_storage_;
+#endif
+
+ // Pointers to adjacent socket implementations in linked list.
+ strand_impl* next_;
+ strand_impl* prev_;
+
+ // The reference count on the strand implementation.
+ boost::detail::atomic_count ref_count_;
+
+#if !defined(__BORLANDC__)
+ friend void intrusive_ptr_add_ref(strand_impl* p)
+ {
+ p->add_ref();
+ }
+
+ friend void intrusive_ptr_release(strand_impl* p)
+ {
+ p->release();
+ }
+#endif
+ };
+
+ friend class strand_impl;
+
+ typedef boost::intrusive_ptr<strand_impl> implementation_type;
+
+ // Base class for all handler types.
+ class handler_base
+ {
+ public:
+ typedef void (*invoke_func_type)(handler_base*,
+ strand_service&, implementation_type&);
+ typedef void (*destroy_func_type)(handler_base*);
+
+ handler_base(invoke_func_type invoke_func, destroy_func_type destroy_func)
+ : next_(0),
+ invoke_func_(invoke_func),
+ destroy_func_(destroy_func)
+ {
+ }
+
+ void invoke(strand_service& service_impl, implementation_type& impl)
+ {
+ invoke_func_(this, service_impl, impl);
+ }
+
+ void destroy()
+ {
+ destroy_func_(this);
+ }
+
+ protected:
+ ~handler_base()
+ {
+ }
+
+ private:
+ friend class strand_service;
+ friend class strand_impl;
+ friend class post_next_waiter_on_exit;
+ handler_base* next_;
+ invoke_func_type invoke_func_;
+ destroy_func_type destroy_func_;
+ };
+
+ // Helper class to allow handlers to be dispatched.
+ class invoke_current_handler
+ {
+ public:
+ invoke_current_handler(strand_service& service_impl,
+ const implementation_type& impl)
+ : service_impl_(service_impl),
+ impl_(impl)
+ {
+ }
+
+ void operator()()
+ {
+ impl_->current_handler_->invoke(service_impl_, impl_);
+ }
+
+ friend void* asio_handler_allocate(std::size_t size,
+ invoke_current_handler* this_handler)
+ {
+ return this_handler->do_handler_allocate(size);
+ }
+
+ friend void asio_handler_deallocate(void*, std::size_t,
+ invoke_current_handler*)
+ {
+ }
+
+ void* do_handler_allocate(std::size_t size)
+ {
+#if defined(__BORLANDC__)
+ BOOST_ASSERT(size <= boost::aligned_storage<128>::size);
+#else
+ BOOST_ASSERT(size <= strand_impl::handler_storage_type::size);
+#endif
+ (void)size;
+ return impl_->handler_storage_.address();
+ }
+
+ // The asio_handler_invoke hook is not defined here since the default one
+ // provides the correct behaviour, and including it here breaks MSVC 7.1
+ // in some situations.
+
+ private:
+ strand_service& service_impl_;
+ implementation_type impl_;
+ };
+
+ // Helper class to automatically enqueue next waiter on block exit.
+ class post_next_waiter_on_exit
+ {
+ public:
+ post_next_waiter_on_exit(strand_service& service_impl,
+ implementation_type& impl)
+ : service_impl_(service_impl),
+ impl_(impl),
+ cancelled_(false)
+ {
+ }
+
+ ~post_next_waiter_on_exit()
+ {
+ if (!cancelled_)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(impl_->mutex_);
+ impl_->current_handler_ = impl_->first_waiter_;
+ if (impl_->current_handler_)
+ {
+ impl_->first_waiter_ = impl_->first_waiter_->next_;
+ if (impl_->first_waiter_ == 0)
+ impl_->last_waiter_ = 0;
+ lock.unlock();
+ service_impl_.get_io_service().post(
+ invoke_current_handler(service_impl_, impl_));
+ }
+ }
+ }
+
+ void cancel()
+ {
+ cancelled_ = true;
+ }
+
+ private:
+ strand_service& service_impl_;
+ implementation_type& impl_;
+ bool cancelled_;
+ };
+
+ // Class template for a waiter.
+ template <typename Handler>
+ class handler_wrapper
+ : public handler_base
+ {
+ public:
+ handler_wrapper(Handler handler)
+ : handler_base(&handler_wrapper<Handler>::do_invoke,
+ &handler_wrapper<Handler>::do_destroy),
+ handler_(handler)
+ {
+ }
+
+ static void do_invoke(handler_base* base,
+ strand_service& service_impl, implementation_type& impl)
+ {
+ // Take ownership of the handler object.
+ typedef handler_wrapper<Handler> this_type;
+ this_type* h(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(h->handler_, h);
+
+ post_next_waiter_on_exit p1(service_impl, impl);
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(h->handler_);
+
+ // A handler object must still be valid when the next waiter is posted
+ // since destroying the last handler might cause the strand object to be
+ // destroyed. Therefore we create a second post_next_waiter_on_exit object
+ // that will be destroyed before the handler object.
+ p1.cancel();
+ post_next_waiter_on_exit p2(service_impl, impl);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Indicate that this strand is executing on the current thread.
+ call_stack<strand_impl>::context ctx(impl.get());
+
+ // Make the upcall.
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ }
+
+ static void do_destroy(handler_base* base)
+ {
+ // Take ownership of the handler object.
+ typedef handler_wrapper<Handler> this_type;
+ this_type* h(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(h->handler_, h);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(h->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ private:
+ Handler handler_;
+ };
+
+ // Construct a new strand service for the specified io_service.
+ explicit strand_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<strand_service>(io_service),
+ mutex_(),
+ impl_list_(0)
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ // Construct a list of all handlers to be destroyed.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ strand_impl* impl = impl_list_;
+ handler_base* first_handler = 0;
+ while (impl)
+ {
+ if (impl->current_handler_)
+ {
+ impl->current_handler_->next_ = first_handler;
+ first_handler = impl->current_handler_;
+ impl->current_handler_ = 0;
+ }
+ if (impl->first_waiter_)
+ {
+ impl->last_waiter_->next_ = first_handler;
+ first_handler = impl->first_waiter_;
+ impl->first_waiter_ = 0;
+ impl->last_waiter_ = 0;
+ }
+ impl = impl->next_;
+ }
+
+ // Destroy all handlers without holding the lock.
+ lock.unlock();
+ while (first_handler)
+ {
+ handler_base* next = first_handler->next_;
+ first_handler->destroy();
+ first_handler = next;
+ }
+ }
+
+ // Construct a new strand implementation.
+ void construct(implementation_type& impl)
+ {
+ impl = implementation_type(new strand_impl(*this));
+ }
+
+ // Destroy a strand implementation.
+ void destroy(implementation_type& impl)
+ {
+ implementation_type().swap(impl);
+ }
+
+ // Request the io_service to invoke the given handler.
+ template <typename Handler>
+ void dispatch(implementation_type& impl, Handler handler)
+ {
+ if (call_stack<strand_impl>::contains(impl.get()))
+ {
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ }
+ else
+ {
+ // Allocate and construct an object to wrap the handler.
+ typedef handler_wrapper<Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, handler);
+
+ boost::asio::detail::mutex::scoped_lock lock(impl->mutex_);
+
+ if (impl->current_handler_ == 0)
+ {
+ // This handler now has the lock, so can be dispatched immediately.
+ impl->current_handler_ = ptr.release();
+ lock.unlock();
+ this->get_io_service().dispatch(invoke_current_handler(*this, impl));
+ }
+ else
+ {
+ // Another handler already holds the lock, so this handler must join
+ // the list of waiters. The handler will be posted automatically when
+ // its turn comes.
+ if (impl->last_waiter_)
+ {
+ impl->last_waiter_->next_ = ptr.get();
+ impl->last_waiter_ = impl->last_waiter_->next_;
+ }
+ else
+ {
+ impl->first_waiter_ = ptr.get();
+ impl->last_waiter_ = ptr.get();
+ }
+ ptr.release();
+ }
+ }
+ }
+
+ // Request the io_service to invoke the given handler and return immediately.
+ template <typename Handler>
+ void post(implementation_type& impl, Handler handler)
+ {
+ // Allocate and construct an object to wrap the handler.
+ typedef handler_wrapper<Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, handler);
+
+ boost::asio::detail::mutex::scoped_lock lock(impl->mutex_);
+
+ if (impl->current_handler_ == 0)
+ {
+ // This handler now has the lock, so can be dispatched immediately.
+ impl->current_handler_ = ptr.release();
+ lock.unlock();
+ this->get_io_service().post(invoke_current_handler(*this, impl));
+ }
+ else
+ {
+ // Another handler already holds the lock, so this handler must join the
+ // list of waiters. The handler will be posted automatically when its turn
+ // comes.
+ if (impl->last_waiter_)
+ {
+ impl->last_waiter_->next_ = ptr.get();
+ impl->last_waiter_ = impl->last_waiter_->next_;
+ }
+ else
+ {
+ impl->first_waiter_ = ptr.get();
+ impl->last_waiter_ = ptr.get();
+ }
+ ptr.release();
+ }
+ }
+
+private:
+ // Mutex to protect access to the linked list of implementations.
+ boost::asio::detail::mutex mutex_;
+
+ // The head of a linked list of all implementations.
+ strand_impl* impl_list_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#if defined(__BORLANDC__)
+
+namespace boost {
+
+inline void intrusive_ptr_add_ref(
+ boost::asio::detail::strand_service::strand_impl* p)
+{
+ p->add_ref();
+}
+
+inline void intrusive_ptr_release(
+ boost::asio::detail::strand_service::strand_impl* p)
+{
+ p->release();
+}
+
+} // namespace boost
+
+#endif // defined(__BORLANDC__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_STRAND_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/task_io_service.hpp b/3rdParty/Boost/boost/asio/detail/task_io_service.hpp
new file mode 100644
index 0000000..eeae6b0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/task_io_service.hpp
@@ -0,0 +1,438 @@
+//
+// task_io_service.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_TASK_IO_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_TASK_IO_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#if defined(BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE)
+#include <boost/asio/detail/task_io_service_2lock.hpp>
+#else // defined(BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/call_stack.hpp>
+#include <boost/asio/detail/event.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/handler_queue.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/task_io_service_fwd.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Task>
+class task_io_service
+ : public boost::asio::detail::service_base<task_io_service<Task> >
+{
+public:
+ // Constructor.
+ task_io_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<task_io_service<Task> >(io_service),
+ mutex_(),
+ task_(0),
+ task_interrupted_(true),
+ outstanding_work_(0),
+ stopped_(false),
+ shutdown_(false),
+ first_idle_thread_(0)
+ {
+ }
+
+ void init(size_t /*concurrency_hint*/)
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ shutdown_ = true;
+ lock.unlock();
+
+ // Destroy handler objects.
+ while (!handler_queue_.empty())
+ {
+ handler_queue::handler* h = handler_queue_.front();
+ handler_queue_.pop();
+ if (h != &task_handler_)
+ h->destroy();
+ }
+
+ // Reset to initial state.
+ task_ = 0;
+ }
+
+ // Initialise the task, if required.
+ void init_task()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (!shutdown_ && !task_)
+ {
+ task_ = &use_service<Task>(this->get_io_service());
+ handler_queue_.push(&task_handler_);
+ interrupt_one_idle_thread(lock);
+ }
+ }
+
+ // Run the event loop until interrupted or no more work.
+ size_t run(boost::system::error_code& ec)
+ {
+ typename call_stack<task_io_service>::context ctx(this);
+
+ idle_thread_info this_idle_thread;
+ this_idle_thread.next = 0;
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ size_t n = 0;
+ while (do_one(lock, &this_idle_thread, ec))
+ if (n != (std::numeric_limits<size_t>::max)())
+ ++n;
+ return n;
+ }
+
+ // Run until interrupted or one operation is performed.
+ size_t run_one(boost::system::error_code& ec)
+ {
+ typename call_stack<task_io_service>::context ctx(this);
+
+ idle_thread_info this_idle_thread;
+ this_idle_thread.next = 0;
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ return do_one(lock, &this_idle_thread, ec);
+ }
+
+ // Poll for operations without blocking.
+ size_t poll(boost::system::error_code& ec)
+ {
+ typename call_stack<task_io_service>::context ctx(this);
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ size_t n = 0;
+ while (do_one(lock, 0, ec))
+ if (n != (std::numeric_limits<size_t>::max)())
+ ++n;
+ return n;
+ }
+
+ // Poll for one operation without blocking.
+ size_t poll_one(boost::system::error_code& ec)
+ {
+ typename call_stack<task_io_service>::context ctx(this);
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ return do_one(lock, 0, ec);
+ }
+
+ // Interrupt the event processing loop.
+ void stop()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ stop_all_threads(lock);
+ }
+
+ // Reset in preparation for a subsequent run invocation.
+ void reset()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ stopped_ = false;
+ }
+
+ // Notify that some work has started.
+ void work_started()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ ++outstanding_work_;
+ }
+
+ // Notify that some work has finished.
+ void work_finished()
+ {
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (--outstanding_work_ == 0)
+ stop_all_threads(lock);
+ }
+
+ // Request invocation of the given handler.
+ template <typename Handler>
+ void dispatch(Handler handler)
+ {
+ if (call_stack<task_io_service>::contains(this))
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ else
+ post(handler);
+ }
+
+ // Request invocation of the given handler and return immediately.
+ template <typename Handler>
+ void post(Handler handler)
+ {
+ // Allocate and construct an operation to wrap the handler.
+ handler_queue::scoped_ptr ptr(handler_queue::wrap(handler));
+
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+
+ // If the service has been shut down we silently discard the handler.
+ if (shutdown_)
+ return;
+
+ // Add the handler to the end of the queue.
+ handler_queue_.push(ptr.get());
+ ptr.release();
+
+ // An undelivered handler is treated as unfinished work.
+ ++outstanding_work_;
+
+ // Wake up a thread to execute the handler.
+ if (!interrupt_one_idle_thread(lock))
+ {
+ if (!task_interrupted_ && task_)
+ {
+ task_interrupted_ = true;
+ task_->interrupt();
+ }
+ }
+ }
+
+private:
+ struct idle_thread_info;
+
+ size_t do_one(boost::asio::detail::mutex::scoped_lock& lock,
+ idle_thread_info* this_idle_thread, boost::system::error_code& ec)
+ {
+ if (outstanding_work_ == 0 && !stopped_)
+ {
+ stop_all_threads(lock);
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ bool polling = !this_idle_thread;
+ bool task_has_run = false;
+ while (!stopped_)
+ {
+ if (!handler_queue_.empty())
+ {
+ // Prepare to execute first handler from queue.
+ handler_queue::handler* h = handler_queue_.front();
+ handler_queue_.pop();
+
+ if (h == &task_handler_)
+ {
+ bool more_handlers = (!handler_queue_.empty());
+ task_interrupted_ = more_handlers || polling;
+
+ // If the task has already run and we're polling then we're done.
+ if (task_has_run && polling)
+ {
+ task_interrupted_ = true;
+ handler_queue_.push(&task_handler_);
+ ec = boost::system::error_code();
+ return 0;
+ }
+ task_has_run = true;
+
+ lock.unlock();
+ task_cleanup c(lock, *this);
+
+ // Run the task. May throw an exception. Only block if the handler
+ // queue is empty and we have an idle_thread_info object, otherwise
+ // we want to return as soon as possible.
+ task_->run(!more_handlers && !polling);
+ }
+ else
+ {
+ lock.unlock();
+ handler_cleanup c(lock, *this);
+
+ // Invoke the handler. May throw an exception.
+ h->invoke(); // invoke() deletes the handler object
+
+ ec = boost::system::error_code();
+ return 1;
+ }
+ }
+ else if (this_idle_thread)
+ {
+ // Nothing to run right now, so just wait for work to do.
+ this_idle_thread->next = first_idle_thread_;
+ first_idle_thread_ = this_idle_thread;
+ this_idle_thread->wakeup_event.clear(lock);
+ this_idle_thread->wakeup_event.wait(lock);
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+ }
+
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Stop the task and all idle threads.
+ void stop_all_threads(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ stopped_ = true;
+ interrupt_all_idle_threads(lock);
+ if (!task_interrupted_ && task_)
+ {
+ task_interrupted_ = true;
+ task_->interrupt();
+ }
+ }
+
+ // Interrupt a single idle thread. Returns true if a thread was interrupted,
+ // false if no running thread could be found to interrupt.
+ bool interrupt_one_idle_thread(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ if (first_idle_thread_)
+ {
+ idle_thread_info* idle_thread = first_idle_thread_;
+ first_idle_thread_ = idle_thread->next;
+ idle_thread->next = 0;
+ idle_thread->wakeup_event.signal(lock);
+ return true;
+ }
+ return false;
+ }
+
+ // Interrupt all idle threads.
+ void interrupt_all_idle_threads(
+ boost::asio::detail::mutex::scoped_lock& lock)
+ {
+ while (first_idle_thread_)
+ {
+ idle_thread_info* idle_thread = first_idle_thread_;
+ first_idle_thread_ = idle_thread->next;
+ idle_thread->next = 0;
+ idle_thread->wakeup_event.signal(lock);
+ }
+ }
+
+ // Helper class to perform task-related operations on block exit.
+ class task_cleanup;
+ friend class task_cleanup;
+ class task_cleanup
+ {
+ public:
+ task_cleanup(boost::asio::detail::mutex::scoped_lock& lock,
+ task_io_service& task_io_svc)
+ : lock_(lock),
+ task_io_service_(task_io_svc)
+ {
+ }
+
+ ~task_cleanup()
+ {
+ // Reinsert the task at the end of the handler queue.
+ lock_.lock();
+ task_io_service_.task_interrupted_ = true;
+ task_io_service_.handler_queue_.push(&task_io_service_.task_handler_);
+ }
+
+ private:
+ boost::asio::detail::mutex::scoped_lock& lock_;
+ task_io_service& task_io_service_;
+ };
+
+ // Helper class to perform handler-related operations on block exit.
+ class handler_cleanup;
+ friend class handler_cleanup;
+ class handler_cleanup
+ {
+ public:
+ handler_cleanup(boost::asio::detail::mutex::scoped_lock& lock,
+ task_io_service& task_io_svc)
+ : lock_(lock),
+ task_io_service_(task_io_svc)
+ {
+ }
+
+ ~handler_cleanup()
+ {
+ lock_.lock();
+ if (--task_io_service_.outstanding_work_ == 0)
+ task_io_service_.stop_all_threads(lock_);
+ }
+
+ private:
+ boost::asio::detail::mutex::scoped_lock& lock_;
+ task_io_service& task_io_service_;
+ };
+
+ // Mutex to protect access to internal data.
+ boost::asio::detail::mutex mutex_;
+
+ // The task to be run by this service.
+ Task* task_;
+
+ // Handler object to represent the position of the task in the queue.
+ class task_handler
+ : public handler_queue::handler
+ {
+ public:
+ task_handler()
+ : handler_queue::handler(0, 0)
+ {
+ }
+ } task_handler_;
+
+ // Whether the task has been interrupted.
+ bool task_interrupted_;
+
+ // The count of unfinished work.
+ int outstanding_work_;
+
+ // The queue of handlers that are ready to be delivered.
+ handler_queue handler_queue_;
+
+ // Flag to indicate that the dispatcher has been stopped.
+ bool stopped_;
+
+ // Flag to indicate that the dispatcher has been shut down.
+ bool shutdown_;
+
+ // Structure containing information about an idle thread.
+ struct idle_thread_info
+ {
+ event wakeup_event;
+ idle_thread_info* next;
+ };
+
+ // The number of threads that are currently idle.
+ idle_thread_info* first_idle_thread_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/system/error_code.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // defined(BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE)
+
+#endif // BOOST_ASIO_DETAIL_TASK_IO_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/task_io_service_2lock.hpp b/3rdParty/Boost/boost/asio/detail/task_io_service_2lock.hpp
new file mode 100644
index 0000000..bd406cb
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/task_io_service_2lock.hpp
@@ -0,0 +1,475 @@
+//
+// task_io_service_2lock.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_TASK_IO_SERVICE_2LOCK_HPP
+#define BOOST_ASIO_DETAIL_TASK_IO_SERVICE_2LOCK_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/call_stack.hpp>
+#include <boost/asio/detail/event.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/indirect_handler_queue.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/task_io_service_fwd.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/detail/atomic_count.hpp>
+#include <boost/system/error_code.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// An alternative task_io_service implementation based on a two-lock queue.
+
+template <typename Task>
+class task_io_service
+ : public boost::asio::detail::service_base<task_io_service<Task> >
+{
+public:
+ typedef indirect_handler_queue handler_queue;
+
+ // Constructor.
+ task_io_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<task_io_service<Task> >(io_service),
+ front_mutex_(),
+ back_mutex_(),
+ task_(&use_service<Task>(io_service)),
+ outstanding_work_(0),
+ front_stopped_(false),
+ back_stopped_(false),
+ back_shutdown_(false),
+ back_first_idle_thread_(0),
+ back_task_thread_(0)
+ {
+ }
+
+ void init(size_t /*concurrency_hint*/)
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+ back_shutdown_ = true;
+ back_lock.unlock();
+
+ // Destroy handler objects.
+ while (handler_queue::handler* h = handler_queue_.pop())
+ if (h != &task_handler_)
+ h->destroy();
+
+ // Reset to initial state.
+ task_ = 0;
+ }
+
+ // Initialise the task, if required.
+ void init_task()
+ {
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+ if (!back_shutdown_ && !task_)
+ {
+ task_ = &use_service<Task>(this->get_io_service());
+ handler_queue_.push(&task_handler_);
+ interrupt_one_idle_thread(back_lock);
+ }
+ }
+
+ // Run the event loop until interrupted or no more work.
+ size_t run(boost::system::error_code& ec)
+ {
+ if (outstanding_work_ == 0)
+ {
+ stop();
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ typename call_stack<task_io_service>::context ctx(this);
+
+ idle_thread_info this_idle_thread;
+ this_idle_thread.next = 0;
+
+ size_t n = 0;
+ while (do_one(&this_idle_thread, ec))
+ if (n != (std::numeric_limits<size_t>::max)())
+ ++n;
+ return n;
+ }
+
+ // Run until interrupted or one operation is performed.
+ size_t run_one(boost::system::error_code& ec)
+ {
+ if (outstanding_work_ == 0)
+ {
+ stop();
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ typename call_stack<task_io_service>::context ctx(this);
+
+ idle_thread_info this_idle_thread;
+ this_idle_thread.next = 0;
+
+ return do_one(&this_idle_thread, ec);
+ }
+
+ // Poll for operations without blocking.
+ size_t poll(boost::system::error_code& ec)
+ {
+ if (outstanding_work_ == 0)
+ {
+ stop();
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ typename call_stack<task_io_service>::context ctx(this);
+
+ size_t n = 0;
+ while (do_one(0, ec))
+ if (n != (std::numeric_limits<size_t>::max)())
+ ++n;
+ return n;
+ }
+
+ // Poll for one operation without blocking.
+ size_t poll_one(boost::system::error_code& ec)
+ {
+ if (outstanding_work_ == 0)
+ {
+ stop();
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ typename call_stack<task_io_service>::context ctx(this);
+
+ return do_one(0, ec);
+ }
+
+ // Interrupt the event processing loop.
+ void stop()
+ {
+ boost::asio::detail::mutex::scoped_lock front_lock(front_mutex_);
+ front_stopped_ = true;
+ front_lock.unlock();
+
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+ back_stopped_ = true;
+ interrupt_all_idle_threads(back_lock);
+ }
+
+ // Reset in preparation for a subsequent run invocation.
+ void reset()
+ {
+ boost::asio::detail::mutex::scoped_lock front_lock(front_mutex_);
+ front_stopped_ = false;
+ front_lock.unlock();
+
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+ back_stopped_ = false;
+ }
+
+ // Notify that some work has started.
+ void work_started()
+ {
+ ++outstanding_work_;
+ }
+
+ // Notify that some work has finished.
+ void work_finished()
+ {
+ if (--outstanding_work_ == 0)
+ stop();
+ }
+
+ // Request invocation of the given handler.
+ template <typename Handler>
+ void dispatch(Handler handler)
+ {
+ if (call_stack<task_io_service>::contains(this))
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ else
+ post(handler);
+ }
+
+ // Request invocation of the given handler and return immediately.
+ template <typename Handler>
+ void post(Handler handler)
+ {
+ // Allocate and construct an operation to wrap the handler.
+ handler_queue::scoped_ptr ptr(handler_queue::wrap(handler));
+
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+
+ // If the service has been shut down we silently discard the handler.
+ if (back_shutdown_)
+ return;
+
+ // Add the handler to the end of the queue.
+ handler_queue_.push(ptr.get());
+ ptr.release();
+
+ // An undelivered handler is treated as unfinished work.
+ ++outstanding_work_;
+
+ // Wake up a thread to execute the handler.
+ interrupt_one_idle_thread(back_lock);
+ }
+
+private:
+ struct idle_thread_info;
+
+ size_t do_one(idle_thread_info* this_idle_thread,
+ boost::system::error_code& ec)
+ {
+ bool task_has_run = false;
+ for (;;)
+ {
+ // The front lock must be held before we can pop items from the queue.
+ boost::asio::detail::mutex::scoped_lock front_lock(front_mutex_);
+ if (front_stopped_)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ if (handler_queue::handler* h = handler_queue_.pop())
+ {
+ if (h == &task_handler_)
+ {
+ bool more_handlers = handler_queue_.poppable();
+ unsigned long front_version = handler_queue_.front_version();
+ front_lock.unlock();
+
+ // The task is always added to the back of the queue when we exit
+ // this block.
+ task_cleanup c(*this);
+
+ // If we're polling and the task has already run then we're done.
+ bool polling = !this_idle_thread;
+ if (task_has_run && polling)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // If we're considering going idle we need to check whether the queue
+ // is still empty. If it is, add the thread to the list of idle
+ // threads.
+ if (!more_handlers && !polling)
+ {
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+ if (back_stopped_)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+ else if (front_version == handler_queue_.back_version())
+ {
+ back_task_thread_ = this_idle_thread;
+ }
+ else
+ {
+ more_handlers = true;
+ }
+ }
+
+ // Run the task. May throw an exception. Only block if the handler
+ // queue is empty and we're not polling, otherwise we want to return
+ // as soon as possible.
+ task_has_run = true;
+ task_->run(!more_handlers && !polling);
+ }
+ else
+ {
+ front_lock.unlock();
+ handler_cleanup c(*this);
+
+ // Invoke the handler. May throw an exception.
+ h->invoke(); // invoke() deletes the handler object
+
+ ec = boost::system::error_code();
+ return 1;
+ }
+ }
+ else if (this_idle_thread)
+ {
+ unsigned long front_version = handler_queue_.front_version();
+ front_lock.unlock();
+
+ // If we're considering going idle we need to check whether the queue
+ // is still empty. If it is, add the thread to the list of idle
+ // threads.
+ boost::asio::detail::mutex::scoped_lock back_lock(back_mutex_);
+ if (back_stopped_)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+ else if (front_version == handler_queue_.back_version())
+ {
+ this_idle_thread->next = back_first_idle_thread_;
+ back_first_idle_thread_ = this_idle_thread;
+ this_idle_thread->wakeup_event.clear(back_lock);
+ this_idle_thread->wakeup_event.wait(back_lock);
+ }
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+ }
+ }
+
+ // Interrupt a single idle thread.
+ void interrupt_one_idle_thread(
+ boost::asio::detail::mutex::scoped_lock& back_lock)
+ {
+ if (back_first_idle_thread_)
+ {
+ idle_thread_info* idle_thread = back_first_idle_thread_;
+ back_first_idle_thread_ = idle_thread->next;
+ idle_thread->next = 0;
+ idle_thread->wakeup_event.signal(back_lock);
+ }
+ else if (back_task_thread_ && task_)
+ {
+ back_task_thread_ = 0;
+ task_->interrupt();
+ }
+ }
+
+ // Interrupt all idle threads.
+ void interrupt_all_idle_threads(
+ boost::asio::detail::mutex::scoped_lock& back_lock)
+ {
+ while (back_first_idle_thread_)
+ {
+ idle_thread_info* idle_thread = back_first_idle_thread_;
+ back_first_idle_thread_ = idle_thread->next;
+ idle_thread->next = 0;
+ idle_thread->wakeup_event.signal(back_lock);
+ }
+
+ if (back_task_thread_ && task_)
+ {
+ back_task_thread_ = 0;
+ task_->interrupt();
+ }
+ }
+
+ // Helper class to perform task-related operations on block exit.
+ class task_cleanup;
+ friend class task_cleanup;
+ class task_cleanup
+ {
+ public:
+ task_cleanup(task_io_service& task_io_svc)
+ : task_io_service_(task_io_svc)
+ {
+ }
+
+ ~task_cleanup()
+ {
+ // Reinsert the task at the end of the handler queue.
+ boost::asio::detail::mutex::scoped_lock back_lock(
+ task_io_service_.back_mutex_);
+ task_io_service_.back_task_thread_ = 0;
+ task_io_service_.handler_queue_.push(&task_io_service_.task_handler_);
+ }
+
+ private:
+ task_io_service& task_io_service_;
+ };
+
+ // Helper class to perform handler-related operations on block exit.
+ class handler_cleanup
+ {
+ public:
+ handler_cleanup(task_io_service& task_io_svc)
+ : task_io_service_(task_io_svc)
+ {
+ }
+
+ ~handler_cleanup()
+ {
+ task_io_service_.work_finished();
+ }
+
+ private:
+ task_io_service& task_io_service_;
+ };
+
+ // Mutexes to protect access to internal data.
+ boost::asio::detail::mutex front_mutex_;
+ boost::asio::detail::mutex back_mutex_;
+
+ // The task to be run by this service.
+ Task* task_;
+
+ // Handler object to represent the position of the task in the queue.
+ class task_handler
+ : public handler_queue::handler
+ {
+ public:
+ task_handler()
+ : handler_queue::handler(0, 0)
+ {
+ }
+ } task_handler_;
+
+ // The count of unfinished work.
+ boost::detail::atomic_count outstanding_work_;
+
+ // The queue of handlers that are ready to be delivered.
+ handler_queue handler_queue_;
+
+ // Flag to indicate that the dispatcher has been stopped.
+ bool front_stopped_;
+ bool back_stopped_;
+
+ // Flag to indicate that the dispatcher has been shut down.
+ bool back_shutdown_;
+
+ // Structure containing information about an idle thread.
+ struct idle_thread_info
+ {
+ event wakeup_event;
+ idle_thread_info* next;
+ };
+
+ // The number of threads that are currently idle.
+ idle_thread_info* back_first_idle_thread_;
+
+ // The thread that is currently blocked on the task.
+ idle_thread_info* back_task_thread_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_TASK_IO_SERVICE_2LOCK_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/task_io_service_fwd.hpp b/3rdParty/Boost/boost/asio/detail/task_io_service_fwd.hpp
new file mode 100644
index 0000000..6dc8955
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/task_io_service_fwd.hpp
@@ -0,0 +1,33 @@
+//
+// task_io_service_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_TASK_IO_SERVICE_FWD_HPP
+#define BOOST_ASIO_DETAIL_TASK_IO_SERVICE_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Task>
+class task_io_service;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_TASK_IO_SERVICE_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/thread.hpp b/3rdParty/Boost/boost/asio/detail/thread.hpp
new file mode 100644
index 0000000..3db5805
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/thread.hpp
@@ -0,0 +1,60 @@
+//
+// thread.hpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_THREAD_HPP
+#define BOOST_ASIO_DETAIL_THREAD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+# include <boost/asio/detail/null_thread.hpp>
+#elif defined(BOOST_WINDOWS)
+# if defined(UNDER_CE)
+# include <boost/asio/detail/wince_thread.hpp>
+# else
+# include <boost/asio/detail/win_thread.hpp>
+# endif
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/asio/detail/posix_thread.hpp>
+#else
+# error Only Windows and POSIX are supported!
+#endif
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+#if !defined(BOOST_HAS_THREADS)
+typedef null_thread thread;
+#elif defined(BOOST_WINDOWS)
+# if defined(UNDER_CE)
+typedef wince_thread thread;
+# else
+typedef win_thread thread;
+# endif
+#elif defined(BOOST_HAS_PTHREADS)
+typedef posix_thread thread;
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_THREAD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/throw_error.hpp b/3rdParty/Boost/boost/asio/detail/throw_error.hpp
new file mode 100644
index 0000000..0786c40
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/throw_error.hpp
@@ -0,0 +1,46 @@
+//
+// throw_error.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_THROW_ERROR_HPP
+#define BOOST_ASIO_DETAIL_THROW_ERROR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/system/error_code.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+inline void throw_error(const boost::system::error_code& err)
+{
+ if (err)
+ {
+ boost::system::system_error e(err);
+ boost::throw_exception(e);
+ }
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_THROW_ERROR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/timer_queue.hpp b/3rdParty/Boost/boost/asio/detail/timer_queue.hpp
new file mode 100644
index 0000000..f5370e5
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/timer_queue.hpp
@@ -0,0 +1,438 @@
+//
+// timer_queue.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_TIMER_QUEUE_HPP
+#define BOOST_ASIO_DETAIL_TIMER_QUEUE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <functional>
+#include <limits>
+#include <memory>
+#include <vector>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/hash_map.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/timer_queue_base.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Time_Traits>
+class timer_queue
+ : public timer_queue_base
+{
+public:
+ // The time type.
+ typedef typename Time_Traits::time_type time_type;
+
+ // The duration type.
+ typedef typename Time_Traits::duration_type duration_type;
+
+ // Constructor.
+ timer_queue()
+ : timers_(),
+ heap_(),
+ cancelled_timers_(0),
+ complete_timers_(0)
+ {
+ }
+
+ // Add a new timer to the queue. Returns true if this is the timer that is
+ // earliest in the queue, in which case the reactor's event demultiplexing
+ // function call may need to be interrupted and restarted.
+ template <typename Handler>
+ bool enqueue_timer(const time_type& time, Handler handler, void* token)
+ {
+ // Ensure that there is space for the timer in the heap. We reserve here so
+ // that the push_back below will not throw due to a reallocation failure.
+ heap_.reserve(heap_.size() + 1);
+
+ // Create a new timer object.
+ std::auto_ptr<timer<Handler> > new_timer(
+ new timer<Handler>(time, handler, token));
+
+ // Insert the new timer into the hash.
+ typedef typename hash_map<void*, timer_base*>::iterator iterator;
+ typedef typename hash_map<void*, timer_base*>::value_type value_type;
+ std::pair<iterator, bool> result =
+ timers_.insert(value_type(token, new_timer.get()));
+ if (!result.second)
+ {
+ result.first->second->prev_ = new_timer.get();
+ new_timer->next_ = result.first->second;
+ result.first->second = new_timer.get();
+ }
+
+ // Put the timer at the correct position in the heap.
+ new_timer->heap_index_ = heap_.size();
+ heap_.push_back(new_timer.get());
+ up_heap(heap_.size() - 1);
+ bool is_first = (heap_[0] == new_timer.get());
+
+ // Ownership of the timer is transferred to the timer queue.
+ new_timer.release();
+
+ return is_first;
+ }
+
+ // Whether there are no timers in the queue.
+ virtual bool empty() const
+ {
+ return heap_.empty();
+ }
+
+ // Get the time for the timer that is earliest in the queue.
+ virtual boost::posix_time::time_duration wait_duration() const
+ {
+ if (heap_.empty())
+ return boost::posix_time::pos_infin;
+ return Time_Traits::to_posix_duration(
+ Time_Traits::subtract(heap_[0]->time_, Time_Traits::now()));
+ }
+
+ // Dispatch the timers that are earlier than the specified time.
+ virtual void dispatch_timers()
+ {
+ const time_type now = Time_Traits::now();
+ while (!heap_.empty() && !Time_Traits::less_than(now, heap_[0]->time_))
+ {
+ timer_base* t = heap_[0];
+ remove_timer(t);
+ t->result_ = boost::system::error_code();
+ t->prev_ = 0;
+ t->next_ = complete_timers_;
+ complete_timers_ = t;
+ }
+ }
+
+ // Cancel the timers with the given token. Any timers pending for the token
+ // will be notified that they have been cancelled next time
+ // dispatch_cancellations is called. Returns the number of timers that were
+ // cancelled.
+ std::size_t cancel_timer(void* timer_token)
+ {
+ std::size_t num_cancelled = 0;
+ typedef typename hash_map<void*, timer_base*>::iterator iterator;
+ iterator it = timers_.find(timer_token);
+ if (it != timers_.end())
+ {
+ timer_base* t = it->second;
+ while (t)
+ {
+ timer_base* next = t->next_;
+ remove_timer(t);
+ t->prev_ = 0;
+ t->next_ = cancelled_timers_;
+ cancelled_timers_ = t;
+ t = next;
+ ++num_cancelled;
+ }
+ }
+ return num_cancelled;
+ }
+
+ // Dispatch any pending cancels for timers.
+ virtual void dispatch_cancellations()
+ {
+ while (cancelled_timers_)
+ {
+ timer_base* this_timer = cancelled_timers_;
+ this_timer->result_ = boost::asio::error::operation_aborted;
+ cancelled_timers_ = this_timer->next_;
+ this_timer->next_ = complete_timers_;
+ complete_timers_ = this_timer;
+ }
+ }
+
+ // Complete any timers that are waiting to be completed.
+ virtual void complete_timers()
+ {
+ while (complete_timers_)
+ {
+ timer_base* this_timer = complete_timers_;
+ complete_timers_ = this_timer->next_;
+ this_timer->next_ = 0;
+ this_timer->complete();
+ }
+ }
+
+ // Destroy all timers.
+ virtual void destroy_timers()
+ {
+ typename hash_map<void*, timer_base*>::iterator i = timers_.begin();
+ typename hash_map<void*, timer_base*>::iterator end = timers_.end();
+ while (i != end)
+ {
+ timer_base* t = i->second;
+ typename hash_map<void*, timer_base*>::iterator old_i = i++;
+ timers_.erase(old_i);
+ destroy_timer_list(t);
+ }
+ heap_.clear();
+ timers_.clear();
+ destroy_timer_list(cancelled_timers_);
+ destroy_timer_list(complete_timers_);
+ }
+
+private:
+ // Base class for timer operations. Function pointers are used instead of
+ // virtual functions to avoid the associated overhead.
+ class timer_base
+ {
+ public:
+ // Delete the timer and post the handler.
+ void complete()
+ {
+ complete_func_(this, result_);
+ }
+
+ // Delete the timer.
+ void destroy()
+ {
+ destroy_func_(this);
+ }
+
+ protected:
+ typedef void (*complete_func_type)(timer_base*,
+ const boost::system::error_code&);
+ typedef void (*destroy_func_type)(timer_base*);
+
+ // Constructor.
+ timer_base(complete_func_type complete_func, destroy_func_type destroy_func,
+ const time_type& time, void* token)
+ : complete_func_(complete_func),
+ destroy_func_(destroy_func),
+ time_(time),
+ token_(token),
+ next_(0),
+ prev_(0),
+ heap_index_(
+ std::numeric_limits<size_t>::max BOOST_PREVENT_MACRO_SUBSTITUTION())
+ {
+ }
+
+ // Prevent deletion through this type.
+ ~timer_base()
+ {
+ }
+
+ private:
+ friend class timer_queue<Time_Traits>;
+
+ // The function to be called to delete the timer and post the handler.
+ complete_func_type complete_func_;
+
+ // The function to be called to delete the timer.
+ destroy_func_type destroy_func_;
+
+ // The result of the timer operation.
+ boost::system::error_code result_;
+
+ // The time when the timer should fire.
+ time_type time_;
+
+ // The token associated with the timer.
+ void* token_;
+
+ // The next timer known to the queue.
+ timer_base* next_;
+
+ // The previous timer known to the queue.
+ timer_base* prev_;
+
+ // The index of the timer in the heap.
+ size_t heap_index_;
+ };
+
+ // Adaptor class template for using handlers in timers.
+ template <typename Handler>
+ class timer
+ : public timer_base
+ {
+ public:
+ // Constructor.
+ timer(const time_type& time, Handler handler, void* token)
+ : timer_base(&timer<Handler>::complete_handler,
+ &timer<Handler>::destroy_handler, time, token),
+ handler_(handler)
+ {
+ }
+
+ // Delete the timer and post the handler.
+ static void complete_handler(timer_base* base,
+ const boost::system::error_code& result)
+ {
+ // Take ownership of the timer object.
+ typedef timer<Handler> this_type;
+ this_type* this_timer(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(this_timer->handler_, this_timer);
+
+ // Make a copy of the error_code and the handler so that the memory can
+ // be deallocated before the upcall is made.
+ boost::system::error_code ec(result);
+ Handler handler(this_timer->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Make the upcall.
+ handler(ec);
+ }
+
+ // Delete the timer.
+ static void destroy_handler(timer_base* base)
+ {
+ // Take ownership of the timer object.
+ typedef timer<Handler> this_type;
+ this_type* this_timer(static_cast<this_type*>(base));
+ typedef handler_alloc_traits<Handler, this_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(this_timer->handler_, this_timer);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(this_timer->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ private:
+ Handler handler_;
+ };
+
+ // Move the item at the given index up the heap to its correct position.
+ void up_heap(size_t index)
+ {
+ size_t parent = (index - 1) / 2;
+ while (index > 0
+ && Time_Traits::less_than(heap_[index]->time_, heap_[parent]->time_))
+ {
+ swap_heap(index, parent);
+ index = parent;
+ parent = (index - 1) / 2;
+ }
+ }
+
+ // Move the item at the given index down the heap to its correct position.
+ void down_heap(size_t index)
+ {
+ size_t child = index * 2 + 1;
+ while (child < heap_.size())
+ {
+ size_t min_child = (child + 1 == heap_.size()
+ || Time_Traits::less_than(
+ heap_[child]->time_, heap_[child + 1]->time_))
+ ? child : child + 1;
+ if (Time_Traits::less_than(heap_[index]->time_, heap_[min_child]->time_))
+ break;
+ swap_heap(index, min_child);
+ index = min_child;
+ child = index * 2 + 1;
+ }
+ }
+
+ // Swap two entries in the heap.
+ void swap_heap(size_t index1, size_t index2)
+ {
+ timer_base* tmp = heap_[index1];
+ heap_[index1] = heap_[index2];
+ heap_[index2] = tmp;
+ heap_[index1]->heap_index_ = index1;
+ heap_[index2]->heap_index_ = index2;
+ }
+
+ // Remove a timer from the heap and list of timers.
+ void remove_timer(timer_base* t)
+ {
+ // Remove the timer from the heap.
+ size_t index = t->heap_index_;
+ if (!heap_.empty() && index < heap_.size())
+ {
+ if (index == heap_.size() - 1)
+ {
+ heap_.pop_back();
+ }
+ else
+ {
+ swap_heap(index, heap_.size() - 1);
+ heap_.pop_back();
+ size_t parent = (index - 1) / 2;
+ if (index > 0 && Time_Traits::less_than(
+ heap_[index]->time_, heap_[parent]->time_))
+ up_heap(index);
+ else
+ down_heap(index);
+ }
+ }
+
+ // Remove the timer from the hash.
+ typedef typename hash_map<void*, timer_base*>::iterator iterator;
+ iterator it = timers_.find(t->token_);
+ if (it != timers_.end())
+ {
+ if (it->second == t)
+ it->second = t->next_;
+ if (t->prev_)
+ t->prev_->next_ = t->next_;
+ if (t->next_)
+ t->next_->prev_ = t->prev_;
+ if (it->second == 0)
+ timers_.erase(it);
+ }
+ }
+
+ // Destroy all timers in a linked list.
+ void destroy_timer_list(timer_base*& t)
+ {
+ while (t)
+ {
+ timer_base* next = t->next_;
+ t->next_ = 0;
+ t->destroy();
+ t = next;
+ }
+ }
+
+ // A hash of timer token to linked lists of timers.
+ hash_map<void*, timer_base*> timers_;
+
+ // The heap of timers, with the earliest timer at the front.
+ std::vector<timer_base*> heap_;
+
+ // The list of timers to be cancelled.
+ timer_base* cancelled_timers_;
+
+ // The list of timers waiting to be completed.
+ timer_base* complete_timers_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_TIMER_QUEUE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/timer_queue_base.hpp b/3rdParty/Boost/boost/asio/detail/timer_queue_base.hpp
new file mode 100644
index 0000000..1d986c0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/timer_queue_base.hpp
@@ -0,0 +1,64 @@
+//
+// timer_queue_base.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
+#define BOOST_ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp> // Must come before posix_time.
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class timer_queue_base
+ : private noncopyable
+{
+public:
+ // Destructor.
+ virtual ~timer_queue_base() {}
+
+ // Whether there are no timers in the queue.
+ virtual bool empty() const = 0;
+
+ // Get the time to wait until the next timer.
+ virtual boost::posix_time::time_duration wait_duration() const = 0;
+
+ // Dispatch all ready timers.
+ virtual void dispatch_timers() = 0;
+
+ // Dispatch any pending cancels for timers.
+ virtual void dispatch_cancellations() = 0;
+
+ // Complete all timers that are waiting to be completed.
+ virtual void complete_timers() = 0;
+
+ // Destroy all timers.
+ virtual void destroy_timers() = 0;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/tss_ptr.hpp b/3rdParty/Boost/boost/asio/detail/tss_ptr.hpp
new file mode 100644
index 0000000..2cfd641
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/tss_ptr.hpp
@@ -0,0 +1,67 @@
+//
+// tss_ptr.hpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_TSS_PTR_HPP
+#define BOOST_ASIO_DETAIL_TSS_PTR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+# include <boost/asio/detail/null_tss_ptr.hpp>
+#elif defined(BOOST_WINDOWS)
+# include <boost/asio/detail/win_tss_ptr.hpp>
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/asio/detail/posix_tss_ptr.hpp>
+#else
+# error Only Windows and POSIX are supported!
+#endif
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename T>
+class tss_ptr
+#if !defined(BOOST_HAS_THREADS)
+ : public null_tss_ptr<T>
+#elif defined(BOOST_WINDOWS)
+ : public win_tss_ptr<T>
+#elif defined(BOOST_HAS_PTHREADS)
+ : public posix_tss_ptr<T>
+#endif
+{
+public:
+ void operator=(T* value)
+ {
+#if !defined(BOOST_HAS_THREADS)
+ null_tss_ptr<T>::operator=(value);
+#elif defined(BOOST_WINDOWS)
+ win_tss_ptr<T>::operator=(value);
+#elif defined(BOOST_HAS_PTHREADS)
+ posix_tss_ptr<T>::operator=(value);
+#endif
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_TSS_PTR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_event.hpp b/3rdParty/Boost/boost/asio/detail/win_event.hpp
new file mode 100644
index 0000000..d0a135e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_event.hpp
@@ -0,0 +1,105 @@
+//
+// win_event.hpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_EVENT_HPP
+#define BOOST_ASIO_DETAIL_WIN_EVENT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/assert.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class win_event
+ : private noncopyable
+{
+public:
+ // Constructor.
+ win_event()
+ : event_(::CreateEvent(0, true, false, 0))
+ {
+ if (!event_)
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "event");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~win_event()
+ {
+ ::CloseHandle(event_);
+ }
+
+ // Signal the event.
+ template <typename Lock>
+ void signal(Lock& lock)
+ {
+ BOOST_ASSERT(lock.locked());
+ (void)lock;
+ ::SetEvent(event_);
+ }
+
+ // Reset the event.
+ template <typename Lock>
+ void clear(Lock& lock)
+ {
+ BOOST_ASSERT(lock.locked());
+ (void)lock;
+ ::ResetEvent(event_);
+ }
+
+ // Wait for the event to become signalled.
+ template <typename Lock>
+ void wait(Lock& lock)
+ {
+ BOOST_ASSERT(lock.locked());
+ lock.unlock();
+ ::WaitForSingleObject(event_, INFINITE);
+ lock.lock();
+ }
+
+private:
+ HANDLE event_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_EVENT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_fd_set_adapter.hpp b/3rdParty/Boost/boost/asio/detail/win_fd_set_adapter.hpp
new file mode 100644
index 0000000..9127a41
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_fd_set_adapter.hpp
@@ -0,0 +1,90 @@
+//
+// win_fd_set_adapter.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
+#define BOOST_ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements.
+class win_fd_set_adapter
+{
+public:
+ enum { win_fd_set_size = 1024 };
+
+ win_fd_set_adapter()
+ : max_descriptor_(invalid_socket)
+ {
+ fd_set_.fd_count = 0;
+ }
+
+ bool set(socket_type descriptor)
+ {
+ for (u_int i = 0; i < fd_set_.fd_count; ++i)
+ if (fd_set_.fd_array[i] == descriptor)
+ return true;
+ if (fd_set_.fd_count < win_fd_set_size)
+ {
+ fd_set_.fd_array[fd_set_.fd_count++] = descriptor;
+ return true;
+ }
+ return false;
+ }
+
+ bool is_set(socket_type descriptor) const
+ {
+ return !!__WSAFDIsSet(descriptor,
+ const_cast<fd_set*>(reinterpret_cast<const fd_set*>(&fd_set_)));
+ }
+
+ operator fd_set*()
+ {
+ return reinterpret_cast<fd_set*>(&fd_set_);
+ }
+
+ socket_type max_descriptor() const
+ {
+ return max_descriptor_;
+ }
+
+private:
+ // This structure is defined to be compatible with the Windows API fd_set
+ // structure, but without being dependent on the value of FD_SETSIZE.
+ struct win_fd_set
+ {
+ u_int fd_count;
+ SOCKET fd_array[win_fd_set_size];
+ };
+
+ win_fd_set fd_set_;
+ socket_type max_descriptor_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_iocp_handle_service.hpp b/3rdParty/Boost/boost/asio/detail/win_iocp_handle_service.hpp
new file mode 100644
index 0000000..fd204de
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_iocp_handle_service.hpp
@@ -0,0 +1,834 @@
+//
+// win_iocp_handle_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/win_iocp_io_service_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/win_iocp_io_service.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class win_iocp_handle_service
+ : public boost::asio::detail::service_base<win_iocp_handle_service>
+{
+public:
+ // Base class for all operations.
+ typedef win_iocp_io_service::operation operation;
+
+ // The native type of a stream handle.
+ typedef HANDLE native_type;
+
+ // The implementation type of the stream handle.
+ class implementation_type
+ {
+ public:
+ // Default constructor.
+ implementation_type()
+ : handle_(INVALID_HANDLE_VALUE),
+ safe_cancellation_thread_id_(0),
+ next_(0),
+ prev_(0)
+ {
+ }
+
+ private:
+ // Only this service will have access to the internal values.
+ friend class win_iocp_handle_service;
+
+ // The native stream handle representation.
+ native_type handle_;
+
+ // The ID of the thread from which it is safe to cancel asynchronous
+ // operations. 0 means no asynchronous operations have been started yet.
+ // ~0 means asynchronous operations have been started from more than one
+ // thread, and cancellation is not supported for the handle.
+ DWORD safe_cancellation_thread_id_;
+
+ // Pointers to adjacent handle implementations in linked list.
+ implementation_type* next_;
+ implementation_type* prev_;
+ };
+
+ win_iocp_handle_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<win_iocp_handle_service>(io_service),
+ iocp_service_(boost::asio::use_service<win_iocp_io_service>(io_service)),
+ mutex_(),
+ impl_list_(0)
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ // Close all implementations, causing all operations to complete.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ implementation_type* impl = impl_list_;
+ while (impl)
+ {
+ close_for_destruction(*impl);
+ impl = impl->next_;
+ }
+ }
+
+ // Construct a new handle implementation.
+ void construct(implementation_type& impl)
+ {
+ impl.handle_ = INVALID_HANDLE_VALUE;
+ impl.safe_cancellation_thread_id_ = 0;
+
+ // Insert implementation into linked list of all implementations.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ impl.next_ = impl_list_;
+ impl.prev_ = 0;
+ if (impl_list_)
+ impl_list_->prev_ = &impl;
+ impl_list_ = &impl;
+ }
+
+ // Destroy a handle implementation.
+ void destroy(implementation_type& impl)
+ {
+ close_for_destruction(impl);
+
+ // Remove implementation from linked list of all implementations.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (impl_list_ == &impl)
+ impl_list_ = impl.next_;
+ if (impl.prev_)
+ impl.prev_->next_ = impl.next_;
+ if (impl.next_)
+ impl.next_->prev_= impl.prev_;
+ impl.next_ = 0;
+ impl.prev_ = 0;
+ }
+
+ // Assign a native handle to a handle implementation.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_handle, boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ if (iocp_service_.register_handle(native_handle, ec))
+ return ec;
+
+ impl.handle_ = native_handle;
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Determine whether the handle is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return impl.handle_ != INVALID_HANDLE_VALUE;
+ }
+
+ // Destroy a handle implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ if (!::CloseHandle(impl.handle_))
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ impl.handle_ = INVALID_HANDLE_VALUE;
+ impl.safe_cancellation_thread_id_ = 0;
+ }
+
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Get the native handle representation.
+ native_type native(const implementation_type& impl) const
+ {
+ return impl.handle_;
+ }
+
+ // Cancel all operations associated with the handle.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ }
+ else if (FARPROC cancel_io_ex_ptr = ::GetProcAddress(
+ ::GetModuleHandleA("KERNEL32"), "CancelIoEx"))
+ {
+ // The version of Windows supports cancellation from any thread.
+ typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED);
+ cancel_io_ex_t cancel_io_ex = (cancel_io_ex_t)cancel_io_ex_ptr;
+ if (!cancel_io_ex(impl.handle_, 0))
+ {
+ DWORD last_error = ::GetLastError();
+ if (last_error == ERROR_NOT_FOUND)
+ {
+ // ERROR_NOT_FOUND means that there were no operations to be
+ // cancelled. We swallow this error to match the behaviour on other
+ // platforms.
+ ec = boost::system::error_code();
+ }
+ else
+ {
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+ }
+ else if (impl.safe_cancellation_thread_id_ == 0)
+ {
+ // No operations have been started, so there's nothing to cancel.
+ ec = boost::system::error_code();
+ }
+ else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId())
+ {
+ // Asynchronous operations have been started from the current thread only,
+ // so it is safe to try to cancel them using CancelIo.
+ if (!::CancelIo(impl.handle_))
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+ }
+ else
+ {
+ // Asynchronous operations have been started from more than one thread,
+ // so cancellation is not safe.
+ ec = boost::asio::error::operation_not_supported;
+ }
+
+ return ec;
+ }
+
+ class overlapped_wrapper
+ : public OVERLAPPED
+ {
+ public:
+ explicit overlapped_wrapper(boost::system::error_code& ec)
+ {
+ Internal = 0;
+ InternalHigh = 0;
+ Offset = 0;
+ OffsetHigh = 0;
+
+ // Create a non-signalled manual-reset event, for GetOverlappedResult.
+ hEvent = ::CreateEvent(0, TRUE, FALSE, 0);
+ if (hEvent)
+ {
+ // As documented in GetQueuedCompletionStatus, setting the low order
+ // bit of this event prevents our synchronous writes from being treated
+ // as completion port events.
+ *reinterpret_cast<DWORD_PTR*>(&hEvent) |= 1;
+ }
+ else
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ }
+
+ ~overlapped_wrapper()
+ {
+ if (hEvent)
+ {
+ ::CloseHandle(hEvent);
+ }
+ }
+ };
+
+ // Write the given data. Returns the number of bytes written.
+ template <typename ConstBufferSequence>
+ size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return write_some_at(impl, 0, buffers, ec);
+ }
+
+ // Write the given data at the specified offset. Returns the number of bytes
+ // written.
+ template <typename ConstBufferSequence>
+ size_t write_some_at(implementation_type& impl, boost::uint64_t offset,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Find first buffer of non-zero length.
+ boost::asio::const_buffer buffer;
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ for (DWORD i = 0; iter != end; ++iter, ++i)
+ {
+ buffer = boost::asio::const_buffer(*iter);
+ if (boost::asio::buffer_size(buffer) != 0)
+ break;
+ }
+
+ // A request to write 0 bytes on a handle is a no-op.
+ if (boost::asio::buffer_size(buffer) == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ overlapped_wrapper overlapped(ec);
+ if (ec)
+ {
+ return 0;
+ }
+
+ // Write the data.
+ overlapped.Offset = offset & 0xFFFFFFFF;
+ overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
+ BOOL ok = ::WriteFile(impl.handle_,
+ boost::asio::buffer_cast<LPCVOID>(buffer),
+ static_cast<DWORD>(boost::asio::buffer_size(buffer)), 0, &overlapped);
+ if (!ok)
+ {
+ DWORD last_error = ::GetLastError();
+ if (last_error != ERROR_IO_PENDING)
+ {
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return 0;
+ }
+ }
+
+ // Wait for the operation to complete.
+ DWORD bytes_transferred = 0;
+ ok = ::GetOverlappedResult(impl.handle_,
+ &overlapped, &bytes_transferred, TRUE);
+ if (!ok)
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+
+ ec = boost::system::error_code();
+ return bytes_transferred;
+ }
+
+ template <typename ConstBufferSequence, typename Handler>
+ class write_operation
+ : public operation
+ {
+ public:
+ write_operation(win_iocp_io_service& io_service,
+ const ConstBufferSequence& buffers, Handler handler)
+ : operation(io_service,
+ &write_operation<ConstBufferSequence, Handler>::do_completion_impl,
+ &write_operation<ConstBufferSequence, Handler>::destroy_impl),
+ work_(io_service.get_io_service()),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ private:
+ static void do_completion_impl(operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef write_operation<ConstBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ // Check whether buffers are still valid.
+ typename ConstBufferSequence::const_iterator iter
+ = handler_op->buffers_.begin();
+ typename ConstBufferSequence::const_iterator end
+ = handler_op->buffers_.end();
+ while (iter != end)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ boost::asio::buffer_cast<const char*>(buffer);
+ ++iter;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ boost_asio_handler_invoke_helpers::invoke(
+ bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef write_operation<ConstBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ boost::asio::io_service::work work_;
+ ConstBufferSequence buffers_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous write. The data being written must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, Handler handler)
+ {
+ async_write_some_at(impl, 0, buffers, handler);
+ }
+
+ // Start an asynchronous write at a specified offset. The data being written
+ // must be valid for the lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_write_some_at(implementation_type& impl, boost::uint64_t offset,
+ const ConstBufferSequence& buffers, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ return;
+ }
+
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef write_operation<ConstBufferSequence, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, iocp_service_, buffers, handler);
+
+ // Find first buffer of non-zero length.
+ boost::asio::const_buffer buffer;
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ for (DWORD i = 0; iter != end; ++iter, ++i)
+ {
+ buffer = boost::asio::const_buffer(*iter);
+ if (boost::asio::buffer_size(buffer) != 0)
+ break;
+ }
+
+ // A request to write 0 bytes on a handle is a no-op.
+ if (boost::asio::buffer_size(buffer) == 0)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code error;
+ iocp_service_.post(bind_handler(handler, error, 0));
+ return;
+ }
+
+ // Write the data.
+ DWORD bytes_transferred = 0;
+ ptr.get()->Offset = offset & 0xFFFFFFFF;
+ ptr.get()->OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
+ BOOL ok = ::WriteFile(impl.handle_,
+ boost::asio::buffer_cast<LPCVOID>(buffer),
+ static_cast<DWORD>(boost::asio::buffer_size(buffer)),
+ &bytes_transferred, ptr.get());
+ DWORD last_error = ::GetLastError();
+
+ // Check if the operation completed immediately.
+ if (!ok && last_error != ERROR_IO_PENDING)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+ // Read some data. Returns the number of bytes received.
+ template <typename MutableBufferSequence>
+ size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return read_some_at(impl, 0, buffers, ec);
+ }
+
+ // Read some data at a specified offset. Returns the number of bytes received.
+ template <typename MutableBufferSequence>
+ size_t read_some_at(implementation_type& impl, boost::uint64_t offset,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Find first buffer of non-zero length.
+ boost::asio::mutable_buffer buffer;
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ for (DWORD i = 0; iter != end; ++iter, ++i)
+ {
+ buffer = boost::asio::mutable_buffer(*iter);
+ if (boost::asio::buffer_size(buffer) != 0)
+ break;
+ }
+
+ // A request to read 0 bytes on a stream handle is a no-op.
+ if (boost::asio::buffer_size(buffer) == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ overlapped_wrapper overlapped(ec);
+ if (ec)
+ {
+ return 0;
+ }
+
+ // Read some data.
+ overlapped.Offset = offset & 0xFFFFFFFF;
+ overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
+ BOOL ok = ::ReadFile(impl.handle_,
+ boost::asio::buffer_cast<LPVOID>(buffer),
+ static_cast<DWORD>(boost::asio::buffer_size(buffer)), 0, &overlapped);
+ if (!ok)
+ {
+ DWORD last_error = ::GetLastError();
+ if (last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA)
+ {
+ if (last_error == ERROR_HANDLE_EOF)
+ {
+ ec = boost::asio::error::eof;
+ }
+ else
+ {
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ return 0;
+ }
+ }
+
+ // Wait for the operation to complete.
+ DWORD bytes_transferred = 0;
+ ok = ::GetOverlappedResult(impl.handle_,
+ &overlapped, &bytes_transferred, TRUE);
+ if (!ok)
+ {
+ DWORD last_error = ::GetLastError();
+ if (last_error == ERROR_HANDLE_EOF)
+ {
+ ec = boost::asio::error::eof;
+ }
+ else
+ {
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ }
+
+ ec = boost::system::error_code();
+ return bytes_transferred;
+ }
+
+ template <typename MutableBufferSequence, typename Handler>
+ class read_operation
+ : public operation
+ {
+ public:
+ read_operation(win_iocp_io_service& io_service,
+ const MutableBufferSequence& buffers, Handler handler)
+ : operation(io_service,
+ &read_operation<
+ MutableBufferSequence, Handler>::do_completion_impl,
+ &read_operation<
+ MutableBufferSequence, Handler>::destroy_impl),
+ work_(io_service.get_io_service()),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ private:
+ static void do_completion_impl(operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef read_operation<MutableBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ // Check whether buffers are still valid.
+ typename MutableBufferSequence::const_iterator iter
+ = handler_op->buffers_.begin();
+ typename MutableBufferSequence::const_iterator end
+ = handler_op->buffers_.end();
+ while (iter != end)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ boost::asio::buffer_cast<char*>(buffer);
+ ++iter;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+
+ // Check for the end-of-file condition.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ if (!ec && bytes_transferred == 0 || last_error == ERROR_HANDLE_EOF)
+ {
+ ec = boost::asio::error::eof;
+ }
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost_asio_handler_invoke_helpers::invoke(
+ bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef read_operation<MutableBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef boost::asio::detail::handler_alloc_traits<
+ Handler, op_type> alloc_traits;
+ boost::asio::detail::handler_ptr<alloc_traits> ptr(
+ handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ boost::asio::io_service::work work_;
+ MutableBufferSequence buffers_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous read. The buffer for the data being received must be
+ // valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, Handler handler)
+ {
+ async_read_some_at(impl, 0, buffers, handler);
+ }
+
+ // Start an asynchronous read at a specified offset. The buffer for the data
+ // being received must be valid for the lifetime of the asynchronous
+ // operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_read_some_at(implementation_type& impl, boost::uint64_t offset,
+ const MutableBufferSequence& buffers, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ return;
+ }
+
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef read_operation<MutableBufferSequence, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, iocp_service_, buffers, handler);
+
+ // Find first buffer of non-zero length.
+ boost::asio::mutable_buffer buffer;
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ for (DWORD i = 0; iter != end; ++iter, ++i)
+ {
+ buffer = boost::asio::mutable_buffer(*iter);
+ if (boost::asio::buffer_size(buffer) != 0)
+ break;
+ }
+
+ // A request to receive 0 bytes on a stream handle is a no-op.
+ if (boost::asio::buffer_size(buffer) == 0)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code error;
+ iocp_service_.post(bind_handler(handler, error, 0));
+ return;
+ }
+
+ // Read some data.
+ DWORD bytes_transferred = 0;
+ ptr.get()->Offset = offset & 0xFFFFFFFF;
+ ptr.get()->OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
+ BOOL ok = ::ReadFile(impl.handle_,
+ boost::asio::buffer_cast<LPVOID>(buffer),
+ static_cast<DWORD>(boost::asio::buffer_size(buffer)),
+ &bytes_transferred, ptr.get());
+ DWORD last_error = ::GetLastError();
+ if (!ok && last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+private:
+ // Prevent the use of the null_buffers type with this service.
+ size_t write_some(implementation_type& impl,
+ const null_buffers& buffers, boost::system::error_code& ec);
+ size_t write_some_at(implementation_type& impl, boost::uint64_t offset,
+ const null_buffers& buffers, boost::system::error_code& ec);
+ template <typename Handler>
+ void async_write_some(implementation_type& impl,
+ const null_buffers& buffers, Handler handler);
+ template <typename Handler>
+ void async_write_some_at(implementation_type& impl, boost::uint64_t offset,
+ const null_buffers& buffers, Handler handler);
+ size_t read_some(implementation_type& impl,
+ const null_buffers& buffers, boost::system::error_code& ec);
+ size_t read_some_at(implementation_type& impl, boost::uint64_t offset,
+ const null_buffers& buffers, boost::system::error_code& ec);
+ template <typename Handler>
+ void async_read_some(implementation_type& impl,
+ const null_buffers& buffers, Handler handler);
+ template <typename Handler>
+ void async_read_some_at(implementation_type& impl, boost::uint64_t offset,
+ const null_buffers& buffers, Handler handler);
+
+ // Helper function to close a handle when the associated object is being
+ // destroyed.
+ void close_for_destruction(implementation_type& impl)
+ {
+ if (is_open(impl))
+ {
+ ::CloseHandle(impl.handle_);
+ impl.handle_ = INVALID_HANDLE_VALUE;
+ impl.safe_cancellation_thread_id_ = 0;
+ }
+ }
+
+ // The IOCP service used for running asynchronous operations and dispatching
+ // handlers.
+ win_iocp_io_service& iocp_service_;
+
+ // Mutex to protect access to the linked list of implementations.
+ boost::asio::detail::mutex mutex_;
+
+ // The head of a linked list of all implementations.
+ implementation_type* impl_list_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_iocp_io_service.hpp b/3rdParty/Boost/boost/asio/detail/win_iocp_io_service.hpp
new file mode 100644
index 0000000..5818542
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_iocp_io_service.hpp
@@ -0,0 +1,738 @@
+//
+// win_iocp_io_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/win_iocp_io_service_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <limits>
+#include <boost/throw_exception.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/call_stack.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/timer_queue.hpp>
+#include <boost/asio/detail/mutex.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class win_iocp_io_service
+ : public boost::asio::detail::service_base<win_iocp_io_service>
+{
+public:
+ // Base class for all operations. A function pointer is used instead of
+ // virtual functions to avoid the associated overhead.
+ //
+ // This class inherits from OVERLAPPED so that we can downcast to get back to
+ // the operation pointer from the LPOVERLAPPED out parameter of
+ // GetQueuedCompletionStatus.
+ class operation
+ : public OVERLAPPED
+ {
+ public:
+ typedef void (*invoke_func_type)(operation*, DWORD, size_t);
+ typedef void (*destroy_func_type)(operation*);
+
+ operation(win_iocp_io_service& iocp_service,
+ invoke_func_type invoke_func, destroy_func_type destroy_func)
+ : outstanding_operations_(&iocp_service.outstanding_operations_),
+ invoke_func_(invoke_func),
+ destroy_func_(destroy_func)
+ {
+ Internal = 0;
+ InternalHigh = 0;
+ Offset = 0;
+ OffsetHigh = 0;
+ hEvent = 0;
+
+ ::InterlockedIncrement(outstanding_operations_);
+ }
+
+ void do_completion(DWORD last_error, size_t bytes_transferred)
+ {
+ invoke_func_(this, last_error, bytes_transferred);
+ }
+
+ void destroy()
+ {
+ destroy_func_(this);
+ }
+
+ protected:
+ // Prevent deletion through this type.
+ ~operation()
+ {
+ ::InterlockedDecrement(outstanding_operations_);
+ }
+
+ private:
+ long* outstanding_operations_;
+ invoke_func_type invoke_func_;
+ destroy_func_type destroy_func_;
+ };
+
+
+ // Constructor.
+ win_iocp_io_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<win_iocp_io_service>(io_service),
+ iocp_(),
+ outstanding_work_(0),
+ outstanding_operations_(0),
+ stopped_(0),
+ shutdown_(0),
+ timer_thread_(0),
+ timer_interrupt_issued_(false)
+ {
+ }
+
+ void init(size_t concurrency_hint)
+ {
+ iocp_.handle = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, 0, 0,
+ static_cast<DWORD>((std::min<size_t>)(concurrency_hint, DWORD(~0))));
+ if (!iocp_.handle)
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "iocp");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ ::InterlockedExchange(&shutdown_, 1);
+
+ while (::InterlockedExchangeAdd(&outstanding_operations_, 0) > 0)
+ {
+ DWORD bytes_transferred = 0;
+#if (WINVER < 0x0500)
+ DWORD completion_key = 0;
+#else
+ DWORD_PTR completion_key = 0;
+#endif
+ LPOVERLAPPED overlapped = 0;
+ ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
+ &completion_key, &overlapped, INFINITE);
+ if (overlapped)
+ static_cast<operation*>(overlapped)->destroy();
+ }
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ timer_queues_[i]->destroy_timers();
+ timer_queues_.clear();
+ }
+
+ // Initialise the task. Nothing to do here.
+ void init_task()
+ {
+ }
+
+ // Register a handle with the IO completion port.
+ boost::system::error_code register_handle(
+ HANDLE handle, boost::system::error_code& ec)
+ {
+ if (::CreateIoCompletionPort(handle, iocp_.handle, 0, 0) == 0)
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+ return ec;
+ }
+
+ // Run the event loop until stopped or no more work.
+ size_t run(boost::system::error_code& ec)
+ {
+ if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ call_stack<win_iocp_io_service>::context ctx(this);
+
+ size_t n = 0;
+ while (do_one(true, ec))
+ if (n != (std::numeric_limits<size_t>::max)())
+ ++n;
+ return n;
+ }
+
+ // Run until stopped or one operation is performed.
+ size_t run_one(boost::system::error_code& ec)
+ {
+ if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ call_stack<win_iocp_io_service>::context ctx(this);
+
+ return do_one(true, ec);
+ }
+
+ // Poll for operations without blocking.
+ size_t poll(boost::system::error_code& ec)
+ {
+ if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ call_stack<win_iocp_io_service>::context ctx(this);
+
+ size_t n = 0;
+ while (do_one(false, ec))
+ if (n != (std::numeric_limits<size_t>::max)())
+ ++n;
+ return n;
+ }
+
+ // Poll for one operation without blocking.
+ size_t poll_one(boost::system::error_code& ec)
+ {
+ if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ call_stack<win_iocp_io_service>::context ctx(this);
+
+ return do_one(false, ec);
+ }
+
+ // Stop the event processing loop.
+ void stop()
+ {
+ if (::InterlockedExchange(&stopped_, 1) == 0)
+ {
+ if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "pqcs");
+ boost::throw_exception(e);
+ }
+ }
+ }
+
+ // Reset in preparation for a subsequent run invocation.
+ void reset()
+ {
+ ::InterlockedExchange(&stopped_, 0);
+ }
+
+ // Notify that some work has started.
+ void work_started()
+ {
+ ::InterlockedIncrement(&outstanding_work_);
+ }
+
+ // Notify that some work has finished.
+ void work_finished()
+ {
+ if (::InterlockedDecrement(&outstanding_work_) == 0)
+ stop();
+ }
+
+ // Request invocation of the given handler.
+ template <typename Handler>
+ void dispatch(Handler handler)
+ {
+ if (call_stack<win_iocp_io_service>::contains(this))
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ else
+ post(handler);
+ }
+
+ // Request invocation of the given handler and return immediately.
+ template <typename Handler>
+ void post(Handler handler)
+ {
+ // If the service has been shut down we silently discard the handler.
+ if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
+ return;
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef handler_operation<Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, *this, handler);
+
+ // Enqueue the operation on the I/O completion port.
+ if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, ptr.get()))
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "pqcs");
+ boost::throw_exception(e);
+ }
+
+ // Operation has been successfully posted.
+ ptr.release();
+ }
+
+ // Request invocation of the given OVERLAPPED-derived operation.
+ void post_completion(operation* op, DWORD op_last_error,
+ DWORD bytes_transferred)
+ {
+ // Enqueue the operation on the I/O completion port.
+ if (!::PostQueuedCompletionStatus(iocp_.handle,
+ bytes_transferred, op_last_error, op))
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "pqcs");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Add a new timer queue to the service.
+ template <typename Time_Traits>
+ void add_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(timer_mutex_);
+ timer_queues_.push_back(&timer_queue);
+ }
+
+ // Remove a timer queue from the service.
+ template <typename Time_Traits>
+ void remove_timer_queue(timer_queue<Time_Traits>& timer_queue)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(timer_mutex_);
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ if (timer_queues_[i] == &timer_queue)
+ {
+ timer_queues_.erase(timer_queues_.begin() + i);
+ return;
+ }
+ }
+ }
+
+ // Schedule a timer in the given timer queue to expire at the specified
+ // absolute time. The handler object will be invoked when the timer expires.
+ template <typename Time_Traits, typename Handler>
+ void schedule_timer(timer_queue<Time_Traits>& timer_queue,
+ const typename Time_Traits::time_type& time, Handler handler, void* token)
+ {
+ // If the service has been shut down we silently discard the timer.
+ if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
+ return;
+
+ boost::asio::detail::mutex::scoped_lock lock(timer_mutex_);
+ if (timer_queue.enqueue_timer(time, handler, token))
+ {
+ if (!timer_interrupt_issued_)
+ {
+ timer_interrupt_issued_ = true;
+ lock.unlock();
+ ::PostQueuedCompletionStatus(iocp_.handle,
+ 0, steal_timer_dispatching, 0);
+ }
+ }
+ }
+
+ // Cancel the timer associated with the given token. Returns the number of
+ // handlers that have been posted or dispatched.
+ template <typename Time_Traits>
+ std::size_t cancel_timer(timer_queue<Time_Traits>& timer_queue, void* token)
+ {
+ // If the service has been shut down we silently ignore the cancellation.
+ if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
+ return 0;
+
+ boost::asio::detail::mutex::scoped_lock lock(timer_mutex_);
+ std::size_t n = timer_queue.cancel_timer(token);
+ if (n > 0 && !timer_interrupt_issued_)
+ {
+ timer_interrupt_issued_ = true;
+ lock.unlock();
+ ::PostQueuedCompletionStatus(iocp_.handle,
+ 0, steal_timer_dispatching, 0);
+ }
+ return n;
+ }
+
+private:
+ // Dequeues at most one operation from the I/O completion port, and then
+ // executes it. Returns the number of operations that were dequeued (i.e.
+ // either 0 or 1).
+ size_t do_one(bool block, boost::system::error_code& ec)
+ {
+ long this_thread_id = static_cast<long>(::GetCurrentThreadId());
+
+ for (;;)
+ {
+ // Try to acquire responsibility for dispatching timers.
+ bool dispatching_timers = (::InterlockedCompareExchange(
+ &timer_thread_, this_thread_id, 0) == 0);
+
+ // Calculate timeout for GetQueuedCompletionStatus call.
+ DWORD timeout = max_timeout;
+ if (dispatching_timers)
+ {
+ boost::asio::detail::mutex::scoped_lock lock(timer_mutex_);
+ timer_interrupt_issued_ = false;
+ timeout = get_timeout();
+ }
+
+ // Get the next operation from the queue.
+ DWORD bytes_transferred = 0;
+#if (WINVER < 0x0500)
+ DWORD completion_key = 0;
+#else
+ DWORD_PTR completion_key = 0;
+#endif
+ LPOVERLAPPED overlapped = 0;
+ ::SetLastError(0);
+ BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
+ &completion_key, &overlapped, block ? timeout : 0);
+ DWORD last_error = ::GetLastError();
+
+ // Dispatch any pending timers.
+ if (dispatching_timers)
+ {
+ try
+ {
+ boost::asio::detail::mutex::scoped_lock lock(timer_mutex_);
+ if (!timer_queues_.empty())
+ {
+ timer_queues_copy_ = timer_queues_;
+ for (std::size_t i = 0; i < timer_queues_copy_.size(); ++i)
+ {
+ timer_queues_copy_[i]->dispatch_timers();
+ timer_queues_copy_[i]->dispatch_cancellations();
+ timer_queues_copy_[i]->complete_timers();
+ }
+ }
+ }
+ catch (...)
+ {
+ // Transfer responsibility for dispatching timers to another thread.
+ if (::InterlockedCompareExchange(&timer_thread_,
+ 0, this_thread_id) == this_thread_id)
+ {
+ ::PostQueuedCompletionStatus(iocp_.handle,
+ 0, transfer_timer_dispatching, 0);
+ }
+
+ throw;
+ }
+ }
+
+ if (!ok && overlapped == 0)
+ {
+ if (block && last_error == WAIT_TIMEOUT)
+ {
+ // Relinquish responsibility for dispatching timers.
+ if (dispatching_timers)
+ {
+ ::InterlockedCompareExchange(&timer_thread_, 0, this_thread_id);
+ }
+
+ continue;
+ }
+
+ // Transfer responsibility for dispatching timers to another thread.
+ if (dispatching_timers && ::InterlockedCompareExchange(
+ &timer_thread_, 0, this_thread_id) == this_thread_id)
+ {
+ ::PostQueuedCompletionStatus(iocp_.handle,
+ 0, transfer_timer_dispatching, 0);
+ }
+
+ ec = boost::system::error_code();
+ return 0;
+ }
+ else if (overlapped)
+ {
+ // We may have been passed a last_error value in the completion_key.
+ if (last_error == 0)
+ {
+ last_error = completion_key;
+ }
+
+ // Transfer responsibility for dispatching timers to another thread.
+ if (dispatching_timers && ::InterlockedCompareExchange(
+ &timer_thread_, 0, this_thread_id) == this_thread_id)
+ {
+ ::PostQueuedCompletionStatus(iocp_.handle,
+ 0, transfer_timer_dispatching, 0);
+ }
+
+ // Ensure that the io_service does not exit due to running out of work
+ // while we make the upcall.
+ auto_work work(*this);
+
+ // Dispatch the operation.
+ operation* op = static_cast<operation*>(overlapped);
+ op->do_completion(last_error, bytes_transferred);
+
+ ec = boost::system::error_code();
+ return 1;
+ }
+ else if (completion_key == transfer_timer_dispatching)
+ {
+ // Woken up to try to acquire responsibility for dispatching timers.
+ ::InterlockedCompareExchange(&timer_thread_, 0, this_thread_id);
+ }
+ else if (completion_key == steal_timer_dispatching)
+ {
+ // Woken up to steal responsibility for dispatching timers.
+ ::InterlockedExchange(&timer_thread_, 0);
+ }
+ else
+ {
+ // Relinquish responsibility for dispatching timers. If the io_service
+ // is not being stopped then the thread will get an opportunity to
+ // reacquire timer responsibility on the next loop iteration.
+ if (dispatching_timers)
+ {
+ ::InterlockedCompareExchange(&timer_thread_, 0, this_thread_id);
+ }
+
+ // The stopped_ flag is always checked to ensure that any leftover
+ // interrupts from a previous run invocation are ignored.
+ if (::InterlockedExchangeAdd(&stopped_, 0) != 0)
+ {
+ // Wake up next thread that is blocked on GetQueuedCompletionStatus.
+ if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
+ {
+ last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return 0;
+ }
+
+ ec = boost::system::error_code();
+ return 0;
+ }
+ }
+ }
+ }
+
+ // Check if all timer queues are empty.
+ bool all_timer_queues_are_empty() const
+ {
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ if (!timer_queues_[i]->empty())
+ return false;
+ return true;
+ }
+
+ // Get the timeout value for the GetQueuedCompletionStatus call. The timeout
+ // value is returned as a number of milliseconds. We will wait no longer than
+ // 1000 milliseconds.
+ DWORD get_timeout()
+ {
+ if (all_timer_queues_are_empty())
+ return max_timeout;
+
+ boost::posix_time::time_duration minimum_wait_duration
+ = boost::posix_time::milliseconds(max_timeout);
+
+ for (std::size_t i = 0; i < timer_queues_.size(); ++i)
+ {
+ boost::posix_time::time_duration wait_duration
+ = timer_queues_[i]->wait_duration();
+ if (wait_duration < minimum_wait_duration)
+ minimum_wait_duration = wait_duration;
+ }
+
+ if (minimum_wait_duration > boost::posix_time::time_duration())
+ {
+ int milliseconds = minimum_wait_duration.total_milliseconds();
+ return static_cast<DWORD>(milliseconds > 0 ? milliseconds : 1);
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ struct auto_work
+ {
+ auto_work(win_iocp_io_service& io_service)
+ : io_service_(io_service)
+ {
+ io_service_.work_started();
+ }
+
+ ~auto_work()
+ {
+ io_service_.work_finished();
+ }
+
+ private:
+ win_iocp_io_service& io_service_;
+ };
+
+ template <typename Handler>
+ struct handler_operation
+ : public operation
+ {
+ handler_operation(win_iocp_io_service& io_service,
+ Handler handler)
+ : operation(io_service, &handler_operation<Handler>::do_completion_impl,
+ &handler_operation<Handler>::destroy_impl),
+ io_service_(io_service),
+ handler_(handler)
+ {
+ io_service_.work_started();
+ }
+
+ ~handler_operation()
+ {
+ io_service_.work_finished();
+ }
+
+ private:
+ // Prevent copying and assignment.
+ handler_operation(const handler_operation&);
+ void operator=(const handler_operation&);
+
+ static void do_completion_impl(operation* op, DWORD, size_t)
+ {
+ // Take ownership of the operation object.
+ typedef handler_operation<Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Make the upcall.
+ boost_asio_handler_invoke_helpers::invoke(handler, &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef handler_operation<Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ win_iocp_io_service& io_service_;
+ Handler handler_;
+ };
+
+ // The IO completion port used for queueing operations.
+ struct iocp_holder
+ {
+ HANDLE handle;
+ iocp_holder() : handle(0) {}
+ ~iocp_holder() { if (handle) ::CloseHandle(handle); }
+ } iocp_;
+
+ // The count of unfinished work.
+ long outstanding_work_;
+
+ // The count of unfinished operations.
+ long outstanding_operations_;
+ friend class operation;
+
+ // Flag to indicate whether the event loop has been stopped.
+ long stopped_;
+
+ // Flag to indicate whether the service has been shut down.
+ long shutdown_;
+
+ enum
+ {
+ // Maximum GetQueuedCompletionStatus timeout, in milliseconds.
+ max_timeout = 500,
+
+ // Completion key value to indicate that responsibility for dispatching
+ // timers is being cooperatively transferred from one thread to another.
+ transfer_timer_dispatching = 1,
+
+ // Completion key value to indicate that responsibility for dispatching
+ // timers should be stolen from another thread.
+ steal_timer_dispatching = 2
+ };
+
+ // The thread that's currently in charge of dispatching timers.
+ long timer_thread_;
+
+ // Mutex for protecting access to the timer queues.
+ mutex timer_mutex_;
+
+ // Whether a thread has been interrupted to process a new timeout.
+ bool timer_interrupt_issued_;
+
+ // The timer queues.
+ std::vector<timer_queue_base*> timer_queues_;
+
+ // A copy of the timer queues, used when dispatching, cancelling and cleaning
+ // up timers. The copy is stored as a class data member to avoid unnecessary
+ // memory allocation.
+ std::vector<timer_queue_base*> timer_queues_copy_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_iocp_io_service_fwd.hpp b/3rdParty/Boost/boost/asio/detail/win_iocp_io_service_fwd.hpp
new file mode 100644
index 0000000..c9e6060
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_iocp_io_service_fwd.hpp
@@ -0,0 +1,53 @@
+//
+// win_iocp_io_service_fwd.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_FWD_HPP
+#define BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+// This service is only supported on Win32 (NT4 and later).
+#if !defined(BOOST_ASIO_DISABLE_IOCP)
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
+#if !defined(UNDER_CE)
+
+// Define this to indicate that IOCP is supported on the target platform.
+#define BOOST_ASIO_HAS_IOCP 1
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class win_iocp_io_service;
+class win_iocp_overlapped_ptr;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // !defined(UNDER_CE)
+#endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+#endif // !defined(BOOST_ASIO_DISABLE_IOCP)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_IOCP_IO_SERVICE_FWD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp b/3rdParty/Boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp
new file mode 100644
index 0000000..e8ab6b0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_iocp_overlapped_ptr.hpp
@@ -0,0 +1,210 @@
+//
+// win_iocp_overlapped_ptr.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
+#define BOOST_ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/win_iocp_io_service_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/win_iocp_io_service.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
+class win_iocp_overlapped_ptr
+ : private noncopyable
+{
+public:
+ // Construct an empty win_iocp_overlapped_ptr.
+ win_iocp_overlapped_ptr()
+ : ptr_(0)
+ {
+ }
+
+ // Construct an win_iocp_overlapped_ptr to contain the specified handler.
+ template <typename Handler>
+ explicit win_iocp_overlapped_ptr(
+ boost::asio::io_service& io_service, Handler handler)
+ : ptr_(0)
+ {
+ this->reset(io_service, handler);
+ }
+
+ // Destructor automatically frees the OVERLAPPED object unless released.
+ ~win_iocp_overlapped_ptr()
+ {
+ reset();
+ }
+
+ // Reset to empty.
+ void reset()
+ {
+ if (ptr_)
+ {
+ ptr_->destroy();
+ ptr_ = 0;
+ }
+ }
+
+ // Reset to contain the specified handler, freeing any current OVERLAPPED
+ // object.
+ template <typename Handler>
+ void reset(boost::asio::io_service& io_service, Handler handler)
+ {
+ typedef overlapped_operation<Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, io_service.impl_, handler);
+ reset();
+ ptr_ = ptr.release();
+ }
+
+ // Get the contained OVERLAPPED object.
+ OVERLAPPED* get()
+ {
+ return ptr_;
+ }
+
+ // Get the contained OVERLAPPED object.
+ const OVERLAPPED* get() const
+ {
+ return ptr_;
+ }
+
+ // Release ownership of the OVERLAPPED object.
+ OVERLAPPED* release()
+ {
+ OVERLAPPED* tmp = ptr_;
+ ptr_ = 0;
+ return tmp;
+ }
+
+ // Post completion notification for overlapped operation. Releases ownership.
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ if (ptr_)
+ {
+ ptr_->ec_ = ec;
+ ptr_->io_service_.post_completion(ptr_, 0,
+ static_cast<DWORD>(bytes_transferred));
+ ptr_ = 0;
+ }
+ }
+
+private:
+ struct overlapped_operation_base
+ : public win_iocp_io_service::operation
+ {
+ overlapped_operation_base(win_iocp_io_service& io_service,
+ invoke_func_type invoke_func, destroy_func_type destroy_func)
+ : win_iocp_io_service::operation(io_service, invoke_func, destroy_func),
+ io_service_(io_service)
+ {
+ io_service_.work_started();
+ }
+
+ ~overlapped_operation_base()
+ {
+ io_service_.work_finished();
+ }
+
+ win_iocp_io_service& io_service_;
+ boost::system::error_code ec_;
+ };
+
+ template <typename Handler>
+ struct overlapped_operation
+ : public overlapped_operation_base
+ {
+ overlapped_operation(win_iocp_io_service& io_service,
+ Handler handler)
+ : overlapped_operation_base(io_service,
+ &overlapped_operation<Handler>::do_completion_impl,
+ &overlapped_operation<Handler>::destroy_impl),
+ handler_(handler)
+ {
+ }
+
+ private:
+ // Prevent copying and assignment.
+ overlapped_operation(const overlapped_operation&);
+ void operator=(const overlapped_operation&);
+
+ static void do_completion_impl(win_iocp_io_service::operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef overlapped_operation<Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // Make a copy of the handler and error_code so that the memory can be
+ // deallocated before the upcall is made.
+ Handler handler(handler_op->handler_);
+ boost::system::error_code ec(handler_op->ec_);
+ if (last_error)
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Make the upcall.
+ boost_asio_handler_invoke_helpers::invoke(
+ bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(win_iocp_io_service::operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef overlapped_operation<Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ Handler handler_;
+ };
+
+ overlapped_operation_base* ptr_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_iocp_serial_port_service.hpp b/3rdParty/Boost/boost/asio/detail/win_iocp_serial_port_service.hpp
new file mode 100644
index 0000000..57d56cf
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_iocp_serial_port_service.hpp
@@ -0,0 +1,294 @@
+//
+// win_iocp_serial_port_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstring>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/win_iocp_io_service_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/win_iocp_handle_service.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+// Extend win_iocp_handle_service to provide serial port support.
+class win_iocp_serial_port_service
+ : public boost::asio::detail::service_base<win_iocp_serial_port_service>
+{
+public:
+ // The native type of a stream handle.
+ typedef win_iocp_handle_service::native_type native_type;
+
+ // The implementation type of the stream handle.
+ typedef win_iocp_handle_service::implementation_type implementation_type;
+
+ win_iocp_serial_port_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ win_iocp_serial_port_service>(io_service),
+ handle_service_(
+ boost::asio::use_service<win_iocp_handle_service>(io_service))
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ // Construct a new handle implementation.
+ void construct(implementation_type& impl)
+ {
+ handle_service_.construct(impl);
+ }
+
+ // Destroy a handle implementation.
+ void destroy(implementation_type& impl)
+ {
+ handle_service_.destroy(impl);
+ }
+
+ // Open the serial port using the specified device name.
+ boost::system::error_code open(implementation_type& impl,
+ const std::string& device, boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ // For convenience, add a leading \\.\ sequence if not already present.
+ std::string name = (device[0] == '\\') ? device : "\\\\.\\" + device;
+
+ // Open a handle to the serial port.
+ ::HANDLE handle = ::CreateFileA(name.c_str(),
+ GENERIC_READ | GENERIC_WRITE, 0, 0,
+ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
+ if (handle == INVALID_HANDLE_VALUE)
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ // Determine the initial serial port parameters.
+ using namespace std; // For memcpy.
+ ::DCB dcb;
+ memset(&dcb, 0, sizeof(DCB));
+ dcb.DCBlength = sizeof(DCB);
+ if (!::GetCommState(handle, &dcb))
+ {
+ DWORD last_error = ::GetLastError();
+ ::CloseHandle(handle);
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ // Set some default serial port parameters. This implementation does not
+ // support changing these, so they might as well be in a known state.
+ dcb.fBinary = TRUE; // Win32 only supports binary mode.
+ dcb.fDsrSensitivity = FALSE;
+ dcb.fNull = FALSE; // Do not ignore NULL characters.
+ dcb.fAbortOnError = FALSE; // Ignore serial framing errors.
+ if (!::SetCommState(handle, &dcb))
+ {
+ DWORD last_error = ::GetLastError();
+ ::CloseHandle(handle);
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ // Set up timeouts so that the serial port will behave similarly to a
+ // network socket. Reads wait for at least one byte, then return with
+ // whatever they have. Writes return once everything is out the door.
+ ::COMMTIMEOUTS timeouts;
+ timeouts.ReadIntervalTimeout = 1;
+ timeouts.ReadTotalTimeoutMultiplier = 0;
+ timeouts.ReadTotalTimeoutConstant = 0;
+ timeouts.WriteTotalTimeoutMultiplier = 0;
+ timeouts.WriteTotalTimeoutConstant = 0;
+ if (!::SetCommTimeouts(handle, &timeouts))
+ {
+ DWORD last_error = ::GetLastError();
+ ::CloseHandle(handle);
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ // We're done. Take ownership of the serial port handle.
+ if (handle_service_.assign(impl, handle, ec))
+ ::CloseHandle(handle);
+ return ec;
+ }
+
+ // Assign a native handle to a handle implementation.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_handle, boost::system::error_code& ec)
+ {
+ return handle_service_.assign(impl, native_handle, ec);
+ }
+
+ // Determine whether the handle is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return handle_service_.is_open(impl);
+ }
+
+ // Destroy a handle implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return handle_service_.close(impl, ec);
+ }
+
+ // Get the native handle representation.
+ native_type native(implementation_type& impl)
+ {
+ return handle_service_.native(impl);
+ }
+
+ // Cancel all operations associated with the handle.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return handle_service_.cancel(impl, ec);
+ }
+
+ // Set an option on the serial port.
+ template <typename SettableSerialPortOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSerialPortOption& option, boost::system::error_code& ec)
+ {
+ using namespace std; // For memcpy.
+
+ ::DCB dcb;
+ memset(&dcb, 0, sizeof(DCB));
+ dcb.DCBlength = sizeof(DCB);
+ if (!::GetCommState(handle_service_.native(impl), &dcb))
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ if (option.store(dcb, ec))
+ return ec;
+
+ if (!::SetCommState(handle_service_.native(impl), &dcb))
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Get an option from the serial port.
+ template <typename GettableSerialPortOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSerialPortOption& option, boost::system::error_code& ec) const
+ {
+ using namespace std; // For memcpy.
+
+ ::DCB dcb;
+ memset(&dcb, 0, sizeof(DCB));
+ dcb.DCBlength = sizeof(DCB);
+ if (!::GetCommState(handle_service_.native(impl), &dcb))
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return ec;
+ }
+
+ return option.load(dcb, ec);
+ }
+
+ // Send a break sequence to the serial port.
+ boost::system::error_code send_break(implementation_type&,
+ boost::system::error_code& ec)
+ {
+ ec = boost::asio::error::operation_not_supported;
+ return ec;
+ }
+
+ // Write the given data. Returns the number of bytes sent.
+ template <typename ConstBufferSequence>
+ size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return handle_service_.write_some(impl, buffers, ec);
+ }
+
+ // Start an asynchronous write. The data being written must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, Handler handler)
+ {
+ handle_service_.async_write_some(impl, buffers, handler);
+ }
+
+ // Read some data. Returns the number of bytes received.
+ template <typename MutableBufferSequence>
+ size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return handle_service_.read_some(impl, buffers, ec);
+ }
+
+ // Start an asynchronous read. The buffer for the data being received must be
+ // valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, Handler handler)
+ {
+ handle_service_.async_read_some(impl, buffers, handler);
+ }
+
+private:
+ // The handle service used for initiating asynchronous operations.
+ win_iocp_handle_service& handle_service_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_iocp_socket_service.hpp b/3rdParty/Boost/boost/asio/detail/win_iocp_socket_service.hpp
new file mode 100644
index 0000000..5192612
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_iocp_socket_service.hpp
@@ -0,0 +1,2417 @@
+//
+// win_iocp_socket_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
+#define BOOST_ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/win_iocp_io_service_fwd.hpp>
+
+#if defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstring>
+#include <boost/shared_ptr.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/weak_ptr.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/socket_base.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/mutex.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/socket_holder.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/win_iocp_io_service.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Protocol>
+class win_iocp_socket_service
+ : public boost::asio::detail::service_base<win_iocp_socket_service<Protocol> >
+{
+public:
+ // The protocol type.
+ typedef Protocol protocol_type;
+
+ // The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+ // Base class for all operations.
+ typedef win_iocp_io_service::operation operation;
+
+ struct noop_deleter { void operator()(void*) {} };
+ typedef boost::shared_ptr<void> shared_cancel_token_type;
+ typedef boost::weak_ptr<void> weak_cancel_token_type;
+
+ // The native type of a socket.
+ class native_type
+ {
+ public:
+ native_type(socket_type s)
+ : socket_(s),
+ have_remote_endpoint_(false)
+ {
+ }
+
+ native_type(socket_type s, const endpoint_type& ep)
+ : socket_(s),
+ have_remote_endpoint_(true),
+ remote_endpoint_(ep)
+ {
+ }
+
+ void operator=(socket_type s)
+ {
+ socket_ = s;
+ have_remote_endpoint_ = false;
+ remote_endpoint_ = endpoint_type();
+ }
+
+ operator socket_type() const
+ {
+ return socket_;
+ }
+
+ HANDLE as_handle() const
+ {
+ return reinterpret_cast<HANDLE>(socket_);
+ }
+
+ bool have_remote_endpoint() const
+ {
+ return have_remote_endpoint_;
+ }
+
+ endpoint_type remote_endpoint() const
+ {
+ return remote_endpoint_;
+ }
+
+ private:
+ socket_type socket_;
+ bool have_remote_endpoint_;
+ endpoint_type remote_endpoint_;
+ };
+
+ // The type of the reactor used for connect operations.
+ typedef detail::select_reactor<true> reactor_type;
+
+ // The implementation type of the socket.
+ class implementation_type
+ {
+ public:
+ // Default constructor.
+ implementation_type()
+ : socket_(invalid_socket),
+ flags_(0),
+ cancel_token_(),
+ protocol_(endpoint_type().protocol()),
+ next_(0),
+ prev_(0)
+ {
+ }
+
+ private:
+ // Only this service will have access to the internal values.
+ friend class win_iocp_socket_service;
+
+ // The native socket representation.
+ native_type socket_;
+
+ enum
+ {
+ enable_connection_aborted = 1, // User wants connection_aborted errors.
+ close_might_block = 2, // User set linger option for blocking close.
+ user_set_non_blocking = 4 // The user wants a non-blocking socket.
+ };
+
+ // Flags indicating the current state of the socket.
+ unsigned char flags_;
+
+ // We use a shared pointer as a cancellation token here to work around the
+ // broken Windows support for cancellation. MSDN says that when you call
+ // closesocket any outstanding WSARecv or WSASend operations will complete
+ // with the error ERROR_OPERATION_ABORTED. In practice they complete with
+ // ERROR_NETNAME_DELETED, which means you can't tell the difference between
+ // a local cancellation and the socket being hard-closed by the peer.
+ shared_cancel_token_type cancel_token_;
+
+ // The protocol associated with the socket.
+ protocol_type protocol_;
+
+ // Per-descriptor data used by the reactor.
+ reactor_type::per_descriptor_data reactor_data_;
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // The ID of the thread from which it is safe to cancel asynchronous
+ // operations. 0 means no asynchronous operations have been started yet.
+ // ~0 means asynchronous operations have been started from more than one
+ // thread, and cancellation is not supported for the socket.
+ DWORD safe_cancellation_thread_id_;
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Pointers to adjacent socket implementations in linked list.
+ implementation_type* next_;
+ implementation_type* prev_;
+ };
+
+ // The maximum number of buffers to support in a single operation.
+ enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
+
+ // Constructor.
+ win_iocp_socket_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ win_iocp_socket_service<Protocol> >(io_service),
+ iocp_service_(boost::asio::use_service<win_iocp_io_service>(io_service)),
+ reactor_(0),
+ mutex_(),
+ impl_list_(0)
+ {
+ }
+
+ // Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ // Close all implementations, causing all operations to complete.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ implementation_type* impl = impl_list_;
+ while (impl)
+ {
+ boost::system::error_code ignored_ec;
+ close_for_destruction(*impl);
+ impl = impl->next_;
+ }
+ }
+
+ // Construct a new socket implementation.
+ void construct(implementation_type& impl)
+ {
+ impl.socket_ = invalid_socket;
+ impl.flags_ = 0;
+ impl.cancel_token_.reset();
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ impl.safe_cancellation_thread_id_ = 0;
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Insert implementation into linked list of all implementations.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ impl.next_ = impl_list_;
+ impl.prev_ = 0;
+ if (impl_list_)
+ impl_list_->prev_ = &impl;
+ impl_list_ = &impl;
+ }
+
+ // Destroy a socket implementation.
+ void destroy(implementation_type& impl)
+ {
+ close_for_destruction(impl);
+
+ // Remove implementation from linked list of all implementations.
+ boost::asio::detail::mutex::scoped_lock lock(mutex_);
+ if (impl_list_ == &impl)
+ impl_list_ = impl.next_;
+ if (impl.prev_)
+ impl.prev_->next_ = impl.next_;
+ if (impl.next_)
+ impl.next_->prev_= impl.prev_;
+ impl.next_ = 0;
+ impl.prev_ = 0;
+ }
+
+ // Open a new socket implementation.
+ boost::system::error_code open(implementation_type& impl,
+ const protocol_type& protocol, boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ socket_holder sock(socket_ops::socket(protocol.family(), protocol.type(),
+ protocol.protocol(), ec));
+ if (sock.get() == invalid_socket)
+ return ec;
+
+ HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock.get());
+ if (iocp_service_.register_handle(sock_as_handle, ec))
+ return ec;
+
+ impl.socket_ = sock.release();
+ impl.flags_ = 0;
+ impl.cancel_token_.reset(static_cast<void*>(0), noop_deleter());
+ impl.protocol_ = protocol;
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Assign a native socket to a socket implementation.
+ boost::system::error_code assign(implementation_type& impl,
+ const protocol_type& protocol, const native_type& native_socket,
+ boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ if (iocp_service_.register_handle(native_socket.as_handle(), ec))
+ return ec;
+
+ impl.socket_ = native_socket;
+ impl.flags_ = 0;
+ impl.cancel_token_.reset(static_cast<void*>(0), noop_deleter());
+ impl.protocol_ = protocol;
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Determine whether the socket is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return impl.socket_ != invalid_socket;
+ }
+
+ // Destroy a socket implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (is_open(impl))
+ {
+ // Check if the reactor was created, in which case we need to close the
+ // socket on the reactor as well to cancel any operations that might be
+ // running there.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (reactor)
+ reactor->close_descriptor(impl.socket_, impl.reactor_data_);
+
+ if (socket_ops::close(impl.socket_, ec) == socket_error_retval)
+ return ec;
+
+ impl.socket_ = invalid_socket;
+ impl.flags_ = 0;
+ impl.cancel_token_.reset();
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ impl.safe_cancellation_thread_id_ = 0;
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+ }
+
+ ec = boost::system::error_code();
+ return ec;
+ }
+
+ // Get the native socket representation.
+ native_type native(implementation_type& impl)
+ {
+ return impl.socket_;
+ }
+
+ // Cancel all operations associated with the socket.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+ else if (FARPROC cancel_io_ex_ptr = ::GetProcAddress(
+ ::GetModuleHandleA("KERNEL32"), "CancelIoEx"))
+ {
+ // The version of Windows supports cancellation from any thread.
+ typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED);
+ cancel_io_ex_t cancel_io_ex = (cancel_io_ex_t)cancel_io_ex_ptr;
+ socket_type sock = impl.socket_;
+ HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock);
+ if (!cancel_io_ex(sock_as_handle, 0))
+ {
+ DWORD last_error = ::GetLastError();
+ if (last_error == ERROR_NOT_FOUND)
+ {
+ // ERROR_NOT_FOUND means that there were no operations to be
+ // cancelled. We swallow this error to match the behaviour on other
+ // platforms.
+ ec = boost::system::error_code();
+ }
+ else
+ {
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+ }
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ else if (impl.safe_cancellation_thread_id_ == 0)
+ {
+ // No operations have been started, so there's nothing to cancel.
+ ec = boost::system::error_code();
+ }
+ else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId())
+ {
+ // Asynchronous operations have been started from the current thread only,
+ // so it is safe to try to cancel them using CancelIo.
+ socket_type sock = impl.socket_;
+ HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock);
+ if (!::CancelIo(sock_as_handle))
+ {
+ DWORD last_error = ::GetLastError();
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ }
+ else
+ {
+ ec = boost::system::error_code();
+ }
+ }
+ else
+ {
+ // Asynchronous operations have been started from more than one thread,
+ // so cancellation is not safe.
+ ec = boost::asio::error::operation_not_supported;
+ }
+#else // defined(BOOST_ASIO_ENABLE_CANCELIO)
+ else
+ {
+ // Cancellation is not supported as CancelIo may not be used.
+ ec = boost::asio::error::operation_not_supported;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ return ec;
+ }
+
+ // Determine whether the socket is at the out-of-band data mark.
+ bool at_mark(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return false;
+ }
+
+ boost::asio::detail::ioctl_arg_type value = 0;
+ socket_ops::ioctl(impl.socket_, SIOCATMARK, &value, ec);
+ return ec ? false : value != 0;
+ }
+
+ // Determine the number of bytes available for reading.
+ std::size_t available(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ boost::asio::detail::ioctl_arg_type value = 0;
+ socket_ops::ioctl(impl.socket_, FIONREAD, &value, ec);
+ return ec ? static_cast<std::size_t>(0) : static_cast<std::size_t>(value);
+ }
+
+ // Bind the socket to the specified local endpoint.
+ boost::system::error_code bind(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec);
+ return ec;
+ }
+
+ // Place the socket into the state where it will listen for new connections.
+ boost::system::error_code listen(implementation_type& impl, int backlog,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::listen(impl.socket_, backlog, ec);
+ return ec;
+ }
+
+ // Set a socket option.
+ template <typename Option>
+ boost::system::error_code set_option(implementation_type& impl,
+ const Option& option, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ if (option.level(impl.protocol_) == custom_socket_option_level
+ && option.name(impl.protocol_) == enable_connection_aborted_option)
+ {
+ if (option.size(impl.protocol_) != sizeof(int))
+ {
+ ec = boost::asio::error::invalid_argument;
+ }
+ else
+ {
+ if (*reinterpret_cast<const int*>(option.data(impl.protocol_)))
+ impl.flags_ |= implementation_type::enable_connection_aborted;
+ else
+ impl.flags_ &= ~implementation_type::enable_connection_aborted;
+ ec = boost::system::error_code();
+ }
+ return ec;
+ }
+ else
+ {
+ if (option.level(impl.protocol_) == SOL_SOCKET
+ && option.name(impl.protocol_) == SO_LINGER)
+ {
+ const ::linger* linger_option =
+ reinterpret_cast<const ::linger*>(option.data(impl.protocol_));
+ if (linger_option->l_onoff != 0 && linger_option->l_linger != 0)
+ impl.flags_ |= implementation_type::close_might_block;
+ else
+ impl.flags_ &= ~implementation_type::close_might_block;
+ }
+
+ socket_ops::setsockopt(impl.socket_,
+ option.level(impl.protocol_), option.name(impl.protocol_),
+ option.data(impl.protocol_), option.size(impl.protocol_), ec);
+ return ec;
+ }
+ }
+
+ // Set a socket option.
+ template <typename Option>
+ boost::system::error_code get_option(const implementation_type& impl,
+ Option& option, boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ if (option.level(impl.protocol_) == custom_socket_option_level
+ && option.name(impl.protocol_) == enable_connection_aborted_option)
+ {
+ if (option.size(impl.protocol_) != sizeof(int))
+ {
+ ec = boost::asio::error::invalid_argument;
+ }
+ else
+ {
+ int* target = reinterpret_cast<int*>(option.data(impl.protocol_));
+ if (impl.flags_ & implementation_type::enable_connection_aborted)
+ *target = 1;
+ else
+ *target = 0;
+ option.resize(impl.protocol_, sizeof(int));
+ ec = boost::system::error_code();
+ }
+ return ec;
+ }
+ else
+ {
+ size_t size = option.size(impl.protocol_);
+ socket_ops::getsockopt(impl.socket_,
+ option.level(impl.protocol_), option.name(impl.protocol_),
+ option.data(impl.protocol_), &size, ec);
+ if (!ec)
+ option.resize(impl.protocol_, size);
+ return ec;
+ }
+ }
+
+ // Perform an IO control command on the socket.
+ template <typename IO_Control_Command>
+ boost::system::error_code io_control(implementation_type& impl,
+ IO_Control_Command& command, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::ioctl(impl.socket_, command.name(),
+ static_cast<ioctl_arg_type*>(command.data()), ec);
+
+ if (!ec && command.name() == static_cast<int>(FIONBIO))
+ {
+ if (*static_cast<ioctl_arg_type*>(command.data()))
+ impl.flags_ |= implementation_type::user_set_non_blocking;
+ else
+ impl.flags_ &= ~implementation_type::user_set_non_blocking;
+ }
+
+ return ec;
+ }
+
+ // Get the local endpoint.
+ endpoint_type local_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return endpoint_type();
+ }
+
+ endpoint_type endpoint;
+ std::size_t addr_len = endpoint.capacity();
+ if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec))
+ return endpoint_type();
+ endpoint.resize(addr_len);
+ return endpoint;
+ }
+
+ // Get the remote endpoint.
+ endpoint_type remote_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return endpoint_type();
+ }
+
+ if (impl.socket_.have_remote_endpoint())
+ {
+ // Check if socket is still connected.
+ DWORD connect_time = 0;
+ size_t connect_time_len = sizeof(connect_time);
+ if (socket_ops::getsockopt(impl.socket_, SOL_SOCKET, SO_CONNECT_TIME,
+ &connect_time, &connect_time_len, ec) == socket_error_retval)
+ {
+ return endpoint_type();
+ }
+ if (connect_time == 0xFFFFFFFF)
+ {
+ ec = boost::asio::error::not_connected;
+ return endpoint_type();
+ }
+
+ ec = boost::system::error_code();
+ return impl.socket_.remote_endpoint();
+ }
+ else
+ {
+ endpoint_type endpoint;
+ std::size_t addr_len = endpoint.capacity();
+ if (socket_ops::getpeername(impl.socket_, endpoint.data(), &addr_len, ec))
+ return endpoint_type();
+ endpoint.resize(addr_len);
+ return endpoint;
+ }
+ }
+
+ /// Disable sends or receives on the socket.
+ boost::system::error_code shutdown(implementation_type& impl,
+ socket_base::shutdown_type what, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ socket_ops::shutdown(impl.socket_, what, ec);
+ return ec;
+ }
+
+ // Send the given data to the peer. Returns the number of bytes sent.
+ template <typename ConstBufferSequence>
+ size_t send(implementation_type& impl, const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = const_cast<char*>(
+ boost::asio::buffer_cast<const char*>(buffer));
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (impl.protocol_.type() == SOCK_STREAM && total_buffer_size == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Send the data.
+ DWORD bytes_transferred = 0;
+ int result = ::WSASend(impl.socket_, bufs,
+ i, &bytes_transferred, flags, 0, 0);
+ if (result != 0)
+ {
+ DWORD last_error = ::WSAGetLastError();
+ if (last_error == ERROR_NETNAME_DELETED)
+ last_error = WSAECONNRESET;
+ else if (last_error == ERROR_PORT_UNREACHABLE)
+ last_error = WSAECONNREFUSED;
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return 0;
+ }
+
+ ec = boost::system::error_code();
+ return bytes_transferred;
+ }
+
+ // Wait until data can be sent without blocking.
+ size_t send(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_write(impl.socket_, ec);
+
+ return 0;
+ }
+
+ template <typename ConstBufferSequence, typename Handler>
+ class send_operation
+ : public operation
+ {
+ public:
+ send_operation(win_iocp_io_service& io_service,
+ weak_cancel_token_type cancel_token,
+ const ConstBufferSequence& buffers, Handler handler)
+ : operation(io_service,
+ &send_operation<ConstBufferSequence, Handler>::do_completion_impl,
+ &send_operation<ConstBufferSequence, Handler>::destroy_impl),
+ work_(io_service.get_io_service()),
+ cancel_token_(cancel_token),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ private:
+ static void do_completion_impl(operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef send_operation<ConstBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ // Check whether buffers are still valid.
+ typename ConstBufferSequence::const_iterator iter
+ = handler_op->buffers_.begin();
+ typename ConstBufferSequence::const_iterator end
+ = handler_op->buffers_.end();
+ while (iter != end)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ boost::asio::buffer_cast<const char*>(buffer);
+ ++iter;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+
+ // Map non-portable errors to their portable counterparts.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ if (ec.value() == ERROR_NETNAME_DELETED)
+ {
+ if (handler_op->cancel_token_.expired())
+ ec = boost::asio::error::operation_aborted;
+ else
+ ec = boost::asio::error::connection_reset;
+ }
+ else if (ec.value() == ERROR_PORT_UNREACHABLE)
+ {
+ ec = boost::asio::error::connection_refused;
+ }
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost_asio_handler_invoke_helpers::invoke(
+ detail::bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef send_operation<ConstBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ boost::asio::io_service::work work_;
+ weak_cancel_token_type cancel_token_;
+ ConstBufferSequence buffers_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous send. The data being sent must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_send(implementation_type& impl, const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ return;
+ }
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef send_operation<ConstBufferSequence, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, iocp_service_,
+ impl.cancel_token_, buffers, handler);
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = const_cast<char*>(
+ boost::asio::buffer_cast<const char*>(buffer));
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (impl.protocol_.type() == SOCK_STREAM && total_buffer_size == 0)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code error;
+ iocp_service_.post(bind_handler(handler, error, 0));
+ return;
+ }
+
+ // Send the data.
+ DWORD bytes_transferred = 0;
+ int result = ::WSASend(impl.socket_, bufs, i,
+ &bytes_transferred, flags, ptr.get(), 0);
+ DWORD last_error = ::WSAGetLastError();
+
+ // Check if the operation completed immediately.
+ if (result != 0 && last_error != WSA_IO_PENDING)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+ template <typename Handler>
+ class null_buffers_operation
+ {
+ public:
+ null_buffers_operation(boost::asio::io_service& io_service, Handler handler)
+ : work_(io_service),
+ handler_(handler)
+ {
+ }
+
+ bool perform(boost::system::error_code&,
+ std::size_t& bytes_transferred)
+ {
+ bytes_transferred = 0;
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ work_.get_io_service().post(bind_handler(
+ handler_, ec, bytes_transferred));
+ }
+
+ private:
+ boost::asio::io_service::work work_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous wait until data can be sent without blocking.
+ template <typename Handler>
+ void async_send(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Check if the reactor was already obtained from the io_service.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (!reactor)
+ {
+ reactor = &(boost::asio::use_service<reactor_type>(
+ this->get_io_service()));
+ interlocked_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), reactor);
+ }
+
+ reactor->start_write_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+ // Send a datagram to the specified endpoint. Returns the number of bytes
+ // sent.
+ template <typename ConstBufferSequence>
+ size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers,
+ const endpoint_type& destination, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = const_cast<char*>(
+ boost::asio::buffer_cast<const char*>(buffer));
+ }
+
+ // Send the data.
+ DWORD bytes_transferred = 0;
+ int result = ::WSASendTo(impl.socket_, bufs, i, &bytes_transferred,
+ flags, destination.data(), static_cast<int>(destination.size()), 0, 0);
+ if (result != 0)
+ {
+ DWORD last_error = ::WSAGetLastError();
+ if (last_error == ERROR_PORT_UNREACHABLE)
+ last_error = WSAECONNREFUSED;
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return 0;
+ }
+
+ ec = boost::system::error_code();
+ return bytes_transferred;
+ }
+
+ // Wait until data can be sent without blocking.
+ size_t send_to(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, const endpoint_type&,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_write(impl.socket_, ec);
+
+ return 0;
+ }
+
+ template <typename ConstBufferSequence, typename Handler>
+ class send_to_operation
+ : public operation
+ {
+ public:
+ send_to_operation(win_iocp_io_service& io_service,
+ const ConstBufferSequence& buffers, Handler handler)
+ : operation(io_service,
+ &send_to_operation<ConstBufferSequence, Handler>::do_completion_impl,
+ &send_to_operation<ConstBufferSequence, Handler>::destroy_impl),
+ work_(io_service.get_io_service()),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ private:
+ static void do_completion_impl(operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef send_to_operation<ConstBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ // Check whether buffers are still valid.
+ typename ConstBufferSequence::const_iterator iter
+ = handler_op->buffers_.begin();
+ typename ConstBufferSequence::const_iterator end
+ = handler_op->buffers_.end();
+ while (iter != end)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ boost::asio::buffer_cast<const char*>(buffer);
+ ++iter;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+
+ // Map non-portable errors to their portable counterparts.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ if (ec.value() == ERROR_PORT_UNREACHABLE)
+ {
+ ec = boost::asio::error::connection_refused;
+ }
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost_asio_handler_invoke_helpers::invoke(
+ detail::bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef send_to_operation<ConstBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ boost::asio::io_service::work work_;
+ ConstBufferSequence buffers_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous send. The data being sent must be valid for the
+ // lifetime of the asynchronous operation.
+ template <typename ConstBufferSequence, typename Handler>
+ void async_send_to(implementation_type& impl,
+ const ConstBufferSequence& buffers, const endpoint_type& destination,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ return;
+ }
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef send_to_operation<ConstBufferSequence, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ handler_ptr<alloc_traits> ptr(raw_ptr, iocp_service_, buffers, handler);
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename ConstBufferSequence::const_iterator iter = buffers.begin();
+ typename ConstBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::const_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = const_cast<char*>(
+ boost::asio::buffer_cast<const char*>(buffer));
+ }
+
+ // Send the data.
+ DWORD bytes_transferred = 0;
+ int result = ::WSASendTo(impl.socket_, bufs, i, &bytes_transferred, flags,
+ destination.data(), static_cast<int>(destination.size()), ptr.get(), 0);
+ DWORD last_error = ::WSAGetLastError();
+
+ // Check if the operation completed immediately.
+ if (result != 0 && last_error != WSA_IO_PENDING)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+ // Start an asynchronous wait until data can be sent without blocking.
+ template <typename Handler>
+ void async_send_to(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, const endpoint_type&, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Check if the reactor was already obtained from the io_service.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (!reactor)
+ {
+ reactor = &(boost::asio::use_service<reactor_type>(
+ this->get_io_service()));
+ interlocked_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), reactor);
+ }
+
+ reactor->start_write_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+
+ // Receive some data from the peer. Returns the number of bytes received.
+ template <typename MutableBufferSequence>
+ size_t receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = boost::asio::buffer_cast<char*>(buffer);
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (impl.protocol_.type() == SOCK_STREAM && total_buffer_size == 0)
+ {
+ ec = boost::system::error_code();
+ return 0;
+ }
+
+ // Receive some data.
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int result = ::WSARecv(impl.socket_, bufs, i,
+ &bytes_transferred, &recv_flags, 0, 0);
+ if (result != 0)
+ {
+ DWORD last_error = ::WSAGetLastError();
+ if (last_error == ERROR_NETNAME_DELETED)
+ last_error = WSAECONNRESET;
+ else if (last_error == ERROR_PORT_UNREACHABLE)
+ last_error = WSAECONNREFUSED;
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return 0;
+ }
+ if (bytes_transferred == 0 && impl.protocol_.type() == SOCK_STREAM)
+ {
+ ec = boost::asio::error::eof;
+ return 0;
+ }
+
+ ec = boost::system::error_code();
+ return bytes_transferred;
+ }
+
+ // Wait until data can be received without blocking.
+ size_t receive(implementation_type& impl, const null_buffers&,
+ socket_base::message_flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_read(impl.socket_, ec);
+
+ return 0;
+ }
+
+ template <typename MutableBufferSequence, typename Handler>
+ class receive_operation
+ : public operation
+ {
+ public:
+ receive_operation(int protocol_type, win_iocp_io_service& io_service,
+ weak_cancel_token_type cancel_token,
+ const MutableBufferSequence& buffers, Handler handler)
+ : operation(io_service,
+ &receive_operation<
+ MutableBufferSequence, Handler>::do_completion_impl,
+ &receive_operation<
+ MutableBufferSequence, Handler>::destroy_impl),
+ protocol_type_(protocol_type),
+ work_(io_service.get_io_service()),
+ cancel_token_(cancel_token),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ private:
+ static void do_completion_impl(operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef receive_operation<MutableBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ // Check whether buffers are still valid.
+ typename MutableBufferSequence::const_iterator iter
+ = handler_op->buffers_.begin();
+ typename MutableBufferSequence::const_iterator end
+ = handler_op->buffers_.end();
+ while (iter != end)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ boost::asio::buffer_cast<char*>(buffer);
+ ++iter;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+
+ // Map non-portable errors to their portable counterparts.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ if (ec.value() == ERROR_NETNAME_DELETED)
+ {
+ if (handler_op->cancel_token_.expired())
+ ec = boost::asio::error::operation_aborted;
+ else
+ ec = boost::asio::error::connection_reset;
+ }
+ else if (ec.value() == ERROR_PORT_UNREACHABLE)
+ {
+ ec = boost::asio::error::connection_refused;
+ }
+
+ // Check for connection closed.
+ else if (!ec && bytes_transferred == 0
+ && handler_op->protocol_type_ == SOCK_STREAM
+ && !boost::is_same<MutableBufferSequence, null_buffers>::value)
+ {
+ ec = boost::asio::error::eof;
+ }
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost_asio_handler_invoke_helpers::invoke(
+ detail::bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef receive_operation<MutableBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ int protocol_type_;
+ boost::asio::io_service::work work_;
+ weak_cancel_token_type cancel_token_;
+ MutableBufferSequence buffers_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous receive. The buffer for the data being received
+ // must be valid for the lifetime of the asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ return;
+ }
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef receive_operation<MutableBufferSequence, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ int protocol_type = impl.protocol_.type();
+ handler_ptr<alloc_traits> ptr(raw_ptr, protocol_type,
+ iocp_service_, impl.cancel_token_, buffers, handler);
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ size_t total_buffer_size = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = boost::asio::buffer_cast<char*>(buffer);
+ total_buffer_size += boost::asio::buffer_size(buffer);
+ }
+
+ // A request to receive 0 bytes on a stream socket is a no-op.
+ if (impl.protocol_.type() == SOCK_STREAM && total_buffer_size == 0)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code error;
+ iocp_service_.post(bind_handler(handler, error, 0));
+ return;
+ }
+
+ // Receive some data.
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int result = ::WSARecv(impl.socket_, bufs, i,
+ &bytes_transferred, &recv_flags, ptr.get(), 0);
+ DWORD last_error = ::WSAGetLastError();
+ if (result != 0 && last_error != WSA_IO_PENDING)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+ // Wait until data can be received without blocking.
+ template <typename Handler>
+ void async_receive(implementation_type& impl, const null_buffers& buffers,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else if (impl.protocol_.type() == SOCK_STREAM)
+ {
+ // For stream sockets on Windows, we may issue a 0-byte overlapped
+ // WSARecv to wait until there is data available on the socket.
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef receive_operation<null_buffers, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ int protocol_type = impl.protocol_.type();
+ handler_ptr<alloc_traits> ptr(raw_ptr, protocol_type,
+ iocp_service_, impl.cancel_token_, buffers, handler);
+
+ // Issue a receive operation with an empty buffer.
+ ::WSABUF buf = { 0, 0 };
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int result = ::WSARecv(impl.socket_, &buf, 1,
+ &bytes_transferred, &recv_flags, ptr.get(), 0);
+ DWORD last_error = ::WSAGetLastError();
+ if (result != 0 && last_error != WSA_IO_PENDING)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+ else
+ {
+ // Check if the reactor was already obtained from the io_service.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (!reactor)
+ {
+ reactor = &(boost::asio::use_service<reactor_type>(
+ this->get_io_service()));
+ interlocked_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), reactor);
+ }
+
+ if (flags & socket_base::message_out_of_band)
+ {
+ reactor->start_except_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler));
+ }
+ else
+ {
+ reactor->start_read_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+ }
+
+ // Receive a datagram with the endpoint of the sender. Returns the number of
+ // bytes received.
+ template <typename MutableBufferSequence>
+ size_t receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ endpoint_type& sender_endpoint, socket_base::message_flags flags,
+ boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = boost::asio::buffer_cast<char*>(buffer);
+ }
+
+ // Receive some data.
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int endpoint_size = static_cast<int>(sender_endpoint.capacity());
+ int result = ::WSARecvFrom(impl.socket_, bufs, i, &bytes_transferred,
+ &recv_flags, sender_endpoint.data(), &endpoint_size, 0, 0);
+ if (result != 0)
+ {
+ DWORD last_error = ::WSAGetLastError();
+ if (last_error == ERROR_PORT_UNREACHABLE)
+ last_error = WSAECONNREFUSED;
+ ec = boost::system::error_code(last_error,
+ boost::asio::error::get_system_category());
+ return 0;
+ }
+ if (bytes_transferred == 0 && impl.protocol_.type() == SOCK_STREAM)
+ {
+ ec = boost::asio::error::eof;
+ return 0;
+ }
+
+ sender_endpoint.resize(static_cast<std::size_t>(endpoint_size));
+
+ ec = boost::system::error_code();
+ return bytes_transferred;
+ }
+
+ // Wait until data can be received without blocking.
+ size_t receive_from(implementation_type& impl,
+ const null_buffers&, endpoint_type& sender_endpoint,
+ socket_base::message_flags, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return 0;
+ }
+
+ // Wait for socket to become ready.
+ socket_ops::poll_read(impl.socket_, ec);
+
+ // Reset endpoint since it can be given no sensible value at this time.
+ sender_endpoint = endpoint_type();
+
+ return 0;
+ }
+
+ template <typename MutableBufferSequence, typename Handler>
+ class receive_from_operation
+ : public operation
+ {
+ public:
+ receive_from_operation(int protocol_type, win_iocp_io_service& io_service,
+ endpoint_type& endpoint, const MutableBufferSequence& buffers,
+ Handler handler)
+ : operation(io_service,
+ &receive_from_operation<
+ MutableBufferSequence, Handler>::do_completion_impl,
+ &receive_from_operation<
+ MutableBufferSequence, Handler>::destroy_impl),
+ protocol_type_(protocol_type),
+ endpoint_(endpoint),
+ endpoint_size_(static_cast<int>(endpoint.capacity())),
+ work_(io_service.get_io_service()),
+ buffers_(buffers),
+ handler_(handler)
+ {
+ }
+
+ int& endpoint_size()
+ {
+ return endpoint_size_;
+ }
+
+ private:
+ static void do_completion_impl(operation* op,
+ DWORD last_error, size_t bytes_transferred)
+ {
+ // Take ownership of the operation object.
+ typedef receive_from_operation<MutableBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+ // Check whether buffers are still valid.
+ typename MutableBufferSequence::const_iterator iter
+ = handler_op->buffers_.begin();
+ typename MutableBufferSequence::const_iterator end
+ = handler_op->buffers_.end();
+ while (iter != end)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ boost::asio::buffer_cast<char*>(buffer);
+ ++iter;
+ }
+#endif // defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
+
+ // Map non-portable errors to their portable counterparts.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ if (ec.value() == ERROR_PORT_UNREACHABLE)
+ {
+ ec = boost::asio::error::connection_refused;
+ }
+
+ // Check for connection closed.
+ if (!ec && bytes_transferred == 0
+ && handler_op->protocol_type_ == SOCK_STREAM)
+ {
+ ec = boost::asio::error::eof;
+ }
+
+ // Record the size of the endpoint returned by the operation.
+ handler_op->endpoint_.resize(handler_op->endpoint_size_);
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost_asio_handler_invoke_helpers::invoke(
+ detail::bind_handler(handler, ec, bytes_transferred), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef receive_from_operation<MutableBufferSequence, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ int protocol_type_;
+ endpoint_type& endpoint_;
+ int endpoint_size_;
+ boost::asio::io_service::work work_;
+ MutableBufferSequence buffers_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous receive. The buffer for the data being received and
+ // the sender_endpoint object must both be valid for the lifetime of the
+ // asynchronous operation.
+ template <typename MutableBufferSequence, typename Handler>
+ void async_receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers, endpoint_type& sender_endp,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ return;
+ }
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef receive_from_operation<MutableBufferSequence, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ int protocol_type = impl.protocol_.type();
+ handler_ptr<alloc_traits> ptr(raw_ptr, protocol_type,
+ iocp_service_, sender_endp, buffers, handler);
+
+ // Copy buffers into WSABUF array.
+ ::WSABUF bufs[max_buffers];
+ typename MutableBufferSequence::const_iterator iter = buffers.begin();
+ typename MutableBufferSequence::const_iterator end = buffers.end();
+ DWORD i = 0;
+ for (; iter != end && i < max_buffers; ++iter, ++i)
+ {
+ boost::asio::mutable_buffer buffer(*iter);
+ bufs[i].len = static_cast<u_long>(boost::asio::buffer_size(buffer));
+ bufs[i].buf = boost::asio::buffer_cast<char*>(buffer);
+ }
+
+ // Receive some data.
+ DWORD bytes_transferred = 0;
+ DWORD recv_flags = flags;
+ int result = ::WSARecvFrom(impl.socket_, bufs, i, &bytes_transferred,
+ &recv_flags, sender_endp.data(), &ptr.get()->endpoint_size(),
+ ptr.get(), 0);
+ DWORD last_error = ::WSAGetLastError();
+ if (result != 0 && last_error != WSA_IO_PENDING)
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec, bytes_transferred));
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+ // Wait until data can be received without blocking.
+ template <typename Handler>
+ void async_receive_from(implementation_type& impl,
+ const null_buffers&, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor, 0));
+ }
+ else
+ {
+ // Check if the reactor was already obtained from the io_service.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (!reactor)
+ {
+ reactor = &(boost::asio::use_service<reactor_type>(
+ this->get_io_service()));
+ interlocked_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), reactor);
+ }
+
+ // Reset endpoint since it can be given no sensible value at this time.
+ sender_endpoint = endpoint_type();
+
+ if (flags & socket_base::message_out_of_band)
+ {
+ reactor->start_except_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler));
+ }
+ else
+ {
+ reactor->start_read_op(impl.socket_, impl.reactor_data_,
+ null_buffers_operation<Handler>(this->get_io_service(), handler),
+ false);
+ }
+ }
+ }
+
+ // Accept a new connection.
+ template <typename Socket>
+ boost::system::error_code accept(implementation_type& impl, Socket& peer,
+ endpoint_type* peer_endpoint, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ // We cannot accept a socket that is already open.
+ if (peer.is_open())
+ {
+ ec = boost::asio::error::already_open;
+ return ec;
+ }
+
+ for (;;)
+ {
+ socket_holder new_socket;
+ std::size_t addr_len = 0;
+ if (peer_endpoint)
+ {
+ addr_len = peer_endpoint->capacity();
+ new_socket.reset(socket_ops::accept(impl.socket_,
+ peer_endpoint->data(), &addr_len, ec));
+ }
+ else
+ {
+ new_socket.reset(socket_ops::accept(impl.socket_, 0, 0, ec));
+ }
+
+ if (ec)
+ {
+ if (ec == boost::asio::error::connection_aborted
+ && !(impl.flags_ & implementation_type::enable_connection_aborted))
+ {
+ // Retry accept operation.
+ continue;
+ }
+ else
+ {
+ return ec;
+ }
+ }
+
+ if (peer_endpoint)
+ peer_endpoint->resize(addr_len);
+
+ peer.assign(impl.protocol_, new_socket.get(), ec);
+ if (!ec)
+ new_socket.release();
+ return ec;
+ }
+ }
+
+ template <typename Socket, typename Handler>
+ class accept_operation
+ : public operation
+ {
+ public:
+ accept_operation(win_iocp_io_service& io_service,
+ socket_type socket, socket_type new_socket, Socket& peer,
+ const protocol_type& protocol, endpoint_type* peer_endpoint,
+ bool enable_connection_aborted, Handler handler)
+ : operation(io_service,
+ &accept_operation<Socket, Handler>::do_completion_impl,
+ &accept_operation<Socket, Handler>::destroy_impl),
+ io_service_(io_service),
+ socket_(socket),
+ new_socket_(new_socket),
+ peer_(peer),
+ protocol_(protocol),
+ peer_endpoint_(peer_endpoint),
+ work_(io_service.get_io_service()),
+ enable_connection_aborted_(enable_connection_aborted),
+ handler_(handler)
+ {
+ }
+
+ socket_type new_socket()
+ {
+ return new_socket_.get();
+ }
+
+ void* output_buffer()
+ {
+ return output_buffer_;
+ }
+
+ DWORD address_length()
+ {
+ return sizeof(sockaddr_storage_type) + 16;
+ }
+
+ private:
+ static void do_completion_impl(operation* op, DWORD last_error, size_t)
+ {
+ // Take ownership of the operation object.
+ typedef accept_operation<Socket, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // Map Windows error ERROR_NETNAME_DELETED to connection_aborted.
+ if (last_error == ERROR_NETNAME_DELETED)
+ {
+ last_error = WSAECONNABORTED;
+ }
+
+ // Restart the accept operation if we got the connection_aborted error
+ // and the enable_connection_aborted socket option is not set.
+ if (last_error == WSAECONNABORTED
+ && !ptr.get()->enable_connection_aborted_)
+ {
+ // Reset OVERLAPPED structure.
+ ptr.get()->Internal = 0;
+ ptr.get()->InternalHigh = 0;
+ ptr.get()->Offset = 0;
+ ptr.get()->OffsetHigh = 0;
+ ptr.get()->hEvent = 0;
+
+ // Create a new socket for the next connection, since the AcceptEx call
+ // fails with WSAEINVAL if we try to reuse the same socket.
+ boost::system::error_code ec;
+ ptr.get()->new_socket_.reset();
+ ptr.get()->new_socket_.reset(socket_ops::socket(
+ ptr.get()->protocol_.family(), ptr.get()->protocol_.type(),
+ ptr.get()->protocol_.protocol(), ec));
+ if (ptr.get()->new_socket() != invalid_socket)
+ {
+ // Accept a connection.
+ DWORD bytes_read = 0;
+ BOOL result = ::AcceptEx(ptr.get()->socket_, ptr.get()->new_socket(),
+ ptr.get()->output_buffer(), 0, ptr.get()->address_length(),
+ ptr.get()->address_length(), &bytes_read, ptr.get());
+ last_error = ::WSAGetLastError();
+
+ // Check if the operation completed immediately.
+ if (!result && last_error != WSA_IO_PENDING)
+ {
+ if (last_error == ERROR_NETNAME_DELETED
+ || last_error == WSAECONNABORTED)
+ {
+ // Post this handler so that operation will be restarted again.
+ ptr.get()->io_service_.post_completion(ptr.get(), last_error, 0);
+ ptr.release();
+ return;
+ }
+ else
+ {
+ // Operation already complete. Continue with rest of this handler.
+ }
+ }
+ else
+ {
+ // Asynchronous operation has been successfully restarted.
+ ptr.release();
+ return;
+ }
+ }
+ }
+
+ // Get the address of the peer.
+ endpoint_type peer_endpoint;
+ if (last_error == 0)
+ {
+ LPSOCKADDR local_addr = 0;
+ int local_addr_length = 0;
+ LPSOCKADDR remote_addr = 0;
+ int remote_addr_length = 0;
+ GetAcceptExSockaddrs(handler_op->output_buffer(), 0,
+ handler_op->address_length(), handler_op->address_length(),
+ &local_addr, &local_addr_length, &remote_addr, &remote_addr_length);
+ if (static_cast<std::size_t>(remote_addr_length)
+ > peer_endpoint.capacity())
+ {
+ last_error = WSAEINVAL;
+ }
+ else
+ {
+ using namespace std; // For memcpy.
+ memcpy(peer_endpoint.data(), remote_addr, remote_addr_length);
+ peer_endpoint.resize(static_cast<std::size_t>(remote_addr_length));
+ }
+ }
+
+ // Need to set the SO_UPDATE_ACCEPT_CONTEXT option so that getsockname
+ // and getpeername will work on the accepted socket.
+ if (last_error == 0)
+ {
+ SOCKET update_ctx_param = handler_op->socket_;
+ boost::system::error_code ec;
+ if (socket_ops::setsockopt(handler_op->new_socket_.get(),
+ SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
+ &update_ctx_param, sizeof(SOCKET), ec) != 0)
+ {
+ last_error = ec.value();
+ }
+ }
+
+ // If the socket was successfully accepted, transfer ownership of the
+ // socket to the peer object.
+ if (last_error == 0)
+ {
+ boost::system::error_code ec;
+ handler_op->peer_.assign(handler_op->protocol_,
+ native_type(handler_op->new_socket_.get(), peer_endpoint), ec);
+ if (ec)
+ last_error = ec.value();
+ else
+ handler_op->new_socket_.release();
+ }
+
+ // Pass endpoint back to caller.
+ if (handler_op->peer_endpoint_)
+ *handler_op->peer_endpoint_ = peer_endpoint;
+
+ // Make a copy of the handler so that the memory can be deallocated before
+ // the upcall is made.
+ Handler handler(handler_op->handler_);
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+
+ // Call the handler.
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ boost_asio_handler_invoke_helpers::invoke(
+ detail::bind_handler(handler, ec), &handler);
+ }
+
+ static void destroy_impl(operation* op)
+ {
+ // Take ownership of the operation object.
+ typedef accept_operation<Socket, Handler> op_type;
+ op_type* handler_op(static_cast<op_type*>(op));
+ typedef handler_alloc_traits<Handler, op_type> alloc_traits;
+ handler_ptr<alloc_traits> ptr(handler_op->handler_, handler_op);
+
+ // A sub-object of the handler may be the true owner of the memory
+ // associated with the handler. Consequently, a local copy of the handler
+ // is required to ensure that any owning sub-object remains valid until
+ // after we have deallocated the memory here.
+ Handler handler(handler_op->handler_);
+ (void)handler;
+
+ // Free the memory associated with the handler.
+ ptr.reset();
+ }
+
+ win_iocp_io_service& io_service_;
+ socket_type socket_;
+ socket_holder new_socket_;
+ Socket& peer_;
+ protocol_type protocol_;
+ endpoint_type* peer_endpoint_;
+ boost::asio::io_service::work work_;
+ unsigned char output_buffer_[(sizeof(sockaddr_storage_type) + 16) * 2];
+ bool enable_connection_aborted_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous accept. The peer and peer_endpoint objects
+ // must be valid until the accept's handler is invoked.
+ template <typename Socket, typename Handler>
+ void async_accept(implementation_type& impl, Socket& peer,
+ endpoint_type* peer_endpoint, Handler handler)
+ {
+ // Check whether acceptor has been initialised.
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor));
+ return;
+ }
+
+ // Check that peer socket has not already been opened.
+ if (peer.is_open())
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::already_open));
+ return;
+ }
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Create a new socket for the connection.
+ boost::system::error_code ec;
+ socket_holder sock(socket_ops::socket(impl.protocol_.family(),
+ impl.protocol_.type(), impl.protocol_.protocol(), ec));
+ if (sock.get() == invalid_socket)
+ {
+ this->get_io_service().post(bind_handler(handler, ec));
+ return;
+ }
+
+ // Allocate and construct an operation to wrap the handler.
+ typedef accept_operation<Socket, Handler> value_type;
+ typedef handler_alloc_traits<Handler, value_type> alloc_traits;
+ raw_handler_ptr<alloc_traits> raw_ptr(handler);
+ socket_type new_socket = sock.get();
+ bool enable_connection_aborted =
+ (impl.flags_ & implementation_type::enable_connection_aborted);
+ handler_ptr<alloc_traits> ptr(raw_ptr,
+ iocp_service_, impl.socket_, new_socket, peer, impl.protocol_,
+ peer_endpoint, enable_connection_aborted, handler);
+ sock.release();
+
+ // Accept a connection.
+ DWORD bytes_read = 0;
+ BOOL result = ::AcceptEx(impl.socket_, ptr.get()->new_socket(),
+ ptr.get()->output_buffer(), 0, ptr.get()->address_length(),
+ ptr.get()->address_length(), &bytes_read, ptr.get());
+ DWORD last_error = ::WSAGetLastError();
+
+ // Check if the operation completed immediately.
+ if (!result && last_error != WSA_IO_PENDING)
+ {
+ if (!enable_connection_aborted
+ && (last_error == ERROR_NETNAME_DELETED
+ || last_error == WSAECONNABORTED))
+ {
+ // Post handler so that operation will be restarted again. We do not
+ // perform the AcceptEx again here to avoid the possibility of starving
+ // other handlers.
+ iocp_service_.post_completion(ptr.get(), last_error, 0);
+ ptr.release();
+ }
+ else
+ {
+ boost::asio::io_service::work work(this->get_io_service());
+ ptr.reset();
+ boost::system::error_code ec(last_error,
+ boost::asio::error::get_system_category());
+ iocp_service_.post(bind_handler(handler, ec));
+ }
+ }
+ else
+ {
+ ptr.release();
+ }
+ }
+
+ // Connect the socket to the specified endpoint.
+ boost::system::error_code connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, boost::system::error_code& ec)
+ {
+ if (!is_open(impl))
+ {
+ ec = boost::asio::error::bad_descriptor;
+ return ec;
+ }
+
+ // Perform the connect operation.
+ socket_ops::connect(impl.socket_,
+ peer_endpoint.data(), peer_endpoint.size(), ec);
+ return ec;
+ }
+
+ template <typename Handler>
+ class connect_operation
+ {
+ public:
+ connect_operation(socket_type socket, bool user_set_non_blocking,
+ boost::asio::io_service& io_service, Handler handler)
+ : socket_(socket),
+ user_set_non_blocking_(user_set_non_blocking),
+ io_service_(io_service),
+ work_(io_service),
+ handler_(handler)
+ {
+ }
+
+ bool perform(boost::system::error_code& ec,
+ std::size_t& bytes_transferred)
+ {
+ bytes_transferred = 0;
+
+ // Check whether the operation was successful.
+ if (ec)
+ return true;
+
+ // Get the error code from the connect operation.
+ int connect_error = 0;
+ size_t connect_error_len = sizeof(connect_error);
+ if (socket_ops::getsockopt(socket_, SOL_SOCKET, SO_ERROR,
+ &connect_error, &connect_error_len, ec) == socket_error_retval)
+ return true;
+
+ // If connection failed then post the handler with the error code.
+ if (connect_error)
+ {
+ ec = boost::system::error_code(connect_error,
+ boost::asio::error::get_system_category());
+ return true;
+ }
+
+ // Revert socket to blocking mode unless the user requested otherwise.
+ if (!user_set_non_blocking_)
+ {
+ ioctl_arg_type non_blocking = 0;
+ if (socket_ops::ioctl(socket_, FIONBIO, &non_blocking, ec))
+ return true;
+ }
+
+ // Post the result of the successful connection operation.
+ ec = boost::system::error_code();
+ return true;
+ }
+
+ void complete(const boost::system::error_code& ec, std::size_t)
+ {
+ io_service_.post(bind_handler(handler_, ec));
+ }
+
+ private:
+ socket_type socket_;
+ bool user_set_non_blocking_;
+ boost::asio::io_service& io_service_;
+ boost::asio::io_service::work work_;
+ Handler handler_;
+ };
+
+ // Start an asynchronous connect.
+ template <typename Handler>
+ void async_connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, Handler handler)
+ {
+ if (!is_open(impl))
+ {
+ this->get_io_service().post(bind_handler(handler,
+ boost::asio::error::bad_descriptor));
+ return;
+ }
+
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ // Update the ID of the thread from which cancellation is safe.
+ if (impl.safe_cancellation_thread_id_ == 0)
+ impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
+ else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
+ impl.safe_cancellation_thread_id_ = ~DWORD(0);
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+
+ // Check if the reactor was already obtained from the io_service.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (!reactor)
+ {
+ reactor = &(boost::asio::use_service<reactor_type>(
+ this->get_io_service()));
+ interlocked_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), reactor);
+ }
+
+ // Mark the socket as non-blocking so that the connection will take place
+ // asynchronously.
+ ioctl_arg_type non_blocking = 1;
+ boost::system::error_code ec;
+ if (socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec))
+ {
+ this->get_io_service().post(bind_handler(handler, ec));
+ return;
+ }
+
+ // Start the connect operation.
+ if (socket_ops::connect(impl.socket_, peer_endpoint.data(),
+ peer_endpoint.size(), ec) == 0)
+ {
+ // Revert socket to blocking mode unless the user requested otherwise.
+ if (!(impl.flags_ & implementation_type::user_set_non_blocking))
+ {
+ non_blocking = 0;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ec);
+ }
+
+ // The connect operation has finished successfully so we need to post the
+ // handler immediately.
+ this->get_io_service().post(bind_handler(handler, ec));
+ }
+ else if (ec == boost::asio::error::in_progress
+ || ec == boost::asio::error::would_block)
+ {
+ // The connection is happening in the background, and we need to wait
+ // until the socket becomes writeable.
+ boost::shared_ptr<bool> completed(new bool(false));
+ reactor->start_connect_op(impl.socket_, impl.reactor_data_,
+ connect_operation<Handler>(
+ impl.socket_,
+ (impl.flags_ & implementation_type::user_set_non_blocking) != 0,
+ this->get_io_service(), handler));
+ }
+ else
+ {
+ // Revert socket to blocking mode unless the user requested otherwise.
+ if (!(impl.flags_ & implementation_type::user_set_non_blocking))
+ {
+ non_blocking = 0;
+ boost::system::error_code ignored_ec;
+ socket_ops::ioctl(impl.socket_, FIONBIO, &non_blocking, ignored_ec);
+ }
+
+ // The connect operation has failed, so post the handler immediately.
+ this->get_io_service().post(bind_handler(handler, ec));
+ }
+ }
+
+private:
+ // Helper function to close a socket when the associated object is being
+ // destroyed.
+ void close_for_destruction(implementation_type& impl)
+ {
+ if (is_open(impl))
+ {
+ // Check if the reactor was created, in which case we need to close the
+ // socket on the reactor as well to cancel any operations that might be
+ // running there.
+ reactor_type* reactor = static_cast<reactor_type*>(
+ interlocked_compare_exchange_pointer(
+ reinterpret_cast<void**>(&reactor_), 0, 0));
+ if (reactor)
+ reactor->close_descriptor(impl.socket_, impl.reactor_data_);
+
+ // The socket destructor must not block. If the user has changed the
+ // linger option to block in the foreground, we will change it back to the
+ // default so that the closure is performed in the background.
+ if (impl.flags_ & implementation_type::close_might_block)
+ {
+ ::linger opt;
+ opt.l_onoff = 0;
+ opt.l_linger = 0;
+ boost::system::error_code ignored_ec;
+ socket_ops::setsockopt(impl.socket_,
+ SOL_SOCKET, SO_LINGER, &opt, sizeof(opt), ignored_ec);
+ }
+
+ boost::system::error_code ignored_ec;
+ socket_ops::close(impl.socket_, ignored_ec);
+ impl.socket_ = invalid_socket;
+ impl.flags_ = 0;
+ impl.cancel_token_.reset();
+#if defined(BOOST_ASIO_ENABLE_CANCELIO)
+ impl.safe_cancellation_thread_id_ = 0;
+#endif // defined(BOOST_ASIO_ENABLE_CANCELIO)
+ }
+ }
+
+ // Helper function to emulate InterlockedCompareExchangePointer functionality
+ // for:
+ // - very old Platform SDKs; and
+ // - platform SDKs where MSVC's /Wp64 option causes spurious warnings.
+ void* interlocked_compare_exchange_pointer(void** dest, void* exch, void* cmp)
+ {
+#if defined(_M_IX86)
+ return reinterpret_cast<void*>(InterlockedCompareExchange(
+ reinterpret_cast<PLONG>(dest), reinterpret_cast<LONG>(exch),
+ reinterpret_cast<LONG>(cmp)));
+#else
+ return InterlockedCompareExchangePointer(dest, exch, cmp);
+#endif
+ }
+
+ // Helper function to emulate InterlockedExchangePointer functionality for:
+ // - very old Platform SDKs; and
+ // - platform SDKs where MSVC's /Wp64 option causes spurious warnings.
+ void* interlocked_exchange_pointer(void** dest, void* val)
+ {
+#if defined(_M_IX86)
+ return reinterpret_cast<void*>(InterlockedExchange(
+ reinterpret_cast<PLONG>(dest), reinterpret_cast<LONG>(val)));
+#else
+ return InterlockedExchangePointer(dest, val);
+#endif
+ }
+
+ // The IOCP service used for running asynchronous operations and dispatching
+ // handlers.
+ win_iocp_io_service& iocp_service_;
+
+ // The reactor used for performing connect operations. This object is created
+ // only if needed.
+ reactor_type* reactor_;
+
+ // Mutex to protect access to the linked list of implementations.
+ boost::asio::detail::mutex mutex_;
+
+ // The head of a linked list of all implementations.
+ implementation_type* impl_list_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_IOCP)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_mutex.hpp b/3rdParty/Boost/boost/asio/detail/win_mutex.hpp
new file mode 100644
index 0000000..f5470c4
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_mutex.hpp
@@ -0,0 +1,151 @@
+//
+// win_mutex.hpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_MUTEX_HPP
+#define BOOST_ASIO_DETAIL_WIN_MUTEX_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/scoped_lock.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class win_mutex
+ : private noncopyable
+{
+public:
+ typedef boost::asio::detail::scoped_lock<win_mutex> scoped_lock;
+
+ // Constructor.
+ win_mutex()
+ {
+ int error = do_init();
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "mutex");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~win_mutex()
+ {
+ ::DeleteCriticalSection(&crit_section_);
+ }
+
+ // Lock the mutex.
+ void lock()
+ {
+ int error = do_lock();
+ if (error != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(error,
+ boost::asio::error::get_system_category()),
+ "mutex");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Unlock the mutex.
+ void unlock()
+ {
+ ::LeaveCriticalSection(&crit_section_);
+ }
+
+private:
+ // Initialisation must be performed in a separate function to the constructor
+ // since the compiler does not support the use of structured exceptions and
+ // C++ exceptions in the same function.
+ int do_init()
+ {
+#if defined(__MINGW32__)
+ // Not sure if MinGW supports structured exception handling, so for now
+ // we'll just call the Windows API and hope.
+ ::InitializeCriticalSection(&crit_section_);
+ return 0;
+#else
+ __try
+ {
+ ::InitializeCriticalSection(&crit_section_);
+ }
+ __except(GetExceptionCode() == STATUS_NO_MEMORY
+ ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
+ {
+ return ERROR_OUTOFMEMORY;
+ }
+
+ return 0;
+#endif
+ }
+
+ // Locking must be performed in a separate function to lock() since the
+ // compiler does not support the use of structured exceptions and C++
+ // exceptions in the same function.
+ int do_lock()
+ {
+#if defined(__MINGW32__)
+ // Not sure if MinGW supports structured exception handling, so for now
+ // we'll just call the Windows API and hope.
+ ::EnterCriticalSection(&crit_section_);
+ return 0;
+#else
+ __try
+ {
+ ::EnterCriticalSection(&crit_section_);
+ }
+ __except(GetExceptionCode() == STATUS_INVALID_HANDLE
+ || GetExceptionCode() == STATUS_NO_MEMORY
+ ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
+ {
+ if (GetExceptionCode() == STATUS_NO_MEMORY)
+ return ERROR_OUTOFMEMORY;
+ return ERROR_INVALID_HANDLE;
+ }
+
+ return 0;
+#endif
+ }
+
+ ::CRITICAL_SECTION crit_section_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_MUTEX_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_signal_blocker.hpp b/3rdParty/Boost/boost/asio/detail/win_signal_blocker.hpp
new file mode 100644
index 0000000..e9b4d37
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_signal_blocker.hpp
@@ -0,0 +1,69 @@
+//
+// win_signal_blocker.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_SIGNAL_BLOCKER_HPP
+#define BOOST_ASIO_DETAIL_WIN_SIGNAL_BLOCKER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#include <boost/asio/detail/noncopyable.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+class win_signal_blocker
+ : private noncopyable
+{
+public:
+ // Constructor blocks all signals for the calling thread.
+ win_signal_blocker()
+ {
+ // No-op.
+ }
+
+ // Destructor restores the previous signal mask.
+ ~win_signal_blocker()
+ {
+ // No-op.
+ }
+
+ // Block all signals for the calling thread.
+ void block()
+ {
+ // No-op.
+ }
+
+ // Restore the previous signal mask.
+ void unblock()
+ {
+ // No-op.
+ }
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_SIGNAL_BLOCKER_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_thread.hpp b/3rdParty/Boost/boost/asio/detail/win_thread.hpp
new file mode 100644
index 0000000..c8058d8
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_thread.hpp
@@ -0,0 +1,234 @@
+//
+// win_thread.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_THREAD_HPP
+#define BOOST_ASIO_DETAIL_WIN_THREAD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS) && !defined(UNDER_CE)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <memory>
+#include <process.h>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+unsigned int __stdcall win_thread_function(void* arg);
+
+#if (WINVER < 0x0500)
+void __stdcall apc_function(ULONG data);
+#else
+void __stdcall apc_function(ULONG_PTR data);
+#endif
+
+template <typename T>
+class win_thread_base
+{
+public:
+ static bool terminate_threads()
+ {
+ return ::InterlockedExchangeAdd(&terminate_threads_, 0) != 0;
+ }
+
+ static void set_terminate_threads(bool b)
+ {
+ ::InterlockedExchange(&terminate_threads_, b ? 1 : 0);
+ }
+
+private:
+ static long terminate_threads_;
+};
+
+template <typename T>
+long win_thread_base<T>::terminate_threads_ = 0;
+
+class win_thread
+ : private noncopyable,
+ public win_thread_base<win_thread>
+{
+public:
+ // Constructor.
+ template <typename Function>
+ win_thread(Function f)
+ : exit_event_(0)
+ {
+ std::auto_ptr<func_base> arg(new func<Function>(f));
+
+ ::HANDLE entry_event = 0;
+ arg->entry_event_ = entry_event = ::CreateEvent(0, true, false, 0);
+ if (!entry_event)
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "thread.entry_event");
+ boost::throw_exception(e);
+ }
+
+ arg->exit_event_ = exit_event_ = ::CreateEvent(0, true, false, 0);
+ if (!exit_event_)
+ {
+ DWORD last_error = ::GetLastError();
+ ::CloseHandle(entry_event);
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "thread.exit_event");
+ boost::throw_exception(e);
+ }
+
+ unsigned int thread_id = 0;
+ thread_ = reinterpret_cast<HANDLE>(::_beginthreadex(0, 0,
+ win_thread_function, arg.get(), 0, &thread_id));
+ if (!thread_)
+ {
+ DWORD last_error = ::GetLastError();
+ if (entry_event)
+ ::CloseHandle(entry_event);
+ if (exit_event_)
+ ::CloseHandle(exit_event_);
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "thread");
+ boost::throw_exception(e);
+ }
+ arg.release();
+
+ if (entry_event)
+ {
+ ::WaitForSingleObject(entry_event, INFINITE);
+ ::CloseHandle(entry_event);
+ }
+ }
+
+ // Destructor.
+ ~win_thread()
+ {
+ ::CloseHandle(thread_);
+
+ // The exit_event_ handle is deliberately allowed to leak here since it
+ // is an error for the owner of an internal thread not to join() it.
+ }
+
+ // Wait for the thread to exit.
+ void join()
+ {
+ ::WaitForSingleObject(exit_event_, INFINITE);
+ ::CloseHandle(exit_event_);
+ if (terminate_threads())
+ {
+ ::TerminateThread(thread_, 0);
+ }
+ else
+ {
+ ::QueueUserAPC(apc_function, thread_, 0);
+ ::WaitForSingleObject(thread_, INFINITE);
+ }
+ }
+
+private:
+ friend unsigned int __stdcall win_thread_function(void* arg);
+
+#if (WINVER < 0x0500)
+ friend void __stdcall apc_function(ULONG);
+#else
+ friend void __stdcall apc_function(ULONG_PTR);
+#endif
+
+ class func_base
+ {
+ public:
+ virtual ~func_base() {}
+ virtual void run() = 0;
+ ::HANDLE entry_event_;
+ ::HANDLE exit_event_;
+ };
+
+ template <typename Function>
+ class func
+ : public func_base
+ {
+ public:
+ func(Function f)
+ : f_(f)
+ {
+ }
+
+ virtual void run()
+ {
+ f_();
+ }
+
+ private:
+ Function f_;
+ };
+
+ ::HANDLE thread_;
+ ::HANDLE exit_event_;
+};
+
+inline unsigned int __stdcall win_thread_function(void* arg)
+{
+ std::auto_ptr<win_thread::func_base> func(
+ static_cast<win_thread::func_base*>(arg));
+
+ ::SetEvent(func->entry_event_);
+
+ func->run();
+
+ // Signal that the thread has finished its work, but rather than returning go
+ // to sleep to put the thread into a well known state. If the thread is being
+ // joined during global object destruction then it may be killed using
+ // TerminateThread (to avoid a deadlock in DllMain). Otherwise, the SleepEx
+ // call will be interrupted using QueueUserAPC and the thread will shut down
+ // cleanly.
+ HANDLE exit_event = func->exit_event_;
+ func.reset();
+ ::SetEvent(exit_event);
+ ::SleepEx(INFINITE, TRUE);
+
+ return 0;
+}
+
+#if (WINVER < 0x0500)
+inline void __stdcall apc_function(ULONG) {}
+#else
+inline void __stdcall apc_function(ULONG_PTR) {}
+#endif
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS) && !defined(UNDER_CE)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_THREAD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/win_tss_ptr.hpp b/3rdParty/Boost/boost/asio/detail/win_tss_ptr.hpp
new file mode 100644
index 0000000..5c56454
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/win_tss_ptr.hpp
@@ -0,0 +1,97 @@
+//
+// win_tss_ptr.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WIN_TSS_PTR_HPP
+#define BOOST_ASIO_DETAIL_WIN_TSS_PTR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename T>
+class win_tss_ptr
+ : private noncopyable
+{
+public:
+#if defined(UNDER_CE)
+ enum { out_of_indexes = 0xFFFFFFFF };
+#else
+ enum { out_of_indexes = TLS_OUT_OF_INDEXES };
+#endif
+
+ // Constructor.
+ win_tss_ptr()
+ {
+ tss_key_ = ::TlsAlloc();
+ if (tss_key_ == out_of_indexes)
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "tss");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~win_tss_ptr()
+ {
+ ::TlsFree(tss_key_);
+ }
+
+ // Get the value.
+ operator T*() const
+ {
+ return static_cast<T*>(::TlsGetValue(tss_key_));
+ }
+
+ // Set the value.
+ void operator=(T* value)
+ {
+ ::TlsSetValue(tss_key_, value);
+ }
+
+private:
+ // Thread-specific storage to allow unlocked access to determine whether a
+ // thread is a member of the pool.
+ DWORD tss_key_;
+};
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WIN_TSS_PTR_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/wince_thread.hpp b/3rdParty/Boost/boost/asio/detail/wince_thread.hpp
new file mode 100644
index 0000000..7b24ec2
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/wince_thread.hpp
@@ -0,0 +1,126 @@
+//
+// wince_thread.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WINCE_THREAD_HPP
+#define BOOST_ASIO_DETAIL_WINCE_THREAD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS) && defined(UNDER_CE)
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <memory>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+DWORD WINAPI wince_thread_function(LPVOID arg);
+
+class wince_thread
+ : private noncopyable
+{
+public:
+ // Constructor.
+ template <typename Function>
+ wince_thread(Function f)
+ {
+ std::auto_ptr<func_base> arg(new func<Function>(f));
+ DWORD thread_id = 0;
+ thread_ = ::CreateThread(0, 0, wince_thread_function,
+ arg.get(), 0, &thread_id);
+ if (!thread_)
+ {
+ DWORD last_error = ::GetLastError();
+ boost::system::system_error e(
+ boost::system::error_code(last_error,
+ boost::asio::error::get_system_category()),
+ "thread");
+ boost::throw_exception(e);
+ }
+ arg.release();
+ }
+
+ // Destructor.
+ ~wince_thread()
+ {
+ ::CloseHandle(thread_);
+ }
+
+ // Wait for the thread to exit.
+ void join()
+ {
+ ::WaitForSingleObject(thread_, INFINITE);
+ }
+
+private:
+ friend DWORD WINAPI wince_thread_function(LPVOID arg);
+
+ class func_base
+ {
+ public:
+ virtual ~func_base() {}
+ virtual void run() = 0;
+ };
+
+ template <typename Function>
+ class func
+ : public func_base
+ {
+ public:
+ func(Function f)
+ : f_(f)
+ {
+ }
+
+ virtual void run()
+ {
+ f_();
+ }
+
+ private:
+ Function f_;
+ };
+
+ ::HANDLE thread_;
+};
+
+inline DWORD WINAPI wince_thread_function(LPVOID arg)
+{
+ std::auto_ptr<wince_thread::func_base> func(
+ static_cast<wince_thread::func_base*>(arg));
+ func->run();
+ return 0;
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS) && defined(UNDER_CE)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WINCE_THREAD_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/winsock_init.hpp b/3rdParty/Boost/boost/asio/detail/winsock_init.hpp
new file mode 100644
index 0000000..827cf58
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/winsock_init.hpp
@@ -0,0 +1,122 @@
+//
+// winsock_init.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WINSOCK_INIT_HPP
+#define BOOST_ASIO_DETAIL_WINSOCK_INIT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <int Major = 2, int Minor = 0>
+class winsock_init
+ : private noncopyable
+{
+private:
+ // Structure to perform the actual initialisation.
+ struct do_init
+ {
+ do_init()
+ {
+ WSADATA wsa_data;
+ result_ = ::WSAStartup(MAKEWORD(Major, Minor), &wsa_data);
+ }
+
+ ~do_init()
+ {
+ ::WSACleanup();
+ }
+
+ int result() const
+ {
+ return result_;
+ }
+
+ // Helper function to manage a do_init singleton. The static instance of the
+ // winsock_init object ensures that this function is always called before
+ // main, and therefore before any other threads can get started. The do_init
+ // instance must be static in this function to ensure that it gets
+ // initialised before any other global objects try to use it.
+ static boost::shared_ptr<do_init> instance()
+ {
+ static boost::shared_ptr<do_init> init(new do_init);
+ return init;
+ }
+
+ private:
+ int result_;
+ };
+
+public:
+ // Constructor.
+ winsock_init()
+ : ref_(do_init::instance())
+ {
+ // Check whether winsock was successfully initialised. This check is not
+ // performed for the global instance since there will be nobody around to
+ // catch the exception.
+ if (this != &instance_ && ref_->result() != 0)
+ {
+ boost::system::system_error e(
+ boost::system::error_code(ref_->result(),
+ boost::asio::error::get_system_category()),
+ "winsock");
+ boost::throw_exception(e);
+ }
+ }
+
+ // Destructor.
+ ~winsock_init()
+ {
+ }
+
+private:
+ // Instance to force initialisation of winsock at global scope.
+ static winsock_init instance_;
+
+ // Reference to singleton do_init object to ensure that winsock does not get
+ // cleaned up until the last user has finished with it.
+ boost::shared_ptr<do_init> ref_;
+};
+
+template <int Major, int Minor>
+winsock_init<Major, Minor> winsock_init<Major, Minor>::instance_;
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WINSOCK_INIT_HPP
diff --git a/3rdParty/Boost/boost/asio/detail/wrapped_handler.hpp b/3rdParty/Boost/boost/asio/detail/wrapped_handler.hpp
new file mode 100644
index 0000000..64fc729
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/detail/wrapped_handler.hpp
@@ -0,0 +1,211 @@
+//
+// wrapped_handler.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_DETAIL_WRAPPED_HANDLER_HPP
+#define BOOST_ASIO_DETAIL_WRAPPED_HANDLER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/type_traits.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+
+namespace boost {
+namespace asio {
+namespace detail {
+
+template <typename Dispatcher, typename Handler>
+class wrapped_handler
+{
+public:
+ typedef void result_type;
+
+ wrapped_handler(
+ typename boost::add_reference<Dispatcher>::type dispatcher,
+ Handler handler)
+ : dispatcher_(dispatcher),
+ handler_(handler)
+ {
+ }
+
+ void operator()()
+ {
+ dispatcher_.dispatch(handler_);
+ }
+
+ void operator()() const
+ {
+ dispatcher_.dispatch(handler_);
+ }
+
+ template <typename Arg1>
+ void operator()(const Arg1& arg1)
+ {
+ dispatcher_.dispatch(detail::bind_handler(handler_, arg1));
+ }
+
+ template <typename Arg1>
+ void operator()(const Arg1& arg1) const
+ {
+ dispatcher_.dispatch(detail::bind_handler(handler_, arg1));
+ }
+
+ template <typename Arg1, typename Arg2>
+ void operator()(const Arg1& arg1, const Arg2& arg2)
+ {
+ dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2));
+ }
+
+ template <typename Arg1, typename Arg2>
+ void operator()(const Arg1& arg1, const Arg2& arg2) const
+ {
+ dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2));
+ }
+
+ template <typename Arg1, typename Arg2, typename Arg3>
+ void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3)
+ {
+ dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3));
+ }
+
+ template <typename Arg1, typename Arg2, typename Arg3>
+ void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3) const
+ {
+ dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3));
+ }
+
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
+ const Arg4& arg4)
+ {
+ dispatcher_.dispatch(
+ detail::bind_handler(handler_, arg1, arg2, arg3, arg4));
+ }
+
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
+ const Arg4& arg4) const
+ {
+ dispatcher_.dispatch(
+ detail::bind_handler(handler_, arg1, arg2, arg3, arg4));
+ }
+
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
+ typename Arg5>
+ void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
+ const Arg4& arg4, const Arg5& arg5)
+ {
+ dispatcher_.dispatch(
+ detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5));
+ }
+
+ template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
+ typename Arg5>
+ void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
+ const Arg4& arg4, const Arg5& arg5) const
+ {
+ dispatcher_.dispatch(
+ detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5));
+ }
+
+//private:
+ Dispatcher dispatcher_;
+ Handler handler_;
+};
+
+template <typename Handler, typename Context>
+class rewrapped_handler
+{
+public:
+ explicit rewrapped_handler(const Handler& handler, const Context& context)
+ : handler_(handler),
+ context_(context)
+ {
+ }
+
+ void operator()()
+ {
+ handler_();
+ }
+
+ void operator()() const
+ {
+ handler_();
+ }
+
+//private:
+ Handler handler_;
+ Context context_;
+};
+
+template <typename Dispatcher, typename Handler>
+inline void* asio_handler_allocate(std::size_t size,
+ wrapped_handler<Dispatcher, Handler>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+}
+
+template <typename Dispatcher, typename Handler>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ wrapped_handler<Dispatcher, Handler>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+}
+
+template <typename Function, typename Dispatcher, typename Handler>
+inline void asio_handler_invoke(const Function& function,
+ wrapped_handler<Dispatcher, Handler>* this_handler)
+{
+ this_handler->dispatcher_.dispatch(
+ rewrapped_handler<Function, Handler>(
+ function, this_handler->handler_));
+}
+
+template <typename Handler, typename Context>
+inline void* asio_handler_allocate(std::size_t size,
+ rewrapped_handler<Handler, Context>* this_handler)
+{
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->context_);
+}
+
+template <typename Handler, typename Context>
+inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ rewrapped_handler<Handler, Context>* this_handler)
+{
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->context_);
+}
+
+template <typename Function, typename Handler, typename Context>
+inline void asio_handler_invoke(const Function& function,
+ rewrapped_handler<Handler, Context>* this_handler)
+{
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->context_);
+}
+
+} // namespace detail
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_DETAIL_WRAPPED_HANDLER_HPP
diff --git a/3rdParty/Boost/boost/asio/error.hpp b/3rdParty/Boost/boost/asio/error.hpp
new file mode 100644
index 0000000..0101945
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/error.hpp
@@ -0,0 +1,442 @@
+//
+// error.hpp
+// ~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_ERROR_HPP
+#define BOOST_ASIO_ERROR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/cerrno.hpp>
+#include <boost/system/error_code.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+#if defined(GENERATING_DOCUMENTATION)
+/// INTERNAL ONLY.
+# define BOOST_ASIO_NATIVE_ERROR(e) implementation_defined
+/// INTERNAL ONLY.
+# define BOOST_ASIO_SOCKET_ERROR(e) implementation_defined
+/// INTERNAL ONLY.
+# define BOOST_ASIO_NETDB_ERROR(e) implementation_defined
+/// INTERNAL ONLY.
+# define BOOST_ASIO_GETADDRINFO_ERROR(e) implementation_defined
+/// INTERNAL ONLY.
+# define BOOST_ASIO_WIN_OR_POSIX(e_win, e_posix) implementation_defined
+#elif defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# define BOOST_ASIO_NATIVE_ERROR(e) e
+# define BOOST_ASIO_SOCKET_ERROR(e) WSA ## e
+# define BOOST_ASIO_NETDB_ERROR(e) WSA ## e
+# define BOOST_ASIO_GETADDRINFO_ERROR(e) WSA ## e
+# define BOOST_ASIO_WIN_OR_POSIX(e_win, e_posix) e_win
+#else
+# define BOOST_ASIO_NATIVE_ERROR(e) e
+# define BOOST_ASIO_SOCKET_ERROR(e) e
+# define BOOST_ASIO_NETDB_ERROR(e) e
+# define BOOST_ASIO_GETADDRINFO_ERROR(e) e
+# define BOOST_ASIO_WIN_OR_POSIX(e_win, e_posix) e_posix
+#endif
+
+namespace boost {
+namespace asio {
+namespace error {
+
+enum basic_errors
+{
+ /// Permission denied.
+ access_denied = BOOST_ASIO_SOCKET_ERROR(EACCES),
+
+ /// Address family not supported by protocol.
+ address_family_not_supported = BOOST_ASIO_SOCKET_ERROR(EAFNOSUPPORT),
+
+ /// Address already in use.
+ address_in_use = BOOST_ASIO_SOCKET_ERROR(EADDRINUSE),
+
+ /// Transport endpoint is already connected.
+ already_connected = BOOST_ASIO_SOCKET_ERROR(EISCONN),
+
+ /// Operation already in progress.
+ already_started = BOOST_ASIO_SOCKET_ERROR(EALREADY),
+
+ /// Broken pipe.
+ broken_pipe = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE),
+ BOOST_ASIO_NATIVE_ERROR(EPIPE)),
+
+ /// A connection has been aborted.
+ connection_aborted = BOOST_ASIO_SOCKET_ERROR(ECONNABORTED),
+
+ /// Connection refused.
+ connection_refused = BOOST_ASIO_SOCKET_ERROR(ECONNREFUSED),
+
+ /// Connection reset by peer.
+ connection_reset = BOOST_ASIO_SOCKET_ERROR(ECONNRESET),
+
+ /// Bad file descriptor.
+ bad_descriptor = BOOST_ASIO_SOCKET_ERROR(EBADF),
+
+ /// Bad address.
+ fault = BOOST_ASIO_SOCKET_ERROR(EFAULT),
+
+ /// No route to host.
+ host_unreachable = BOOST_ASIO_SOCKET_ERROR(EHOSTUNREACH),
+
+ /// Operation now in progress.
+ in_progress = BOOST_ASIO_SOCKET_ERROR(EINPROGRESS),
+
+ /// Interrupted system call.
+ interrupted = BOOST_ASIO_SOCKET_ERROR(EINTR),
+
+ /// Invalid argument.
+ invalid_argument = BOOST_ASIO_SOCKET_ERROR(EINVAL),
+
+ /// Message too long.
+ message_size = BOOST_ASIO_SOCKET_ERROR(EMSGSIZE),
+
+ /// The name was too long.
+ name_too_long = BOOST_ASIO_SOCKET_ERROR(ENAMETOOLONG),
+
+ /// Network is down.
+ network_down = BOOST_ASIO_SOCKET_ERROR(ENETDOWN),
+
+ /// Network dropped connection on reset.
+ network_reset = BOOST_ASIO_SOCKET_ERROR(ENETRESET),
+
+ /// Network is unreachable.
+ network_unreachable = BOOST_ASIO_SOCKET_ERROR(ENETUNREACH),
+
+ /// Too many open files.
+ no_descriptors = BOOST_ASIO_SOCKET_ERROR(EMFILE),
+
+ /// No buffer space available.
+ no_buffer_space = BOOST_ASIO_SOCKET_ERROR(ENOBUFS),
+
+ /// Cannot allocate memory.
+ no_memory = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(ERROR_OUTOFMEMORY),
+ BOOST_ASIO_NATIVE_ERROR(ENOMEM)),
+
+ /// Operation not permitted.
+ no_permission = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(ERROR_ACCESS_DENIED),
+ BOOST_ASIO_NATIVE_ERROR(EPERM)),
+
+ /// Protocol not available.
+ no_protocol_option = BOOST_ASIO_SOCKET_ERROR(ENOPROTOOPT),
+
+ /// Transport endpoint is not connected.
+ not_connected = BOOST_ASIO_SOCKET_ERROR(ENOTCONN),
+
+ /// Socket operation on non-socket.
+ not_socket = BOOST_ASIO_SOCKET_ERROR(ENOTSOCK),
+
+ /// Operation cancelled.
+ operation_aborted = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(ERROR_OPERATION_ABORTED),
+ BOOST_ASIO_NATIVE_ERROR(ECANCELED)),
+
+ /// Operation not supported.
+ operation_not_supported = BOOST_ASIO_SOCKET_ERROR(EOPNOTSUPP),
+
+ /// Cannot send after transport endpoint shutdown.
+ shut_down = BOOST_ASIO_SOCKET_ERROR(ESHUTDOWN),
+
+ /// Connection timed out.
+ timed_out = BOOST_ASIO_SOCKET_ERROR(ETIMEDOUT),
+
+ /// Resource temporarily unavailable.
+ try_again = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(ERROR_RETRY),
+ BOOST_ASIO_NATIVE_ERROR(EAGAIN)),
+
+ /// The socket is marked non-blocking and the requested operation would block.
+ would_block = BOOST_ASIO_SOCKET_ERROR(EWOULDBLOCK)
+};
+
+enum netdb_errors
+{
+ /// Host not found (authoritative).
+ host_not_found = BOOST_ASIO_NETDB_ERROR(HOST_NOT_FOUND),
+
+ /// Host not found (non-authoritative).
+ host_not_found_try_again = BOOST_ASIO_NETDB_ERROR(TRY_AGAIN),
+
+ /// The query is valid but does not have associated address data.
+ no_data = BOOST_ASIO_NETDB_ERROR(NO_DATA),
+
+ /// A non-recoverable error occurred.
+ no_recovery = BOOST_ASIO_NETDB_ERROR(NO_RECOVERY)
+};
+
+enum addrinfo_errors
+{
+ /// The service is not supported for the given socket type.
+ service_not_found = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(WSATYPE_NOT_FOUND),
+ BOOST_ASIO_GETADDRINFO_ERROR(EAI_SERVICE)),
+
+ /// The socket type is not supported.
+ socket_type_not_supported = BOOST_ASIO_WIN_OR_POSIX(
+ BOOST_ASIO_NATIVE_ERROR(WSAESOCKTNOSUPPORT),
+ BOOST_ASIO_GETADDRINFO_ERROR(EAI_SOCKTYPE))
+};
+
+enum misc_errors
+{
+ /// Already open.
+ already_open = 1,
+
+ /// End of file or stream.
+ eof,
+
+ /// Element not found.
+ not_found,
+
+ /// The descriptor cannot fit into the select system call's fd_set.
+ fd_set_failure
+};
+
+enum ssl_errors
+{
+};
+
+inline const boost::system::error_category& get_system_category()
+{
+ return boost::system::get_system_category();
+}
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+namespace detail {
+
+class netdb_category : public boost::system::error_category
+{
+public:
+ const char* name() const
+ {
+ return "asio.netdb";
+ }
+
+ std::string message(int value) const
+ {
+ if (value == error::host_not_found)
+ return "Host not found (authoritative)";
+ if (value == error::host_not_found_try_again)
+ return "Host not found (non-authoritative), try again later";
+ if (value == error::no_data)
+ return "The query is valid, but it does not have associated data";
+ if (value == error::no_recovery)
+ return "A non-recoverable error occurred during database lookup";
+ return "asio.netdb error";
+ }
+};
+
+} // namespace detail
+
+inline const boost::system::error_category& get_netdb_category()
+{
+ static detail::netdb_category instance;
+ return instance;
+}
+
+namespace detail {
+
+class addrinfo_category : public boost::system::error_category
+{
+public:
+ const char* name() const
+ {
+ return "asio.addrinfo";
+ }
+
+ std::string message(int value) const
+ {
+ if (value == error::service_not_found)
+ return "Service not found";
+ if (value == error::socket_type_not_supported)
+ return "Socket type not supported";
+ return "asio.addrinfo error";
+ }
+};
+
+} // namespace detail
+
+inline const boost::system::error_category& get_addrinfo_category()
+{
+ static detail::addrinfo_category instance;
+ return instance;
+}
+
+#else // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+inline const boost::system::error_category& get_netdb_category()
+{
+ return get_system_category();
+}
+
+inline const boost::system::error_category& get_addrinfo_category()
+{
+ return get_system_category();
+}
+
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+namespace detail {
+
+class misc_category : public boost::system::error_category
+{
+public:
+ const char* name() const
+ {
+ return "asio.misc";
+ }
+
+ std::string message(int value) const
+ {
+ if (value == error::already_open)
+ return "Already open";
+ if (value == error::eof)
+ return "End of file";
+ if (value == error::not_found)
+ return "Element not found";
+ if (value == error::fd_set_failure)
+ return "The descriptor does not fit into the select call's fd_set";
+ return "asio.misc error";
+ }
+};
+
+} // namespace detail
+
+inline const boost::system::error_category& get_misc_category()
+{
+ static detail::misc_category instance;
+ return instance;
+}
+
+namespace detail {
+
+class ssl_category : public boost::system::error_category
+{
+public:
+ const char* name() const
+ {
+ return "asio.ssl";
+ }
+
+ std::string message(int) const
+ {
+ return "asio.ssl error";
+ }
+};
+
+} // namespace detail
+
+inline const boost::system::error_category& get_ssl_category()
+{
+ static detail::ssl_category instance;
+ return instance;
+}
+
+static const boost::system::error_category& system_category
+ = boost::asio::error::get_system_category();
+static const boost::system::error_category& netdb_category
+ = boost::asio::error::get_netdb_category();
+static const boost::system::error_category& addrinfo_category
+ = boost::asio::error::get_addrinfo_category();
+static const boost::system::error_category& misc_category
+ = boost::asio::error::get_misc_category();
+static const boost::system::error_category& ssl_category
+ = boost::asio::error::get_ssl_category();
+
+} // namespace error
+} // namespace asio
+
+namespace system {
+
+template<> struct is_error_code_enum<boost::asio::error::basic_errors>
+{
+ static const bool value = true;
+};
+
+template<> struct is_error_code_enum<boost::asio::error::netdb_errors>
+{
+ static const bool value = true;
+};
+
+template<> struct is_error_code_enum<boost::asio::error::addrinfo_errors>
+{
+ static const bool value = true;
+};
+
+template<> struct is_error_code_enum<boost::asio::error::misc_errors>
+{
+ static const bool value = true;
+};
+
+template<> struct is_error_code_enum<boost::asio::error::ssl_errors>
+{
+ static const bool value = true;
+};
+
+} // namespace system
+
+namespace asio {
+namespace error {
+
+inline boost::system::error_code make_error_code(basic_errors e)
+{
+ return boost::system::error_code(
+ static_cast<int>(e), get_system_category());
+}
+
+inline boost::system::error_code make_error_code(netdb_errors e)
+{
+ return boost::system::error_code(
+ static_cast<int>(e), get_netdb_category());
+}
+
+inline boost::system::error_code make_error_code(addrinfo_errors e)
+{
+ return boost::system::error_code(
+ static_cast<int>(e), get_addrinfo_category());
+}
+
+inline boost::system::error_code make_error_code(misc_errors e)
+{
+ return boost::system::error_code(
+ static_cast<int>(e), get_misc_category());
+}
+
+inline boost::system::error_code make_error_code(ssl_errors e)
+{
+ return boost::system::error_code(
+ static_cast<int>(e), get_ssl_category());
+}
+
+} // namespace error
+} // namespace asio
+} // namespace boost
+
+#undef BOOST_ASIO_NATIVE_ERROR
+#undef BOOST_ASIO_SOCKET_ERROR
+#undef BOOST_ASIO_NETDB_ERROR
+#undef BOOST_ASIO_GETADDRINFO_ERROR
+#undef BOOST_ASIO_WIN_OR_POSIX
+
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_ERROR_HPP
diff --git a/3rdParty/Boost/boost/asio/handler_alloc_hook.hpp b/3rdParty/Boost/boost/asio/handler_alloc_hook.hpp
new file mode 100644
index 0000000..e949529
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/handler_alloc_hook.hpp
@@ -0,0 +1,90 @@
+//
+// handler_alloc_hook.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_HANDLER_ALLOC_HOOK_HPP
+#define BOOST_ASIO_HANDLER_ALLOC_HOOK_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default allocation function for handlers.
+/**
+ * Asynchronous operations may need to allocate temporary objects. Since
+ * asynchronous operations have a handler function object, these temporary
+ * objects can be said to be associated with the handler.
+ *
+ * Implement asio_handler_allocate and asio_handler_deallocate for your own
+ * handlers to provide custom allocation for these temporary objects.
+ *
+ * This default implementation is simply:
+ * @code
+ * return ::operator new(size);
+ * @endcode
+ *
+ * @note All temporary objects associated with a handler will be deallocated
+ * before the upcall to the handler is performed. This allows the same memory to
+ * be reused for a subsequent asynchronous operation initiated by the handler.
+ *
+ * @par Example
+ * @code
+ * class my_handler;
+ *
+ * void* asio_handler_allocate(std::size_t size, my_handler* context)
+ * {
+ * return ::operator new(size);
+ * }
+ *
+ * void asio_handler_deallocate(void* pointer, std::size_t size,
+ * my_handler* context)
+ * {
+ * ::operator delete(pointer);
+ * }
+ * @endcode
+ */
+inline void* asio_handler_allocate(std::size_t size, ...)
+{
+ return ::operator new(size);
+}
+
+/// Default deallocation function for handlers.
+/**
+ * Implement asio_handler_allocate and asio_handler_deallocate for your own
+ * handlers to provide custom allocation for the associated temporary objects.
+ *
+ * This default implementation is simply:
+ * @code
+ * ::operator delete(pointer);
+ * @endcode
+ *
+ * @sa asio_handler_allocate.
+ */
+inline void asio_handler_deallocate(void* pointer, std::size_t size, ...)
+{
+ (void)(size);
+ ::operator delete(pointer);
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_HANDLER_ALLOC_HOOK_HPP
diff --git a/3rdParty/Boost/boost/asio/handler_invoke_hook.hpp b/3rdParty/Boost/boost/asio/handler_invoke_hook.hpp
new file mode 100644
index 0000000..d70a717
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/handler_invoke_hook.hpp
@@ -0,0 +1,71 @@
+//
+// handler_invoke_hook.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_HANDLER_INVOKE_HOOK_HPP
+#define BOOST_ASIO_HANDLER_INVOKE_HOOK_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default invoke function for handlers.
+/**
+ * Completion handlers for asynchronous operations are invoked by the
+ * io_service associated with the corresponding object (e.g. a socket or
+ * deadline_timer). Certain guarantees are made on when the handler may be
+ * invoked, in particular that a handler can only be invoked from a thread that
+ * is currently calling boost::asio::io_service::run() on the corresponding
+ * io_service object. Handlers may subsequently be invoked through other
+ * objects (such as boost::asio::strand objects) that provide additional
+ * guarantees.
+ *
+ * When asynchronous operations are composed from other asynchronous
+ * operations, all intermediate handlers should be invoked using the same
+ * method as the final handler. This is required to ensure that user-defined
+ * objects are not accessed in a way that may violate the guarantees. This
+ * hooking function ensures that the invoked method used for the final handler
+ * is accessible at each intermediate step.
+ *
+ * Implement asio_handler_invoke for your own handlers to specify a custom
+ * invocation strategy.
+ *
+ * This default implementation is simply:
+ * @code
+ * function();
+ * @endcode
+ *
+ * @par Example
+ * @code
+ * class my_handler;
+ *
+ * template <typename Function>
+ * void asio_handler_invoke(Function function, my_handler* context)
+ * {
+ * context->strand_.dispatch(function);
+ * }
+ * @endcode
+ */
+template <typename Function>
+inline void asio_handler_invoke(Function function, ...)
+{
+ function();
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_HANDLER_INVOKE_HOOK_HPP
diff --git a/3rdParty/Boost/boost/asio/impl/io_service.ipp b/3rdParty/Boost/boost/asio/impl/io_service.ipp
new file mode 100644
index 0000000..e936f36
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/io_service.ipp
@@ -0,0 +1,226 @@
+//
+// io_service.ipp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IO_SERVICE_IPP
+#define BOOST_ASIO_IO_SERVICE_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <limits>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/dev_poll_reactor.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_registry.hpp>
+#include <boost/asio/detail/task_io_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+#include <boost/asio/detail/win_iocp_io_service.hpp>
+
+namespace boost {
+namespace asio {
+
+inline io_service::io_service()
+ : service_registry_(new boost::asio::detail::service_registry(*this)),
+ impl_(service_registry_->use_service<impl_type>())
+{
+ impl_.init((std::numeric_limits<std::size_t>::max)());
+}
+
+inline io_service::io_service(std::size_t concurrency_hint)
+ : service_registry_(new boost::asio::detail::service_registry(*this)),
+ impl_(service_registry_->use_service<impl_type>())
+{
+ impl_.init(concurrency_hint);
+}
+
+inline io_service::~io_service()
+{
+ delete service_registry_;
+}
+
+inline std::size_t io_service::run()
+{
+ boost::system::error_code ec;
+ std::size_t s = impl_.run(ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+}
+
+inline std::size_t io_service::run(boost::system::error_code& ec)
+{
+ return impl_.run(ec);
+}
+
+inline std::size_t io_service::run_one()
+{
+ boost::system::error_code ec;
+ std::size_t s = impl_.run_one(ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+}
+
+inline std::size_t io_service::run_one(boost::system::error_code& ec)
+{
+ return impl_.run_one(ec);
+}
+
+inline std::size_t io_service::poll()
+{
+ boost::system::error_code ec;
+ std::size_t s = impl_.poll(ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+}
+
+inline std::size_t io_service::poll(boost::system::error_code& ec)
+{
+ return impl_.poll(ec);
+}
+
+inline std::size_t io_service::poll_one()
+{
+ boost::system::error_code ec;
+ std::size_t s = impl_.poll_one(ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+}
+
+inline std::size_t io_service::poll_one(boost::system::error_code& ec)
+{
+ return impl_.poll_one(ec);
+}
+
+inline void io_service::stop()
+{
+ impl_.stop();
+}
+
+inline void io_service::reset()
+{
+ impl_.reset();
+}
+
+template <typename Handler>
+inline void io_service::dispatch(Handler handler)
+{
+ impl_.dispatch(handler);
+}
+
+template <typename Handler>
+inline void io_service::post(Handler handler)
+{
+ impl_.post(handler);
+}
+
+template <typename Handler>
+#if defined(GENERATING_DOCUMENTATION)
+unspecified
+#else
+inline detail::wrapped_handler<io_service&, Handler>
+#endif
+io_service::wrap(Handler handler)
+{
+ return detail::wrapped_handler<io_service&, Handler>(*this, handler);
+}
+
+inline io_service::work::work(boost::asio::io_service& io_service)
+ : io_service_(io_service)
+{
+ io_service_.impl_.work_started();
+}
+
+inline io_service::work::work(const work& other)
+ : io_service_(other.io_service_)
+{
+ io_service_.impl_.work_started();
+}
+
+inline io_service::work::~work()
+{
+ io_service_.impl_.work_finished();
+}
+
+inline boost::asio::io_service& io_service::work::io_service()
+{
+ return io_service_;
+}
+
+inline boost::asio::io_service& io_service::work::get_io_service()
+{
+ return io_service_;
+}
+
+inline io_service::service::service(boost::asio::io_service& owner)
+ : owner_(owner),
+ type_info_(0),
+ next_(0)
+{
+}
+
+inline io_service::service::~service()
+{
+}
+
+inline boost::asio::io_service& io_service::service::io_service()
+{
+ return owner_;
+}
+
+inline boost::asio::io_service& io_service::service::get_io_service()
+{
+ return owner_;
+}
+
+template <typename Service>
+inline Service& use_service(io_service& ios)
+{
+ // Check that Service meets the necessary type requirements.
+ (void)static_cast<io_service::service*>(static_cast<Service*>(0));
+ (void)static_cast<const io_service::id*>(&Service::id);
+
+ return ios.service_registry_->template use_service<Service>();
+}
+
+template <typename Service>
+void add_service(io_service& ios, Service* svc)
+{
+ // Check that Service meets the necessary type requirements.
+ (void)static_cast<io_service::service*>(static_cast<Service*>(0));
+ (void)static_cast<const io_service::id*>(&Service::id);
+
+ if (&ios != &svc->io_service())
+ boost::throw_exception(invalid_service_owner());
+ if (!ios.service_registry_->template add_service<Service>(svc))
+ boost::throw_exception(service_already_exists());
+}
+
+template <typename Service>
+bool has_service(io_service& ios)
+{
+ // Check that Service meets the necessary type requirements.
+ (void)static_cast<io_service::service*>(static_cast<Service*>(0));
+ (void)static_cast<const io_service::id*>(&Service::id);
+
+ return ios.service_registry_->template has_service<Service>();
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IO_SERVICE_IPP
diff --git a/3rdParty/Boost/boost/asio/impl/read.ipp b/3rdParty/Boost/boost/asio/impl/read.ipp
new file mode 100644
index 0000000..453f697
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/read.ipp
@@ -0,0 +1,349 @@
+//
+// read.ipp
+// ~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_READ_IPP
+#define BOOST_ASIO_READ_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <algorithm>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/consuming_buffers.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename SyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition>
+std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ ec = boost::system::error_code();
+ boost::asio::detail::consuming_buffers<
+ mutable_buffer, MutableBufferSequence> tmp(buffers);
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ while (tmp.begin() != tmp.end())
+ {
+ std::size_t bytes_transferred = s.read_some(tmp, ec);
+ tmp.consume(bytes_transferred);
+ total_transferred += bytes_transferred;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ }
+ return total_transferred;
+}
+
+template <typename SyncReadStream, typename MutableBufferSequence>
+inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read(s, buffers, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition>
+inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read(s, buffers, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncReadStream, typename Allocator,
+ typename CompletionCondition>
+std::size_t read(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ ec = boost::system::error_code();
+ std::size_t total_transferred = 0;
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
+ while (bytes_available > 0)
+ {
+ std::size_t bytes_transferred = s.read_some(b.prepare(bytes_available), ec);
+ b.commit(bytes_transferred);
+ total_transferred += bytes_transferred;
+ max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
+ }
+ return total_transferred;
+}
+
+template <typename SyncReadStream, typename Allocator>
+inline std::size_t read(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read(s, b, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncReadStream, typename Allocator,
+ typename CompletionCondition>
+inline std::size_t read(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read(s, b, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+namespace detail
+{
+ template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+ class read_handler
+ {
+ public:
+ typedef boost::asio::detail::consuming_buffers<
+ mutable_buffer, MutableBufferSequence> buffers_type;
+
+ read_handler(AsyncReadStream& stream, const buffers_type& buffers,
+ CompletionCondition completion_condition, ReadHandler handler)
+ : stream_(stream),
+ buffers_(buffers),
+ total_transferred_(0),
+ completion_condition_(completion_condition),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ total_transferred_ += bytes_transferred;
+ buffers_.consume(bytes_transferred);
+ buffers_.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_)));
+ if (buffers_.begin() == buffers_.end())
+ {
+ handler_(ec, total_transferred_);
+ }
+ else
+ {
+ stream_.async_read_some(buffers_, *this);
+ }
+ }
+
+ //private:
+ AsyncReadStream& stream_;
+ buffers_type buffers_;
+ std::size_t total_transferred_;
+ CompletionCondition completion_condition_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_handler<AsyncReadStream, MutableBufferSequence,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_handler<AsyncReadStream, MutableBufferSequence,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncReadStream,
+ typename MutableBufferSequence, typename CompletionCondition,
+ typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_handler<AsyncReadStream, MutableBufferSequence,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+inline void async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, ReadHandler handler)
+{
+ boost::asio::detail::consuming_buffers<
+ mutable_buffer, MutableBufferSequence> tmp(buffers);
+
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ if (tmp.begin() == tmp.end())
+ {
+ s.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
+ s.async_read_some(tmp,
+ detail::read_handler<AsyncReadStream, MutableBufferSequence,
+ CompletionCondition, ReadHandler>(
+ s, tmp, completion_condition, handler));
+}
+
+template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename ReadHandler>
+inline void async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
+ ReadHandler handler)
+{
+ async_read(s, buffers, transfer_all(), handler);
+}
+
+namespace detail
+{
+ template <typename AsyncReadStream, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+ class read_streambuf_handler
+ {
+ public:
+ read_streambuf_handler(AsyncReadStream& stream,
+ basic_streambuf<Allocator>& streambuf,
+ CompletionCondition completion_condition, ReadHandler handler)
+ : stream_(stream),
+ streambuf_(streambuf),
+ total_transferred_(0),
+ completion_condition_(completion_condition),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ total_transferred_ += bytes_transferred;
+ streambuf_.commit(bytes_transferred);
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size,
+ streambuf_.max_size() - streambuf_.size()));
+ if (bytes_available == 0)
+ {
+ handler_(ec, total_transferred_);
+ }
+ else
+ {
+ stream_.async_read_some(streambuf_.prepare(bytes_available), *this);
+ }
+ }
+
+ //private:
+ AsyncReadStream& stream_;
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ std::size_t total_transferred_;
+ CompletionCondition completion_condition_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncReadStream, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_streambuf_handler<AsyncReadStream, Allocator,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncReadStream, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_streambuf_handler<AsyncReadStream, Allocator,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncReadStream,
+ typename Allocator, typename CompletionCondition, typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_streambuf_handler<AsyncReadStream, Allocator,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncReadStream, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+inline void async_read(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, ReadHandler handler)
+{
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
+ if (bytes_available == 0)
+ {
+ s.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
+ s.async_read_some(b.prepare(bytes_available),
+ detail::read_streambuf_handler<AsyncReadStream, Allocator,
+ CompletionCondition, ReadHandler>(
+ s, b, completion_condition, handler));
+}
+
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+inline void async_read(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, ReadHandler handler)
+{
+ async_read(s, b, transfer_all(), handler);
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_READ_IPP
diff --git a/3rdParty/Boost/boost/asio/impl/read_at.ipp b/3rdParty/Boost/boost/asio/impl/read_at.ipp
new file mode 100644
index 0000000..bf8a36d
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/read_at.ipp
@@ -0,0 +1,367 @@
+//
+// read_at.ipp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_READ_AT_IPP
+#define BOOST_ASIO_READ_AT_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <algorithm>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/consuming_buffers.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename CompletionCondition>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ ec = boost::system::error_code();
+ boost::asio::detail::consuming_buffers<
+ mutable_buffer, MutableBufferSequence> tmp(buffers);
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ while (tmp.begin() != tmp.end())
+ {
+ std::size_t bytes_transferred = d.read_some_at(
+ offset + total_transferred, tmp, ec);
+ tmp.consume(bytes_transferred);
+ total_transferred += bytes_transferred;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ }
+ return total_transferred;
+}
+
+template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
+inline std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_at(
+ d, offset, buffers, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename CompletionCondition>
+inline std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_at(
+ d, offset, buffers, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ std::size_t total_transferred = 0;
+ for (;;)
+ {
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ std::size_t bytes_transferred = d.read_some_at(
+ offset + total_transferred, b.prepare(bytes_available), ec);
+ b.commit(bytes_transferred);
+ total_transferred += bytes_transferred;
+ if (b.size() == b.max_size()
+ || completion_condition(ec, total_transferred))
+ return total_transferred;
+ }
+}
+
+template <typename SyncRandomAccessReadDevice, typename Allocator>
+inline std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_at(
+ d, offset, b, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition>
+inline std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_at(
+ d, offset, b, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+namespace detail
+{
+ template <typename AsyncRandomAccessReadDevice,
+ typename MutableBufferSequence, typename CompletionCondition,
+ typename ReadHandler>
+ class read_at_handler
+ {
+ public:
+ typedef boost::asio::detail::consuming_buffers<
+ mutable_buffer, MutableBufferSequence> buffers_type;
+
+ read_at_handler(AsyncRandomAccessReadDevice& stream,
+ boost::uint64_t offset, const buffers_type& buffers,
+ CompletionCondition completion_condition, ReadHandler handler)
+ : stream_(stream),
+ offset_(offset),
+ buffers_(buffers),
+ total_transferred_(0),
+ completion_condition_(completion_condition),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ total_transferred_ += bytes_transferred;
+ buffers_.consume(bytes_transferred);
+ buffers_.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_)));
+ if (buffers_.begin() == buffers_.end())
+ {
+ handler_(ec, total_transferred_);
+ }
+ else
+ {
+ stream_.async_read_some_at(
+ offset_ + total_transferred_, buffers_, *this);
+ }
+ }
+
+ //private:
+ AsyncRandomAccessReadDevice& stream_;
+ boost::uint64_t offset_;
+ buffers_type buffers_;
+ std::size_t total_transferred_;
+ CompletionCondition completion_condition_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncRandomAccessReadDevice,
+ typename MutableBufferSequence, typename CompletionCondition,
+ typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_at_handler<AsyncRandomAccessReadDevice, MutableBufferSequence,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncRandomAccessReadDevice,
+ typename MutableBufferSequence, typename CompletionCondition,
+ typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_at_handler<AsyncRandomAccessReadDevice, MutableBufferSequence,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncRandomAccessReadDevice,
+ typename MutableBufferSequence, typename CompletionCondition,
+ typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_at_handler<AsyncRandomAccessReadDevice, MutableBufferSequence,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+inline void async_read_at(AsyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, ReadHandler handler)
+{
+ boost::asio::detail::consuming_buffers<
+ mutable_buffer, MutableBufferSequence> tmp(buffers);
+
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ if (tmp.begin() == tmp.end())
+ {
+ d.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
+ d.async_read_some_at(offset, tmp,
+ detail::read_at_handler<AsyncRandomAccessReadDevice,
+ MutableBufferSequence, CompletionCondition, ReadHandler>(
+ d, offset, tmp, completion_condition, handler));
+}
+
+template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename ReadHandler>
+inline void async_read_at(AsyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ ReadHandler handler)
+{
+ async_read_at(d, offset, buffers, transfer_all(), handler);
+}
+
+namespace detail
+{
+ template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+ class read_at_streambuf_handler
+ {
+ public:
+ read_at_streambuf_handler(AsyncRandomAccessReadDevice& stream,
+ boost::uint64_t offset, basic_streambuf<Allocator>& streambuf,
+ CompletionCondition completion_condition, ReadHandler handler)
+ : stream_(stream),
+ offset_(offset),
+ streambuf_(streambuf),
+ total_transferred_(0),
+ completion_condition_(completion_condition),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ total_transferred_ += bytes_transferred;
+ streambuf_.commit(bytes_transferred);
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size,
+ streambuf_.max_size() - streambuf_.size()));
+ if (bytes_available == 0)
+ {
+ handler_(ec, total_transferred_);
+ }
+ else
+ {
+ stream_.async_read_some_at(offset_ + total_transferred_,
+ streambuf_.prepare(bytes_available), *this);
+ }
+ }
+
+ //private:
+ AsyncRandomAccessReadDevice& stream_;
+ boost::uint64_t offset_;
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ std::size_t total_transferred_;
+ CompletionCondition completion_condition_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_at_streambuf_handler<AsyncRandomAccessReadDevice, Allocator,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_at_streambuf_handler<AsyncRandomAccessReadDevice, Allocator,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncRandomAccessReadDevice,
+ typename Allocator, typename CompletionCondition, typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_at_streambuf_handler<AsyncRandomAccessReadDevice, Allocator,
+ CompletionCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+inline void async_read_at(AsyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, ReadHandler handler)
+{
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ std::size_t max_size = detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred));
+ std::size_t bytes_available = std::min<std::size_t>(512,
+ std::min<std::size_t>(max_size, b.max_size() - b.size()));
+ if (bytes_available == 0)
+ {
+ d.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
+ d.async_read_some_at(offset, b.prepare(bytes_available),
+ detail::read_at_streambuf_handler<AsyncRandomAccessReadDevice, Allocator,
+ CompletionCondition, ReadHandler>(
+ d, offset, b, completion_condition, handler));
+}
+
+template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename ReadHandler>
+inline void async_read_at(AsyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ ReadHandler handler)
+{
+ async_read_at(d, offset, b, transfer_all(), handler);
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_READ_AT_IPP
diff --git a/3rdParty/Boost/boost/asio/impl/read_until.ipp b/3rdParty/Boost/boost/asio/impl/read_until.ipp
new file mode 100644
index 0000000..df4a568
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/read_until.ipp
@@ -0,0 +1,989 @@
+//
+// read_until.ipp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_READ_UNTIL_IPP
+#define BOOST_ASIO_READ_UNTIL_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <algorithm>
+#include <limits>
+#include <string>
+#include <utility>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/buffers_iterator.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename SyncReadStream, typename Allocator>
+inline std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, char delim)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_until(s, b, delim, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, char delim,
+ boost::system::error_code& ec)
+{
+ std::size_t next_search_start = 0;
+ for (;;)
+ {
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ iterator iter = std::find(start, end, delim);
+ if (iter != end)
+ {
+ // Found a match. We're done.
+ ec = boost::system::error_code();
+ return iter - begin + 1;
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ ec = error::not_found;
+ return 0;
+ }
+
+ // Need more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ b.commit(s.read_some(b.prepare(bytes_available), ec));
+ if (ec)
+ return 0;
+ }
+}
+
+template <typename SyncReadStream, typename Allocator>
+inline std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const std::string& delim)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_until(s, b, delim, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+namespace detail
+{
+ // Algorithm that finds a subsequence of equal values in a sequence. Returns
+ // (iterator,true) if a full match was found, in which case the iterator
+ // points to the beginning of the match. Returns (iterator,false) if a
+ // partial match was found at the end of the first sequence, in which case
+ // the iterator points to the beginning of the partial match. Returns
+ // (last1,false) if no full or partial match was found.
+ template <typename Iterator1, typename Iterator2>
+ std::pair<Iterator1, bool> partial_search(
+ Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2)
+ {
+ for (Iterator1 iter1 = first1; iter1 != last1; ++iter1)
+ {
+ Iterator1 test_iter1 = iter1;
+ Iterator2 test_iter2 = first2;
+ for (;; ++test_iter1, ++test_iter2)
+ {
+ if (test_iter2 == last2)
+ return std::make_pair(iter1, true);
+ if (test_iter1 == last1)
+ {
+ if (test_iter2 != first2)
+ return std::make_pair(iter1, false);
+ else
+ break;
+ }
+ if (*test_iter1 != *test_iter2)
+ break;
+ }
+ }
+ return std::make_pair(last1, false);
+ }
+} // namespace detail
+
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
+ boost::system::error_code& ec)
+{
+ std::size_t next_search_start = 0;
+ for (;;)
+ {
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::pair<iterator, bool> result = boost::asio::detail::partial_search(
+ start, end, delim.begin(), delim.end());
+ if (result.first != end)
+ {
+ if (result.second)
+ {
+ // Full match. We're done.
+ ec = boost::system::error_code();
+ return result.first - begin + delim.length();
+ }
+ else
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start = result.first - begin;
+ }
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ ec = error::not_found;
+ return 0;
+ }
+
+ // Need more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ b.commit(s.read_some(b.prepare(bytes_available), ec));
+ if (ec)
+ return 0;
+ }
+}
+
+template <typename SyncReadStream, typename Allocator>
+inline std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_until(s, b, expr, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
+ boost::system::error_code& ec)
+{
+ std::size_t next_search_start = 0;
+ for (;;)
+ {
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ boost::match_results<iterator> match_results;
+ if (boost::regex_search(start, end, match_results, expr,
+ boost::match_default | boost::match_partial))
+ {
+ if (match_results[0].matched)
+ {
+ // Full match. We're done.
+ ec = boost::system::error_code();
+ return match_results[0].second - begin;
+ }
+ else
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start = match_results[0].first - begin;
+ }
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ ec = error::not_found;
+ return 0;
+ }
+
+ // Need more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ b.commit(s.read_some(b.prepare(bytes_available), ec));
+ if (ec)
+ return 0;
+ }
+}
+
+template <typename SyncReadStream, typename Allocator, typename MatchCondition>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ MatchCondition match_condition, boost::system::error_code& ec,
+ typename boost::enable_if<is_match_condition<MatchCondition> >::type*)
+{
+ std::size_t next_search_start = 0;
+ for (;;)
+ {
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::pair<iterator, bool> result = match_condition(start, end);
+ if (result.second)
+ {
+ // Full match. We're done.
+ ec = boost::system::error_code();
+ return result.first - begin;
+ }
+ else if (result.first != end)
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start = result.first - begin;
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ ec = error::not_found;
+ return 0;
+ }
+
+ // Need more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ b.commit(s.read_some(b.prepare(bytes_available), ec));
+ if (ec)
+ return 0;
+ }
+}
+
+template <typename SyncReadStream, typename Allocator, typename MatchCondition>
+inline std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
+ typename boost::enable_if<is_match_condition<MatchCondition> >::type*)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = read_until(s, b, match_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+namespace detail
+{
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ class read_until_delim_handler
+ {
+ public:
+ read_until_delim_handler(AsyncReadStream& stream,
+ boost::asio::basic_streambuf<Allocator>& streambuf, char delim,
+ std::size_t next_search_start, ReadHandler handler)
+ : stream_(stream),
+ streambuf_(streambuf),
+ delim_(delim),
+ next_search_start_(next_search_start),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ // Check for errors.
+ if (ec)
+ {
+ std::size_t bytes = 0;
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Commit received data to streambuf's get area.
+ streambuf_.commit(bytes_transferred);
+
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = streambuf_.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start_;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ iterator iter = std::find(start, end, delim_);
+ if (iter != end)
+ {
+ // Found a match. We're done.
+ std::size_t bytes = iter - begin + 1;
+ handler_(ec, bytes);
+ return;
+ }
+
+ // No match. Check if buffer is full.
+ if (streambuf_.size() == streambuf_.max_size())
+ {
+ std::size_t bytes = 0;
+ boost::system::error_code ec(error::not_found);
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Next search can start with the new data.
+ next_search_start_ = end - begin;
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, streambuf_.max_size() - streambuf_.size());
+ stream_.async_read_some(streambuf_.prepare(bytes_available), *this);
+ }
+
+ //private:
+ AsyncReadStream& stream_;
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ char delim_;
+ std::size_t next_search_start_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_until_delim_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_until_delim_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncReadStream, typename Allocator,
+ typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_until_delim_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, char delim, ReadHandler handler)
+{
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ iterator iter = std::find(begin, end, delim);
+ if (iter != end)
+ {
+ // Found a match. We're done.
+ boost::system::error_code ec;
+ std::size_t bytes = iter - begin + 1;
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
+ return;
+ }
+
+ // No match. Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ boost::system::error_code ec(error::not_found);
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ s.async_read_some(b.prepare(bytes_available),
+ detail::read_until_delim_handler<AsyncReadStream, Allocator, ReadHandler>(
+ s, b, delim, end - begin, handler));
+}
+
+namespace detail
+{
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ class read_until_delim_string_handler
+ {
+ public:
+ read_until_delim_string_handler(AsyncReadStream& stream,
+ boost::asio::basic_streambuf<Allocator>& streambuf,
+ const std::string& delim, std::size_t next_search_start,
+ ReadHandler handler)
+ : stream_(stream),
+ streambuf_(streambuf),
+ delim_(delim),
+ next_search_start_(next_search_start),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ // Check for errors.
+ if (ec)
+ {
+ std::size_t bytes = 0;
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Commit received data to streambuf's get area.
+ streambuf_.commit(bytes_transferred);
+
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = streambuf_.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start_;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::pair<iterator, bool> result = boost::asio::detail::partial_search(
+ start, end, delim_.begin(), delim_.end());
+ if (result.first != end)
+ {
+ if (result.second)
+ {
+ // Full match. We're done.
+ std::size_t bytes = result.first - begin + delim_.length();
+ handler_(ec, bytes);
+ return;
+ }
+ else
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start_ = result.first - begin;
+ }
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start_ = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (streambuf_.size() == streambuf_.max_size())
+ {
+ std::size_t bytes = 0;
+ boost::system::error_code ec2(error::not_found);
+ handler_(ec2, bytes);
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, streambuf_.max_size() - streambuf_.size());
+ stream_.async_read_some(streambuf_.prepare(bytes_available), *this);
+ }
+
+ //private:
+ AsyncReadStream& stream_;
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ std::string delim_;
+ std::size_t next_search_start_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_until_delim_string_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_until_delim_string_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncReadStream,
+ typename Allocator, typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_until_delim_string_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
+ ReadHandler handler)
+{
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::size_t next_search_start;
+ std::pair<iterator, bool> result = boost::asio::detail::partial_search(
+ begin, end, delim.begin(), delim.end());
+ if (result.first != end)
+ {
+ if (result.second)
+ {
+ // Full match. We're done.
+ boost::system::error_code ec;
+ std::size_t bytes = result.first - begin + delim.length();
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
+ return;
+ }
+ else
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start = result.first - begin;
+ }
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ boost::system::error_code ec(error::not_found);
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ s.async_read_some(b.prepare(bytes_available),
+ detail::read_until_delim_string_handler<
+ AsyncReadStream, Allocator, ReadHandler>(
+ s, b, delim, next_search_start, handler));
+}
+
+namespace detail
+{
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ class read_until_expr_handler
+ {
+ public:
+ read_until_expr_handler(AsyncReadStream& stream,
+ boost::asio::basic_streambuf<Allocator>& streambuf,
+ const boost::regex& expr, std::size_t next_search_start,
+ ReadHandler handler)
+ : stream_(stream),
+ streambuf_(streambuf),
+ expr_(expr),
+ next_search_start_(next_search_start),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ // Check for errors.
+ if (ec)
+ {
+ std::size_t bytes = 0;
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Commit received data to streambuf's get area.
+ streambuf_.commit(bytes_transferred);
+
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = streambuf_.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start_;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ boost::match_results<iterator> match_results;
+ if (boost::regex_search(start, end, match_results, expr_,
+ boost::match_default | boost::match_partial))
+ {
+ if (match_results[0].matched)
+ {
+ // Full match. We're done.
+ std::size_t bytes = match_results[0].second - begin;
+ handler_(ec, bytes);
+ return;
+ }
+ else
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start_ = match_results[0].first - begin;
+ }
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start_ = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (streambuf_.size() == streambuf_.max_size())
+ {
+ std::size_t bytes = 0;
+ boost::system::error_code ec(error::not_found);
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, streambuf_.max_size() - streambuf_.size());
+ stream_.async_read_some(streambuf_.prepare(bytes_available), *this);
+ }
+
+ //private:
+ AsyncReadStream& stream_;
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ boost::regex expr_;
+ std::size_t next_search_start_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_until_expr_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_until_expr_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncReadStream, typename Allocator,
+ typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_until_expr_handler<AsyncReadStream,
+ Allocator, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
+ ReadHandler handler)
+{
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::size_t next_search_start;
+ boost::match_results<iterator> match_results;
+ if (boost::regex_search(begin, end, match_results, expr,
+ boost::match_default | boost::match_partial))
+ {
+ if (match_results[0].matched)
+ {
+ // Full match. We're done.
+ boost::system::error_code ec;
+ std::size_t bytes = match_results[0].second - begin;
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
+ return;
+ }
+ else
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start = match_results[0].first - begin;
+ }
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ boost::system::error_code ec(error::not_found);
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ s.async_read_some(b.prepare(bytes_available),
+ detail::read_until_expr_handler<AsyncReadStream, Allocator, ReadHandler>(
+ s, b, expr, next_search_start, handler));
+}
+
+namespace detail
+{
+ template <typename AsyncReadStream, typename Allocator,
+ typename MatchCondition, typename ReadHandler>
+ class read_until_match_handler
+ {
+ public:
+ read_until_match_handler(AsyncReadStream& stream,
+ boost::asio::basic_streambuf<Allocator>& streambuf,
+ MatchCondition match_condition, std::size_t next_search_start,
+ ReadHandler handler)
+ : stream_(stream),
+ streambuf_(streambuf),
+ match_condition_(match_condition),
+ next_search_start_(next_search_start),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ // Check for errors.
+ if (ec)
+ {
+ std::size_t bytes = 0;
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Commit received data to streambuf's get area.
+ streambuf_.commit(bytes_transferred);
+
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = streambuf_.data();
+ iterator begin = iterator::begin(buffers);
+ iterator start = begin + next_search_start_;
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::pair<iterator, bool> result = match_condition_(start, end);
+ if (result.second)
+ {
+ // Full match. We're done.
+ std::size_t bytes = result.first - begin;
+ handler_(ec, bytes);
+ return;
+ }
+ else if (result.first != end)
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start_ = result.first - begin;
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start_ = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (streambuf_.size() == streambuf_.max_size())
+ {
+ std::size_t bytes = 0;
+ boost::system::error_code ec(error::not_found);
+ handler_(ec, bytes);
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, streambuf_.max_size() - streambuf_.size());
+ stream_.async_read_some(streambuf_.prepare(bytes_available), *this);
+ }
+
+ //private:
+ AsyncReadStream& stream_;
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ MatchCondition match_condition_;
+ std::size_t next_search_start_;
+ ReadHandler handler_;
+ };
+
+ template <typename AsyncReadStream, typename Allocator,
+ typename MatchCondition, typename ReadHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ read_until_match_handler<AsyncReadStream,
+ Allocator, MatchCondition, ReadHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncReadStream, typename Allocator,
+ typename MatchCondition, typename ReadHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ read_until_match_handler<AsyncReadStream,
+ Allocator, MatchCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncReadStream, typename Allocator,
+ typename MatchCondition, typename ReadHandler>
+ inline void asio_handler_invoke(const Function& function,
+ read_until_match_handler<AsyncReadStream,
+ Allocator, MatchCondition, ReadHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncReadStream, typename Allocator,
+ typename MatchCondition, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ MatchCondition match_condition, ReadHandler handler,
+ typename boost::enable_if<is_match_condition<MatchCondition> >::type*)
+{
+ // Determine the range of the data to be searched.
+ typedef typename boost::asio::basic_streambuf<
+ Allocator>::const_buffers_type const_buffers_type;
+ typedef boost::asio::buffers_iterator<const_buffers_type> iterator;
+ const_buffers_type buffers = b.data();
+ iterator begin = iterator::begin(buffers);
+ iterator end = iterator::end(buffers);
+
+ // Look for a match.
+ std::size_t next_search_start;
+ std::pair<iterator, bool> result = match_condition(begin, end);
+ if (result.second)
+ {
+ // Full match. We're done.
+ boost::system::error_code ec;
+ std::size_t bytes = result.first - begin;
+ s.get_io_service().post(detail::bind_handler(handler, ec, bytes));
+ return;
+ }
+ else if (result.first != end)
+ {
+ // Partial match. Next search needs to start from beginning of match.
+ next_search_start = result.first - begin;
+ }
+ else
+ {
+ // No match. Next search can start with the new data.
+ next_search_start = end - begin;
+ }
+
+ // Check if buffer is full.
+ if (b.size() == b.max_size())
+ {
+ boost::system::error_code ec(error::not_found);
+ s.get_io_service().post(detail::bind_handler(handler, ec, 0));
+ return;
+ }
+
+ // Start a new asynchronous read operation to obtain more data.
+ std::size_t bytes_available =
+ std::min<std::size_t>(512, b.max_size() - b.size());
+ s.async_read_some(b.prepare(bytes_available),
+ detail::read_until_match_handler<
+ AsyncReadStream, Allocator, MatchCondition, ReadHandler>(
+ s, b, match_condition, next_search_start, handler));
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_READ_UNTIL_IPP
diff --git a/3rdParty/Boost/boost/asio/impl/serial_port_base.ipp b/3rdParty/Boost/boost/asio/impl/serial_port_base.ipp
new file mode 100644
index 0000000..0470ff2
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/serial_port_base.ipp
@@ -0,0 +1,543 @@
+//
+// serial_port_base.ipp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_SERIAL_PORT_BASE_IPP
+#define BOOST_ASIO_SERIAL_PORT_BASE_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+namespace boost {
+namespace asio {
+
+inline serial_port_base::baud_rate::baud_rate(unsigned int rate)
+ : value_(rate)
+{
+}
+
+inline unsigned int serial_port_base::baud_rate::value() const
+{
+ return value_;
+}
+
+inline boost::system::error_code serial_port_base::baud_rate::store(
+ BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ storage.BaudRate = value_;
+#else
+ speed_t baud;
+ switch (value_)
+ {
+ // Do POSIX-specified rates first.
+ case 0: baud = B0; break;
+ case 50: baud = B50; break;
+ case 75: baud = B75; break;
+ case 110: baud = B110; break;
+ case 134: baud = B134; break;
+ case 150: baud = B150; break;
+ case 200: baud = B200; break;
+ case 300: baud = B300; break;
+ case 600: baud = B600; break;
+ case 1200: baud = B1200; break;
+ case 1800: baud = B1800; break;
+ case 2400: baud = B2400; break;
+ case 4800: baud = B4800; break;
+ case 9600: baud = B9600; break;
+ case 19200: baud = B19200; break;
+ case 38400: baud = B38400; break;
+ // And now the extended ones conditionally.
+# ifdef B7200
+ case 7200: baud = B7200; break;
+# endif
+# ifdef B14400
+ case 14400: baud = B14400; break;
+# endif
+# ifdef B57600
+ case 57600: baud = B57600; break;
+# endif
+# ifdef B115200
+ case 115200: baud = B115200; break;
+# endif
+# ifdef B230400
+ case 230400: baud = B230400; break;
+# endif
+# ifdef B460800
+ case 460800: baud = B460800; break;
+# endif
+# ifdef B500000
+ case 500000: baud = B500000; break;
+# endif
+# ifdef B576000
+ case 576000: baud = B576000; break;
+# endif
+# ifdef B921600
+ case 921600: baud = B921600; break;
+# endif
+# ifdef B1000000
+ case 1000000: baud = B1000000; break;
+# endif
+# ifdef B1152000
+ case 1152000: baud = B1152000; break;
+# endif
+# ifdef B2000000
+ case 2000000: baud = B2000000; break;
+# endif
+# ifdef B3000000
+ case 3000000: baud = B3000000; break;
+# endif
+# ifdef B3500000
+ case 3500000: baud = B3500000; break;
+# endif
+# ifdef B4000000
+ case 4000000: baud = B4000000; break;
+# endif
+ default:
+ baud = B0;
+ ec = boost::asio::error::invalid_argument;
+ return ec;
+ }
+# if defined(_BSD_SOURCE)
+ ::cfsetspeed(&storage, baud);
+# else
+ ::cfsetispeed(&storage, baud);
+ ::cfsetospeed(&storage, baud);
+# endif
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline boost::system::error_code serial_port_base::baud_rate::load(
+ const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ value_ = storage.BaudRate;
+#else
+ speed_t baud = ::cfgetospeed(&storage);
+ switch (baud)
+ {
+ // First do those specified by POSIX.
+ case B0: value_ = 0; break;
+ case B50: value_ = 50; break;
+ case B75: value_ = 75; break;
+ case B110: value_ = 110; break;
+ case B134: value_ = 134; break;
+ case B150: value_ = 150; break;
+ case B200: value_ = 200; break;
+ case B300: value_ = 300; break;
+ case B600: value_ = 600; break;
+ case B1200: value_ = 1200; break;
+ case B1800: value_ = 1800; break;
+ case B2400: value_ = 2400; break;
+ case B4800: value_ = 4800; break;
+ case B9600: value_ = 9600; break;
+ case B19200: value_ = 19200; break;
+ case B38400: value_ = 38400; break;
+ // Now conditionally handle a bunch of extended rates.
+# ifdef B7200
+ case B7200: value_ = 7200; break;
+# endif
+# ifdef B14400
+ case B14400: value_ = 14400; break;
+# endif
+# ifdef B57600
+ case B57600: value_ = 57600; break;
+# endif
+# ifdef B115200
+ case B115200: value_ = 115200; break;
+# endif
+# ifdef B230400
+ case B230400: value_ = 230400; break;
+# endif
+# ifdef B460800
+ case B460800: value_ = 460800; break;
+# endif
+# ifdef B500000
+ case B500000: value_ = 500000; break;
+# endif
+# ifdef B576000
+ case B576000: value_ = 576000; break;
+# endif
+# ifdef B921600
+ case B921600: value_ = 921600; break;
+# endif
+# ifdef B1000000
+ case B1000000: value_ = 1000000; break;
+# endif
+# ifdef B1152000
+ case B1152000: value_ = 1152000; break;
+# endif
+# ifdef B2000000
+ case B2000000: value_ = 2000000; break;
+# endif
+# ifdef B3000000
+ case B3000000: value_ = 3000000; break;
+# endif
+# ifdef B3500000
+ case B3500000: value_ = 3500000; break;
+# endif
+# ifdef B4000000
+ case B4000000: value_ = 4000000; break;
+# endif
+ default:
+ value_ = 0;
+ ec = boost::asio::error::invalid_argument;
+ return ec;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline serial_port_base::flow_control::flow_control(
+ serial_port_base::flow_control::type t)
+ : value_(t)
+{
+ if (t != none && t != software && t != hardware)
+ throw std::out_of_range("invalid flow_control value");
+}
+
+inline serial_port_base::flow_control::type
+serial_port_base::flow_control::value() const
+{
+ return value_;
+}
+
+inline boost::system::error_code serial_port_base::flow_control::store(
+ BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ storage.fOutxCtsFlow = FALSE;
+ storage.fOutxDsrFlow = FALSE;
+ storage.fTXContinueOnXoff = TRUE;
+ storage.fDtrControl = DTR_CONTROL_ENABLE;
+ storage.fDsrSensitivity = FALSE;
+ storage.fOutX = FALSE;
+ storage.fInX = FALSE;
+ storage.fRtsControl = RTS_CONTROL_ENABLE;
+ switch (value_)
+ {
+ case none:
+ break;
+ case software:
+ storage.fOutX = TRUE;
+ storage.fInX = TRUE;
+ break;
+ case hardware:
+ storage.fOutxCtsFlow = TRUE;
+ storage.fRtsControl = RTS_CONTROL_HANDSHAKE;
+ break;
+ default:
+ break;
+ }
+#else
+ switch (value_)
+ {
+ case none:
+ storage.c_iflag &= ~(IXOFF | IXON);
+# if defined(_BSD_SOURCE)
+ storage.c_cflag &= ~CRTSCTS;
+# endif
+ break;
+ case software:
+ storage.c_iflag |= IXOFF | IXON;
+# if defined(_BSD_SOURCE)
+ storage.c_cflag &= ~CRTSCTS;
+# endif
+ break;
+ case hardware:
+# if defined(_BSD_SOURCE)
+ storage.c_iflag &= ~(IXOFF | IXON);
+ storage.c_cflag |= CRTSCTS;
+ break;
+# else
+ ec = boost::asio::error::operation_not_supported;
+ return ec;
+# endif
+ default:
+ break;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline boost::system::error_code serial_port_base::flow_control::load(
+ const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ if (storage.fOutX && storage.fInX)
+ {
+ value_ = software;
+ }
+ else if (storage.fOutxCtsFlow && storage.fRtsControl == RTS_CONTROL_HANDSHAKE)
+ {
+ value_ = hardware;
+ }
+ else
+ {
+ value_ = none;
+ }
+#else
+ if (storage.c_iflag & (IXOFF | IXON))
+ {
+ value_ = software;
+ }
+# if defined(_BSD_SOURCE)
+ else if (storage.c_cflag & CRTSCTS)
+ {
+ value_ = hardware;
+ }
+# endif
+ else
+ {
+ value_ = none;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline serial_port_base::parity::parity(serial_port_base::parity::type t)
+ : value_(t)
+{
+ if (t != none && t != odd && t != even)
+ throw std::out_of_range("invalid parity value");
+}
+
+inline serial_port_base::parity::type serial_port_base::parity::value() const
+{
+ return value_;
+}
+
+inline boost::system::error_code serial_port_base::parity::store(
+ BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ switch (value_)
+ {
+ case none:
+ storage.fParity = FALSE;
+ storage.Parity = NOPARITY;
+ break;
+ case odd:
+ storage.fParity = TRUE;
+ storage.Parity = ODDPARITY;
+ break;
+ case even:
+ storage.fParity = TRUE;
+ storage.Parity = EVENPARITY;
+ break;
+ default:
+ break;
+ }
+#else
+ switch (value_)
+ {
+ case none:
+ storage.c_iflag |= IGNPAR;
+ storage.c_cflag &= ~(PARENB | PARODD);
+ break;
+ case even:
+ storage.c_iflag &= ~(IGNPAR | PARMRK);
+ storage.c_iflag |= INPCK;
+ storage.c_cflag |= PARENB;
+ storage.c_cflag &= ~PARODD;
+ break;
+ case odd:
+ storage.c_iflag &= ~(IGNPAR | PARMRK);
+ storage.c_iflag |= INPCK;
+ storage.c_cflag |= (PARENB | PARODD);
+ break;
+ default:
+ break;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline boost::system::error_code serial_port_base::parity::load(
+ const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ if (storage.Parity == EVENPARITY)
+ {
+ value_ = even;
+ }
+ else if (storage.Parity == ODDPARITY)
+ {
+ value_ = odd;
+ }
+ else
+ {
+ value_ = none;
+ }
+#else
+ if (storage.c_cflag & PARENB)
+ {
+ if (storage.c_cflag & PARODD)
+ {
+ value_ = odd;
+ }
+ else
+ {
+ value_ = even;
+ }
+ }
+ else
+ {
+ value_ = none;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline serial_port_base::stop_bits::stop_bits(
+ serial_port_base::stop_bits::type t)
+ : value_(t)
+{
+ if (t != one && t != onepointfive && t != two)
+ throw std::out_of_range("invalid stop_bits value");
+}
+
+inline serial_port_base::stop_bits::type
+serial_port_base::stop_bits::value() const
+{
+ return value_;
+}
+
+inline boost::system::error_code serial_port_base::stop_bits::store(
+ BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ switch (value_)
+ {
+ case one:
+ storage.StopBits = ONESTOPBIT;
+ break;
+ case onepointfive:
+ storage.StopBits = ONE5STOPBITS;
+ break;
+ case two:
+ storage.StopBits = TWOSTOPBITS;
+ break;
+ default:
+ break;
+ }
+#else
+ switch (value_)
+ {
+ case one:
+ storage.c_cflag &= ~CSTOPB;
+ break;
+ case two:
+ storage.c_cflag |= CSTOPB;
+ break;
+ default:
+ ec = boost::asio::error::operation_not_supported;
+ return ec;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline boost::system::error_code serial_port_base::stop_bits::load(
+ const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ if (storage.StopBits == ONESTOPBIT)
+ {
+ value_ = one;
+ }
+ else if (storage.StopBits == ONE5STOPBITS)
+ {
+ value_ = onepointfive;
+ }
+ else if (storage.StopBits == TWOSTOPBITS)
+ {
+ value_ = two;
+ }
+ else
+ {
+ value_ = one;
+ }
+#else
+ value_ = (storage.c_cflag & CSTOPB) ? two : one;
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline serial_port_base::character_size::character_size(unsigned int t)
+ : value_(t)
+{
+ if (t < 5 || t > 8)
+ throw std::out_of_range("invalid character_size value");
+}
+
+inline unsigned int serial_port_base::character_size::value() const
+{
+ return value_;
+}
+
+inline boost::system::error_code serial_port_base::character_size::store(
+ BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec) const
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ storage.ByteSize = value_;
+#else
+ storage.c_cflag &= ~CSIZE;
+ switch (value_)
+ {
+ case 5: storage.c_cflag |= CS5; break;
+ case 6: storage.c_cflag |= CS6; break;
+ case 7: storage.c_cflag |= CS7; break;
+ case 8: storage.c_cflag |= CS8; break;
+ default: break;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+inline boost::system::error_code serial_port_base::character_size::load(
+ const BOOST_ASIO_OPTION_STORAGE& storage, boost::system::error_code& ec)
+{
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ value_ = storage.ByteSize;
+#else
+ if ((storage.c_cflag & CSIZE) == CS5) { value_ = 5; }
+ else if ((storage.c_cflag & CSIZE) == CS6) { value_ = 6; }
+ else if ((storage.c_cflag & CSIZE) == CS7) { value_ = 7; }
+ else if ((storage.c_cflag & CSIZE) == CS8) { value_ = 8; }
+ else
+ {
+ // Hmmm, use 8 for now.
+ value_ = 8;
+ }
+#endif
+ ec = boost::system::error_code();
+ return ec;
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_SERIAL_PORT_BASE_IPP
diff --git a/3rdParty/Boost/boost/asio/impl/write.ipp b/3rdParty/Boost/boost/asio/impl/write.ipp
new file mode 100644
index 0000000..4434a91
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/write.ipp
@@ -0,0 +1,296 @@
+//
+// write.ipp
+// ~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WRITE_IPP
+#define BOOST_ASIO_WRITE_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/consuming_buffers.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename SyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition>
+std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ ec = boost::system::error_code();
+ boost::asio::detail::consuming_buffers<
+ const_buffer, ConstBufferSequence> tmp(buffers);
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ while (tmp.begin() != tmp.end())
+ {
+ std::size_t bytes_transferred = s.write_some(tmp, ec);
+ tmp.consume(bytes_transferred);
+ total_transferred += bytes_transferred;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ }
+ return total_transferred;
+}
+
+template <typename SyncWriteStream, typename ConstBufferSequence>
+inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write(s, buffers, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition>
+inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write(s, buffers, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncWriteStream, typename Allocator,
+ typename CompletionCondition>
+std::size_t write(SyncWriteStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ std::size_t bytes_transferred = write(s, b.data(), completion_condition, ec);
+ b.consume(bytes_transferred);
+ return bytes_transferred;
+}
+
+template <typename SyncWriteStream, typename Allocator>
+inline std::size_t write(SyncWriteStream& s,
+ boost::asio::basic_streambuf<Allocator>& b)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write(s, b, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncWriteStream, typename Allocator,
+ typename CompletionCondition>
+inline std::size_t write(SyncWriteStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write(s, b, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+namespace detail
+{
+ template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+ class write_handler
+ {
+ public:
+ typedef boost::asio::detail::consuming_buffers<
+ const_buffer, ConstBufferSequence> buffers_type;
+
+ write_handler(AsyncWriteStream& stream, const buffers_type& buffers,
+ CompletionCondition completion_condition, WriteHandler handler)
+ : stream_(stream),
+ buffers_(buffers),
+ total_transferred_(0),
+ completion_condition_(completion_condition),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ total_transferred_ += bytes_transferred;
+ buffers_.consume(bytes_transferred);
+ buffers_.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_)));
+ if (buffers_.begin() == buffers_.end())
+ {
+ handler_(ec, total_transferred_);
+ }
+ else
+ {
+ stream_.async_write_some(buffers_, *this);
+ }
+ }
+
+ //private:
+ AsyncWriteStream& stream_;
+ buffers_type buffers_;
+ std::size_t total_transferred_;
+ CompletionCondition completion_condition_;
+ WriteHandler handler_;
+ };
+
+ template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ write_handler<AsyncWriteStream, ConstBufferSequence,
+ CompletionCondition, WriteHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ write_handler<AsyncWriteStream, ConstBufferSequence,
+ CompletionCondition, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncWriteStream,
+ typename ConstBufferSequence, typename CompletionCondition,
+ typename WriteHandler>
+ inline void asio_handler_invoke(const Function& function,
+ write_handler<AsyncWriteStream, ConstBufferSequence,
+ CompletionCondition, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+inline void async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, WriteHandler handler)
+{
+ boost::asio::detail::consuming_buffers<
+ const_buffer, ConstBufferSequence> tmp(buffers);
+
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ if (tmp.begin() == tmp.end())
+ {
+ s.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
+ s.async_write_some(tmp,
+ detail::write_handler<AsyncWriteStream, ConstBufferSequence,
+ CompletionCondition, WriteHandler>(
+ s, tmp, completion_condition, handler));
+}
+
+template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename WriteHandler>
+inline void async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
+ WriteHandler handler)
+{
+ async_write(s, buffers, transfer_all(), handler);
+}
+
+namespace detail
+{
+ template <typename AsyncWriteStream, typename Allocator,
+ typename WriteHandler>
+ class write_streambuf_handler
+ {
+ public:
+ write_streambuf_handler(boost::asio::basic_streambuf<Allocator>& streambuf,
+ WriteHandler handler)
+ : streambuf_(streambuf),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ streambuf_.consume(bytes_transferred);
+ handler_(ec, bytes_transferred);
+ }
+
+ //private:
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ WriteHandler handler_;
+ };
+
+ template <typename AsyncWriteStream, typename Allocator,
+ typename WriteHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ write_streambuf_handler<AsyncWriteStream,
+ Allocator, WriteHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncWriteStream, typename Allocator,
+ typename WriteHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ write_streambuf_handler<AsyncWriteStream,
+ Allocator, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncWriteStream, typename Allocator,
+ typename WriteHandler>
+ inline void asio_handler_invoke(const Function& function,
+ write_streambuf_handler<AsyncWriteStream,
+ Allocator, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncWriteStream, typename Allocator,
+ typename CompletionCondition, typename WriteHandler>
+inline void async_write(AsyncWriteStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, WriteHandler handler)
+{
+ async_write(s, b.data(), completion_condition,
+ detail::write_streambuf_handler<
+ AsyncWriteStream, Allocator, WriteHandler>(b, handler));
+}
+
+template <typename AsyncWriteStream, typename Allocator, typename WriteHandler>
+inline void async_write(AsyncWriteStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, WriteHandler handler)
+{
+ async_write(s, b, transfer_all(), handler);
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WRITE_IPP
diff --git a/3rdParty/Boost/boost/asio/impl/write_at.ipp b/3rdParty/Boost/boost/asio/impl/write_at.ipp
new file mode 100644
index 0000000..ba00567
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/impl/write_at.ipp
@@ -0,0 +1,313 @@
+//
+// write_at.ipp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WRITE_AT_IPP
+#define BOOST_ASIO_WRITE_AT_IPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/buffer.hpp>
+#include <boost/asio/completion_condition.hpp>
+#include <boost/asio/detail/bind_handler.hpp>
+#include <boost/asio/detail/consuming_buffers.hpp>
+#include <boost/asio/detail/handler_alloc_helpers.hpp>
+#include <boost/asio/detail/handler_invoke_helpers.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+
+template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition>
+std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ ec = boost::system::error_code();
+ boost::asio::detail::consuming_buffers<
+ const_buffer, ConstBufferSequence> tmp(buffers);
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ while (tmp.begin() != tmp.end())
+ {
+ std::size_t bytes_transferred = d.write_some_at(
+ offset + total_transferred, tmp, ec);
+ tmp.consume(bytes_transferred);
+ total_transferred += bytes_transferred;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ }
+ return total_transferred;
+}
+
+template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
+inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write_at(
+ d, offset, buffers, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition>
+inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write_at(
+ d, offset, buffers, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessWriteDevice, typename Allocator,
+ typename CompletionCondition>
+std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec)
+{
+ std::size_t bytes_transferred = write_at(
+ d, offset, b.data(), completion_condition, ec);
+ b.consume(bytes_transferred);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessWriteDevice, typename Allocator>
+inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write_at(d, offset, b, transfer_all(), ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+template <typename SyncRandomAccessWriteDevice, typename Allocator,
+ typename CompletionCondition>
+inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition)
+{
+ boost::system::error_code ec;
+ std::size_t bytes_transferred = write_at(
+ d, offset, b, completion_condition, ec);
+ boost::asio::detail::throw_error(ec);
+ return bytes_transferred;
+}
+
+namespace detail
+{
+ template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+ class write_at_handler
+ {
+ public:
+ typedef boost::asio::detail::consuming_buffers<
+ const_buffer, ConstBufferSequence> buffers_type;
+
+ write_at_handler(AsyncRandomAccessWriteDevice& stream,
+ boost::uint64_t offset, const buffers_type& buffers,
+ CompletionCondition completion_condition, WriteHandler handler)
+ : stream_(stream),
+ buffers_(buffers),
+ offset_(offset),
+ total_transferred_(0),
+ completion_condition_(completion_condition),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ total_transferred_ += bytes_transferred;
+ buffers_.consume(bytes_transferred);
+ buffers_.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition_(ec, total_transferred_)));
+ if (buffers_.begin() == buffers_.end())
+ {
+ handler_(ec, total_transferred_);
+ }
+ else
+ {
+ stream_.async_write_some_at(
+ offset_ + total_transferred_, buffers_, *this);
+ }
+ }
+
+ //private:
+ AsyncRandomAccessWriteDevice& stream_;
+ buffers_type buffers_;
+ boost::uint64_t offset_;
+ std::size_t total_transferred_;
+ CompletionCondition completion_condition_;
+ WriteHandler handler_;
+ };
+
+ template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ write_at_handler<AsyncRandomAccessWriteDevice, ConstBufferSequence,
+ CompletionCondition, WriteHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ write_at_handler<AsyncRandomAccessWriteDevice, ConstBufferSequence,
+ CompletionCondition, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncRandomAccessWriteDevice,
+ typename ConstBufferSequence, typename CompletionCondition,
+ typename WriteHandler>
+ inline void asio_handler_invoke(const Function& function,
+ write_at_handler<AsyncRandomAccessWriteDevice, ConstBufferSequence,
+ CompletionCondition, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+inline void async_write_at(AsyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, WriteHandler handler)
+{
+ boost::asio::detail::consuming_buffers<
+ const_buffer, ConstBufferSequence> tmp(buffers);
+
+ boost::system::error_code ec;
+ std::size_t total_transferred = 0;
+ tmp.set_max_size(detail::adapt_completion_condition_result(
+ completion_condition(ec, total_transferred)));
+ if (tmp.begin() == tmp.end())
+ {
+ d.get_io_service().post(detail::bind_handler(
+ handler, ec, total_transferred));
+ return;
+ }
+
+ d.async_write_some_at(offset, tmp,
+ detail::write_at_handler<AsyncRandomAccessWriteDevice,
+ ConstBufferSequence, CompletionCondition, WriteHandler>(
+ d, offset, tmp, completion_condition, handler));
+}
+
+template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename WriteHandler>
+inline void async_write_at(AsyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ WriteHandler handler)
+{
+ async_write_at(d, offset, buffers, transfer_all(), handler);
+}
+
+namespace detail
+{
+ template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename WriteHandler>
+ class write_at_streambuf_handler
+ {
+ public:
+ write_at_streambuf_handler(
+ boost::asio::basic_streambuf<Allocator>& streambuf,
+ WriteHandler handler)
+ : streambuf_(streambuf),
+ handler_(handler)
+ {
+ }
+
+ void operator()(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ streambuf_.consume(bytes_transferred);
+ handler_(ec, bytes_transferred);
+ }
+
+ //private:
+ boost::asio::basic_streambuf<Allocator>& streambuf_;
+ WriteHandler handler_;
+ };
+
+ template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename WriteHandler>
+ inline void* asio_handler_allocate(std::size_t size,
+ write_at_streambuf_handler<AsyncRandomAccessWriteDevice,
+ Allocator, WriteHandler>* this_handler)
+ {
+ return boost_asio_handler_alloc_helpers::allocate(
+ size, &this_handler->handler_);
+ }
+
+ template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename WriteHandler>
+ inline void asio_handler_deallocate(void* pointer, std::size_t size,
+ write_at_streambuf_handler<AsyncRandomAccessWriteDevice,
+ Allocator, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_alloc_helpers::deallocate(
+ pointer, size, &this_handler->handler_);
+ }
+
+ template <typename Function, typename AsyncRandomAccessWriteDevice,
+ typename Allocator, typename WriteHandler>
+ inline void asio_handler_invoke(const Function& function,
+ write_at_streambuf_handler<AsyncRandomAccessWriteDevice,
+ Allocator, WriteHandler>* this_handler)
+ {
+ boost_asio_handler_invoke_helpers::invoke(
+ function, &this_handler->handler_);
+ }
+} // namespace detail
+
+template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename CompletionCondition, typename WriteHandler>
+inline void async_write_at(AsyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, WriteHandler handler)
+{
+ async_write_at(d, offset, b.data(), completion_condition,
+ detail::write_at_streambuf_handler<
+ AsyncRandomAccessWriteDevice, Allocator, WriteHandler>(b, handler));
+}
+
+template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename WriteHandler>
+inline void async_write_at(AsyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, boost::asio::basic_streambuf<Allocator>& b,
+ WriteHandler handler)
+{
+ async_write_at(d, offset, b, transfer_all(), handler);
+}
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WRITE_AT_IPP
diff --git a/3rdParty/Boost/boost/asio/io_service.hpp b/3rdParty/Boost/boost/asio/io_service.hpp
new file mode 100644
index 0000000..e50224a
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/io_service.hpp
@@ -0,0 +1,554 @@
+//
+// io_service.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IO_SERVICE_HPP
+#define BOOST_ASIO_IO_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <stdexcept>
+#include <typeinfo>
+#include <boost/config.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/system/error_code.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/dev_poll_reactor_fwd.hpp>
+#include <boost/asio/detail/epoll_reactor_fwd.hpp>
+#include <boost/asio/detail/kqueue_reactor_fwd.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/select_reactor_fwd.hpp>
+#include <boost/asio/detail/service_registry_fwd.hpp>
+#include <boost/asio/detail/signal_init.hpp>
+#include <boost/asio/detail/task_io_service_fwd.hpp>
+#include <boost/asio/detail/win_iocp_io_service_fwd.hpp>
+#include <boost/asio/detail/winsock_init.hpp>
+#include <boost/asio/detail/wrapped_handler.hpp>
+
+namespace boost {
+namespace asio {
+
+class io_service;
+template <typename Service> Service& use_service(io_service& ios);
+template <typename Service> void add_service(io_service& ios, Service* svc);
+template <typename Service> bool has_service(io_service& ios);
+
+/// Provides core I/O functionality.
+/**
+ * The io_service class provides the core I/O functionality for users of the
+ * asynchronous I/O objects, including:
+ *
+ * @li boost::asio::ip::tcp::socket
+ * @li boost::asio::ip::tcp::acceptor
+ * @li boost::asio::ip::udp::socket
+ * @li boost::asio::deadline_timer.
+ *
+ * The io_service class also includes facilities intended for developers of
+ * custom asynchronous services.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe, with the exception that calling reset()
+ * while there are unfinished run() calls results in undefined behaviour.
+ *
+ * @par Concepts:
+ * Dispatcher.
+ *
+ * @par Effect of exceptions thrown from handlers
+ *
+ * If an exception is thrown from a handler, the exception is allowed to
+ * propagate through the throwing thread's invocation of
+ * boost::asio::io_service::run(), boost::asio::io_service::run_one(),
+ * boost::asio::io_service::poll() or boost::asio::io_service::poll_one().
+ * No other threads that are calling any of these functions are affected. It is
+ * then the responsibility of the application to catch the exception.
+ *
+ * After the exception has been caught, the
+ * boost::asio::io_service::run(), boost::asio::io_service::run_one(),
+ * boost::asio::io_service::poll() or boost::asio::io_service::poll_one()
+ * call may be restarted @em without the need for an intervening call to
+ * boost::asio::io_service::reset(). This allows the thread to rejoin the
+ * io_service's thread pool without impacting any other threads in the pool.
+ *
+ * For example:
+ *
+ * @code
+ * boost::asio::io_service io_service;
+ * ...
+ * for (;;)
+ * {
+ * try
+ * {
+ * io_service.run();
+ * break; // run() exited normally
+ * }
+ * catch (my_exception& e)
+ * {
+ * // Deal with exception as appropriate.
+ * }
+ * }
+ * @endcode
+ *
+ * @par Stopping the io_service from running out of work
+ *
+ * Some applications may need to prevent an io_service's run() call from
+ * returning when there is no more work to do. For example, the io_service may
+ * be being run in a background thread that is launched prior to the
+ * application's asynchronous operations. The run() call may be kept running by
+ * creating an object of type boost::asio::io_service::work:
+ *
+ * @code boost::asio::io_service io_service;
+ * boost::asio::io_service::work work(io_service);
+ * ... @endcode
+ *
+ * To effect a shutdown, the application will then need to call the io_service's
+ * stop() member function. This will cause the io_service run() call to return
+ * as soon as possible, abandoning unfinished operations and without permitting
+ * ready handlers to be dispatched.
+ *
+ * Alternatively, if the application requires that all operations and handlers
+ * be allowed to finish normally, the work object may be explicitly destroyed.
+ *
+ * @code boost::asio::io_service io_service;
+ * auto_ptr<boost::asio::io_service::work> work(
+ * new boost::asio::io_service::work(io_service));
+ * ...
+ * work.reset(); // Allow run() to exit. @endcode
+ */
+class io_service
+ : private noncopyable
+{
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::win_iocp_io_service impl_type;
+ friend class detail::win_iocp_overlapped_ptr;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::task_io_service<detail::epoll_reactor<false> > impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::task_io_service<detail::kqueue_reactor<false> > impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::task_io_service<detail::dev_poll_reactor<false> > impl_type;
+#else
+ typedef detail::task_io_service<detail::select_reactor<false> > impl_type;
+#endif
+
+public:
+ class work;
+ friend class work;
+
+ class id;
+
+ class service;
+
+ class strand;
+
+ /// Constructor.
+ io_service();
+
+ /// Constructor.
+ /**
+ * Construct with a hint about the required level of concurrency.
+ *
+ * @param concurrency_hint A suggestion to the implementation on how many
+ * threads it should allow to run simultaneously.
+ */
+ explicit io_service(std::size_t concurrency_hint);
+
+ /// Destructor.
+ ~io_service();
+
+ /// Run the io_service's event processing loop.
+ /**
+ * The run() function blocks until all work has finished and there are no
+ * more handlers to be dispatched, or until the io_service has been stopped.
+ *
+ * Multiple threads may call the run() function to set up a pool of threads
+ * from which the io_service may execute handlers. All threads that are
+ * waiting in the pool are equivalent and the io_service may choose any one
+ * of them to invoke a handler.
+ *
+ * The run() function may be safely called again once it has completed only
+ * after a call to reset().
+ *
+ * @return The number of handlers that were executed.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note The poll() function may also be used to dispatch ready handlers,
+ * but without blocking.
+ */
+ std::size_t run();
+
+ /// Run the io_service's event processing loop.
+ /**
+ * The run() function blocks until all work has finished and there are no
+ * more handlers to be dispatched, or until the io_service has been stopped.
+ *
+ * Multiple threads may call the run() function to set up a pool of threads
+ * from which the io_service may execute handlers. All threads that are
+ * waiting in the pool are equivalent and the io_service may choose any one
+ * of them to invoke a handler.
+ *
+ * The run() function may be safely called again once it has completed only
+ * after a call to reset().
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of handlers that were executed.
+ *
+ * @note The poll() function may also be used to dispatch ready handlers,
+ * but without blocking.
+ */
+ std::size_t run(boost::system::error_code& ec);
+
+ /// Run the io_service's event processing loop to execute at most one handler.
+ /**
+ * The run_one() function blocks until one handler has been dispatched, or
+ * until the io_service has been stopped.
+ *
+ * @return The number of handlers that were executed.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t run_one();
+
+ /// Run the io_service's event processing loop to execute at most one handler.
+ /**
+ * The run_one() function blocks until one handler has been dispatched, or
+ * until the io_service has been stopped.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of handlers that were executed.
+ */
+ std::size_t run_one(boost::system::error_code& ec);
+
+ /// Run the io_service's event processing loop to execute ready handlers.
+ /**
+ * The poll() function runs handlers that are ready to run, without blocking,
+ * until the io_service has been stopped or there are no more ready handlers.
+ *
+ * @return The number of handlers that were executed.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t poll();
+
+ /// Run the io_service's event processing loop to execute ready handlers.
+ /**
+ * The poll() function runs handlers that are ready to run, without blocking,
+ * until the io_service has been stopped or there are no more ready handlers.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of handlers that were executed.
+ */
+ std::size_t poll(boost::system::error_code& ec);
+
+ /// Run the io_service's event processing loop to execute one ready handler.
+ /**
+ * The poll_one() function runs at most one handler that is ready to run,
+ * without blocking.
+ *
+ * @return The number of handlers that were executed.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ std::size_t poll_one();
+
+ /// Run the io_service's event processing loop to execute one ready handler.
+ /**
+ * The poll_one() function runs at most one handler that is ready to run,
+ * without blocking.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @return The number of handlers that were executed.
+ */
+ std::size_t poll_one(boost::system::error_code& ec);
+
+ /// Stop the io_service's event processing loop.
+ /**
+ * This function does not block, but instead simply signals the io_service to
+ * stop. All invocations of its run() or run_one() member functions should
+ * return as soon as possible. Subsequent calls to run(), run_one(), poll()
+ * or poll_one() will return immediately until reset() is called.
+ */
+ void stop();
+
+ /// Reset the io_service in preparation for a subsequent run() invocation.
+ /**
+ * This function must be called prior to any second or later set of
+ * invocations of the run(), run_one(), poll() or poll_one() functions when a
+ * previous invocation of these functions returned due to the io_service
+ * being stopped or running out of work. This function allows the io_service
+ * to reset any internal state, such as a "stopped" flag.
+ *
+ * This function must not be called while there are any unfinished calls to
+ * the run(), run_one(), poll() or poll_one() functions.
+ */
+ void reset();
+
+ /// Request the io_service to invoke the given handler.
+ /**
+ * This function is used to ask the io_service to execute the given handler.
+ *
+ * The io_service guarantees that the handler will only be called in a thread
+ * in which the run(), run_one(), poll() or poll_one() member functions is
+ * currently being invoked. The handler may be executed inside this function
+ * if the guarantee can be met.
+ *
+ * @param handler The handler to be called. The io_service will make
+ * a copy of the handler object as required. The function signature of the
+ * handler must be: @code void handler(); @endcode
+ */
+ template <typename CompletionHandler>
+ void dispatch(CompletionHandler handler);
+
+ /// Request the io_service to invoke the given handler and return immediately.
+ /**
+ * This function is used to ask the io_service to execute the given handler,
+ * but without allowing the io_service to call the handler from inside this
+ * function.
+ *
+ * The io_service guarantees that the handler will only be called in a thread
+ * in which the run(), run_one(), poll() or poll_one() member functions is
+ * currently being invoked.
+ *
+ * @param handler The handler to be called. The io_service will make
+ * a copy of the handler object as required. The function signature of the
+ * handler must be: @code void handler(); @endcode
+ */
+ template <typename CompletionHandler>
+ void post(CompletionHandler handler);
+
+ /// Create a new handler that automatically dispatches the wrapped handler
+ /// on the io_service.
+ /**
+ * This function is used to create a new handler function object that, when
+ * invoked, will automatically pass the wrapped handler to the io_service's
+ * dispatch function.
+ *
+ * @param handler The handler to be wrapped. The io_service will make a copy
+ * of the handler object as required. The function signature of the handler
+ * must be: @code void handler(A1 a1, ... An an); @endcode
+ *
+ * @return A function object that, when invoked, passes the wrapped handler to
+ * the io_service's dispatch function. Given a function object with the
+ * signature:
+ * @code R f(A1 a1, ... An an); @endcode
+ * If this function object is passed to the wrap function like so:
+ * @code io_service.wrap(f); @endcode
+ * then the return value is a function object with the signature
+ * @code void g(A1 a1, ... An an); @endcode
+ * that, when invoked, executes code equivalent to:
+ * @code io_service.dispatch(boost::bind(f, a1, ... an)); @endcode
+ */
+ template <typename Handler>
+#if defined(GENERATING_DOCUMENTATION)
+ unspecified
+#else
+ detail::wrapped_handler<io_service&, Handler>
+#endif
+ wrap(Handler handler);
+
+ /// Obtain the service object corresponding to the given type.
+ /**
+ * This function is used to locate a service object that corresponds to
+ * the given service type. If there is no existing implementation of the
+ * service, then the io_service will create a new instance of the service.
+ *
+ * @param ios The io_service object that owns the service.
+ *
+ * @return The service interface implementing the specified service type.
+ * Ownership of the service interface is not transferred to the caller.
+ */
+ template <typename Service>
+ friend Service& use_service(io_service& ios);
+
+ /// Add a service object to the io_service.
+ /**
+ * This function is used to add a service to the io_service.
+ *
+ * @param ios The io_service object that owns the service.
+ *
+ * @param svc The service object. On success, ownership of the service object
+ * is transferred to the io_service. When the io_service object is destroyed,
+ * it will destroy the service object by performing:
+ * @code delete static_cast<io_service::service*>(svc) @endcode
+ *
+ * @throws boost::asio::service_already_exists Thrown if a service of the
+ * given type is already present in the io_service.
+ *
+ * @throws boost::asio::invalid_service_owner Thrown if the service's owning
+ * io_service is not the io_service object specified by the ios parameter.
+ */
+ template <typename Service>
+ friend void add_service(io_service& ios, Service* svc);
+
+ /// Determine if an io_service contains a specified service type.
+ /**
+ * This function is used to determine whether the io_service contains a
+ * service object corresponding to the given service type.
+ *
+ * @param ios The io_service object that owns the service.
+ *
+ * @return A boolean indicating whether the io_service contains the service.
+ */
+ template <typename Service>
+ friend bool has_service(io_service& ios);
+
+private:
+#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+ detail::winsock_init<> init_;
+#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
+ || defined(__osf__)
+ detail::signal_init<> init_;
+#endif
+
+ // The service registry.
+ boost::asio::detail::service_registry* service_registry_;
+
+ // The implementation.
+ impl_type& impl_;
+};
+
+/// Class to inform the io_service when it has work to do.
+/**
+ * The work class is used to inform the io_service when work starts and
+ * finishes. This ensures that the io_service's run() function will not exit
+ * while work is underway, and that it does exit when there is no unfinished
+ * work remaining.
+ *
+ * The work class is copy-constructible so that it may be used as a data member
+ * in a handler class. It is not assignable.
+ */
+class io_service::work
+{
+public:
+ /// Constructor notifies the io_service that work is starting.
+ /**
+ * The constructor is used to inform the io_service that some work has begun.
+ * This ensures that the io_service's run() function will not exit while the
+ * work is underway.
+ */
+ explicit work(boost::asio::io_service& io_service);
+
+ /// Copy constructor notifies the io_service that work is starting.
+ /**
+ * The constructor is used to inform the io_service that some work has begun.
+ * This ensures that the io_service's run() function will not exit while the
+ * work is underway.
+ */
+ work(const work& other);
+
+ /// Destructor notifies the io_service that the work is complete.
+ /**
+ * The destructor is used to inform the io_service that some work has
+ * finished. Once the count of unfinished work reaches zero, the io_service's
+ * run() function is permitted to exit.
+ */
+ ~work();
+
+ /// (Deprecated: use get_io_service().) Get the io_service associated with the
+ /// work.
+ boost::asio::io_service& io_service();
+
+ /// Get the io_service associated with the work.
+ boost::asio::io_service& get_io_service();
+
+private:
+ // Prevent assignment.
+ void operator=(const work& other);
+
+ // The io_service.
+ boost::asio::io_service& io_service_;
+};
+
+/// Class used to uniquely identify a service.
+class io_service::id
+ : private noncopyable
+{
+public:
+ /// Constructor.
+ id() {}
+};
+
+/// Base class for all io_service services.
+class io_service::service
+ : private noncopyable
+{
+public:
+ /// (Deprecated: use get_io_service().) Get the io_service object that owns
+ /// the service.
+ boost::asio::io_service& io_service();
+
+ /// Get the io_service object that owns the service.
+ boost::asio::io_service& get_io_service();
+
+protected:
+ /// Constructor.
+ /**
+ * @param owner The io_service object that owns the service.
+ */
+ service(boost::asio::io_service& owner);
+
+ /// Destructor.
+ virtual ~service();
+
+private:
+ /// Destroy all user-defined handler objects owned by the service.
+ virtual void shutdown_service() = 0;
+
+ friend class boost::asio::detail::service_registry;
+ boost::asio::io_service& owner_;
+ const std::type_info* type_info_;
+ const boost::asio::io_service::id* id_;
+ service* next_;
+};
+
+/// Exception thrown when trying to add a duplicate service to an io_service.
+class service_already_exists
+ : public std::logic_error
+{
+public:
+ service_already_exists()
+ : std::logic_error("Service already exists.")
+ {
+ }
+};
+
+/// Exception thrown when trying to add a service object to an io_service where
+/// the service has a different owner.
+class invalid_service_owner
+ : public std::logic_error
+{
+public:
+ invalid_service_owner()
+ : std::logic_error("Invalid service owner.")
+ {
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/io_service.ipp>
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IO_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/address.hpp b/3rdParty/Boost/boost/asio/ip/address.hpp
new file mode 100644
index 0000000..9f1836e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/address.hpp
@@ -0,0 +1,279 @@
+//
+// address.hpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_ADDRESS_HPP
+#define BOOST_ASIO_IP_ADDRESS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <iosfwd>
+#include <string>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/ip/address_v4.hpp>
+#include <boost/asio/ip/address_v6.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Implements version-independent IP addresses.
+/**
+ * The boost::asio::ip::address class provides the ability to use either IP
+ * version 4 or version 6 addresses.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+class address
+{
+public:
+ /// Default constructor.
+ address()
+ : type_(ipv4),
+ ipv4_address_(),
+ ipv6_address_()
+ {
+ }
+
+ /// Construct an address from an IPv4 address.
+ address(const boost::asio::ip::address_v4& ipv4_address)
+ : type_(ipv4),
+ ipv4_address_(ipv4_address),
+ ipv6_address_()
+ {
+ }
+
+ /// Construct an address from an IPv6 address.
+ address(const boost::asio::ip::address_v6& ipv6_address)
+ : type_(ipv6),
+ ipv4_address_(),
+ ipv6_address_(ipv6_address)
+ {
+ }
+
+ /// Copy constructor.
+ address(const address& other)
+ : type_(other.type_),
+ ipv4_address_(other.ipv4_address_),
+ ipv6_address_(other.ipv6_address_)
+ {
+ }
+
+ /// Assign from another address.
+ address& operator=(const address& other)
+ {
+ type_ = other.type_;
+ ipv4_address_ = other.ipv4_address_;
+ ipv6_address_ = other.ipv6_address_;
+ return *this;
+ }
+
+ /// Assign from an IPv4 address.
+ address& operator=(const boost::asio::ip::address_v4& ipv4_address)
+ {
+ type_ = ipv4;
+ ipv4_address_ = ipv4_address;
+ ipv6_address_ = boost::asio::ip::address_v6();
+ return *this;
+ }
+
+ /// Assign from an IPv6 address.
+ address& operator=(const boost::asio::ip::address_v6& ipv6_address)
+ {
+ type_ = ipv6;
+ ipv4_address_ = boost::asio::ip::address_v4();
+ ipv6_address_ = ipv6_address;
+ return *this;
+ }
+
+ /// Get whether the address is an IP version 4 address.
+ bool is_v4() const
+ {
+ return type_ == ipv4;
+ }
+
+ /// Get whether the address is an IP version 6 address.
+ bool is_v6() const
+ {
+ return type_ == ipv6;
+ }
+
+ /// Get the address as an IP version 4 address.
+ boost::asio::ip::address_v4 to_v4() const
+ {
+ if (type_ != ipv4)
+ {
+ boost::system::system_error e(
+ boost::asio::error::address_family_not_supported);
+ boost::throw_exception(e);
+ }
+ return ipv4_address_;
+ }
+
+ /// Get the address as an IP version 6 address.
+ boost::asio::ip::address_v6 to_v6() const
+ {
+ if (type_ != ipv6)
+ {
+ boost::system::system_error e(
+ boost::asio::error::address_family_not_supported);
+ boost::throw_exception(e);
+ }
+ return ipv6_address_;
+ }
+
+ /// Get the address as a string in dotted decimal format.
+ std::string to_string() const
+ {
+ if (type_ == ipv6)
+ return ipv6_address_.to_string();
+ return ipv4_address_.to_string();
+ }
+
+ /// Get the address as a string in dotted decimal format.
+ std::string to_string(boost::system::error_code& ec) const
+ {
+ if (type_ == ipv6)
+ return ipv6_address_.to_string(ec);
+ return ipv4_address_.to_string(ec);
+ }
+
+ /// Create an address from an IPv4 address string in dotted decimal form,
+ /// or from an IPv6 address in hexadecimal notation.
+ static address from_string(const char* str)
+ {
+ boost::system::error_code ec;
+ address addr = from_string(str, ec);
+ boost::asio::detail::throw_error(ec);
+ return addr;
+ }
+
+ /// Create an address from an IPv4 address string in dotted decimal form,
+ /// or from an IPv6 address in hexadecimal notation.
+ static address from_string(const char* str, boost::system::error_code& ec)
+ {
+ boost::asio::ip::address_v6 ipv6_address =
+ boost::asio::ip::address_v6::from_string(str, ec);
+ if (!ec)
+ {
+ address tmp;
+ tmp.type_ = ipv6;
+ tmp.ipv6_address_ = ipv6_address;
+ return tmp;
+ }
+
+ boost::asio::ip::address_v4 ipv4_address =
+ boost::asio::ip::address_v4::from_string(str, ec);
+ if (!ec)
+ {
+ address tmp;
+ tmp.type_ = ipv4;
+ tmp.ipv4_address_ = ipv4_address;
+ return tmp;
+ }
+
+ return address();
+ }
+
+ /// Create an address from an IPv4 address string in dotted decimal form,
+ /// or from an IPv6 address in hexadecimal notation.
+ static address from_string(const std::string& str)
+ {
+ return from_string(str.c_str());
+ }
+
+ /// Create an address from an IPv4 address string in dotted decimal form,
+ /// or from an IPv6 address in hexadecimal notation.
+ static address from_string(const std::string& str,
+ boost::system::error_code& ec)
+ {
+ return from_string(str.c_str(), ec);
+ }
+
+ /// Compare two addresses for equality.
+ friend bool operator==(const address& a1, const address& a2)
+ {
+ if (a1.type_ != a2.type_)
+ return false;
+ if (a1.type_ == ipv6)
+ return a1.ipv6_address_ == a2.ipv6_address_;
+ return a1.ipv4_address_ == a2.ipv4_address_;
+ }
+
+ /// Compare two addresses for inequality.
+ friend bool operator!=(const address& a1, const address& a2)
+ {
+ if (a1.type_ != a2.type_)
+ return true;
+ if (a1.type_ == ipv6)
+ return a1.ipv6_address_ != a2.ipv6_address_;
+ return a1.ipv4_address_ != a2.ipv4_address_;
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator<(const address& a1, const address& a2)
+ {
+ if (a1.type_ < a2.type_)
+ return true;
+ if (a1.type_ > a2.type_)
+ return false;
+ if (a1.type_ == ipv6)
+ return a1.ipv6_address_ < a2.ipv6_address_;
+ return a1.ipv4_address_ < a2.ipv4_address_;
+ }
+
+private:
+ // The type of the address.
+ enum { ipv4, ipv6 } type_;
+
+ // The underlying IPv4 address.
+ boost::asio::ip::address_v4 ipv4_address_;
+
+ // The underlying IPv6 address.
+ boost::asio::ip::address_v6 ipv6_address_;
+};
+
+/// Output an address as a string.
+/**
+ * Used to output a human-readable string for a specified address.
+ *
+ * @param os The output stream to which the string will be written.
+ *
+ * @param addr The address to be written.
+ *
+ * @return The output stream.
+ *
+ * @relates boost::asio::ip::address
+ */
+template <typename Elem, typename Traits>
+std::basic_ostream<Elem, Traits>& operator<<(
+ std::basic_ostream<Elem, Traits>& os, const address& addr)
+{
+ os << addr.to_string();
+ return os;
+}
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_ADDRESS_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/address_v4.hpp b/3rdParty/Boost/boost/asio/ip/address_v4.hpp
new file mode 100644
index 0000000..357edfa
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/address_v4.hpp
@@ -0,0 +1,309 @@
+//
+// address_v4.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_ADDRESS_V4_HPP
+#define BOOST_ASIO_IP_ADDRESS_V4_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <climits>
+#include <string>
+#include <stdexcept>
+#include <boost/array.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Implements IP version 4 style addresses.
+/**
+ * The boost::asio::ip::address_v4 class provides the ability to use and
+ * manipulate IP version 4 addresses.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+class address_v4
+{
+public:
+ /// The type used to represent an address as an array of bytes.
+ typedef boost::array<unsigned char, 4> bytes_type;
+
+ /// Default constructor.
+ address_v4()
+ {
+ addr_.s_addr = 0;
+ }
+
+ /// Construct an address from raw bytes.
+ explicit address_v4(const bytes_type& bytes)
+ {
+#if UCHAR_MAX > 0xFF
+ if (bytes[0] > 0xFF || bytes[1] > 0xFF
+ || bytes[2] > 0xFF || bytes[3] > 0xFF)
+ {
+ std::out_of_range ex("address_v4 from bytes_type");
+ boost::throw_exception(ex);
+ }
+#endif // UCHAR_MAX > 0xFF
+
+ using namespace std; // For memcpy.
+ memcpy(&addr_.s_addr, bytes.elems, 4);
+ }
+
+ /// Construct an address from a unsigned long in host byte order.
+ explicit address_v4(unsigned long addr)
+ {
+#if ULONG_MAX > 0xFFFFFFFF
+ if (addr > 0xFFFFFFFF)
+ {
+ std::out_of_range ex("address_v4 from unsigned long");
+ boost::throw_exception(ex);
+ }
+#endif // ULONG_MAX > 0xFFFFFFFF
+
+ addr_.s_addr = boost::asio::detail::socket_ops::host_to_network_long(addr);
+ }
+
+ /// Copy constructor.
+ address_v4(const address_v4& other)
+ : addr_(other.addr_)
+ {
+ }
+
+ /// Assign from another address.
+ address_v4& operator=(const address_v4& other)
+ {
+ addr_ = other.addr_;
+ return *this;
+ }
+
+ /// Get the address in bytes.
+ bytes_type to_bytes() const
+ {
+ using namespace std; // For memcpy.
+ bytes_type bytes;
+ memcpy(bytes.elems, &addr_.s_addr, 4);
+ return bytes;
+ }
+
+ /// Get the address as an unsigned long in host byte order
+ unsigned long to_ulong() const
+ {
+ return boost::asio::detail::socket_ops::network_to_host_long(addr_.s_addr);
+ }
+
+ /// Get the address as a string in dotted decimal format.
+ std::string to_string() const
+ {
+ boost::system::error_code ec;
+ std::string addr = to_string(ec);
+ boost::asio::detail::throw_error(ec);
+ return addr;
+ }
+
+ /// Get the address as a string in dotted decimal format.
+ std::string to_string(boost::system::error_code& ec) const
+ {
+ char addr_str[boost::asio::detail::max_addr_v4_str_len];
+ const char* addr =
+ boost::asio::detail::socket_ops::inet_ntop(AF_INET, &addr_, addr_str,
+ boost::asio::detail::max_addr_v4_str_len, 0, ec);
+ if (addr == 0)
+ return std::string();
+ return addr;
+ }
+
+ /// Create an address from an IP address string in dotted decimal form.
+ static address_v4 from_string(const char* str)
+ {
+ boost::system::error_code ec;
+ address_v4 addr = from_string(str, ec);
+ boost::asio::detail::throw_error(ec);
+ return addr;
+ }
+
+ /// Create an address from an IP address string in dotted decimal form.
+ static address_v4 from_string(const char* str, boost::system::error_code& ec)
+ {
+ address_v4 tmp;
+ if (boost::asio::detail::socket_ops::inet_pton(
+ AF_INET, str, &tmp.addr_, 0, ec) <= 0)
+ return address_v4();
+ return tmp;
+ }
+
+ /// Create an address from an IP address string in dotted decimal form.
+ static address_v4 from_string(const std::string& str)
+ {
+ return from_string(str.c_str());
+ }
+
+ /// Create an address from an IP address string in dotted decimal form.
+ static address_v4 from_string(const std::string& str,
+ boost::system::error_code& ec)
+ {
+ return from_string(str.c_str(), ec);
+ }
+
+ /// Determine whether the address is a class A address.
+ bool is_class_a() const
+ {
+ return IN_CLASSA(to_ulong());
+ }
+
+ /// Determine whether the address is a class B address.
+ bool is_class_b() const
+ {
+ return IN_CLASSB(to_ulong());
+ }
+
+ /// Determine whether the address is a class C address.
+ bool is_class_c() const
+ {
+ return IN_CLASSC(to_ulong());
+ }
+
+ /// Determine whether the address is a multicast address.
+ bool is_multicast() const
+ {
+ return IN_MULTICAST(to_ulong());
+ }
+
+ /// Compare two addresses for equality.
+ friend bool operator==(const address_v4& a1, const address_v4& a2)
+ {
+ return a1.addr_.s_addr == a2.addr_.s_addr;
+ }
+
+ /// Compare two addresses for inequality.
+ friend bool operator!=(const address_v4& a1, const address_v4& a2)
+ {
+ return a1.addr_.s_addr != a2.addr_.s_addr;
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator<(const address_v4& a1, const address_v4& a2)
+ {
+ return a1.to_ulong() < a2.to_ulong();
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator>(const address_v4& a1, const address_v4& a2)
+ {
+ return a1.to_ulong() > a2.to_ulong();
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator<=(const address_v4& a1, const address_v4& a2)
+ {
+ return a1.to_ulong() <= a2.to_ulong();
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator>=(const address_v4& a1, const address_v4& a2)
+ {
+ return a1.to_ulong() >= a2.to_ulong();
+ }
+
+ /// Obtain an address object that represents any address.
+ static address_v4 any()
+ {
+ return address_v4(static_cast<unsigned long>(INADDR_ANY));
+ }
+
+ /// Obtain an address object that represents the loopback address.
+ static address_v4 loopback()
+ {
+ return address_v4(static_cast<unsigned long>(INADDR_LOOPBACK));
+ }
+
+ /// Obtain an address object that represents the broadcast address.
+ static address_v4 broadcast()
+ {
+ return address_v4(static_cast<unsigned long>(INADDR_BROADCAST));
+ }
+
+ /// Obtain an address object that represents the broadcast address that
+ /// corresponds to the specified address and netmask.
+ static address_v4 broadcast(const address_v4& addr, const address_v4& mask)
+ {
+ return address_v4(addr.to_ulong() | ~mask.to_ulong());
+ }
+
+ /// Obtain the netmask that corresponds to the address, based on its address
+ /// class.
+ static address_v4 netmask(const address_v4& addr)
+ {
+ if (addr.is_class_a())
+ return address_v4(0xFF000000);
+ if (addr.is_class_b())
+ return address_v4(0xFFFF0000);
+ if (addr.is_class_c())
+ return address_v4(0xFFFFFF00);
+ return address_v4(0xFFFFFFFF);
+ }
+
+private:
+ // The underlying IPv4 address.
+ boost::asio::detail::in4_addr_type addr_;
+};
+
+/// Output an address as a string.
+/**
+ * Used to output a human-readable string for a specified address.
+ *
+ * @param os The output stream to which the string will be written.
+ *
+ * @param addr The address to be written.
+ *
+ * @return The output stream.
+ *
+ * @relates boost::asio::ip::address_v4
+ */
+template <typename Elem, typename Traits>
+std::basic_ostream<Elem, Traits>& operator<<(
+ std::basic_ostream<Elem, Traits>& os, const address_v4& addr)
+{
+ boost::system::error_code ec;
+ std::string s = addr.to_string(ec);
+ if (ec)
+ {
+ if (os.exceptions() & std::ios::failbit)
+ boost::asio::detail::throw_error(ec);
+ else
+ os.setstate(std::ios_base::failbit);
+ }
+ else
+ for (std::string::iterator i = s.begin(); i != s.end(); ++i)
+ os << os.widen(*i);
+ return os;
+}
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_ADDRESS_V4_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/address_v6.hpp b/3rdParty/Boost/boost/asio/ip/address_v6.hpp
new file mode 100644
index 0000000..5f5f092
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/address_v6.hpp
@@ -0,0 +1,423 @@
+//
+// address_v6.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_ADDRESS_V6_HPP
+#define BOOST_ASIO_IP_ADDRESS_V6_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstring>
+#include <string>
+#include <stdexcept>
+#include <typeinfo>
+#include <boost/array.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+#include <boost/asio/ip/address_v4.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Implements IP version 6 style addresses.
+/**
+ * The boost::asio::ip::address_v6 class provides the ability to use and
+ * manipulate IP version 6 addresses.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+class address_v6
+{
+public:
+ /// The type used to represent an address as an array of bytes.
+ typedef boost::array<unsigned char, 16> bytes_type;
+
+ /// Default constructor.
+ address_v6()
+ : scope_id_(0)
+ {
+ boost::asio::detail::in6_addr_type tmp_addr = IN6ADDR_ANY_INIT;
+ addr_ = tmp_addr;
+ }
+
+ /// Construct an address from raw bytes and scope ID.
+ explicit address_v6(const bytes_type& bytes, unsigned long scope_id = 0)
+ : scope_id_(scope_id)
+ {
+#if UCHAR_MAX > 0xFF
+ for (std::size_t i = 0; i < bytes.size(); ++i)
+ {
+ if (bytes[i] > 0xFF)
+ {
+ std::out_of_range ex("address_v6 from bytes_type");
+ boost::throw_exception(ex);
+ }
+ }
+#endif // UCHAR_MAX > 0xFF
+
+ using namespace std; // For memcpy.
+ memcpy(addr_.s6_addr, bytes.elems, 16);
+ }
+
+ /// Copy constructor.
+ address_v6(const address_v6& other)
+ : addr_(other.addr_),
+ scope_id_(other.scope_id_)
+ {
+ }
+
+ /// Assign from another address.
+ address_v6& operator=(const address_v6& other)
+ {
+ addr_ = other.addr_;
+ scope_id_ = other.scope_id_;
+ return *this;
+ }
+
+ /// The scope ID of the address.
+ /**
+ * Returns the scope ID associated with the IPv6 address.
+ */
+ unsigned long scope_id() const
+ {
+ return scope_id_;
+ }
+
+ /// The scope ID of the address.
+ /**
+ * Modifies the scope ID associated with the IPv6 address.
+ */
+ void scope_id(unsigned long id)
+ {
+ scope_id_ = id;
+ }
+
+ /// Get the address in bytes.
+ bytes_type to_bytes() const
+ {
+ using namespace std; // For memcpy.
+ bytes_type bytes;
+ memcpy(bytes.elems, addr_.s6_addr, 16);
+ return bytes;
+ }
+
+ /// Get the address as a string.
+ std::string to_string() const
+ {
+ boost::system::error_code ec;
+ std::string addr = to_string(ec);
+ boost::asio::detail::throw_error(ec);
+ return addr;
+ }
+
+ /// Get the address as a string.
+ std::string to_string(boost::system::error_code& ec) const
+ {
+ char addr_str[boost::asio::detail::max_addr_v6_str_len];
+ const char* addr =
+ boost::asio::detail::socket_ops::inet_ntop(AF_INET6, &addr_, addr_str,
+ boost::asio::detail::max_addr_v6_str_len, scope_id_, ec);
+ if (addr == 0)
+ return std::string();
+ return addr;
+ }
+
+ /// Create an address from an IP address string.
+ static address_v6 from_string(const char* str)
+ {
+ boost::system::error_code ec;
+ address_v6 addr = from_string(str, ec);
+ boost::asio::detail::throw_error(ec);
+ return addr;
+ }
+
+ /// Create an address from an IP address string.
+ static address_v6 from_string(const char* str, boost::system::error_code& ec)
+ {
+ address_v6 tmp;
+ if (boost::asio::detail::socket_ops::inet_pton(
+ AF_INET6, str, &tmp.addr_, &tmp.scope_id_, ec) <= 0)
+ return address_v6();
+ return tmp;
+ }
+
+ /// Create an address from an IP address string.
+ static address_v6 from_string(const std::string& str)
+ {
+ return from_string(str.c_str());
+ }
+
+ /// Create an address from an IP address string.
+ static address_v6 from_string(const std::string& str,
+ boost::system::error_code& ec)
+ {
+ return from_string(str.c_str(), ec);
+ }
+
+ /// Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
+ address_v4 to_v4() const
+ {
+ if (!is_v4_mapped() && !is_v4_compatible())
+ {
+ std::bad_cast ex;
+ boost::throw_exception(ex);
+ }
+
+ address_v4::bytes_type v4_bytes = { { addr_.s6_addr[12],
+ addr_.s6_addr[13], addr_.s6_addr[14], addr_.s6_addr[15] } };
+ return address_v4(v4_bytes);
+ }
+
+ /// Determine whether the address is a loopback address.
+ bool is_loopback() const
+ {
+#if defined(__BORLANDC__)
+ return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
+ && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
+ && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
+ && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
+ && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
+ && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
+ && (addr_.s6_addr[12] == 0) && (addr_.s6_addr[13] == 0)
+ && (addr_.s6_addr[14] == 0) && (addr_.s6_addr[15] == 1));
+#else
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_LOOPBACK(&addr_) != 0;
+#endif
+ }
+
+ /// Determine whether the address is unspecified.
+ bool is_unspecified() const
+ {
+#if defined(__BORLANDC__)
+ return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
+ && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
+ && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
+ && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
+ && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
+ && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
+ && (addr_.s6_addr[12] == 0) && (addr_.s6_addr[13] == 0)
+ && (addr_.s6_addr[14] == 0) && (addr_.s6_addr[15] == 0));
+#else
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_UNSPECIFIED(&addr_) != 0;
+#endif
+ }
+
+ /// Determine whether the address is link local.
+ bool is_link_local() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_LINKLOCAL(&addr_) != 0;
+ }
+
+ /// Determine whether the address is site local.
+ bool is_site_local() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_SITELOCAL(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a mapped IPv4 address.
+ bool is_v4_mapped() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_V4MAPPED(&addr_) != 0;
+ }
+
+ /// Determine whether the address is an IPv4-compatible address.
+ bool is_v4_compatible() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_V4COMPAT(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a multicast address.
+ bool is_multicast() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_MULTICAST(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a global multicast address.
+ bool is_multicast_global() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_MC_GLOBAL(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a link-local multicast address.
+ bool is_multicast_link_local() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_MC_LINKLOCAL(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a node-local multicast address.
+ bool is_multicast_node_local() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_MC_NODELOCAL(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a org-local multicast address.
+ bool is_multicast_org_local() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_MC_ORGLOCAL(&addr_) != 0;
+ }
+
+ /// Determine whether the address is a site-local multicast address.
+ bool is_multicast_site_local() const
+ {
+ using namespace boost::asio::detail;
+ return IN6_IS_ADDR_MC_SITELOCAL(&addr_) != 0;
+ }
+
+ /// Compare two addresses for equality.
+ friend bool operator==(const address_v6& a1, const address_v6& a2)
+ {
+ using namespace std; // For memcmp.
+ return memcmp(&a1.addr_, &a2.addr_,
+ sizeof(boost::asio::detail::in6_addr_type)) == 0
+ && a1.scope_id_ == a2.scope_id_;
+ }
+
+ /// Compare two addresses for inequality.
+ friend bool operator!=(const address_v6& a1, const address_v6& a2)
+ {
+ using namespace std; // For memcmp.
+ return memcmp(&a1.addr_, &a2.addr_,
+ sizeof(boost::asio::detail::in6_addr_type)) != 0
+ || a1.scope_id_ != a2.scope_id_;
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator<(const address_v6& a1, const address_v6& a2)
+ {
+ using namespace std; // For memcmp.
+ int memcmp_result = memcmp(&a1.addr_, &a2.addr_,
+ sizeof(boost::asio::detail::in6_addr_type));
+ if (memcmp_result < 0)
+ return true;
+ if (memcmp_result > 0)
+ return false;
+ return a1.scope_id_ < a2.scope_id_;
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator>(const address_v6& a1, const address_v6& a2)
+ {
+ return a2 < a1;
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator<=(const address_v6& a1, const address_v6& a2)
+ {
+ return !(a2 < a1);
+ }
+
+ /// Compare addresses for ordering.
+ friend bool operator>=(const address_v6& a1, const address_v6& a2)
+ {
+ return !(a1 < a2);
+ }
+
+ /// Obtain an address object that represents any address.
+ static address_v6 any()
+ {
+ return address_v6();
+ }
+
+ /// Obtain an address object that represents the loopback address.
+ static address_v6 loopback()
+ {
+ address_v6 tmp;
+ boost::asio::detail::in6_addr_type tmp_addr = IN6ADDR_LOOPBACK_INIT;
+ tmp.addr_ = tmp_addr;
+ return tmp;
+ }
+
+ /// Create an IPv4-mapped IPv6 address.
+ static address_v6 v4_mapped(const address_v4& addr)
+ {
+ address_v4::bytes_type v4_bytes = addr.to_bytes();
+ bytes_type v6_bytes = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF,
+ v4_bytes[0], v4_bytes[1], v4_bytes[2], v4_bytes[3] } };
+ return address_v6(v6_bytes);
+ }
+
+ /// Create an IPv4-compatible IPv6 address.
+ static address_v6 v4_compatible(const address_v4& addr)
+ {
+ address_v4::bytes_type v4_bytes = addr.to_bytes();
+ bytes_type v6_bytes = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ v4_bytes[0], v4_bytes[1], v4_bytes[2], v4_bytes[3] } };
+ return address_v6(v6_bytes);
+ }
+
+private:
+ // The underlying IPv6 address.
+ boost::asio::detail::in6_addr_type addr_;
+
+ // The scope ID associated with the address.
+ unsigned long scope_id_;
+};
+
+/// Output an address as a string.
+/**
+ * Used to output a human-readable string for a specified address.
+ *
+ * @param os The output stream to which the string will be written.
+ *
+ * @param addr The address to be written.
+ *
+ * @return The output stream.
+ *
+ * @relates boost::asio::ip::address_v6
+ */
+template <typename Elem, typename Traits>
+std::basic_ostream<Elem, Traits>& operator<<(
+ std::basic_ostream<Elem, Traits>& os, const address_v6& addr)
+{
+ boost::system::error_code ec;
+ std::string s = addr.to_string(ec);
+ if (ec)
+ {
+ if (os.exceptions() & std::ios::failbit)
+ boost::asio::detail::throw_error(ec);
+ else
+ os.setstate(std::ios_base::failbit);
+ }
+ else
+ for (std::string::iterator i = s.begin(); i != s.end(); ++i)
+ os << os.widen(*i);
+ return os;
+}
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_ADDRESS_V6_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/basic_endpoint.hpp b/3rdParty/Boost/boost/asio/ip/basic_endpoint.hpp
new file mode 100644
index 0000000..80aaf1e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/basic_endpoint.hpp
@@ -0,0 +1,377 @@
+//
+// basic_endpoint.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_BASIC_ENDPOINT_HPP
+#define BOOST_ASIO_IP_BASIC_ENDPOINT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/detail/workaround.hpp>
+#include <cstring>
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# include <ostream>
+#endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#include <sstream>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/ip/address.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Describes an endpoint for a version-independent IP socket.
+/**
+ * The boost::asio::ip::basic_endpoint class template describes an endpoint that
+ * may be associated with a particular socket.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * Endpoint.
+ */
+template <typename InternetProtocol>
+class basic_endpoint
+{
+public:
+ /// The protocol type associated with the endpoint.
+ typedef InternetProtocol protocol_type;
+
+ /// The type of the endpoint structure. This type is dependent on the
+ /// underlying implementation of the socket layer.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined data_type;
+#else
+ typedef boost::asio::detail::socket_addr_type data_type;
+#endif
+
+ /// Default constructor.
+ basic_endpoint()
+ : data_()
+ {
+ data_.v4.sin_family = AF_INET;
+ data_.v4.sin_port = 0;
+ data_.v4.sin_addr.s_addr = INADDR_ANY;
+ }
+
+ /// Construct an endpoint using a port number, specified in the host's byte
+ /// order. The IP address will be the any address (i.e. INADDR_ANY or
+ /// in6addr_any). This constructor would typically be used for accepting new
+ /// connections.
+ /**
+ * @par Examples
+ * To initialise an IPv4 TCP endpoint for port 1234, use:
+ * @code
+ * boost::asio::ip::tcp::endpoint ep(boost::asio::ip::tcp::v4(), 1234);
+ * @endcode
+ *
+ * To specify an IPv6 UDP endpoint for port 9876, use:
+ * @code
+ * boost::asio::ip::udp::endpoint ep(boost::asio::ip::udp::v6(), 9876);
+ * @endcode
+ */
+ basic_endpoint(const InternetProtocol& protocol, unsigned short port_num)
+ : data_()
+ {
+ using namespace std; // For memcpy.
+ if (protocol.family() == PF_INET)
+ {
+ data_.v4.sin_family = AF_INET;
+ data_.v4.sin_port =
+ boost::asio::detail::socket_ops::host_to_network_short(port_num);
+ data_.v4.sin_addr.s_addr = INADDR_ANY;
+ }
+ else
+ {
+ data_.v6.sin6_family = AF_INET6;
+ data_.v6.sin6_port =
+ boost::asio::detail::socket_ops::host_to_network_short(port_num);
+ data_.v6.sin6_flowinfo = 0;
+ boost::asio::detail::in6_addr_type tmp_addr = IN6ADDR_ANY_INIT;
+ data_.v6.sin6_addr = tmp_addr;
+ data_.v6.sin6_scope_id = 0;
+ }
+ }
+
+ /// Construct an endpoint using a port number and an IP address. This
+ /// constructor may be used for accepting connections on a specific interface
+ /// or for making a connection to a remote endpoint.
+ basic_endpoint(const boost::asio::ip::address& addr, unsigned short port_num)
+ : data_()
+ {
+ using namespace std; // For memcpy.
+ if (addr.is_v4())
+ {
+ data_.v4.sin_family = AF_INET;
+ data_.v4.sin_port =
+ boost::asio::detail::socket_ops::host_to_network_short(port_num);
+ data_.v4.sin_addr.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ addr.to_v4().to_ulong());
+ }
+ else
+ {
+ data_.v6.sin6_family = AF_INET6;
+ data_.v6.sin6_port =
+ boost::asio::detail::socket_ops::host_to_network_short(port_num);
+ data_.v6.sin6_flowinfo = 0;
+ boost::asio::ip::address_v6 v6_addr = addr.to_v6();
+ boost::asio::ip::address_v6::bytes_type bytes = v6_addr.to_bytes();
+ memcpy(data_.v6.sin6_addr.s6_addr, bytes.elems, 16);
+ data_.v6.sin6_scope_id = v6_addr.scope_id();
+ }
+ }
+
+ /// Copy constructor.
+ basic_endpoint(const basic_endpoint& other)
+ : data_(other.data_)
+ {
+ }
+
+ /// Assign from another endpoint.
+ basic_endpoint& operator=(const basic_endpoint& other)
+ {
+ data_ = other.data_;
+ return *this;
+ }
+
+ /// The protocol associated with the endpoint.
+ protocol_type protocol() const
+ {
+ if (is_v4())
+ return InternetProtocol::v4();
+ return InternetProtocol::v6();
+ }
+
+ /// Get the underlying endpoint in the native type.
+ data_type* data()
+ {
+ return &data_.base;
+ }
+
+ /// Get the underlying endpoint in the native type.
+ const data_type* data() const
+ {
+ return &data_.base;
+ }
+
+ /// Get the underlying size of the endpoint in the native type.
+ std::size_t size() const
+ {
+ if (is_v4())
+ return sizeof(boost::asio::detail::sockaddr_in4_type);
+ else
+ return sizeof(boost::asio::detail::sockaddr_in6_type);
+ }
+
+ /// Set the underlying size of the endpoint in the native type.
+ void resize(std::size_t size)
+ {
+ if (size > sizeof(boost::asio::detail::sockaddr_storage_type))
+ {
+ boost::system::system_error e(boost::asio::error::invalid_argument);
+ boost::throw_exception(e);
+ }
+ }
+
+ /// Get the capacity of the endpoint in the native type.
+ std::size_t capacity() const
+ {
+ return sizeof(boost::asio::detail::sockaddr_storage_type);
+ }
+
+ /// Get the port associated with the endpoint. The port number is always in
+ /// the host's byte order.
+ unsigned short port() const
+ {
+ if (is_v4())
+ {
+ return boost::asio::detail::socket_ops::network_to_host_short(
+ data_.v4.sin_port);
+ }
+ else
+ {
+ return boost::asio::detail::socket_ops::network_to_host_short(
+ data_.v6.sin6_port);
+ }
+ }
+
+ /// Set the port associated with the endpoint. The port number is always in
+ /// the host's byte order.
+ void port(unsigned short port_num)
+ {
+ if (is_v4())
+ {
+ data_.v4.sin_port
+ = boost::asio::detail::socket_ops::host_to_network_short(port_num);
+ }
+ else
+ {
+ data_.v6.sin6_port
+ = boost::asio::detail::socket_ops::host_to_network_short(port_num);
+ }
+ }
+
+ /// Get the IP address associated with the endpoint.
+ boost::asio::ip::address address() const
+ {
+ using namespace std; // For memcpy.
+ if (is_v4())
+ {
+ return boost::asio::ip::address_v4(
+ boost::asio::detail::socket_ops::network_to_host_long(
+ data_.v4.sin_addr.s_addr));
+ }
+ else
+ {
+ boost::asio::ip::address_v6::bytes_type bytes;
+ memcpy(bytes.elems, data_.v6.sin6_addr.s6_addr, 16);
+ return boost::asio::ip::address_v6(bytes, data_.v6.sin6_scope_id);
+ }
+ }
+
+ /// Set the IP address associated with the endpoint.
+ void address(const boost::asio::ip::address& addr)
+ {
+ basic_endpoint<InternetProtocol> tmp_endpoint(addr, port());
+ data_ = tmp_endpoint.data_;
+ }
+
+ /// Compare two endpoints for equality.
+ friend bool operator==(const basic_endpoint<InternetProtocol>& e1,
+ const basic_endpoint<InternetProtocol>& e2)
+ {
+ return e1.address() == e2.address() && e1.port() == e2.port();
+ }
+
+ /// Compare two endpoints for inequality.
+ friend bool operator!=(const basic_endpoint<InternetProtocol>& e1,
+ const basic_endpoint<InternetProtocol>& e2)
+ {
+ return e1.address() != e2.address() || e1.port() != e2.port();
+ }
+
+ /// Compare endpoints for ordering.
+ friend bool operator<(const basic_endpoint<InternetProtocol>& e1,
+ const basic_endpoint<InternetProtocol>& e2)
+ {
+ if (e1.address() < e2.address())
+ return true;
+ if (e1.address() != e2.address())
+ return false;
+ return e1.port() < e2.port();
+ }
+
+private:
+ // Helper function to determine whether the endpoint is IPv4.
+ bool is_v4() const
+ {
+ return data_.base.sa_family == AF_INET;
+ }
+
+ // The underlying IP socket address.
+ union data_union
+ {
+ boost::asio::detail::socket_addr_type base;
+ boost::asio::detail::sockaddr_storage_type storage;
+ boost::asio::detail::sockaddr_in4_type v4;
+ boost::asio::detail::sockaddr_in6_type v6;
+ } data_;
+};
+
+/// Output an endpoint as a string.
+/**
+ * Used to output a human-readable string for a specified endpoint.
+ *
+ * @param os The output stream to which the string will be written.
+ *
+ * @param endpoint The endpoint to be written.
+ *
+ * @return The output stream.
+ *
+ * @relates boost::asio::ip::basic_endpoint
+ */
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+template <typename InternetProtocol>
+std::ostream& operator<<(std::ostream& os,
+ const basic_endpoint<InternetProtocol>& endpoint)
+{
+ const address& addr = endpoint.address();
+ boost::system::error_code ec;
+ std::string a = addr.to_string(ec);
+ if (ec)
+ {
+ if (os.exceptions() & std::ios::failbit)
+ boost::asio::detail::throw_error(ec);
+ else
+ os.setstate(std::ios_base::failbit);
+ }
+ else
+ {
+ std::ostringstream tmp_os;
+ tmp_os.imbue(std::locale::classic());
+ if (addr.is_v4())
+ tmp_os << a;
+ else
+ tmp_os << '[' << a << ']';
+ tmp_os << ':' << endpoint.port();
+ os << tmp_os.str();
+ }
+ return os;
+}
+#else // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+template <typename Elem, typename Traits, typename InternetProtocol>
+std::basic_ostream<Elem, Traits>& operator<<(
+ std::basic_ostream<Elem, Traits>& os,
+ const basic_endpoint<InternetProtocol>& endpoint)
+{
+ const address& addr = endpoint.address();
+ boost::system::error_code ec;
+ std::string a = addr.to_string(ec);
+ if (ec)
+ {
+ if (os.exceptions() & std::ios::failbit)
+ boost::asio::detail::throw_error(ec);
+ else
+ os.setstate(std::ios_base::failbit);
+ }
+ else
+ {
+ std::ostringstream tmp_os;
+ tmp_os.imbue(std::locale::classic());
+ if (addr.is_v4())
+ tmp_os << a;
+ else
+ tmp_os << '[' << a << ']';
+ tmp_os << ':' << endpoint.port();
+ os << tmp_os.str();
+ }
+ return os;
+}
+#endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_BASIC_ENDPOINT_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/basic_resolver.hpp b/3rdParty/Boost/boost/asio/ip/basic_resolver.hpp
new file mode 100644
index 0000000..d0e8eb8
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/basic_resolver.hpp
@@ -0,0 +1,248 @@
+//
+// basic_resolver.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_BASIC_RESOLVER_HPP
+#define BOOST_ASIO_IP_BASIC_RESOLVER_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/ip/resolver_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Provides endpoint resolution functionality.
+/**
+ * The basic_resolver class template provides the ability to resolve a query
+ * to a list of endpoints.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename InternetProtocol,
+ typename ResolverService = resolver_service<InternetProtocol> >
+class basic_resolver
+ : public basic_io_object<ResolverService>
+{
+public:
+ /// The protocol type.
+ typedef InternetProtocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename InternetProtocol::endpoint endpoint_type;
+
+ /// The query type.
+ typedef typename InternetProtocol::resolver_query query;
+
+ /// The iterator type.
+ typedef typename InternetProtocol::resolver_iterator iterator;
+
+ /// Constructor.
+ /**
+ * This constructor creates a basic_resolver.
+ *
+ * @param io_service The io_service object that the resolver will use to
+ * dispatch handlers for any asynchronous operations performed on the timer.
+ */
+ explicit basic_resolver(boost::asio::io_service& io_service)
+ : basic_io_object<ResolverService>(io_service)
+ {
+ }
+
+ /// Cancel any asynchronous operations that are waiting on the resolver.
+ /**
+ * This function forces the completion of any pending asynchronous
+ * operations on the host resolver. The handler for each cancelled operation
+ * will be invoked with the boost::asio::error::operation_aborted error code.
+ */
+ void cancel()
+ {
+ return this->service.cancel(this->implementation);
+ }
+
+ /// Perform forward resolution of a query to a list of entries.
+ /**
+ * This function is used to resolve a query into a list of endpoint entries.
+ *
+ * @param q A query object that determines what endpoints will be returned.
+ *
+ * @returns A forward-only iterator that can be used to traverse the list
+ * of endpoint entries.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note A default constructed iterator represents the end of the list.
+ *
+ * A successful call to this function is guaranteed to return at least one
+ * entry.
+ */
+ iterator resolve(const query& q)
+ {
+ boost::system::error_code ec;
+ iterator i = this->service.resolve(this->implementation, q, ec);
+ boost::asio::detail::throw_error(ec);
+ return i;
+ }
+
+ /// Perform forward resolution of a query to a list of entries.
+ /**
+ * This function is used to resolve a query into a list of endpoint entries.
+ *
+ * @param q A query object that determines what endpoints will be returned.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns A forward-only iterator that can be used to traverse the list
+ * of endpoint entries. Returns a default constructed iterator if an error
+ * occurs.
+ *
+ * @note A default constructed iterator represents the end of the list.
+ *
+ * A successful call to this function is guaranteed to return at least one
+ * entry.
+ */
+ iterator resolve(const query& q, boost::system::error_code& ec)
+ {
+ return this->service.resolve(this->implementation, q, ec);
+ }
+
+ /// Asynchronously perform forward resolution of a query to a list of entries.
+ /**
+ * This function is used to asynchronously resolve a query into a list of
+ * endpoint entries.
+ *
+ * @param q A query object that determines what endpoints will be returned.
+ *
+ * @param handler The handler to be called when the resolve operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * resolver::iterator iterator // Forward-only iterator that can
+ * // be used to traverse the list
+ * // of endpoint entries.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note A default constructed iterator represents the end of the list.
+ *
+ * A successful resolve operation is guaranteed to pass at least one entry to
+ * the handler.
+ */
+ template <typename ResolveHandler>
+ void async_resolve(const query& q, ResolveHandler handler)
+ {
+ return this->service.async_resolve(this->implementation, q, handler);
+ }
+
+ /// Perform reverse resolution of an endpoint to a list of entries.
+ /**
+ * This function is used to resolve an endpoint into a list of endpoint
+ * entries.
+ *
+ * @param e An endpoint object that determines what endpoints will be
+ * returned.
+ *
+ * @returns A forward-only iterator that can be used to traverse the list
+ * of endpoint entries.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note A default constructed iterator represents the end of the list.
+ *
+ * A successful call to this function is guaranteed to return at least one
+ * entry.
+ */
+ iterator resolve(const endpoint_type& e)
+ {
+ boost::system::error_code ec;
+ iterator i = this->service.resolve(this->implementation, e, ec);
+ boost::asio::detail::throw_error(ec);
+ return i;
+ }
+
+ /// Perform reverse resolution of an endpoint to a list of entries.
+ /**
+ * This function is used to resolve an endpoint into a list of endpoint
+ * entries.
+ *
+ * @param e An endpoint object that determines what endpoints will be
+ * returned.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns A forward-only iterator that can be used to traverse the list
+ * of endpoint entries. Returns a default constructed iterator if an error
+ * occurs.
+ *
+ * @note A default constructed iterator represents the end of the list.
+ *
+ * A successful call to this function is guaranteed to return at least one
+ * entry.
+ */
+ iterator resolve(const endpoint_type& e, boost::system::error_code& ec)
+ {
+ return this->service.resolve(this->implementation, e, ec);
+ }
+
+ /// Asynchronously perform reverse resolution of an endpoint to a list of
+ /// entries.
+ /**
+ * This function is used to asynchronously resolve an endpoint into a list of
+ * endpoint entries.
+ *
+ * @param e An endpoint object that determines what endpoints will be
+ * returned.
+ *
+ * @param handler The handler to be called when the resolve operation
+ * completes. Copies will be made of the handler as required. The function
+ * signature of the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * resolver::iterator iterator // Forward-only iterator that can
+ * // be used to traverse the list
+ * // of endpoint entries.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note A default constructed iterator represents the end of the list.
+ *
+ * A successful resolve operation is guaranteed to pass at least one entry to
+ * the handler.
+ */
+ template <typename ResolveHandler>
+ void async_resolve(const endpoint_type& e, ResolveHandler handler)
+ {
+ return this->service.async_resolve(this->implementation, e, handler);
+ }
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_BASIC_RESOLVER_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/basic_resolver_entry.hpp b/3rdParty/Boost/boost/asio/ip/basic_resolver_entry.hpp
new file mode 100644
index 0000000..ba0a020
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/basic_resolver_entry.hpp
@@ -0,0 +1,97 @@
+//
+// basic_resolver_entry.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
+#define BOOST_ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// An entry produced by a resolver.
+/**
+ * The boost::asio::ip::basic_resolver_entry class template describes an entry
+ * as returned by a resolver.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename InternetProtocol>
+class basic_resolver_entry
+{
+public:
+ /// The protocol type associated with the endpoint entry.
+ typedef InternetProtocol protocol_type;
+
+ /// The endpoint type associated with the endpoint entry.
+ typedef typename InternetProtocol::endpoint endpoint_type;
+
+ /// Default constructor.
+ basic_resolver_entry()
+ {
+ }
+
+ /// Construct with specified endpoint, host name and service name.
+ basic_resolver_entry(const endpoint_type& endpoint,
+ const std::string& host_name, const std::string& service_name)
+ : endpoint_(endpoint),
+ host_name_(host_name),
+ service_name_(service_name)
+ {
+ }
+
+ /// Get the endpoint associated with the entry.
+ endpoint_type endpoint() const
+ {
+ return endpoint_;
+ }
+
+ /// Convert to the endpoint associated with the entry.
+ operator endpoint_type() const
+ {
+ return endpoint_;
+ }
+
+ /// Get the host name associated with the entry.
+ std::string host_name() const
+ {
+ return host_name_;
+ }
+
+ /// Get the service name associated with the entry.
+ std::string service_name() const
+ {
+ return service_name_;
+ }
+
+private:
+ endpoint_type endpoint_;
+ std::string host_name_;
+ std::string service_name_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/basic_resolver_iterator.hpp b/3rdParty/Boost/boost/asio/ip/basic_resolver_iterator.hpp
new file mode 100644
index 0000000..d5860b7
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/basic_resolver_iterator.hpp
@@ -0,0 +1,156 @@
+//
+// basic_resolver_iterator.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
+#define BOOST_ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/optional.hpp>
+#include <boost/shared_ptr.hpp>
+#include <cstring>
+#include <string>
+#include <vector>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/ip/basic_resolver_entry.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// An iterator over the entries produced by a resolver.
+/**
+ * The boost::asio::ip::basic_resolver_iterator class template is used to define
+ * iterators over the results returned by a resolver.
+ *
+ * The iterator's value_type, obtained when the iterator is dereferenced, is:
+ * @code const basic_resolver_entry<InternetProtocol> @endcode
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename InternetProtocol>
+class basic_resolver_iterator
+ : public boost::iterator_facade<
+ basic_resolver_iterator<InternetProtocol>,
+ const basic_resolver_entry<InternetProtocol>,
+ boost::forward_traversal_tag>
+{
+public:
+ /// Default constructor creates an end iterator.
+ basic_resolver_iterator()
+ {
+ }
+
+ /// Create an iterator from an addrinfo list returned by getaddrinfo.
+ static basic_resolver_iterator create(
+ boost::asio::detail::addrinfo_type* address_info,
+ const std::string& host_name, const std::string& service_name)
+ {
+ basic_resolver_iterator iter;
+ if (!address_info)
+ return iter;
+
+ std::string actual_host_name = host_name;
+ if (address_info->ai_canonname)
+ actual_host_name = address_info->ai_canonname;
+
+ iter.values_.reset(new values_type);
+
+ while (address_info)
+ {
+ if (address_info->ai_family == PF_INET
+ || address_info->ai_family == PF_INET6)
+ {
+ using namespace std; // For memcpy.
+ typename InternetProtocol::endpoint endpoint;
+ endpoint.resize(static_cast<std::size_t>(address_info->ai_addrlen));
+ memcpy(endpoint.data(), address_info->ai_addr,
+ address_info->ai_addrlen);
+ iter.values_->push_back(
+ basic_resolver_entry<InternetProtocol>(endpoint,
+ actual_host_name, service_name));
+ }
+ address_info = address_info->ai_next;
+ }
+
+ if (iter.values_->size())
+ iter.iter_ = iter.values_->begin();
+ else
+ iter.values_.reset();
+
+ return iter;
+ }
+
+ /// Create an iterator from an endpoint, host name and service name.
+ static basic_resolver_iterator create(
+ const typename InternetProtocol::endpoint& endpoint,
+ const std::string& host_name, const std::string& service_name)
+ {
+ basic_resolver_iterator iter;
+ iter.values_.reset(new values_type);
+ iter.values_->push_back(
+ basic_resolver_entry<InternetProtocol>(
+ endpoint, host_name, service_name));
+ iter.iter_ = iter.values_->begin();
+ return iter;
+ }
+
+private:
+ friend class boost::iterator_core_access;
+
+ void increment()
+ {
+ if (++*iter_ == values_->end())
+ {
+ // Reset state to match a default constructed end iterator.
+ values_.reset();
+ typedef typename values_type::const_iterator values_iterator_type;
+ iter_.reset();
+ }
+ }
+
+ bool equal(const basic_resolver_iterator& other) const
+ {
+ if (!values_ && !other.values_)
+ return true;
+ if (values_ != other.values_)
+ return false;
+ return *iter_ == *other.iter_;
+ }
+
+ const basic_resolver_entry<InternetProtocol>& dereference() const
+ {
+ return **iter_;
+ }
+
+ typedef std::vector<basic_resolver_entry<InternetProtocol> > values_type;
+ typedef typename values_type::const_iterator values_iter_type;
+ boost::shared_ptr<values_type> values_;
+ boost::optional<values_iter_type> iter_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/basic_resolver_query.hpp b/3rdParty/Boost/boost/asio/ip/basic_resolver_query.hpp
new file mode 100644
index 0000000..dd08525
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/basic_resolver_query.hpp
@@ -0,0 +1,151 @@
+//
+// basic_resolver_query.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_BASIC_RESOLVER_QUERY_HPP
+#define BOOST_ASIO_IP_BASIC_RESOLVER_QUERY_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/ip/resolver_query_base.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// An query to be passed to a resolver.
+/**
+ * The boost::asio::ip::basic_resolver_query class template describes a query
+ * that can be passed to a resolver.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename InternetProtocol>
+class basic_resolver_query
+ : public resolver_query_base
+{
+public:
+ /// The protocol type associated with the endpoint query.
+ typedef InternetProtocol protocol_type;
+
+ /// Construct with specified service name for any protocol.
+ basic_resolver_query(const std::string& service_name,
+ int flags = passive | address_configured)
+ : hints_(),
+ host_name_(),
+ service_name_(service_name)
+ {
+ typename InternetProtocol::endpoint endpoint;
+ hints_.ai_flags = flags;
+ hints_.ai_family = PF_UNSPEC;
+ hints_.ai_socktype = endpoint.protocol().type();
+ hints_.ai_protocol = endpoint.protocol().protocol();
+ hints_.ai_addrlen = 0;
+ hints_.ai_canonname = 0;
+ hints_.ai_addr = 0;
+ hints_.ai_next = 0;
+ }
+
+ /// Construct with specified service name for a given protocol.
+ basic_resolver_query(const protocol_type& protocol,
+ const std::string& service_name,
+ int flags = passive | address_configured)
+ : hints_(),
+ host_name_(),
+ service_name_(service_name)
+ {
+ hints_.ai_flags = flags;
+ hints_.ai_family = protocol.family();
+ hints_.ai_socktype = protocol.type();
+ hints_.ai_protocol = protocol.protocol();
+ hints_.ai_addrlen = 0;
+ hints_.ai_canonname = 0;
+ hints_.ai_addr = 0;
+ hints_.ai_next = 0;
+ }
+
+ /// Construct with specified host name and service name for any protocol.
+ basic_resolver_query(const std::string& host_name,
+ const std::string& service_name, int flags = address_configured)
+ : hints_(),
+ host_name_(host_name),
+ service_name_(service_name)
+ {
+ typename InternetProtocol::endpoint endpoint;
+ hints_.ai_flags = flags;
+ hints_.ai_family = PF_UNSPEC;
+ hints_.ai_socktype = endpoint.protocol().type();
+ hints_.ai_protocol = endpoint.protocol().protocol();
+ hints_.ai_addrlen = 0;
+ hints_.ai_canonname = 0;
+ hints_.ai_addr = 0;
+ hints_.ai_next = 0;
+ }
+
+ /// Construct with specified host name and service name for a given protocol.
+ basic_resolver_query(const protocol_type& protocol,
+ const std::string& host_name, const std::string& service_name,
+ int flags = address_configured)
+ : hints_(),
+ host_name_(host_name),
+ service_name_(service_name)
+ {
+ hints_.ai_flags = flags;
+ hints_.ai_family = protocol.family();
+ hints_.ai_socktype = protocol.type();
+ hints_.ai_protocol = protocol.protocol();
+ hints_.ai_addrlen = 0;
+ hints_.ai_canonname = 0;
+ hints_.ai_addr = 0;
+ hints_.ai_next = 0;
+ }
+
+ /// Get the hints associated with the query.
+ const boost::asio::detail::addrinfo_type& hints() const
+ {
+ return hints_;
+ }
+
+ /// Get the host name associated with the query.
+ std::string host_name() const
+ {
+ return host_name_;
+ }
+
+ /// Get the service name associated with the query.
+ std::string service_name() const
+ {
+ return service_name_;
+ }
+
+private:
+ boost::asio::detail::addrinfo_type hints_;
+ std::string host_name_;
+ std::string service_name_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_BASIC_RESOLVER_QUERY_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/detail/socket_option.hpp b/3rdParty/Boost/boost/asio/ip/detail/socket_option.hpp
new file mode 100644
index 0000000..40226fe
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/detail/socket_option.hpp
@@ -0,0 +1,580 @@
+//
+// socket_option.hpp
+// ~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_DETAIL_SOCKET_OPTION_HPP
+#define BOOST_ASIO_IP_DETAIL_SOCKET_OPTION_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <cstring>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/ip/address.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+namespace detail {
+namespace socket_option {
+
+// Helper template for implementing multicast enable loopback options.
+template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
+class multicast_enable_loopback
+{
+public:
+#if defined(__sun) || defined(__osf__)
+ typedef unsigned char ipv4_value_type;
+ typedef unsigned char ipv6_value_type;
+#elif defined(_AIX) || defined(__hpux) || defined(__QNXNTO__)
+ typedef unsigned char ipv4_value_type;
+ typedef unsigned int ipv6_value_type;
+#else
+ typedef int ipv4_value_type;
+ typedef int ipv6_value_type;
+#endif
+
+ // Default constructor.
+ multicast_enable_loopback()
+ : ipv4_value_(0),
+ ipv6_value_(0)
+ {
+ }
+
+ // Construct with a specific option value.
+ explicit multicast_enable_loopback(bool v)
+ : ipv4_value_(v ? 1 : 0),
+ ipv6_value_(v ? 1 : 0)
+ {
+ }
+
+ // Set the value of the boolean.
+ multicast_enable_loopback& operator=(bool v)
+ {
+ ipv4_value_ = v ? 1 : 0;
+ ipv6_value_ = v ? 1 : 0;
+ return *this;
+ }
+
+ // Get the current value of the boolean.
+ bool value() const
+ {
+ return !!ipv4_value_;
+ }
+
+ // Convert to bool.
+ operator bool() const
+ {
+ return !!ipv4_value_;
+ }
+
+ // Test for false.
+ bool operator!() const
+ {
+ return !ipv4_value_;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Level;
+ return IPv4_Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Name;
+ return IPv4_Name;
+ }
+
+ // Get the address of the boolean data.
+ template <typename Protocol>
+ void* data(const Protocol& protocol)
+ {
+ if (protocol.family() == PF_INET6)
+ return &ipv6_value_;
+ return &ipv4_value_;
+ }
+
+ // Get the address of the boolean data.
+ template <typename Protocol>
+ const void* data(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return &ipv6_value_;
+ return &ipv4_value_;
+ }
+
+ // Get the size of the boolean data.
+ template <typename Protocol>
+ std::size_t size(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return sizeof(ipv6_value_);
+ return sizeof(ipv4_value_);
+ }
+
+ // Set the size of the boolean data.
+ template <typename Protocol>
+ void resize(const Protocol& protocol, std::size_t s)
+ {
+ if (protocol.family() == PF_INET6)
+ {
+ if (s != sizeof(ipv6_value_))
+ {
+ throw std::length_error(
+ "multicast_enable_loopback socket option resize");
+ }
+ ipv4_value_ = ipv6_value_ ? 1 : 0;
+ }
+ else
+ {
+ if (s != sizeof(ipv4_value_))
+ {
+ throw std::length_error(
+ "multicast_enable_loopback socket option resize");
+ }
+ ipv6_value_ = ipv4_value_ ? 1 : 0;
+ }
+ }
+
+private:
+ ipv4_value_type ipv4_value_;
+ ipv6_value_type ipv6_value_;
+};
+
+// Helper template for implementing unicast hops options.
+template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
+class unicast_hops
+{
+public:
+ // Default constructor.
+ unicast_hops()
+ : value_(0)
+ {
+ }
+
+ // Construct with a specific option value.
+ explicit unicast_hops(int v)
+ : value_(v)
+ {
+ }
+
+ // Set the value of the option.
+ unicast_hops& operator=(int v)
+ {
+ value_ = v;
+ return *this;
+ }
+
+ // Get the current value of the option.
+ int value() const
+ {
+ return value_;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Level;
+ return IPv4_Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Name;
+ return IPv4_Name;
+ }
+
+ // Get the address of the data.
+ template <typename Protocol>
+ int* data(const Protocol&)
+ {
+ return &value_;
+ }
+
+ // Get the address of the data.
+ template <typename Protocol>
+ const int* data(const Protocol&) const
+ {
+ return &value_;
+ }
+
+ // Get the size of the data.
+ template <typename Protocol>
+ std::size_t size(const Protocol&) const
+ {
+ return sizeof(value_);
+ }
+
+ // Set the size of the data.
+ template <typename Protocol>
+ void resize(const Protocol&, std::size_t s)
+ {
+ if (s != sizeof(value_))
+ throw std::length_error("unicast hops socket option resize");
+#if defined(__hpux)
+ if (value_ < 0)
+ value_ = value_ & 0xFF;
+#endif
+ }
+
+private:
+ int value_;
+};
+
+// Helper template for implementing multicast hops options.
+template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
+class multicast_hops
+{
+public:
+#if defined(BOOST_WINDOWS) && defined(UNDER_CE)
+ typedef int ipv4_value_type;
+#else
+ typedef unsigned char ipv4_value_type;
+#endif
+ typedef int ipv6_value_type;
+
+ // Default constructor.
+ multicast_hops()
+ : ipv4_value_(0),
+ ipv6_value_(0)
+ {
+ }
+
+ // Construct with a specific option value.
+ explicit multicast_hops(int v)
+ {
+ if (v < 0 || v > 255)
+ throw std::out_of_range("multicast hops value out of range");
+ ipv4_value_ = (ipv4_value_type)v;
+ ipv6_value_ = v;
+ }
+
+ // Set the value of the option.
+ multicast_hops& operator=(int v)
+ {
+ if (v < 0 || v > 255)
+ throw std::out_of_range("multicast hops value out of range");
+ ipv4_value_ = (ipv4_value_type)v;
+ ipv6_value_ = v;
+ return *this;
+ }
+
+ // Get the current value of the option.
+ int value() const
+ {
+ return ipv6_value_;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Level;
+ return IPv4_Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Name;
+ return IPv4_Name;
+ }
+
+ // Get the address of the data.
+ template <typename Protocol>
+ void* data(const Protocol& protocol)
+ {
+ if (protocol.family() == PF_INET6)
+ return &ipv6_value_;
+ return &ipv4_value_;
+ }
+
+ // Get the address of the data.
+ template <typename Protocol>
+ const void* data(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return &ipv6_value_;
+ return &ipv4_value_;
+ }
+
+ // Get the size of the data.
+ template <typename Protocol>
+ std::size_t size(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return sizeof(ipv6_value_);
+ return sizeof(ipv4_value_);
+ }
+
+ // Set the size of the data.
+ template <typename Protocol>
+ void resize(const Protocol& protocol, std::size_t s)
+ {
+ if (protocol.family() == PF_INET6)
+ {
+ if (s != sizeof(ipv6_value_))
+ throw std::length_error("multicast hops socket option resize");
+ if (ipv6_value_ < 0)
+ ipv4_value_ = 0;
+ else if (ipv6_value_ > 255)
+ ipv4_value_ = 255;
+ else
+ ipv4_value_ = (ipv4_value_type)ipv6_value_;
+ }
+ else
+ {
+ if (s != sizeof(ipv4_value_))
+ throw std::length_error("multicast hops socket option resize");
+ ipv6_value_ = ipv4_value_;
+ }
+ }
+
+private:
+ ipv4_value_type ipv4_value_;
+ ipv6_value_type ipv6_value_;
+};
+
+// Helper template for implementing ip_mreq-based options.
+template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
+class multicast_request
+{
+public:
+ // Default constructor.
+ multicast_request()
+ {
+ ipv4_value_.imr_multiaddr.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+ ipv4_value_.imr_interface.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+
+ boost::asio::detail::in6_addr_type tmp_addr = IN6ADDR_ANY_INIT;
+ ipv6_value_.ipv6mr_multiaddr = tmp_addr;
+ ipv6_value_.ipv6mr_interface = 0;
+ }
+
+ // Construct with multicast address only.
+ explicit multicast_request(const boost::asio::ip::address& multicast_address)
+ {
+ if (multicast_address.is_v6())
+ {
+ ipv4_value_.imr_multiaddr.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+ ipv4_value_.imr_interface.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+
+ using namespace std; // For memcpy.
+ boost::asio::ip::address_v6 ipv6_address = multicast_address.to_v6();
+ boost::asio::ip::address_v6::bytes_type bytes = ipv6_address.to_bytes();
+ memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.elems, 16);
+ ipv6_value_.ipv6mr_interface = 0;
+ }
+ else
+ {
+ ipv4_value_.imr_multiaddr.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ multicast_address.to_v4().to_ulong());
+ ipv4_value_.imr_interface.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+
+ boost::asio::detail::in6_addr_type tmp_addr = IN6ADDR_ANY_INIT;
+ ipv6_value_.ipv6mr_multiaddr = tmp_addr;
+ ipv6_value_.ipv6mr_interface = 0;
+ }
+ }
+
+ // Construct with multicast address and IPv4 address specifying an interface.
+ explicit multicast_request(
+ const boost::asio::ip::address_v4& multicast_address,
+ const boost::asio::ip::address_v4& network_interface
+ = boost::asio::ip::address_v4::any())
+ {
+ ipv4_value_.imr_multiaddr.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ multicast_address.to_ulong());
+ ipv4_value_.imr_interface.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ network_interface.to_ulong());
+
+ boost::asio::detail::in6_addr_type tmp_addr = IN6ADDR_ANY_INIT;
+ ipv6_value_.ipv6mr_multiaddr = tmp_addr;
+ ipv6_value_.ipv6mr_interface = 0;
+ }
+
+ // Construct with multicast address and IPv6 network interface index.
+ explicit multicast_request(
+ const boost::asio::ip::address_v6& multicast_address,
+ unsigned long network_interface = 0)
+ {
+ ipv4_value_.imr_multiaddr.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+ ipv4_value_.imr_interface.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+
+ using namespace std; // For memcpy.
+ boost::asio::ip::address_v6::bytes_type bytes =
+ multicast_address.to_bytes();
+ memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.elems, 16);
+ ipv6_value_.ipv6mr_interface = network_interface;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Level;
+ return IPv4_Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Name;
+ return IPv4_Name;
+ }
+
+ // Get the address of the option data.
+ template <typename Protocol>
+ const void* data(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return &ipv6_value_;
+ return &ipv4_value_;
+ }
+
+ // Get the size of the option data.
+ template <typename Protocol>
+ std::size_t size(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return sizeof(ipv6_value_);
+ return sizeof(ipv4_value_);
+ }
+
+private:
+ boost::asio::detail::in4_mreq_type ipv4_value_;
+ boost::asio::detail::in6_mreq_type ipv6_value_;
+};
+
+// Helper template for implementing options that specify a network interface.
+template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
+class network_interface
+{
+public:
+ // Default constructor.
+ network_interface()
+ {
+ ipv4_value_.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+ ipv6_value_ = 0;
+ }
+
+ // Construct with IPv4 interface.
+ explicit network_interface(const boost::asio::ip::address_v4& ipv4_interface)
+ {
+ ipv4_value_.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ ipv4_interface.to_ulong());
+ ipv6_value_ = 0;
+ }
+
+ // Construct with IPv6 interface.
+ explicit network_interface(unsigned int ipv6_interface)
+ {
+ ipv4_value_.s_addr =
+ boost::asio::detail::socket_ops::host_to_network_long(
+ boost::asio::ip::address_v4::any().to_ulong());
+ ipv6_value_ = ipv6_interface;
+ }
+
+ // Get the level of the socket option.
+ template <typename Protocol>
+ int level(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Level;
+ return IPv4_Level;
+ }
+
+ // Get the name of the socket option.
+ template <typename Protocol>
+ int name(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return IPv6_Name;
+ return IPv4_Name;
+ }
+
+ // Get the address of the option data.
+ template <typename Protocol>
+ const void* data(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return &ipv6_value_;
+ return &ipv4_value_;
+ }
+
+ // Get the size of the option data.
+ template <typename Protocol>
+ std::size_t size(const Protocol& protocol) const
+ {
+ if (protocol.family() == PF_INET6)
+ return sizeof(ipv6_value_);
+ return sizeof(ipv4_value_);
+ }
+
+private:
+ boost::asio::detail::in4_addr_type ipv4_value_;
+ unsigned int ipv6_value_;
+};
+
+} // namespace socket_option
+} // namespace detail
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_DETAIL_SOCKET_OPTION_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/host_name.hpp b/3rdParty/Boost/boost/asio/ip/host_name.hpp
new file mode 100644
index 0000000..a21950e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/host_name.hpp
@@ -0,0 +1,64 @@
+//
+// host_name.hpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_HOST_NAME_HPP
+#define BOOST_ASIO_IP_HOST_NAME_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Get the current host name.
+std::string host_name();
+
+/// Get the current host name.
+std::string host_name(boost::system::error_code& ec);
+
+inline std::string host_name()
+{
+ char name[1024];
+ boost::system::error_code ec;
+ if (boost::asio::detail::socket_ops::gethostname(name, sizeof(name), ec) != 0)
+ {
+ boost::asio::detail::throw_error(ec);
+ return std::string();
+ }
+ return std::string(name);
+}
+
+inline std::string host_name(boost::system::error_code& ec)
+{
+ char name[1024];
+ if (boost::asio::detail::socket_ops::gethostname(name, sizeof(name), ec) != 0)
+ return std::string();
+ return std::string(name);
+}
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_HOST_NAME_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/icmp.hpp b/3rdParty/Boost/boost/asio/ip/icmp.hpp
new file mode 100644
index 0000000..1230128
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/icmp.hpp
@@ -0,0 +1,120 @@
+//
+// icmp.hpp
+// ~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_ICMP_HPP
+#define BOOST_ASIO_IP_ICMP_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_raw_socket.hpp>
+#include <boost/asio/ip/basic_endpoint.hpp>
+#include <boost/asio/ip/basic_resolver.hpp>
+#include <boost/asio/ip/basic_resolver_iterator.hpp>
+#include <boost/asio/ip/basic_resolver_query.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Encapsulates the flags needed for ICMP.
+/**
+ * The boost::asio::ip::icmp class contains flags necessary for ICMP sockets.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe.
+ *
+ * @par Concepts:
+ * Protocol, InternetProtocol.
+ */
+class icmp
+{
+public:
+ /// The type of a ICMP endpoint.
+ typedef basic_endpoint<icmp> endpoint;
+
+ /// The type of a resolver query.
+ typedef basic_resolver_query<icmp> resolver_query;
+
+ /// The type of a resolver iterator.
+ typedef basic_resolver_iterator<icmp> resolver_iterator;
+
+ /// Construct to represent the IPv4 ICMP protocol.
+ static icmp v4()
+ {
+ return icmp(IPPROTO_ICMP, PF_INET);
+ }
+
+ /// Construct to represent the IPv6 ICMP protocol.
+ static icmp v6()
+ {
+ return icmp(IPPROTO_ICMPV6, PF_INET6);
+ }
+
+ /// Obtain an identifier for the type of the protocol.
+ int type() const
+ {
+ return SOCK_RAW;
+ }
+
+ /// Obtain an identifier for the protocol.
+ int protocol() const
+ {
+ return protocol_;
+ }
+
+ /// Obtain an identifier for the protocol family.
+ int family() const
+ {
+ return family_;
+ }
+
+ /// The ICMP socket type.
+ typedef basic_raw_socket<icmp> socket;
+
+ /// The ICMP resolver type.
+ typedef basic_resolver<icmp> resolver;
+
+ /// Compare two protocols for equality.
+ friend bool operator==(const icmp& p1, const icmp& p2)
+ {
+ return p1.protocol_ == p2.protocol_ && p1.family_ == p2.family_;
+ }
+
+ /// Compare two protocols for inequality.
+ friend bool operator!=(const icmp& p1, const icmp& p2)
+ {
+ return p1.protocol_ != p2.protocol_ || p1.family_ != p2.family_;
+ }
+
+private:
+ // Construct with a specific family.
+ explicit icmp(int protocol, int family)
+ : protocol_(protocol),
+ family_(family)
+ {
+ }
+
+ int protocol_;
+ int family_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_ICMP_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/multicast.hpp b/3rdParty/Boost/boost/asio/ip/multicast.hpp
new file mode 100644
index 0000000..0f151cd
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/multicast.hpp
@@ -0,0 +1,183 @@
+//
+// multicast.hpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_MULTICAST_HPP
+#define BOOST_ASIO_IP_MULTICAST_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/ip/detail/socket_option.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+namespace multicast {
+
+/// Socket option to join a multicast group on a specified interface.
+/**
+ * Implements the IPPROTO_IP/IP_ADD_MEMBERSHIP socket option.
+ *
+ * @par Examples
+ * Setting the option to join a multicast group:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::address multicast_address =
+ * boost::asio::ip::address::from_string("225.0.0.1");
+ * boost::asio::ip::multicast::join_group option(multicast_address);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par Concepts:
+ * SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined join_group;
+#else
+typedef boost::asio::ip::detail::socket_option::multicast_request<
+ IPPROTO_IP, IP_ADD_MEMBERSHIP, IPPROTO_IPV6, IPV6_JOIN_GROUP> join_group;
+#endif
+
+/// Socket option to leave a multicast group on a specified interface.
+/**
+ * Implements the IPPROTO_IP/IP_DROP_MEMBERSHIP socket option.
+ *
+ * @par Examples
+ * Setting the option to leave a multicast group:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::address multicast_address =
+ * boost::asio::ip::address::from_string("225.0.0.1");
+ * boost::asio::ip::multicast::leave_group option(multicast_address);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par Concepts:
+ * SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined leave_group;
+#else
+typedef boost::asio::ip::detail::socket_option::multicast_request<
+ IPPROTO_IP, IP_DROP_MEMBERSHIP, IPPROTO_IPV6, IPV6_LEAVE_GROUP> leave_group;
+#endif
+
+/// Socket option for local interface to use for outgoing multicast packets.
+/**
+ * Implements the IPPROTO_IP/IP_MULTICAST_IF socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::address_v4 local_interface =
+ * boost::asio::ip::address_v4::from_string("1.2.3.4");
+ * boost::asio::ip::multicast::outbound_interface option(local_interface);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par Concepts:
+ * SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined outbound_interface;
+#else
+typedef boost::asio::ip::detail::socket_option::network_interface<
+ IPPROTO_IP, IP_MULTICAST_IF, IPPROTO_IPV6, IPV6_MULTICAST_IF>
+ outbound_interface;
+#endif
+
+/// Socket option for time-to-live associated with outgoing multicast packets.
+/**
+ * Implements the IPPROTO_IP/IP_MULTICAST_TTL socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::multicast::hops option(4);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::multicast::hops option;
+ * socket.get_option(option);
+ * int ttl = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * GettableSocketOption, SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined hops;
+#else
+typedef boost::asio::ip::detail::socket_option::multicast_hops<
+ IPPROTO_IP, IP_MULTICAST_TTL, IPPROTO_IPV6, IPV6_MULTICAST_HOPS> hops;
+#endif
+
+/// Socket option determining whether outgoing multicast packets will be
+/// received on the same socket if it is a member of the multicast group.
+/**
+ * Implements the IPPROTO_IP/IP_MULTICAST_LOOP socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::multicast::enable_loopback option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::multicast::enable_loopback option;
+ * socket.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * GettableSocketOption, SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined enable_loopback;
+#else
+typedef boost::asio::ip::detail::socket_option::multicast_enable_loopback<
+ IPPROTO_IP, IP_MULTICAST_LOOP, IPPROTO_IPV6, IPV6_MULTICAST_LOOP>
+ enable_loopback;
+#endif
+
+} // namespace multicast
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_MULTICAST_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/resolver_query_base.hpp b/3rdParty/Boost/boost/asio/ip/resolver_query_base.hpp
new file mode 100644
index 0000000..67b5c80
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/resolver_query_base.hpp
@@ -0,0 +1,111 @@
+//
+// resolver_query_base.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_RESOLVER_QUERY_BASE_HPP
+#define BOOST_ASIO_IP_RESOLVER_QUERY_BASE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// The resolver_query_base class is used as a base for the
+/// basic_resolver_query class templates to provide a common place to define
+/// the flag constants.
+class resolver_query_base
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// Determine the canonical name of the host specified in the query.
+ static const int canonical_name = implementation_defined;
+
+ /// Indicate that returned endpoint is intended for use as a locally bound
+ /// socket endpoint.
+ static const int passive = implementation_defined;
+
+ /// Host name should be treated as a numeric string defining an IPv4 or IPv6
+ /// address and no name resolution should be attempted.
+ static const int numeric_host = implementation_defined;
+
+ /// Service name should be treated as a numeric string defining a port number
+ /// and no name resolution should be attempted.
+ static const int numeric_service = implementation_defined;
+
+ /// If the query protocol family is specified as IPv6, return IPv4-mapped
+ /// IPv6 addresses on finding no IPv6 addresses.
+ static const int v4_mapped = implementation_defined;
+
+ /// If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
+ static const int all_matching = implementation_defined;
+
+ /// Only return IPv4 addresses if a non-loopback IPv4 address is configured
+ /// for the system. Only return IPv6 addresses if a non-loopback IPv6 address
+ /// is configured for the system.
+ static const int address_configured = implementation_defined;
+#else
+ BOOST_STATIC_CONSTANT(int, canonical_name = AI_CANONNAME);
+ BOOST_STATIC_CONSTANT(int, passive = AI_PASSIVE);
+ BOOST_STATIC_CONSTANT(int, numeric_host = AI_NUMERICHOST);
+# if defined(AI_NUMERICSERV)
+ BOOST_STATIC_CONSTANT(int, numeric_service = AI_NUMERICSERV);
+# else
+ BOOST_STATIC_CONSTANT(int, numeric_service = 0);
+# endif
+ // Note: QNX Neutrino 6.3 defines AI_V4MAPPED, AI_ALL and AI_ADDRCONFIG but
+ // does not implement them. Therefore they are specifically excluded here.
+# if defined(AI_V4MAPPED) && !defined(__QNXNTO__)
+ BOOST_STATIC_CONSTANT(int, v4_mapped = AI_V4MAPPED);
+# else
+ BOOST_STATIC_CONSTANT(int, v4_mapped = 0);
+# endif
+# if defined(AI_ALL) && !defined(__QNXNTO__)
+ BOOST_STATIC_CONSTANT(int, all_matching = AI_ALL);
+# else
+ BOOST_STATIC_CONSTANT(int, all_matching = 0);
+# endif
+# if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__)
+ BOOST_STATIC_CONSTANT(int, address_configured = AI_ADDRCONFIG);
+# else
+ BOOST_STATIC_CONSTANT(int, address_configured = 0);
+# endif
+#endif
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~resolver_query_base()
+ {
+ }
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+private:
+ // Workaround to enable the empty base optimisation with Borland C++.
+ char dummy_;
+#endif
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_RESOLVER_QUERY_BASE_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/resolver_service.hpp b/3rdParty/Boost/boost/asio/ip/resolver_service.hpp
new file mode 100644
index 0000000..17a9ac1
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/resolver_service.hpp
@@ -0,0 +1,142 @@
+//
+// resolver_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_RESOLVER_SERVICE_HPP
+#define BOOST_ASIO_IP_RESOLVER_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/resolver_service.hpp>
+#include <boost/asio/detail/service_base.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Default service implementation for a resolver.
+template <typename InternetProtocol>
+class resolver_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<
+ resolver_service<InternetProtocol> >
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+ /// The protocol type.
+ typedef InternetProtocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename InternetProtocol::endpoint endpoint_type;
+
+ /// The query type.
+ typedef typename InternetProtocol::resolver_query query_type;
+
+ /// The iterator type.
+ typedef typename InternetProtocol::resolver_iterator iterator_type;
+
+private:
+ // The type of the platform-specific implementation.
+ typedef boost::asio::detail::resolver_service<InternetProtocol>
+ service_impl_type;
+
+public:
+ /// The type of a resolver implementation.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef typename service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// Construct a new resolver service for the specified io_service.
+ explicit resolver_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ resolver_service<InternetProtocol> >(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new resolver implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a resolver implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Cancel pending asynchronous operations.
+ void cancel(implementation_type& impl)
+ {
+ service_impl_.cancel(impl);
+ }
+
+ /// Resolve a query to a list of entries.
+ iterator_type resolve(implementation_type& impl, const query_type& query,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.resolve(impl, query, ec);
+ }
+
+ /// Asynchronously resolve a query to a list of entries.
+ template <typename Handler>
+ void async_resolve(implementation_type& impl, const query_type& query,
+ Handler handler)
+ {
+ service_impl_.async_resolve(impl, query, handler);
+ }
+
+ /// Resolve an endpoint to a list of entries.
+ iterator_type resolve(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.resolve(impl, endpoint, ec);
+ }
+
+ /// Asynchronously resolve an endpoint to a list of entries.
+ template <typename ResolveHandler>
+ void async_resolve(implementation_type& impl, const endpoint_type& endpoint,
+ ResolveHandler handler)
+ {
+ return service_impl_.async_resolve(impl, endpoint, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_RESOLVER_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/tcp.hpp b/3rdParty/Boost/boost/asio/ip/tcp.hpp
new file mode 100644
index 0000000..4c282ab
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/tcp.hpp
@@ -0,0 +1,160 @@
+//
+// tcp.hpp
+// ~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_TCP_HPP
+#define BOOST_ASIO_IP_TCP_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_socket_acceptor.hpp>
+#include <boost/asio/basic_socket_iostream.hpp>
+#include <boost/asio/basic_stream_socket.hpp>
+#include <boost/asio/ip/basic_endpoint.hpp>
+#include <boost/asio/ip/basic_resolver.hpp>
+#include <boost/asio/ip/basic_resolver_iterator.hpp>
+#include <boost/asio/ip/basic_resolver_query.hpp>
+#include <boost/asio/detail/socket_option.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Encapsulates the flags needed for TCP.
+/**
+ * The boost::asio::ip::tcp class contains flags necessary for TCP sockets.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe.
+ *
+ * @par Concepts:
+ * Protocol, InternetProtocol.
+ */
+class tcp
+{
+public:
+ /// The type of a TCP endpoint.
+ typedef basic_endpoint<tcp> endpoint;
+
+ /// The type of a resolver query.
+ typedef basic_resolver_query<tcp> resolver_query;
+
+ /// The type of a resolver iterator.
+ typedef basic_resolver_iterator<tcp> resolver_iterator;
+
+ /// Construct to represent the IPv4 TCP protocol.
+ static tcp v4()
+ {
+ return tcp(PF_INET);
+ }
+
+ /// Construct to represent the IPv6 TCP protocol.
+ static tcp v6()
+ {
+ return tcp(PF_INET6);
+ }
+
+ /// Obtain an identifier for the type of the protocol.
+ int type() const
+ {
+ return SOCK_STREAM;
+ }
+
+ /// Obtain an identifier for the protocol.
+ int protocol() const
+ {
+ return IPPROTO_TCP;
+ }
+
+ /// Obtain an identifier for the protocol family.
+ int family() const
+ {
+ return family_;
+ }
+
+ /// The TCP socket type.
+ typedef basic_stream_socket<tcp> socket;
+
+ /// The TCP acceptor type.
+ typedef basic_socket_acceptor<tcp> acceptor;
+
+ /// The TCP resolver type.
+ typedef basic_resolver<tcp> resolver;
+
+ /// The TCP iostream type.
+ typedef basic_socket_iostream<tcp> iostream;
+
+ /// Socket option for disabling the Nagle algorithm.
+ /**
+ * Implements the IPPROTO_TCP/TCP_NODELAY socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::no_delay option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::tcp::no_delay option;
+ * socket.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined no_delay;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ IPPROTO_TCP, TCP_NODELAY> no_delay;
+#endif
+
+ /// Compare two protocols for equality.
+ friend bool operator==(const tcp& p1, const tcp& p2)
+ {
+ return p1.family_ == p2.family_;
+ }
+
+ /// Compare two protocols for inequality.
+ friend bool operator!=(const tcp& p1, const tcp& p2)
+ {
+ return p1.family_ != p2.family_;
+ }
+
+private:
+ // Construct with a specific family.
+ explicit tcp(int family)
+ : family_(family)
+ {
+ }
+
+ int family_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_TCP_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/udp.hpp b/3rdParty/Boost/boost/asio/ip/udp.hpp
new file mode 100644
index 0000000..886cad8
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/udp.hpp
@@ -0,0 +1,118 @@
+//
+// udp.hpp
+// ~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_UDP_HPP
+#define BOOST_ASIO_IP_UDP_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_datagram_socket.hpp>
+#include <boost/asio/ip/basic_endpoint.hpp>
+#include <boost/asio/ip/basic_resolver.hpp>
+#include <boost/asio/ip/basic_resolver_iterator.hpp>
+#include <boost/asio/ip/basic_resolver_query.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Encapsulates the flags needed for UDP.
+/**
+ * The boost::asio::ip::udp class contains flags necessary for UDP sockets.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe.
+ *
+ * @par Concepts:
+ * Protocol, InternetProtocol.
+ */
+class udp
+{
+public:
+ /// The type of a UDP endpoint.
+ typedef basic_endpoint<udp> endpoint;
+
+ /// The type of a resolver query.
+ typedef basic_resolver_query<udp> resolver_query;
+
+ /// The type of a resolver iterator.
+ typedef basic_resolver_iterator<udp> resolver_iterator;
+
+ /// Construct to represent the IPv4 UDP protocol.
+ static udp v4()
+ {
+ return udp(PF_INET);
+ }
+
+ /// Construct to represent the IPv6 UDP protocol.
+ static udp v6()
+ {
+ return udp(PF_INET6);
+ }
+
+ /// Obtain an identifier for the type of the protocol.
+ int type() const
+ {
+ return SOCK_DGRAM;
+ }
+
+ /// Obtain an identifier for the protocol.
+ int protocol() const
+ {
+ return IPPROTO_UDP;
+ }
+
+ /// Obtain an identifier for the protocol family.
+ int family() const
+ {
+ return family_;
+ }
+
+ /// The UDP socket type.
+ typedef basic_datagram_socket<udp> socket;
+
+ /// The UDP resolver type.
+ typedef basic_resolver<udp> resolver;
+
+ /// Compare two protocols for equality.
+ friend bool operator==(const udp& p1, const udp& p2)
+ {
+ return p1.family_ == p2.family_;
+ }
+
+ /// Compare two protocols for inequality.
+ friend bool operator!=(const udp& p1, const udp& p2)
+ {
+ return p1.family_ != p2.family_;
+ }
+
+private:
+ // Construct with a specific family.
+ explicit udp(int family)
+ : family_(family)
+ {
+ }
+
+ int family_;
+};
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_UDP_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/unicast.hpp b/3rdParty/Boost/boost/asio/ip/unicast.hpp
new file mode 100644
index 0000000..f603fed
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/unicast.hpp
@@ -0,0 +1,72 @@
+//
+// unicast.hpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_UNICAST_HPP
+#define BOOST_ASIO_IP_UNICAST_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/ip/detail/socket_option.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+namespace unicast {
+
+/// Socket option for time-to-live associated with outgoing unicast packets.
+/**
+ * Implements the IPPROTO_IP/IP_UNICAST_TTL socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::unicast::hops option(4);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::unicast::hops option;
+ * socket.get_option(option);
+ * int ttl = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * GettableSocketOption, SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined hops;
+#else
+typedef boost::asio::ip::detail::socket_option::unicast_hops<
+ IPPROTO_IP, IP_TTL, IPPROTO_IPV6, IPV6_UNICAST_HOPS> hops;
+#endif
+
+} // namespace unicast
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_UNICAST_HPP
diff --git a/3rdParty/Boost/boost/asio/ip/v6_only.hpp b/3rdParty/Boost/boost/asio/ip/v6_only.hpp
new file mode 100644
index 0000000..203776d
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/ip/v6_only.hpp
@@ -0,0 +1,70 @@
+//
+// v6_only.hpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IP_V6_ONLY_HPP
+#define BOOST_ASIO_IP_V6_ONLY_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/socket_option.hpp>
+
+namespace boost {
+namespace asio {
+namespace ip {
+
+/// Socket option for determining whether an IPv6 socket supports IPv6
+/// communication only.
+/**
+ * Implements the IPPROTO_IPV6/IP_V6ONLY socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::v6_only option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::ip::v6_only option;
+ * socket.get_option(option);
+ * bool v6_only = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * GettableSocketOption, SettableSocketOption.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+typedef implementation_defined v6_only;
+#elif defined(IPV6_V6ONLY)
+typedef boost::asio::detail::socket_option::boolean<
+ IPPROTO_IPV6, IPV6_V6ONLY> v6_only;
+#else
+typedef boost::asio::detail::socket_option::boolean<
+ boost::asio::detail::custom_socket_option_level,
+ boost::asio::detail::always_fail_option> v6_only;
+#endif
+
+} // namespace ip
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IP_V6_ONLY_HPP
diff --git a/3rdParty/Boost/boost/asio/is_read_buffered.hpp b/3rdParty/Boost/boost/asio/is_read_buffered.hpp
new file mode 100644
index 0000000..92dcc96
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/is_read_buffered.hpp
@@ -0,0 +1,64 @@
+//
+// is_read_buffered.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IS_READ_BUFFERED_HPP
+#define BOOST_ASIO_IS_READ_BUFFERED_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffered_read_stream_fwd.hpp>
+#include <boost/asio/buffered_stream_fwd.hpp>
+
+namespace boost {
+namespace asio {
+
+namespace detail {
+
+template <typename Stream>
+char is_read_buffered_helper(buffered_stream<Stream>* s);
+
+template <typename Stream>
+char is_read_buffered_helper(buffered_read_stream<Stream>* s);
+
+struct is_read_buffered_big_type { char data[10]; };
+is_read_buffered_big_type is_read_buffered_helper(...);
+
+} // namespace detail
+
+/// The is_read_buffered class is a traits class that may be used to determine
+/// whether a stream type supports buffering of read data.
+template <typename Stream>
+class is_read_buffered
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The value member is true only if the Stream type supports buffering of
+ /// read data.
+ static const bool value;
+#else
+ BOOST_STATIC_CONSTANT(bool,
+ value = sizeof(detail::is_read_buffered_helper((Stream*)0)) == 1);
+#endif
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IS_READ_BUFFERED_HPP
diff --git a/3rdParty/Boost/boost/asio/is_write_buffered.hpp b/3rdParty/Boost/boost/asio/is_write_buffered.hpp
new file mode 100644
index 0000000..ba0bb3b
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/is_write_buffered.hpp
@@ -0,0 +1,64 @@
+//
+// is_write_buffered.hpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_IS_WRITE_BUFFERED_HPP
+#define BOOST_ASIO_IS_WRITE_BUFFERED_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/buffered_stream_fwd.hpp>
+#include <boost/asio/buffered_write_stream_fwd.hpp>
+
+namespace boost {
+namespace asio {
+
+namespace detail {
+
+template <typename Stream>
+char is_write_buffered_helper(buffered_stream<Stream>* s);
+
+template <typename Stream>
+char is_write_buffered_helper(buffered_write_stream<Stream>* s);
+
+struct is_write_buffered_big_type { char data[10]; };
+is_write_buffered_big_type is_write_buffered_helper(...);
+
+} // namespace detail
+
+/// The is_write_buffered class is a traits class that may be used to determine
+/// whether a stream type supports buffering of written data.
+template <typename Stream>
+class is_write_buffered
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The value member is true only if the Stream type supports buffering of
+ /// written data.
+ static const bool value;
+#else
+ BOOST_STATIC_CONSTANT(bool,
+ value = sizeof(detail::is_write_buffered_helper((Stream*)0)) == 1);
+#endif
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_IS_WRITE_BUFFERED_HPP
diff --git a/3rdParty/Boost/boost/asio/local/basic_endpoint.hpp b/3rdParty/Boost/boost/asio/local/basic_endpoint.hpp
new file mode 100644
index 0000000..dc927b7
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/local/basic_endpoint.hpp
@@ -0,0 +1,267 @@
+//
+// basic_endpoint.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_LOCAL_BASIC_ENDPOINT_HPP
+#define BOOST_ASIO_LOCAL_BASIC_ENDPOINT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/throw_exception.hpp>
+#include <cstddef>
+#include <cstring>
+#include <ostream>
+#include <boost/system/system_error.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
+# if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+# define BOOST_ASIO_HAS_LOCAL_SOCKETS 1
+# endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+#endif // !defined(BOOST_ASIO_DISABLE_LOCAL_SOCKETS)
+
+#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) \
+ || defined(GENERATING_DOCUMENTATION)
+
+
+namespace boost {
+namespace asio {
+namespace local {
+
+/// Describes an endpoint for a UNIX socket.
+/**
+ * The boost::asio::local::basic_endpoint class template describes an endpoint
+ * that may be associated with a particular UNIX socket.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * Endpoint.
+ */
+template <typename Protocol>
+class basic_endpoint
+{
+public:
+ /// The protocol type associated with the endpoint.
+ typedef Protocol protocol_type;
+
+ /// The type of the endpoint structure. This type is dependent on the
+ /// underlying implementation of the socket layer.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined data_type;
+#else
+ typedef boost::asio::detail::socket_addr_type data_type;
+#endif
+
+ /// Default constructor.
+ basic_endpoint()
+ {
+ init("", 0);
+ }
+
+ /// Construct an endpoint using the specified path name.
+ basic_endpoint(const char* path)
+ {
+ using namespace std; // For strlen.
+ init(path, strlen(path));
+ }
+
+ /// Construct an endpoint using the specified path name.
+ basic_endpoint(const std::string& path)
+ {
+ init(path.data(), path.length());
+ }
+
+ /// Copy constructor.
+ basic_endpoint(const basic_endpoint& other)
+ : data_(other.data_),
+ path_length_(other.path_length_)
+ {
+ }
+
+ /// Assign from another endpoint.
+ basic_endpoint& operator=(const basic_endpoint& other)
+ {
+ data_ = other.data_;
+ path_length_ = other.path_length_;
+ return *this;
+ }
+
+ /// The protocol associated with the endpoint.
+ protocol_type protocol() const
+ {
+ return protocol_type();
+ }
+
+ /// Get the underlying endpoint in the native type.
+ data_type* data()
+ {
+ return &data_.base;
+ }
+
+ /// Get the underlying endpoint in the native type.
+ const data_type* data() const
+ {
+ return &data_.base;
+ }
+
+ /// Get the underlying size of the endpoint in the native type.
+ std::size_t size() const
+ {
+ return path_length_
+ + offsetof(boost::asio::detail::sockaddr_un_type, sun_path);
+ }
+
+ /// Set the underlying size of the endpoint in the native type.
+ void resize(std::size_t size)
+ {
+ if (size > sizeof(boost::asio::detail::sockaddr_un_type))
+ {
+ boost::system::system_error e(boost::asio::error::invalid_argument);
+ boost::throw_exception(e);
+ }
+ else if (size == 0)
+ {
+ path_length_ = 0;
+ }
+ else
+ {
+ path_length_ = size
+ - offsetof(boost::asio::detail::sockaddr_un_type, sun_path);
+
+ // The path returned by the operating system may be NUL-terminated.
+ if (path_length_ > 0 && data_.local.sun_path[path_length_ - 1] == 0)
+ --path_length_;
+ }
+ }
+
+ /// Get the capacity of the endpoint in the native type.
+ std::size_t capacity() const
+ {
+ return sizeof(boost::asio::detail::sockaddr_un_type);
+ }
+
+ /// Get the path associated with the endpoint.
+ std::string path() const
+ {
+ return std::string(data_.local.sun_path, path_length_);
+ }
+
+ /// Set the path associated with the endpoint.
+ void path(const char* p)
+ {
+ using namespace std; // For strlen.
+ init(p, strlen(p));
+ }
+
+ /// Set the path associated with the endpoint.
+ void path(const std::string& p)
+ {
+ init(p.data(), p.length());
+ }
+
+ /// Compare two endpoints for equality.
+ friend bool operator==(const basic_endpoint<Protocol>& e1,
+ const basic_endpoint<Protocol>& e2)
+ {
+ return e1.path() == e2.path();
+ }
+
+ /// Compare two endpoints for inequality.
+ friend bool operator!=(const basic_endpoint<Protocol>& e1,
+ const basic_endpoint<Protocol>& e2)
+ {
+ return e1.path() != e2.path();
+ }
+
+ /// Compare endpoints for ordering.
+ friend bool operator<(const basic_endpoint<Protocol>& e1,
+ const basic_endpoint<Protocol>& e2)
+ {
+ return e1.path() < e2.path();
+ }
+
+private:
+ // The underlying UNIX socket address.
+ union data_union
+ {
+ boost::asio::detail::socket_addr_type base;
+ boost::asio::detail::sockaddr_un_type local;
+ } data_;
+
+ // The length of the path associated with the endpoint.
+ std::size_t path_length_;
+
+ // Initialise with a specified path.
+ void init(const char* path, std::size_t path_length)
+ {
+ if (path_length > sizeof(data_.local.sun_path) - 1)
+ {
+ // The buffer is not large enough to store this address.
+ boost::system::error_code ec(boost::asio::error::name_too_long);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ using namespace std; // For memcpy.
+ data_.local = boost::asio::detail::sockaddr_un_type();
+ data_.local.sun_family = AF_UNIX;
+ memcpy(data_.local.sun_path, path, path_length);
+ path_length_ = path_length;
+
+ // NUL-terminate normal path names. Names that start with a NUL are in the
+ // UNIX domain protocol's "abstract namespace" and are not NUL-terminated.
+ if (path_length > 0 && data_.local.sun_path[0] == 0)
+ data_.local.sun_path[path_length] = 0;
+ }
+};
+
+/// Output an endpoint as a string.
+/**
+ * Used to output a human-readable string for a specified endpoint.
+ *
+ * @param os The output stream to which the string will be written.
+ *
+ * @param endpoint The endpoint to be written.
+ *
+ * @return The output stream.
+ *
+ * @relates boost::asio::local::basic_endpoint
+ */
+template <typename Elem, typename Traits, typename Protocol>
+std::basic_ostream<Elem, Traits>& operator<<(
+ std::basic_ostream<Elem, Traits>& os,
+ const basic_endpoint<Protocol>& endpoint)
+{
+ os << endpoint.path();
+ return os;
+}
+
+} // namespace local
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_LOCAL_BASIC_ENDPOINT_HPP
diff --git a/3rdParty/Boost/boost/asio/local/connect_pair.hpp b/3rdParty/Boost/boost/asio/local/connect_pair.hpp
new file mode 100644
index 0000000..39a5e2a
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/local/connect_pair.hpp
@@ -0,0 +1,102 @@
+//
+// connect_pair.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_LOCAL_CONNECT_PAIR_HPP
+#define BOOST_ASIO_LOCAL_CONNECT_PAIR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/local/basic_endpoint.hpp>
+#include <boost/asio/detail/socket_ops.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace local {
+
+/// Create a pair of connected sockets.
+template <typename Protocol, typename SocketService1, typename SocketService2>
+void connect_pair(
+ basic_socket<Protocol, SocketService1>& socket1,
+ basic_socket<Protocol, SocketService2>& socket2);
+
+/// Create a pair of connected sockets.
+template <typename Protocol, typename SocketService1, typename SocketService2>
+boost::system::error_code connect_pair(
+ basic_socket<Protocol, SocketService1>& socket1,
+ basic_socket<Protocol, SocketService2>& socket2,
+ boost::system::error_code& ec);
+
+template <typename Protocol, typename SocketService1, typename SocketService2>
+inline void connect_pair(
+ basic_socket<Protocol, SocketService1>& socket1,
+ basic_socket<Protocol, SocketService2>& socket2)
+{
+ boost::system::error_code ec;
+ connect_pair(socket1, socket2, ec);
+ boost::asio::detail::throw_error(ec);
+}
+
+template <typename Protocol, typename SocketService1, typename SocketService2>
+inline boost::system::error_code connect_pair(
+ basic_socket<Protocol, SocketService1>& socket1,
+ basic_socket<Protocol, SocketService2>& socket2,
+ boost::system::error_code& ec)
+{
+ // Check that this function is only being used with a UNIX domain socket.
+ boost::asio::local::basic_endpoint<Protocol>* tmp
+ = static_cast<typename Protocol::endpoint*>(0);
+ (void)tmp;
+
+ Protocol protocol;
+ boost::asio::detail::socket_type sv[2];
+ if (boost::asio::detail::socket_ops::socketpair(protocol.family(),
+ protocol.type(), protocol.protocol(), sv, ec)
+ == boost::asio::detail::socket_error_retval)
+ return ec;
+
+ if (socket1.assign(protocol, sv[0], ec))
+ {
+ boost::system::error_code temp_ec;
+ boost::asio::detail::socket_ops::close(sv[0], temp_ec);
+ boost::asio::detail::socket_ops::close(sv[1], temp_ec);
+ return ec;
+ }
+
+ if (socket2.assign(protocol, sv[1], ec))
+ {
+ boost::system::error_code temp_ec;
+ socket1.close(temp_ec);
+ boost::asio::detail::socket_ops::close(sv[1], temp_ec);
+ return ec;
+ }
+
+ return ec;
+}
+
+} // namespace local
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_LOCAL_CONNECT_PAIR_HPP
diff --git a/3rdParty/Boost/boost/asio/local/datagram_protocol.hpp b/3rdParty/Boost/boost/asio/local/datagram_protocol.hpp
new file mode 100644
index 0000000..75407c2
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/local/datagram_protocol.hpp
@@ -0,0 +1,80 @@
+//
+// datagram_protocol.hpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
+#define BOOST_ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_datagram_socket.hpp>
+#include <boost/asio/local/basic_endpoint.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace local {
+
+/// Encapsulates the flags needed for datagram-oriented UNIX sockets.
+/**
+ * The boost::asio::local::datagram_protocol class contains flags necessary for
+ * datagram-oriented UNIX domain sockets.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe.
+ *
+ * @par Concepts:
+ * Protocol.
+ */
+class datagram_protocol
+{
+public:
+ /// Obtain an identifier for the type of the protocol.
+ int type() const
+ {
+ return SOCK_DGRAM;
+ }
+
+ /// Obtain an identifier for the protocol.
+ int protocol() const
+ {
+ return 0;
+ }
+
+ /// Obtain an identifier for the protocol family.
+ int family() const
+ {
+ return AF_UNIX;
+ }
+
+ /// The type of a UNIX domain endpoint.
+ typedef basic_endpoint<datagram_protocol> endpoint;
+
+ /// The UNIX domain socket type.
+ typedef basic_datagram_socket<datagram_protocol> socket;
+};
+
+} // namespace local
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
diff --git a/3rdParty/Boost/boost/asio/local/stream_protocol.hpp b/3rdParty/Boost/boost/asio/local/stream_protocol.hpp
new file mode 100644
index 0000000..8839661
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/local/stream_protocol.hpp
@@ -0,0 +1,88 @@
+//
+// stream_protocol.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_LOCAL_STREAM_PROTOCOL_HPP
+#define BOOST_ASIO_LOCAL_STREAM_PROTOCOL_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_socket_acceptor.hpp>
+#include <boost/asio/basic_socket_iostream.hpp>
+#include <boost/asio/basic_stream_socket.hpp>
+#include <boost/asio/local/basic_endpoint.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+#if defined(BOOST_ASIO_HAS_LOCAL_SOCKETS) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace local {
+
+/// Encapsulates the flags needed for stream-oriented UNIX sockets.
+/**
+ * The boost::asio::local::stream_protocol class contains flags necessary for
+ * stream-oriented UNIX domain sockets.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe.
+ *
+ * @par Concepts:
+ * Protocol.
+ */
+class stream_protocol
+{
+public:
+ /// Obtain an identifier for the type of the protocol.
+ int type() const
+ {
+ return SOCK_STREAM;
+ }
+
+ /// Obtain an identifier for the protocol.
+ int protocol() const
+ {
+ return 0;
+ }
+
+ /// Obtain an identifier for the protocol family.
+ int family() const
+ {
+ return AF_UNIX;
+ }
+
+ /// The type of a UNIX domain endpoint.
+ typedef basic_endpoint<stream_protocol> endpoint;
+
+ /// The UNIX domain socket type.
+ typedef basic_stream_socket<stream_protocol> socket;
+
+ /// The UNIX domain acceptor type.
+ typedef basic_socket_acceptor<stream_protocol> acceptor;
+
+ /// The UNIX domain iostream type.
+ typedef basic_socket_iostream<stream_protocol> iostream;
+};
+
+} // namespace local
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_LOCAL_STREAM_PROTOCOL_HPP
diff --git a/3rdParty/Boost/boost/asio/placeholders.hpp b/3rdParty/Boost/boost/asio/placeholders.hpp
new file mode 100644
index 0000000..67fc18c
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/placeholders.hpp
@@ -0,0 +1,109 @@
+//
+// placeholders.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_PLACEHOLDERS_HPP
+#define BOOST_ASIO_PLACEHOLDERS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/bind/arg.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+namespace placeholders {
+
+#if defined(GENERATING_DOCUMENTATION)
+
+/// An argument placeholder, for use with boost::bind(), that corresponds to
+/// the error argument of a handler for any of the asynchronous functions.
+unspecified error;
+
+/// An argument placeholder, for use with boost::bind(), that corresponds to
+/// the bytes_transferred argument of a handler for asynchronous functions such
+/// as boost::asio::basic_stream_socket::async_write_some or
+/// boost::asio::async_write.
+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.
+unspecified iterator;
+
+#elif defined(__BORLANDC__) || defined(__GNUC__)
+
+inline boost::arg<1> error()
+{
+ return boost::arg<1>();
+}
+
+inline boost::arg<2> bytes_transferred()
+{
+ return boost::arg<2>();
+}
+
+inline boost::arg<2> iterator()
+{
+ return boost::arg<2>();
+}
+
+#else
+
+namespace detail
+{
+ template <int Number>
+ struct placeholder
+ {
+ static boost::arg<Number>& get()
+ {
+ static boost::arg<Number> result;
+ return result;
+ }
+ };
+}
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
+
+static boost::arg<1>& error
+ = boost::asio::placeholders::detail::placeholder<1>::get();
+static boost::arg<2>& bytes_transferred
+ = boost::asio::placeholders::detail::placeholder<2>::get();
+static boost::arg<2>& iterator
+ = boost::asio::placeholders::detail::placeholder<2>::get();
+
+#else
+
+namespace
+{
+ boost::arg<1>& error
+ = boost::asio::placeholders::detail::placeholder<1>::get();
+ boost::arg<2>& bytes_transferred
+ = boost::asio::placeholders::detail::placeholder<2>::get();
+ boost::arg<2>& iterator
+ = boost::asio::placeholders::detail::placeholder<2>::get();
+} // namespace
+
+#endif
+
+#endif
+
+} // namespace placeholders
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_PLACEHOLDERS_HPP
diff --git a/3rdParty/Boost/boost/asio/posix/basic_descriptor.hpp b/3rdParty/Boost/boost/asio/posix/basic_descriptor.hpp
new file mode 100644
index 0000000..023d5b3
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/posix/basic_descriptor.hpp
@@ -0,0 +1,296 @@
+//
+// basic_descriptor.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_POSIX_BASIC_DESCRIPTOR_HPP
+#define BOOST_ASIO_POSIX_BASIC_DESCRIPTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/posix/descriptor_base.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+namespace posix {
+
+/// Provides POSIX descriptor functionality.
+/**
+ * The posix::basic_descriptor class template provides the ability to wrap a
+ * POSIX descriptor.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename DescriptorService>
+class basic_descriptor
+ : public basic_io_object<DescriptorService>,
+ public descriptor_base
+{
+public:
+ /// The native representation of a descriptor.
+ typedef typename DescriptorService::native_type native_type;
+
+ /// A basic_descriptor is always the lowest layer.
+ typedef basic_descriptor<DescriptorService> lowest_layer_type;
+
+ /// Construct a basic_descriptor without opening it.
+ /**
+ * This constructor creates a descriptor without opening it.
+ *
+ * @param io_service The io_service object that the descriptor will use to
+ * dispatch handlers for any asynchronous operations performed on the
+ * descriptor.
+ */
+ explicit basic_descriptor(boost::asio::io_service& io_service)
+ : basic_io_object<DescriptorService>(io_service)
+ {
+ }
+
+ /// Construct a basic_descriptor on an existing native descriptor.
+ /**
+ * This constructor creates a descriptor object to hold an existing native
+ * descriptor.
+ *
+ * @param io_service The io_service object that the descriptor will use to
+ * dispatch handlers for any asynchronous operations performed on the
+ * descriptor.
+ *
+ * @param native_descriptor A native descriptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_descriptor(boost::asio::io_service& io_service,
+ const native_type& native_descriptor)
+ : basic_io_object<DescriptorService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, native_descriptor, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get a reference to the lowest layer.
+ /**
+ * This function returns a reference to the lowest layer in a stack of
+ * layers. Since a basic_descriptor cannot contain any further layers, it
+ * simply returns a reference to itself.
+ *
+ * @return A reference to the lowest layer in the stack of layers. Ownership
+ * is not transferred to the caller.
+ */
+ lowest_layer_type& lowest_layer()
+ {
+ return *this;
+ }
+
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_descriptor cannot contain any further layers, it
+ * simply returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
+ /// Assign an existing native descriptor to the descriptor.
+ /*
+ * This function opens the descriptor to hold an existing native descriptor.
+ *
+ * @param native_descriptor A native descriptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void assign(const native_type& native_descriptor)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, native_descriptor, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Assign an existing native descriptor to the descriptor.
+ /*
+ * This function opens the descriptor to hold an existing native descriptor.
+ *
+ * @param native_descriptor A native descriptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code assign(const native_type& native_descriptor,
+ boost::system::error_code& ec)
+ {
+ return this->service.assign(this->implementation, native_descriptor, ec);
+ }
+
+ /// Determine whether the descriptor is open.
+ bool is_open() const
+ {
+ return this->service.is_open(this->implementation);
+ }
+
+ /// Close the descriptor.
+ /**
+ * This function is used to close the descriptor. Any asynchronous read or
+ * write operations will be cancelled immediately, and will complete with the
+ * boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void close()
+ {
+ boost::system::error_code ec;
+ this->service.close(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Close the descriptor.
+ /**
+ * This function is used to close the descriptor. Any asynchronous read or
+ * write operations will be cancelled immediately, and will complete with the
+ * boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return this->service.close(this->implementation, ec);
+ }
+
+ /// Get the native descriptor representation.
+ /**
+ * This function may be used to obtain the underlying representation of the
+ * descriptor. This is intended to allow access to native descriptor
+ * functionality that is not otherwise provided.
+ */
+ native_type native()
+ {
+ return this->service.native(this->implementation);
+ }
+
+ /// Cancel all asynchronous operations associated with the descriptor.
+ /**
+ * This function causes all outstanding asynchronous read or write operations
+ * to finish immediately, and the handlers for cancelled operations will be
+ * passed the boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void cancel()
+ {
+ boost::system::error_code ec;
+ this->service.cancel(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Cancel all asynchronous operations associated with the descriptor.
+ /**
+ * This function causes all outstanding asynchronous read or write operations
+ * to finish immediately, and the handlers for cancelled operations will be
+ * passed the boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code cancel(boost::system::error_code& ec)
+ {
+ return this->service.cancel(this->implementation, ec);
+ }
+
+ /// Perform an IO control command on the descriptor.
+ /**
+ * This function is used to execute an IO control command on the descriptor.
+ *
+ * @param command The IO control command to be performed on the descriptor.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @sa IoControlCommand @n
+ * boost::asio::posix::descriptor_base::bytes_readable @n
+ * boost::asio::posix::descriptor_base::non_blocking_io
+ *
+ * @par Example
+ * Getting the number of bytes ready to read:
+ * @code
+ * boost::asio::posix::stream_descriptor descriptor(io_service);
+ * ...
+ * boost::asio::posix::stream_descriptor::bytes_readable command;
+ * descriptor.io_control(command);
+ * std::size_t bytes_readable = command.get();
+ * @endcode
+ */
+ template <typename IoControlCommand>
+ void io_control(IoControlCommand& command)
+ {
+ boost::system::error_code ec;
+ this->service.io_control(this->implementation, command, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Perform an IO control command on the descriptor.
+ /**
+ * This function is used to execute an IO control command on the descriptor.
+ *
+ * @param command The IO control command to be performed on the descriptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @sa IoControlCommand @n
+ * boost::asio::posix::descriptor_base::bytes_readable @n
+ * boost::asio::posix::descriptor_base::non_blocking_io
+ *
+ * @par Example
+ * Getting the number of bytes ready to read:
+ * @code
+ * boost::asio::posix::stream_descriptor descriptor(io_service);
+ * ...
+ * boost::asio::posix::stream_descriptor::bytes_readable command;
+ * boost::system::error_code ec;
+ * descriptor.io_control(command, ec);
+ * if (ec)
+ * {
+ * // An error occurred.
+ * }
+ * std::size_t bytes_readable = command.get();
+ * @endcode
+ */
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(IoControlCommand& command,
+ boost::system::error_code& ec)
+ {
+ return this->service.io_control(this->implementation, command, ec);
+ }
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~basic_descriptor()
+ {
+ }
+};
+
+} // namespace posix
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_POSIX_BASIC_DESCRIPTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/posix/basic_stream_descriptor.hpp b/3rdParty/Boost/boost/asio/posix/basic_stream_descriptor.hpp
new file mode 100644
index 0000000..6559a68
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/posix/basic_stream_descriptor.hpp
@@ -0,0 +1,306 @@
+//
+// basic_stream_descriptor.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
+#define BOOST_ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/posix/basic_descriptor.hpp>
+#include <boost/asio/posix/stream_descriptor_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace posix {
+
+/// Provides stream-oriented descriptor functionality.
+/**
+ * The posix::basic_stream_descriptor class template provides asynchronous and
+ * blocking stream-oriented descriptor functionality.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
+ */
+template <typename StreamDescriptorService = stream_descriptor_service>
+class basic_stream_descriptor
+ : public basic_descriptor<StreamDescriptorService>
+{
+public:
+ /// The native representation of a descriptor.
+ typedef typename StreamDescriptorService::native_type native_type;
+
+ /// Construct a basic_stream_descriptor without opening it.
+ /**
+ * This constructor creates a stream descriptor without opening it. The
+ * descriptor needs to be opened and then connected or accepted before data
+ * can be sent or received on it.
+ *
+ * @param io_service The io_service object that the stream descriptor will
+ * use to dispatch handlers for any asynchronous operations performed on the
+ * descriptor.
+ */
+ explicit basic_stream_descriptor(boost::asio::io_service& io_service)
+ : basic_descriptor<StreamDescriptorService>(io_service)
+ {
+ }
+
+ /// Construct a basic_stream_descriptor on an existing native descriptor.
+ /**
+ * This constructor creates a stream descriptor object to hold an existing
+ * native descriptor.
+ *
+ * @param io_service The io_service object that the stream descriptor will
+ * use to dispatch handlers for any asynchronous operations performed on the
+ * descriptor.
+ *
+ * @param native_descriptor The new underlying descriptor implementation.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_stream_descriptor(boost::asio::io_service& io_service,
+ const native_type& native_descriptor)
+ : basic_descriptor<StreamDescriptorService>(io_service, native_descriptor)
+ {
+ }
+
+ /// Write some data to the descriptor.
+ /**
+ * This function is used to write data to the stream descriptor. The function
+ * call will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the descriptor.
+ *
+ * @returns The number of bytes written.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * descriptor.write_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.write_some(this->implementation, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Write some data to the descriptor.
+ /**
+ * This function is used to write data to the stream descriptor. The function
+ * call will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the descriptor.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. Returns 0 if an error occurred.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.write_some(this->implementation, buffers, ec);
+ }
+
+ /// Start an asynchronous write.
+ /**
+ * This function is used to asynchronously write data to the stream
+ * descriptor. The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be written to the descriptor.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes written.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The write operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write function if you need to ensure that all
+ * data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * descriptor.async_write_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ this->service.async_write_some(this->implementation, buffers, handler);
+ }
+
+ /// Read some data from the descriptor.
+ /**
+ * This function is used to read data from the stream descriptor. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @returns The number of bytes read.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * descriptor.read_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.read_some(this->implementation, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Read some data from the descriptor.
+ /**
+ * This function is used to read data from the stream descriptor. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. Returns 0 if an error occurred.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.read_some(this->implementation, buffers, ec);
+ }
+
+ /// Start an asynchronous read.
+ /**
+ * This function is used to asynchronously read data from the stream
+ * descriptor. The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes read.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The read operation may not read all of the requested number of bytes.
+ * Consider using the @ref async_read function if you need to ensure that the
+ * requested amount of data is read before the asynchronous operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * descriptor.async_read_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ this->service.async_read_some(this->implementation, buffers, handler);
+ }
+};
+
+} // namespace posix
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/posix/descriptor_base.hpp b/3rdParty/Boost/boost/asio/posix/descriptor_base.hpp
new file mode 100644
index 0000000..19a5727
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/posix/descriptor_base.hpp
@@ -0,0 +1,95 @@
+//
+// descriptor_base.hpp
+// ~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_POSIX_DESCRIPTOR_BASE_HPP
+#define BOOST_ASIO_POSIX_DESCRIPTOR_BASE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/io_control.hpp>
+#include <boost/asio/detail/socket_option.hpp>
+
+namespace boost {
+namespace asio {
+namespace posix {
+
+/// The descriptor_base class is used as a base for the basic_stream_descriptor
+/// class template so that we have a common place to define the associated
+/// IO control commands.
+class descriptor_base
+{
+public:
+ /// IO control command to set the blocking mode of the descriptor.
+ /**
+ * Implements the FIONBIO IO control command.
+ *
+ * @par Example
+ * @code
+ * boost::asio::posix::stream_descriptor descriptor(io_service);
+ * ...
+ * boost::asio::descriptor_base::non_blocking_io command(true);
+ * descriptor.io_control(command);
+ * @endcode
+ *
+ * @par Concepts:
+ * IoControlCommand.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined non_blocking_io;
+#else
+ typedef boost::asio::detail::io_control::non_blocking_io non_blocking_io;
+#endif
+
+ /// IO control command to get the amount of data that can be read without
+ /// blocking.
+ /**
+ * Implements the FIONREAD IO control command.
+ *
+ * @par Example
+ * @code
+ * boost::asio::posix::stream_descriptor descriptor(io_service);
+ * ...
+ * boost::asio::descriptor_base::bytes_readable command(true);
+ * descriptor.io_control(command);
+ * std::size_t bytes_readable = command.get();
+ * @endcode
+ *
+ * @par Concepts:
+ * IoControlCommand.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined bytes_readable;
+#else
+ typedef boost::asio::detail::io_control::bytes_readable bytes_readable;
+#endif
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~descriptor_base()
+ {
+ }
+};
+
+} // namespace posix
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_POSIX_DESCRIPTOR_BASE_HPP
diff --git a/3rdParty/Boost/boost/asio/posix/stream_descriptor.hpp b/3rdParty/Boost/boost/asio/posix/stream_descriptor.hpp
new file mode 100644
index 0000000..ff728e2
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/posix/stream_descriptor.hpp
@@ -0,0 +1,41 @@
+//
+// stream_descriptor.hpp
+// ~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_POSIX_STREAM_DESCRIPTOR_HPP
+#define BOOST_ASIO_POSIX_STREAM_DESCRIPTOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/posix/basic_stream_descriptor.hpp>
+
+#if defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace posix {
+
+/// Typedef for the typical usage of a stream-oriented descriptor.
+typedef basic_stream_descriptor<> stream_descriptor;
+
+} // namespace posix
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_POSIX_STREAM_DESCRIPTOR_HPP
diff --git a/3rdParty/Boost/boost/asio/posix/stream_descriptor_service.hpp b/3rdParty/Boost/boost/asio/posix/stream_descriptor_service.hpp
new file mode 100644
index 0000000..0b6d55f
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/posix/stream_descriptor_service.hpp
@@ -0,0 +1,202 @@
+//
+// stream_descriptor_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
+#define BOOST_ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/reactive_descriptor_service.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
+# if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+# define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1
+# endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+#endif // !defined(BOOST_ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
+
+#if defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace posix {
+
+/// Default service implementation for a stream descriptor.
+class stream_descriptor_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<stream_descriptor_service>
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::reactive_descriptor_service<
+ detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::reactive_descriptor_service<
+ detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::reactive_descriptor_service<
+ detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::reactive_descriptor_service<
+ detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The type of a stream descriptor implementation.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native descriptor type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new stream descriptor service for the specified io_service.
+ explicit stream_descriptor_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<stream_descriptor_service>(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined descriptorr objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new stream descriptor implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a stream descriptor implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Assign an existing native descriptor to a stream descriptor.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_descriptor, boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, native_descriptor, ec);
+ }
+
+ /// Determine whether the descriptor is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a stream descriptor implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native descriptor implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the descriptor.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Perform an IO control command on the descriptor.
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(implementation_type& impl,
+ IoControlCommand& command, boost::system::error_code& ec)
+ {
+ return service_impl_.io_control(impl, command, ec);
+ }
+
+ /// Write the given data to the stream.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.write_some(impl, buffers, ec);
+ }
+
+ /// Start an asynchronous write.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, WriteHandler descriptorr)
+ {
+ service_impl_.async_write_some(impl, buffers, descriptorr);
+ }
+
+ /// Read some data from the stream.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.read_some(impl, buffers, ec);
+ }
+
+ /// Start an asynchronous read.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, ReadHandler descriptorr)
+ {
+ service_impl_.async_read_some(impl, buffers, descriptorr);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace posix
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/raw_socket_service.hpp b/3rdParty/Boost/boost/asio/raw_socket_service.hpp
new file mode 100644
index 0000000..ec7cc2a
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/raw_socket_service.hpp
@@ -0,0 +1,325 @@
+//
+// raw_socket_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_RAW_SOCKET_SERVICE_HPP
+#define BOOST_ASIO_RAW_SOCKET_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/reactive_socket_service.hpp>
+#include <boost/asio/detail/win_iocp_socket_service.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default service implementation for a raw socket.
+template <typename Protocol>
+class raw_socket_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<raw_socket_service<Protocol> >
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::reactive_socket_service<
+ Protocol, detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The type of a raw socket.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef typename service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native socket type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef typename service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new raw socket service for the specified io_service.
+ explicit raw_socket_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ raw_socket_service<Protocol> >(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new raw socket implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a raw socket implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ // Open a new raw socket implementation.
+ boost::system::error_code open(implementation_type& impl,
+ const protocol_type& protocol, boost::system::error_code& ec)
+ {
+ if (protocol.type() == SOCK_RAW)
+ service_impl_.open(impl, protocol, ec);
+ else
+ ec = boost::asio::error::invalid_argument;
+ return ec;
+ }
+
+ /// Assign an existing native socket to a raw socket.
+ boost::system::error_code assign(implementation_type& impl,
+ const protocol_type& protocol, const native_type& native_socket,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, protocol, native_socket, ec);
+ }
+
+ /// Determine whether the socket is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a raw socket implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native socket implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the socket.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Determine whether the socket is at the out-of-band data mark.
+ bool at_mark(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.at_mark(impl, ec);
+ }
+
+ /// Determine the number of bytes available for reading.
+ std::size_t available(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.available(impl, ec);
+ }
+
+ // Bind the raw socket to the specified local endpoint.
+ boost::system::error_code bind(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.bind(impl, endpoint, ec);
+ }
+
+ /// Connect the raw socket to the specified endpoint.
+ boost::system::error_code connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.connect(impl, peer_endpoint, ec);
+ }
+
+ /// Start an asynchronous connect.
+ template <typename ConnectHandler>
+ void async_connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, ConnectHandler handler)
+ {
+ service_impl_.async_connect(impl, peer_endpoint, handler);
+ }
+
+ /// Set a socket option.
+ template <typename SettableSocketOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSocketOption& option, boost::system::error_code& ec)
+ {
+ return service_impl_.set_option(impl, option, ec);
+ }
+
+ /// Get a socket option.
+ template <typename GettableSocketOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSocketOption& option, boost::system::error_code& ec) const
+ {
+ return service_impl_.get_option(impl, option, ec);
+ }
+
+ /// Perform an IO control command on the socket.
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(implementation_type& impl,
+ IoControlCommand& command, boost::system::error_code& ec)
+ {
+ return service_impl_.io_control(impl, command, ec);
+ }
+
+ /// Get the local endpoint.
+ endpoint_type local_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.local_endpoint(impl, ec);
+ }
+
+ /// Get the remote endpoint.
+ endpoint_type remote_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.remote_endpoint(impl, ec);
+ }
+
+ /// Disable sends or receives on the socket.
+ boost::system::error_code shutdown(implementation_type& impl,
+ socket_base::shutdown_type what, boost::system::error_code& ec)
+ {
+ return service_impl_.shutdown(impl, what, ec);
+ }
+
+ /// Send the given data to the peer.
+ template <typename ConstBufferSequence>
+ std::size_t send(implementation_type& impl,
+ const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.send(impl, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(implementation_type& impl, const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ service_impl_.async_send(impl, buffers, flags, handler);
+ }
+
+ /// Send raw data to the specified endpoint.
+ template <typename ConstBufferSequence>
+ std::size_t send_to(implementation_type& impl,
+ const ConstBufferSequence& buffers, const endpoint_type& destination,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.send_to(impl, buffers, destination, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send_to(implementation_type& impl,
+ const ConstBufferSequence& buffers, const endpoint_type& destination,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ service_impl_.async_send_to(impl, buffers, destination, flags, handler);
+ }
+
+ /// Receive some data from the peer.
+ template <typename MutableBufferSequence>
+ std::size_t receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.receive(impl, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous receive.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ service_impl_.async_receive(impl, buffers, flags, handler);
+ }
+
+ /// Receive raw data with the endpoint of the sender.
+ template <typename MutableBufferSequence>
+ std::size_t receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.receive_from(impl, buffers, sender_endpoint, flags,
+ ec);
+ }
+
+ /// Start an asynchronous receive that will get the endpoint of the sender.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive_from(implementation_type& impl,
+ const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ service_impl_.async_receive_from(impl, buffers, sender_endpoint, flags,
+ handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_RAW_SOCKET_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/read.hpp b/3rdParty/Boost/boost/asio/read.hpp
new file mode 100644
index 0000000..0faeb02
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/read.hpp
@@ -0,0 +1,528 @@
+//
+// read.hpp
+// ~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_READ_HPP
+#define BOOST_ASIO_READ_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_streambuf.hpp>
+#include <boost/asio/error.hpp>
+
+namespace boost {
+namespace asio {
+
+/**
+ * @defgroup read boost::asio::read
+ *
+ * @brief Attempt to read a certain amount of data from a stream before
+ * returning.
+ */
+/*@{*/
+
+/// Attempt to read a certain amount of data from a stream before returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * stream. The call will block until one of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * stream.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::read(s, boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::read(
+ * s, buffers,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncReadStream, typename MutableBufferSequence>
+std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers);
+
+/// Attempt to read a certain amount of data from a stream before returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * stream. The call will block until one of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * stream.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::read(s, boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32)); @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename SyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition>
+std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition);
+
+/// Attempt to read a certain amount of data from a stream before returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * stream. The call will block until one of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * stream.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition>
+std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/// Attempt to read a certain amount of data from a stream before returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * stream. The call will block until one of the following conditions is true:
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b The basic_streambuf object into which the data will be read.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::read(
+ * s, b,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b);
+
+/// Attempt to read a certain amount of data from a stream before returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * stream. The call will block until one of the following conditions is true:
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b The basic_streambuf object into which the data will be read.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+template <typename SyncReadStream, typename Allocator,
+ typename CompletionCondition>
+std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition);
+
+/// Attempt to read a certain amount of data from a stream before returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * stream. The call will block until one of the following conditions is true:
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b The basic_streambuf object into which the data will be read.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's read_some function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncReadStream, typename Allocator,
+ typename CompletionCondition>
+std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/*@}*/
+/**
+ * @defgroup async_read boost::asio::async_read
+ *
+ * @brief Start an asynchronous operation to read a certain amount of data from
+ * a stream.
+ */
+/*@{*/
+
+/// Start an asynchronous operation to read a certain amount of data from a
+/// stream.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions is
+ * true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * stream. Although the buffers object may be copied as necessary, ownership of
+ * the underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes copied into the
+ * // buffers. If an error occurred,
+ * // this will be the number of
+ * // bytes successfully transferred
+ * // prior to the error.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::async_read(s, boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::async_read(
+ * s, buffers,
+ * boost::asio::transfer_all(),
+ * handler); @endcode
+ */
+template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename ReadHandler>
+void async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
+ ReadHandler handler);
+
+/// Start an asynchronous operation to read a certain amount of data from a
+/// stream.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions is
+ * true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * stream. Although the buffers object may be copied as necessary, ownership of
+ * the underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_read_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's async_read_some function.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes copied into the
+ * // buffers. If an error occurred,
+ * // this will be the number of
+ * // bytes successfully transferred
+ * // prior to the error.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::async_read(s,
+ * boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32),
+ * handler); @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename AsyncReadStream, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+void async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, ReadHandler handler);
+
+/// Start an asynchronous operation to read a certain amount of data from a
+/// stream.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions is
+ * true:
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param b A basic_streambuf object into which the data will be read. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes copied into the
+ * // buffers. If an error occurred,
+ * // this will be the number of
+ * // bytes successfully transferred
+ * // prior to the error.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::async_read(
+ * s, b,
+ * boost::asio::transfer_all(),
+ * handler); @endcode
+ */
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
+ ReadHandler handler);
+
+/// Start an asynchronous operation to read a certain amount of data from a
+/// stream.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions is
+ * true:
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param b A basic_streambuf object into which the data will be read. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_read_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the stream's async_read_some function.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes copied into the
+ * // buffers. If an error occurred,
+ * // this will be the number of
+ * // bytes successfully transferred
+ * // prior to the error.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+template <typename AsyncReadStream, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+void async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, ReadHandler handler);
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/read.ipp>
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_READ_HPP
diff --git a/3rdParty/Boost/boost/asio/read_at.hpp b/3rdParty/Boost/boost/asio/read_at.hpp
new file mode 100644
index 0000000..5b1d5ea
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/read_at.hpp
@@ -0,0 +1,570 @@
+//
+// read_at.hpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_READ_AT_HPP
+#define BOOST_ASIO_READ_AT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_streambuf.hpp>
+#include <boost/asio/error.hpp>
+
+namespace boost {
+namespace asio {
+
+/**
+ * @defgroup read_at boost::asio::read_at
+ *
+ * @brief Attempt to read a certain amount of data at the specified offset
+ * before returning.
+ */
+/*@{*/
+
+/// Attempt to read a certain amount of data at the specified offset before
+/// returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * random access device at the specified offset. The call will block until one
+ * of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the SyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * device.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::read_at(d, 42, boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::read_at(
+ * d, 42, buffers,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers);
+
+/// Attempt to read a certain amount of data at the specified offset before
+/// returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * random access device at the specified offset. The call will block until one
+ * of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the SyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * device.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the device's read_some_at function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::read_at(d, 42, boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32)); @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename CompletionCondition>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition);
+
+/// Attempt to read a certain amount of data at the specified offset before
+/// returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * random access device at the specified offset. The call will block until one
+ * of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the SyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * device.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the device's read_some_at function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename CompletionCondition>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/// Attempt to read a certain amount of data at the specified offset before
+/// returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * random access device at the specified offset. The call will block until one
+ * of the following conditions is true:
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the SyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param b The basic_streambuf object into which the data will be read.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::read_at(
+ * d, 42, b,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncRandomAccessReadDevice, typename Allocator>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, basic_streambuf<Allocator>& b);
+
+/// Attempt to read a certain amount of data at the specified offset before
+/// returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * random access device at the specified offset. The call will block until one
+ * of the following conditions is true:
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the SyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param b The basic_streambuf object into which the data will be read.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the device's read_some_at function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+template <typename SyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition);
+
+/// Attempt to read a certain amount of data at the specified offset before
+/// returning.
+/**
+ * This function is used to read a certain number of bytes of data from a
+ * random access device at the specified offset. The call will block until one
+ * of the following conditions is true:
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the SyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param b The basic_streambuf object into which the data will be read.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest read_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the device's read_some_at function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition>
+std::size_t read_at(SyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/*@}*/
+/**
+ * @defgroup async_read_at boost::asio::async_read_at
+ *
+ * @brief Start an asynchronous operation to read a certain amount of data at
+ * the specified offset.
+ */
+/*@{*/
+
+/// Start an asynchronous operation to read a certain amount of data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a random access device at the specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the AsyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * device. Although the buffers object may be copied as necessary, ownership of
+ * the underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes copied into the buffers. If an error
+ * // occurred, this will be the number of bytes successfully
+ * // transferred prior to the error.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::async_read_at(d, 42, boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::async_read_at(
+ * d, 42, buffers,
+ * boost::asio::transfer_all(),
+ * handler); @endcode
+ */
+template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename ReadHandler>
+void async_read_at(AsyncRandomAccessReadDevice& d, boost::uint64_t offset,
+ const MutableBufferSequence& buffers, ReadHandler handler);
+
+/// Start an asynchronous operation to read a certain amount of data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a random access device at the specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li The supplied buffers are full. That is, the bytes transferred is equal to
+ * the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the AsyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read. The sum
+ * of the buffer sizes indicates the maximum number of bytes to read from the
+ * device. Although the buffers object may be copied as necessary, ownership of
+ * the underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_read_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the device's async_read_some_at function.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes copied into the buffers. If an error
+ * // occurred, this will be the number of bytes successfully
+ * // transferred prior to the error.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::async_read_at(d, 42,
+ * boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32),
+ * handler); @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
+ typename CompletionCondition, typename ReadHandler>
+void async_read_at(AsyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, const MutableBufferSequence& buffers,
+ CompletionCondition completion_condition, ReadHandler handler);
+
+/// Start an asynchronous operation to read a certain amount of data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a random access device at the specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the AsyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param b A basic_streambuf object into which the data will be read. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes copied into the buffers. If an error
+ * // occurred, this will be the number of bytes successfully
+ * // transferred prior to the error.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::async_read_at(
+ * d, 42, b,
+ * boost::asio::transfer_all(),
+ * handler); @endcode
+ */
+template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename ReadHandler>
+void async_read_at(AsyncRandomAccessReadDevice& d, boost::uint64_t offset,
+ basic_streambuf<Allocator>& b, ReadHandler handler);
+
+/// Start an asynchronous operation to read a certain amount of data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously read a certain number of bytes of
+ * data from a random access device at the specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_read_some_at function.
+ *
+ * @param d The device from which the data is to be read. The type must support
+ * the AsyncRandomAccessReadDevice concept.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param b A basic_streambuf object into which the data will be read. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the read operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_read_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the read operation is complete. A non-zero
+ * return value indicates the maximum number of bytes to be read on the next
+ * call to the device's async_read_some_at function.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes copied into the buffers. If an error
+ * // occurred, this will be the number of bytes successfully
+ * // transferred prior to the error.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+template <typename AsyncRandomAccessReadDevice, typename Allocator,
+ typename CompletionCondition, typename ReadHandler>
+void async_read_at(AsyncRandomAccessReadDevice& d,
+ boost::uint64_t offset, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, ReadHandler handler);
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/read_at.ipp>
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_READ_AT_HPP
diff --git a/3rdParty/Boost/boost/asio/read_until.hpp b/3rdParty/Boost/boost/asio/read_until.hpp
new file mode 100644
index 0000000..6144e60
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/read_until.hpp
@@ -0,0 +1,841 @@
+//
+// read_until.hpp
+// ~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_READ_UNTIL_HPP
+#define BOOST_ASIO_READ_UNTIL_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/regex.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/detail/workaround.hpp>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_streambuf.hpp>
+#include <boost/asio/error.hpp>
+
+namespace boost {
+namespace asio {
+
+namespace detail
+{
+#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+ template <typename T>
+ struct has_result_type
+ {
+ template <typename U> struct inner
+ {
+ struct big { char a[100]; };
+ static big helper(U, ...);
+ static char helper(U, typename U::result_type* = 0);
+ };
+ static const T& ref();
+ enum { value = (sizeof((inner<const T&>::helper)((ref)())) == 1) };
+ };
+#else // BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+ template <typename T>
+ struct has_result_type
+ {
+ struct big { char a[100]; };
+ template <typename U> static big helper(U, ...);
+ template <typename U> static char helper(U, typename U::result_type* = 0);
+ static const T& ref();
+ enum { value = (sizeof((helper)((ref)())) == 1) };
+ };
+#endif // BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+} // namespace detail
+
+/// Type trait used to determine whether a type can be used as a match condition
+/// function with read_until and async_read_until.
+template <typename T>
+struct is_match_condition
+{
+#if defined(GENERATING_DOCUMENTATION)
+ /// The value member is true if the type may be used as a match condition.
+ static const bool value;
+#else
+ enum
+ {
+ value = boost::is_function<typename boost::remove_pointer<T>::type>::value
+ || detail::has_result_type<T>::value
+ };
+#endif
+};
+
+/**
+ * @defgroup read_until boost::asio::read_until
+ *
+ * @brief Read data into a streambuf until it contains a delimiter, matches a
+ * regular expression, or a function object indicates a match.
+ */
+/*@{*/
+
+/// Read data into a streambuf until it contains a specified delimiter.
+/**
+ * This function is used to read data into the specified streambuf until the
+ * streambuf's get area contains the specified delimiter. The call will block
+ * until one of the following conditions is true:
+ *
+ * @li The get area of the streambuf contains the specified delimiter.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the streambuf's get area already contains the
+ * delimiter, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param delim The delimiter character.
+ *
+ * @returns The number of bytes in the streambuf's get area up to and including
+ * the delimiter.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
+ *
+ * @par Example
+ * To read data into a streambuf until a newline is encountered:
+ * @code boost::asio::streambuf b;
+ * boost::asio::read_until(s, b, '\n');
+ * std::istream is(&b);
+ * std::string line;
+ * std::getline(is, line); @endcode
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, char delim);
+
+/// Read data into a streambuf until it contains a specified delimiter.
+/**
+ * This function is used to read data into the specified streambuf until the
+ * streambuf's get area contains the specified delimiter. The call will block
+ * until one of the following conditions is true:
+ *
+ * @li The get area of the streambuf contains the specified delimiter.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the streambuf's get area already contains the
+ * delimiter, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param delim The delimiter character.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes in the streambuf's get area up to and including
+ * the delimiter. Returns 0 if an error occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, char delim,
+ boost::system::error_code& ec);
+
+/// Read data into a streambuf until it contains a specified delimiter.
+/**
+ * This function is used to read data into the specified streambuf until the
+ * streambuf's get area contains the specified delimiter. The call will block
+ * until one of the following conditions is true:
+ *
+ * @li The get area of the streambuf contains the specified delimiter.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the streambuf's get area already contains the
+ * delimiter, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param delim The delimiter string.
+ *
+ * @returns The number of bytes in the streambuf's get area up to and including
+ * the delimiter.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
+ *
+ * @par Example
+ * To read data into a streambuf until a newline is encountered:
+ * @code boost::asio::streambuf b;
+ * boost::asio::read_until(s, b, "\r\n");
+ * std::istream is(&b);
+ * std::string line;
+ * std::getline(is, line); @endcode
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const std::string& delim);
+
+/// Read data into a streambuf until it contains a specified delimiter.
+/**
+ * This function is used to read data into the specified streambuf until the
+ * streambuf's get area contains the specified delimiter. The call will block
+ * until one of the following conditions is true:
+ *
+ * @li The get area of the streambuf contains the specified delimiter.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the streambuf's get area already contains the
+ * delimiter, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param delim The delimiter string.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes in the streambuf's get area up to and including
+ * the delimiter. Returns 0 if an error occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond the delimiter. An application will typically leave
+ * that data in the streambuf for a subsequent read_until operation to examine.
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
+ boost::system::error_code& ec);
+
+/// Read data into a streambuf until some part of the data it contains matches
+/// a regular expression.
+/**
+ * This function is used to read data into the specified streambuf until the
+ * streambuf's get area contains some data that matches a regular expression.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li A substring of the streambuf's get area matches the regular expression.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the streambuf's get area already contains data that
+ * matches the regular expression, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param expr The regular expression.
+ *
+ * @returns The number of bytes in the streambuf's get area up to and including
+ * the substring that matches the regular expression.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the regular expression. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * read_until operation to examine.
+ *
+ * @par Example
+ * To read data into a streambuf until a CR-LF sequence is encountered:
+ * @code boost::asio::streambuf b;
+ * boost::asio::read_until(s, b, boost::regex("\r\n"));
+ * std::istream is(&b);
+ * std::string line;
+ * std::getline(is, line); @endcode
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
+
+/// Read data into a streambuf until some part of the data it contains matches
+/// a regular expression.
+/**
+ * This function is used to read data into the specified streambuf until the
+ * streambuf's get area contains some data that matches a regular expression.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li A substring of the streambuf's get area matches the regular expression.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the streambuf's get area already contains data that
+ * matches the regular expression, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param expr The regular expression.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes in the streambuf's get area up to and including
+ * the substring that matches the regular expression. Returns 0 if an error
+ * occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the regular expression. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * read_until operation to examine.
+ */
+template <typename SyncReadStream, typename Allocator>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
+ boost::system::error_code& ec);
+
+/// Read data into a streambuf until a function object indicates a match.
+/**
+ * This function is used to read data into the specified streambuf until a
+ * user-defined match condition function object, when applied to the data
+ * contained in the streambuf, indicates a successful match. The call will
+ * block until one of the following conditions is true:
+ *
+ * @li The match condition function object returns a std::pair where the second
+ * element evaluates to true.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the match condition function object already indicates
+ * a match, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param match_condition The function object to be called to determine whether
+ * a match exists. The signature of the function object must be:
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
+ * @endcode
+ * where @c iterator represents the type:
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
+ * @endcode
+ * The iterator parameters @c begin and @c end define the range of bytes to be
+ * scanned to determine whether there is a match. The @c first member of the
+ * return value is an iterator marking one-past-the-end of the bytes that have
+ * been consumed by the match function. This iterator is used to calculate the
+ * @c begin parameter for any subsequent invocation of the match condition. The
+ * @c second member of the return value is true if a match has been found, false
+ * otherwise.
+ *
+ * @returns The number of bytes in the streambuf's get area that have been fully
+ * consumed by the match function.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the function object. An application
+ * will typically leave that data in the streambuf for a subsequent
+ *
+ * @note The default implementation of the @c is_match_condition type trait
+ * evaluates to true for function pointers and function objects with a
+ * @c result_type typedef. It must be specialised for other user-defined
+ * function objects.
+ *
+ * @par Examples
+ * To read data into a streambuf until whitespace is encountered:
+ * @code typedef boost::asio::buffers_iterator<
+ * boost::asio::streambuf::const_buffers_type> iterator;
+ *
+ * std::pair<iterator, bool>
+ * match_whitespace(iterator begin, iterator end)
+ * {
+ * iterator i = begin;
+ * while (i != end)
+ * if (std::isspace(*i++))
+ * return std::make_pair(i, true);
+ * return std::make_pair(i, false);
+ * }
+ * ...
+ * boost::asio::streambuf b;
+ * boost::asio::read_until(s, b, match_whitespace);
+ * @endcode
+ *
+ * To read data into a streambuf until a matching character is found:
+ * @code class match_char
+ * {
+ * public:
+ * explicit match_char(char c) : c_(c) {}
+ *
+ * template <typename Iterator>
+ * std::pair<Iterator, bool> operator()(
+ * Iterator begin, Iterator end) const
+ * {
+ * Iterator i = begin;
+ * while (i != end)
+ * if (c_ == *i++)
+ * return std::make_pair(i, true);
+ * return std::make_pair(i, false);
+ * }
+ *
+ * private:
+ * char c_;
+ * };
+ *
+ * namespace asio {
+ * template <> struct is_match_condition<match_char>
+ * : public boost::true_type {};
+ * } // namespace asio
+ * ...
+ * boost::asio::streambuf b;
+ * boost::asio::read_until(s, b, match_char('a'));
+ * @endcode
+ */
+template <typename SyncReadStream, typename Allocator, typename MatchCondition>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
+ typename boost::enable_if<is_match_condition<MatchCondition> >::type* = 0);
+
+/// Read data into a streambuf until a function object indicates a match.
+/**
+ * This function is used to read data into the specified streambuf until a
+ * user-defined match condition function object, when applied to the data
+ * contained in the streambuf, indicates a successful match. The call will
+ * block until one of the following conditions is true:
+ *
+ * @li The match condition function object returns a std::pair where the second
+ * element evaluates to true.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * read_some function. If the match condition function object already indicates
+ * a match, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the SyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param match_condition The function object to be called to determine whether
+ * a match exists. The signature of the function object must be:
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
+ * @endcode
+ * where @c iterator represents the type:
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
+ * @endcode
+ * The iterator parameters @c begin and @c end define the range of bytes to be
+ * scanned to determine whether there is a match. The @c first member of the
+ * return value is an iterator marking one-past-the-end of the bytes that have
+ * been consumed by the match function. This iterator is used to calculate the
+ * @c begin parameter for any subsequent invocation of the match condition. The
+ * @c second member of the return value is true if a match has been found, false
+ * otherwise.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes in the streambuf's get area that have been fully
+ * consumed by the match function. Returns 0 if an error occurred.
+ *
+ * @note After a successful read_until operation, the streambuf may contain
+ * additional data beyond that which matched the function object. An application
+ * will typically leave that data in the streambuf for a subsequent
+ *
+ * @note The default implementation of the @c is_match_condition type trait
+ * evaluates to true for function pointers and function objects with a
+ * @c result_type typedef. It must be specialised for other user-defined
+ * function objects.
+ */
+template <typename SyncReadStream, typename Allocator, typename MatchCondition>
+std::size_t read_until(SyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ MatchCondition match_condition, boost::system::error_code& ec,
+ typename boost::enable_if<is_match_condition<MatchCondition> >::type* = 0);
+
+/*@}*/
+/**
+ * @defgroup async_read_until boost::asio::async_read_until
+ *
+ * @brief Start an asynchronous operation to read data into a streambuf until it
+ * contains a delimiter, matches a regular expression, or a function object
+ * indicates a match.
+ */
+/*@{*/
+
+/// Start an asynchronous operation to read data into a streambuf until it
+/// contains a specified delimiter.
+/**
+ * This function is used to asynchronously read data into the specified
+ * streambuf until the streambuf's get area contains the specified delimiter.
+ * The function call always returns immediately. The asynchronous operation
+ * will continue until one of the following conditions is true:
+ *
+ * @li The get area of the streambuf contains the specified delimiter.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function. If the streambuf's get area already contains the
+ * delimiter, the asynchronous operation completes immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read. Ownership of
+ * the streambuf is retained by the caller, which must guarantee that it remains
+ * valid until the handler is called.
+ *
+ * @param delim The delimiter character.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // The number of bytes in the streambuf's get
+ * // area up to and including the delimiter.
+ * // 0 if an error occurred.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond the delimiter. An application will typically
+ * leave that data in the streambuf for a subsequent async_read_until operation
+ * to examine.
+ *
+ * @par Example
+ * To asynchronously read data into a streambuf until a newline is encountered:
+ * @code boost::asio::streambuf b;
+ * ...
+ * void handler(const boost::system::error_code& e, std::size_t size)
+ * {
+ * if (!e)
+ * {
+ * std::istream is(&b);
+ * std::string line;
+ * std::getline(is, line);
+ * ...
+ * }
+ * }
+ * ...
+ * boost::asio::async_read_until(s, b, '\n', handler); @endcode
+ */
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ char delim, ReadHandler handler);
+
+/// Start an asynchronous operation to read data into a streambuf until it
+/// contains a specified delimiter.
+/**
+ * This function is used to asynchronously read data into the specified
+ * streambuf until the streambuf's get area contains the specified delimiter.
+ * The function call always returns immediately. The asynchronous operation
+ * will continue until one of the following conditions is true:
+ *
+ * @li The get area of the streambuf contains the specified delimiter.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function. If the streambuf's get area already contains the
+ * delimiter, the asynchronous operation completes immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read. Ownership of
+ * the streambuf is retained by the caller, which must guarantee that it remains
+ * valid until the handler is called.
+ *
+ * @param delim The delimiter string.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // The number of bytes in the streambuf's get
+ * // area up to and including the delimiter.
+ * // 0 if an error occurred.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond the delimiter. An application will typically
+ * leave that data in the streambuf for a subsequent async_read_until operation
+ * to examine.
+ *
+ * @par Example
+ * To asynchronously read data into a streambuf until a newline is encountered:
+ * @code boost::asio::streambuf b;
+ * ...
+ * void handler(const boost::system::error_code& e, std::size_t size)
+ * {
+ * if (!e)
+ * {
+ * std::istream is(&b);
+ * std::string line;
+ * std::getline(is, line);
+ * ...
+ * }
+ * }
+ * ...
+ * boost::asio::async_read_until(s, b, "\r\n", handler); @endcode
+ */
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const std::string& delim,
+ ReadHandler handler);
+
+/// Start an asynchronous operation to read data into a streambuf until some
+/// part of its data matches a regular expression.
+/**
+ * This function is used to asynchronously read data into the specified
+ * streambuf until the streambuf's get area contains some data that matches a
+ * regular expression. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions
+ * is true:
+ *
+ * @li A substring of the streambuf's get area matches the regular expression.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function. If the streambuf's get area already contains data
+ * that matches the regular expression, the function returns immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read. Ownership of
+ * the streambuf is retained by the caller, which must guarantee that it remains
+ * valid until the handler is called.
+ *
+ * @param expr The regular expression.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // The number of bytes in the streambuf's get
+ * // area up to and including the substring
+ * // that matches the regular. expression.
+ * // 0 if an error occurred.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond that which matched the regular expression. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * async_read_until operation to examine.
+ *
+ * @par Example
+ * To asynchronously read data into a streambuf until a CR-LF sequence is
+ * encountered:
+ * @code boost::asio::streambuf b;
+ * ...
+ * void handler(const boost::system::error_code& e, std::size_t size)
+ * {
+ * if (!e)
+ * {
+ * std::istream is(&b);
+ * std::string line;
+ * std::getline(is, line);
+ * ...
+ * }
+ * }
+ * ...
+ * boost::asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
+ */
+template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
+ ReadHandler handler);
+
+/// Start an asynchronous operation to read data into a streambuf until a
+/// function object indicates a match.
+/**
+ * This function is used to asynchronously read data into the specified
+ * streambuf until a user-defined match condition function object, when applied
+ * to the data contained in the streambuf, indicates a successful match. The
+ * function call always returns immediately. The asynchronous operation will
+ * continue until one of the following conditions is true:
+ *
+ * @li The match condition function object returns a std::pair where the second
+ * element evaluates to true.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_read_some function. If the match condition function object already
+ * indicates a match, the operation completes immediately.
+ *
+ * @param s The stream from which the data is to be read. The type must support
+ * the AsyncReadStream concept.
+ *
+ * @param b A streambuf object into which the data will be read.
+ *
+ * @param match_condition The function object to be called to determine whether
+ * a match exists. The signature of the function object must be:
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
+ * @endcode
+ * where @c iterator represents the type:
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
+ * @endcode
+ * The iterator parameters @c begin and @c end define the range of bytes to be
+ * scanned to determine whether there is a match. The @c first member of the
+ * return value is an iterator marking one-past-the-end of the bytes that have
+ * been consumed by the match function. This iterator is used to calculate the
+ * @c begin parameter for any subsequent invocation of the match condition. The
+ * @c second member of the return value is true if a match has been found, false
+ * otherwise.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // The number of bytes in the streambuf's get
+ * // area that have been fully consumed by the
+ * // match function. O if an error occurred.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note After a successful async_read_until operation, the streambuf may
+ * contain additional data beyond that which matched the function object. An
+ * application will typically leave that data in the streambuf for a subsequent
+ * async_read_until operation to examine.
+ *
+ * @note The default implementation of the @c is_match_condition type trait
+ * evaluates to true for function pointers and function objects with a
+ * @c result_type typedef. It must be specialised for other user-defined
+ * function objects.
+ *
+ * @par Examples
+ * To asynchronously read data into a streambuf until whitespace is encountered:
+ * @code typedef boost::asio::buffers_iterator<
+ * boost::asio::streambuf::const_buffers_type> iterator;
+ *
+ * std::pair<iterator, bool>
+ * match_whitespace(iterator begin, iterator end)
+ * {
+ * iterator i = begin;
+ * while (i != end)
+ * if (std::isspace(*i++))
+ * return std::make_pair(i, true);
+ * return std::make_pair(i, false);
+ * }
+ * ...
+ * void handler(const boost::system::error_code& e, std::size_t size);
+ * ...
+ * boost::asio::streambuf b;
+ * boost::asio::async_read_until(s, b, match_whitespace, handler);
+ * @endcode
+ *
+ * To asynchronously read data into a streambuf until a matching character is
+ * found:
+ * @code class match_char
+ * {
+ * public:
+ * explicit match_char(char c) : c_(c) {}
+ *
+ * template <typename Iterator>
+ * std::pair<Iterator, bool> operator()(
+ * Iterator begin, Iterator end) const
+ * {
+ * Iterator i = begin;
+ * while (i != end)
+ * if (c_ == *i++)
+ * return std::make_pair(i, true);
+ * return std::make_pair(i, false);
+ * }
+ *
+ * private:
+ * char c_;
+ * };
+ *
+ * namespace asio {
+ * template <> struct is_match_condition<match_char>
+ * : public boost::true_type {};
+ * } // namespace asio
+ * ...
+ * void handler(const boost::system::error_code& e, std::size_t size);
+ * ...
+ * boost::asio::streambuf b;
+ * boost::asio::async_read_until(s, b, match_char('a'), handler);
+ * @endcode
+ */
+template <typename AsyncReadStream, typename Allocator,
+ typename MatchCondition, typename ReadHandler>
+void async_read_until(AsyncReadStream& s,
+ boost::asio::basic_streambuf<Allocator>& b,
+ MatchCondition match_condition, ReadHandler handler,
+ typename boost::enable_if<is_match_condition<MatchCondition> >::type* = 0);
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/read_until.ipp>
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_READ_UNTIL_HPP
diff --git a/3rdParty/Boost/boost/asio/serial_port.hpp b/3rdParty/Boost/boost/asio/serial_port.hpp
new file mode 100644
index 0000000..0be39e0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/serial_port.hpp
@@ -0,0 +1,40 @@
+//
+// serial_port.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_SERIAL_PORT_HPP
+#define BOOST_ASIO_SERIAL_PORT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_serial_port.hpp>
+
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+
+/// Typedef for the typical usage of a serial port.
+typedef basic_serial_port<> serial_port;
+
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_SERIAL_PORT_HPP
diff --git a/3rdParty/Boost/boost/asio/serial_port_base.hpp b/3rdParty/Boost/boost/asio/serial_port_base.hpp
new file mode 100644
index 0000000..98557cd
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/serial_port_base.hpp
@@ -0,0 +1,175 @@
+//
+// serial_port_base.hpp
+// ~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 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
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_SERIAL_PORT_BASE_HPP
+#define BOOST_ASIO_SERIAL_PORT_BASE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <stdexcept>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/system/error_code.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_SERIAL_PORT)
+# if defined(BOOST_ASIO_HAS_IOCP) \
+ || !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+# define BOOST_ASIO_HAS_SERIAL_PORT 1
+# endif // defined(BOOST_ASIO_HAS_IOCP)
+#endif // !defined(BOOST_ASIO_DISABLE_STREAM_HANDLE)
+
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
+ || defined(GENERATING_DOCUMENTATION)
+
+#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+# include <boost/asio/detail/push_options.hpp>
+# include <termios.h>
+# include <boost/asio/detail/pop_options.hpp>
+#endif // !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
+
+#include <boost/asio/detail/socket_types.hpp>
+
+#if defined(GENERATING_DOCUMENTATION)
+# define BOOST_ASIO_OPTION_STORAGE implementation_defined
+#elif defined(BOOST_WINDOWS) || defined(__CYGWIN__)
+# define BOOST_ASIO_OPTION_STORAGE DCB
+#else
+# define BOOST_ASIO_OPTION_STORAGE termios
+#endif
+
+namespace boost {
+namespace asio {
+
+/// The serial_port_base class is used as a base for the basic_serial_port class
+/// template so that we have a common place to define the serial port options.
+class serial_port_base
+{
+public:
+ /// Serial port option to permit changing the baud rate.
+ /**
+ * Implements changing the baud rate for a given serial port.
+ */
+ class baud_rate
+ {
+ public:
+ explicit baud_rate(unsigned int rate = 0);
+ unsigned int value() const;
+ boost::system::error_code store(BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec) const;
+ boost::system::error_code load(const BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec);
+ private:
+ unsigned int value_;
+ };
+
+ /// Serial port option to permit changing the flow control.
+ /**
+ * Implements changing the flow control for a given serial port.
+ */
+ class flow_control
+ {
+ public:
+ enum type { none, software, hardware };
+ explicit flow_control(type t = none);
+ type value() const;
+ boost::system::error_code store(BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec) const;
+ boost::system::error_code load(const BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec);
+ private:
+ type value_;
+ };
+
+ /// Serial port option to permit changing the parity.
+ /**
+ * Implements changing the parity for a given serial port.
+ */
+ class parity
+ {
+ public:
+ enum type { none, odd, even };
+ explicit parity(type t = none);
+ type value() const;
+ boost::system::error_code store(BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec) const;
+ boost::system::error_code load(const BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec);
+ private:
+ type value_;
+ };
+
+ /// Serial port option to permit changing the number of stop bits.
+ /**
+ * Implements changing the number of stop bits for a given serial port.
+ */
+ class stop_bits
+ {
+ public:
+ enum type { one, onepointfive, two };
+ explicit stop_bits(type t = one);
+ type value() const;
+ boost::system::error_code store(BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec) const;
+ boost::system::error_code load(const BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec);
+ private:
+ type value_;
+ };
+
+ /// Serial port option to permit changing the character size.
+ /**
+ * Implements changing the character size for a given serial port.
+ */
+ class character_size
+ {
+ public:
+ explicit character_size(unsigned int t = 8);
+ unsigned int value() const;
+ boost::system::error_code store(BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec) const;
+ boost::system::error_code load(const BOOST_ASIO_OPTION_STORAGE& storage,
+ boost::system::error_code& ec);
+ private:
+ unsigned int value_;
+ };
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~serial_port_base()
+ {
+ }
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+private:
+ // Workaround to enable the empty base optimisation with Borland C++.
+ char dummy_;
+#endif
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/serial_port_base.ipp>
+
+#undef BOOST_ASIO_OPTION_STORAGE
+
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_SERIAL_PORT_BASE_HPP
diff --git a/3rdParty/Boost/boost/asio/serial_port_service.hpp b/3rdParty/Boost/boost/asio/serial_port_service.hpp
new file mode 100644
index 0000000..fe2ce94
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/serial_port_service.hpp
@@ -0,0 +1,218 @@
+//
+// serial_port_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_SERIAL_PORT_SERVICE_HPP
+#define BOOST_ASIO_SERIAL_PORT_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <string>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/serial_port_base.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/reactive_serial_port_service.hpp>
+#include <boost/asio/detail/win_iocp_serial_port_service.hpp>
+
+#if defined(BOOST_ASIO_HAS_SERIAL_PORT) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+
+/// Default service implementation for a serial port.
+class serial_port_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<serial_port_service>
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::win_iocp_serial_port_service service_impl_type;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::reactive_serial_port_service<
+ detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::reactive_serial_port_service<
+ detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::reactive_serial_port_service<
+ detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::reactive_serial_port_service<
+ detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The type of a serial port implementation.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native handle type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new serial port service for the specified io_service.
+ explicit serial_port_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<serial_port_service>(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new serial port implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a serial port implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Open a serial port.
+ boost::system::error_code open(implementation_type& impl,
+ const std::string& device, boost::system::error_code& ec)
+ {
+ return service_impl_.open(impl, device, ec);
+ }
+
+ /// Assign an existing native handle to a serial port.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_handle, boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, native_handle, ec);
+ }
+
+ /// Determine whether the handle is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a serial port implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native handle implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the handle.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Set a serial port option.
+ template <typename SettableSerialPortOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSerialPortOption& option, boost::system::error_code& ec)
+ {
+ return service_impl_.set_option(impl, option, ec);
+ }
+
+ /// Get a serial port option.
+ template <typename GettableSerialPortOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSerialPortOption& option, boost::system::error_code& ec) const
+ {
+ return service_impl_.get_option(impl, option, ec);
+ }
+
+ /// Send a break sequence to the serial port.
+ boost::system::error_code send_break(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.send_break(impl, ec);
+ }
+
+ /// Write the given data to the stream.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.write_some(impl, buffers, ec);
+ }
+
+ /// Start an asynchronous write.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ service_impl_.async_write_some(impl, buffers, handler);
+ }
+
+ /// Read some data from the stream.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.read_some(impl, buffers, ec);
+ }
+
+ /// Start an asynchronous read.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ service_impl_.async_read_some(impl, buffers, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_SERIAL_PORT)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_SERIAL_PORT_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/socket_acceptor_service.hpp b/3rdParty/Boost/boost/asio/socket_acceptor_service.hpp
new file mode 100644
index 0000000..ba78746
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/socket_acceptor_service.hpp
@@ -0,0 +1,227 @@
+//
+// socket_acceptor_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
+#define BOOST_ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_socket.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/reactive_socket_service.hpp>
+#include <boost/asio/detail/win_iocp_socket_service.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default service implementation for a socket acceptor.
+template <typename Protocol>
+class socket_acceptor_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<socket_acceptor_service<Protocol> >
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename protocol_type::endpoint endpoint_type;
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::reactive_socket_service<
+ Protocol, detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The native type of the socket acceptor.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef typename service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native acceptor type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef typename service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new socket acceptor service for the specified io_service.
+ explicit socket_acceptor_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ socket_acceptor_service<Protocol> >(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new socket acceptor implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a socket acceptor implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Open a new socket acceptor implementation.
+ boost::system::error_code open(implementation_type& impl,
+ const protocol_type& protocol, boost::system::error_code& ec)
+ {
+ return service_impl_.open(impl, protocol, ec);
+ }
+
+ /// Assign an existing native acceptor to a socket acceptor.
+ boost::system::error_code assign(implementation_type& impl,
+ const protocol_type& protocol, const native_type& native_acceptor,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, protocol, native_acceptor, ec);
+ }
+
+ /// Determine whether the acceptor is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the acceptor.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Bind the socket acceptor to the specified local endpoint.
+ boost::system::error_code bind(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.bind(impl, endpoint, ec);
+ }
+
+ /// Place the socket acceptor into the state where it will listen for new
+ /// connections.
+ boost::system::error_code listen(implementation_type& impl, int backlog,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.listen(impl, backlog, ec);
+ }
+
+ /// Close a socket acceptor implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native acceptor implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Set a socket option.
+ template <typename SettableSocketOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSocketOption& option, boost::system::error_code& ec)
+ {
+ return service_impl_.set_option(impl, option, ec);
+ }
+
+ /// Get a socket option.
+ template <typename GettableSocketOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSocketOption& option, boost::system::error_code& ec) const
+ {
+ return service_impl_.get_option(impl, option, ec);
+ }
+
+ /// Perform an IO control command on the socket.
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(implementation_type& impl,
+ IoControlCommand& command, boost::system::error_code& ec)
+ {
+ return service_impl_.io_control(impl, command, ec);
+ }
+
+ /// Get the local endpoint.
+ endpoint_type local_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.local_endpoint(impl, ec);
+ }
+
+ /// Accept a new connection.
+ template <typename SocketService>
+ boost::system::error_code accept(implementation_type& impl,
+ basic_socket<protocol_type, SocketService>& peer,
+ endpoint_type* peer_endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.accept(impl, peer, peer_endpoint, ec);
+ }
+
+ /// Start an asynchronous accept.
+ template <typename SocketService, typename AcceptHandler>
+ void async_accept(implementation_type& impl,
+ basic_socket<protocol_type, SocketService>& peer,
+ endpoint_type* peer_endpoint, AcceptHandler handler)
+ {
+ service_impl_.async_accept(impl, peer, peer_endpoint, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/socket_base.hpp b/3rdParty/Boost/boost/asio/socket_base.hpp
new file mode 100644
index 0000000..5a1b675
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/socket_base.hpp
@@ -0,0 +1,517 @@
+//
+// socket_base.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_SOCKET_BASE_HPP
+#define BOOST_ASIO_SOCKET_BASE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/detail/io_control.hpp>
+#include <boost/asio/detail/socket_option.hpp>
+#include <boost/asio/detail/socket_types.hpp>
+
+namespace boost {
+namespace asio {
+
+/// The socket_base class is used as a base for the basic_stream_socket and
+/// basic_datagram_socket class templates so that we have a common place to
+/// define the shutdown_type and enum.
+class socket_base
+{
+public:
+ /// Different ways a socket may be shutdown.
+ enum shutdown_type
+ {
+#if defined(GENERATING_DOCUMENTATION)
+ /// Shutdown the receive side of the socket.
+ shutdown_receive = implementation_defined,
+
+ /// Shutdown the send side of the socket.
+ shutdown_send = implementation_defined,
+
+ /// Shutdown both send and receive on the socket.
+ shutdown_both = implementation_defined
+#else
+ shutdown_receive = boost::asio::detail::shutdown_receive,
+ shutdown_send = boost::asio::detail::shutdown_send,
+ shutdown_both = boost::asio::detail::shutdown_both
+#endif
+ };
+
+ /// Bitmask type for flags that can be passed to send and receive operations.
+ typedef int message_flags;
+
+#if defined(GENERATING_DOCUMENTATION)
+ /// Peek at incoming data without removing it from the input queue.
+ static const int message_peek = implementation_defined;
+
+ /// Process out-of-band data.
+ static const int message_out_of_band = implementation_defined;
+
+ /// Specify that the data should not be subject to routing.
+ static const int message_do_not_route = implementation_defined;
+#else
+ BOOST_STATIC_CONSTANT(int,
+ message_peek = boost::asio::detail::message_peek);
+ BOOST_STATIC_CONSTANT(int,
+ message_out_of_band = boost::asio::detail::message_out_of_band);
+ BOOST_STATIC_CONSTANT(int,
+ message_do_not_route = boost::asio::detail::message_do_not_route);
+#endif
+
+ /// Socket option to permit sending of broadcast messages.
+ /**
+ * Implements the SOL_SOCKET/SO_BROADCAST socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::broadcast option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::broadcast option;
+ * socket.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined broadcast;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ SOL_SOCKET, SO_BROADCAST> broadcast;
+#endif
+
+ /// Socket option to enable socket-level debugging.
+ /**
+ * Implements the SOL_SOCKET/SO_DEBUG socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::debug option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::debug option;
+ * socket.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined debug;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ SOL_SOCKET, SO_DEBUG> debug;
+#endif
+
+ /// Socket option to prevent routing, use local interfaces only.
+ /**
+ * Implements the SOL_SOCKET/SO_DONTROUTE socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::do_not_route option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::udp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::do_not_route option;
+ * socket.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined do_not_route;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ SOL_SOCKET, SO_DONTROUTE> do_not_route;
+#endif
+
+ /// Socket option to send keep-alives.
+ /**
+ * Implements the SOL_SOCKET/SO_KEEPALIVE socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::keep_alive option(true);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::keep_alive option;
+ * socket.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined keep_alive;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ SOL_SOCKET, SO_KEEPALIVE> keep_alive;
+#endif
+
+ /// Socket option for the send buffer size of a socket.
+ /**
+ * Implements the SOL_SOCKET/SO_SNDBUF socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::send_buffer_size option(8192);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::send_buffer_size option;
+ * socket.get_option(option);
+ * int size = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Integer_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined send_buffer_size;
+#else
+ typedef boost::asio::detail::socket_option::integer<
+ SOL_SOCKET, SO_SNDBUF> send_buffer_size;
+#endif
+
+ /// Socket option for the send low watermark.
+ /**
+ * Implements the SOL_SOCKET/SO_SNDLOWAT socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::send_low_watermark option(1024);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::send_low_watermark option;
+ * socket.get_option(option);
+ * int size = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Integer_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined send_low_watermark;
+#else
+ typedef boost::asio::detail::socket_option::integer<
+ SOL_SOCKET, SO_SNDLOWAT> send_low_watermark;
+#endif
+
+ /// Socket option for the receive buffer size of a socket.
+ /**
+ * Implements the SOL_SOCKET/SO_RCVBUF socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::receive_buffer_size option(8192);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::receive_buffer_size option;
+ * socket.get_option(option);
+ * int size = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Integer_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined receive_buffer_size;
+#else
+ typedef boost::asio::detail::socket_option::integer<
+ SOL_SOCKET, SO_RCVBUF> receive_buffer_size;
+#endif
+
+ /// Socket option for the receive low watermark.
+ /**
+ * Implements the SOL_SOCKET/SO_RCVLOWAT socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::receive_low_watermark option(1024);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::receive_low_watermark option;
+ * socket.get_option(option);
+ * int size = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Integer_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined receive_low_watermark;
+#else
+ typedef boost::asio::detail::socket_option::integer<
+ SOL_SOCKET, SO_RCVLOWAT> receive_low_watermark;
+#endif
+
+ /// Socket option to allow the socket to be bound to an address that is
+ /// already in use.
+ /**
+ * Implements the SOL_SOCKET/SO_REUSEADDR socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::socket_base::reuse_address option(true);
+ * acceptor.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::socket_base::reuse_address option;
+ * acceptor.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined reuse_address;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ SOL_SOCKET, SO_REUSEADDR> reuse_address;
+#endif
+
+ /// Socket option to specify whether the socket lingers on close if unsent
+ /// data is present.
+ /**
+ * Implements the SOL_SOCKET/SO_LINGER socket option.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::linger option(true, 30);
+ * socket.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::linger option;
+ * socket.get_option(option);
+ * bool is_set = option.enabled();
+ * unsigned short timeout = option.timeout();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Linger_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined linger;
+#else
+ typedef boost::asio::detail::socket_option::linger<
+ SOL_SOCKET, SO_LINGER> linger;
+#endif
+
+ /// Socket option to report aborted connections on accept.
+ /**
+ * Implements a custom socket option that determines whether or not an accept
+ * operation is permitted to fail with boost::asio::error::connection_aborted.
+ * By default the option is false.
+ *
+ * @par Examples
+ * Setting the option:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::socket_base::enable_connection_aborted option(true);
+ * acceptor.set_option(option);
+ * @endcode
+ *
+ * @par
+ * Getting the current option value:
+ * @code
+ * boost::asio::ip::tcp::acceptor acceptor(io_service);
+ * ...
+ * boost::asio::socket_base::enable_connection_aborted option;
+ * acceptor.get_option(option);
+ * bool is_set = option.value();
+ * @endcode
+ *
+ * @par Concepts:
+ * Socket_Option, Boolean_Socket_Option.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined enable_connection_aborted;
+#else
+ typedef boost::asio::detail::socket_option::boolean<
+ boost::asio::detail::custom_socket_option_level,
+ boost::asio::detail::enable_connection_aborted_option>
+ enable_connection_aborted;
+#endif
+
+ /// IO control command to set the blocking mode of the socket.
+ /**
+ * Implements the FIONBIO IO control command.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::non_blocking_io command(true);
+ * socket.io_control(command);
+ * @endcode
+ *
+ * @par Concepts:
+ * IO_Control_Command, Boolean_IO_Control_Command.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined non_blocking_io;
+#else
+ typedef boost::asio::detail::io_control::non_blocking_io non_blocking_io;
+#endif
+
+ /// IO control command to get the amount of data that can be read without
+ /// blocking.
+ /**
+ * Implements the FIONREAD IO control command.
+ *
+ * @par Example
+ * @code
+ * boost::asio::ip::tcp::socket socket(io_service);
+ * ...
+ * boost::asio::socket_base::bytes_readable command(true);
+ * socket.io_control(command);
+ * std::size_t bytes_readable = command.get();
+ * @endcode
+ *
+ * @par Concepts:
+ * IO_Control_Command, Size_IO_Control_Command.
+ */
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined bytes_readable;
+#else
+ typedef boost::asio::detail::io_control::bytes_readable bytes_readable;
+#endif
+
+ /// The maximum length of the queue of pending incoming connections.
+#if defined(GENERATING_DOCUMENTATION)
+ static const int max_connections = implementation_defined;
+#else
+ BOOST_STATIC_CONSTANT(int, max_connections = SOMAXCONN);
+#endif
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~socket_base()
+ {
+ }
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+private:
+ // Workaround to enable the empty base optimisation with Borland C++.
+ char dummy_;
+#endif
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_SOCKET_BASE_HPP
diff --git a/3rdParty/Boost/boost/asio/strand.hpp b/3rdParty/Boost/boost/asio/strand.hpp
new file mode 100644
index 0000000..b130a84
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/strand.hpp
@@ -0,0 +1,188 @@
+//
+// strand.hpp
+// ~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_STRAND_HPP
+#define BOOST_ASIO_STRAND_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/strand_service.hpp>
+#include <boost/asio/detail/wrapped_handler.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Provides serialised handler execution.
+/**
+ * The io_service::strand class provides the ability to post and dispatch
+ * handlers with the guarantee that none of those handlers will execute
+ * concurrently.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Safe.
+ *
+ * @par Concepts:
+ * Dispatcher.
+ */
+class io_service::strand
+{
+public:
+ /// Constructor.
+ /**
+ * Constructs the strand.
+ *
+ * @param io_service The io_service object that the strand will use to
+ * dispatch handlers that are ready to be run.
+ */
+ explicit strand(boost::asio::io_service& io_service)
+ : service_(boost::asio::use_service<
+ boost::asio::detail::strand_service>(io_service))
+ {
+ service_.construct(impl_);
+ }
+
+ /// Destructor.
+ /**
+ * Destroys a strand.
+ *
+ * Handlers posted through the strand that have not yet been invoked will
+ * still be dispatched in a way that meets the guarantee of non-concurrency.
+ */
+ ~strand()
+ {
+ service_.destroy(impl_);
+ }
+
+ /// (Deprecated: use get_io_service().) Get the io_service associated with
+ /// the strand.
+ /**
+ * This function may be used to obtain the io_service object that the strand
+ * uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_service object that the strand will use to
+ * dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_service& io_service()
+ {
+ return service_.get_io_service();
+ }
+
+ /// Get the io_service associated with the strand.
+ /**
+ * This function may be used to obtain the io_service object that the strand
+ * uses to dispatch handlers for asynchronous operations.
+ *
+ * @return A reference to the io_service object that the strand will use to
+ * dispatch handlers. Ownership is not transferred to the caller.
+ */
+ boost::asio::io_service& get_io_service()
+ {
+ return service_.get_io_service();
+ }
+
+ /// Request the strand to invoke the given handler.
+ /**
+ * This function is used to ask the strand to execute the given handler.
+ *
+ * The strand object guarantees that handlers posted or dispatched through
+ * the strand will not be executed concurrently. The handler may be executed
+ * inside this function if the guarantee can be met. If this function is
+ * called from within a handler that was posted or dispatched through the same
+ * strand, then the new handler will be executed immediately.
+ *
+ * The strand's guarantee is in addition to the guarantee provided by the
+ * underlying io_service. The io_service guarantees that the handler will only
+ * be called in a thread in which the io_service's run member function is
+ * currently being invoked.
+ *
+ * @param handler The handler to be called. The strand will make a copy of the
+ * handler object as required. The function signature of the handler must be:
+ * @code void handler(); @endcode
+ */
+ template <typename Handler>
+ void dispatch(Handler handler)
+ {
+ service_.dispatch(impl_, handler);
+ }
+
+ /// Request the strand to invoke the given handler and return
+ /// immediately.
+ /**
+ * This function is used to ask the strand to execute the given handler, but
+ * without allowing the strand to call the handler from inside this function.
+ *
+ * The strand object guarantees that handlers posted or dispatched through
+ * the strand will not be executed concurrently. The strand's guarantee is in
+ * addition to the guarantee provided by the underlying io_service. The
+ * io_service guarantees that the handler will only be called in a thread in
+ * which the io_service's run member function is currently being invoked.
+ *
+ * @param handler The handler to be called. The strand will make a copy of the
+ * handler object as required. The function signature of the handler must be:
+ * @code void handler(); @endcode
+ */
+ template <typename Handler>
+ void post(Handler handler)
+ {
+ service_.post(impl_, handler);
+ }
+
+ /// Create a new handler that automatically dispatches the wrapped handler
+ /// on the strand.
+ /**
+ * This function is used to create a new handler function object that, when
+ * invoked, will automatically pass the wrapped handler to the strand's
+ * dispatch function.
+ *
+ * @param handler The handler to be wrapped. The strand will make a copy of
+ * the handler object as required. The function signature of the handler must
+ * be: @code void handler(A1 a1, ... An an); @endcode
+ *
+ * @return A function object that, when invoked, passes the wrapped handler to
+ * the strand's dispatch function. Given a function object with the signature:
+ * @code R f(A1 a1, ... An an); @endcode
+ * If this function object is passed to the wrap function like so:
+ * @code strand.wrap(f); @endcode
+ * then the return value is a function object with the signature
+ * @code void g(A1 a1, ... An an); @endcode
+ * that, when invoked, executes code equivalent to:
+ * @code strand.dispatch(boost::bind(f, a1, ... an)); @endcode
+ */
+ template <typename Handler>
+#if defined(GENERATING_DOCUMENTATION)
+ unspecified
+#else
+ detail::wrapped_handler<strand, Handler>
+#endif
+ wrap(Handler handler)
+ {
+ return detail::wrapped_handler<io_service::strand, Handler>(*this, handler);
+ }
+
+private:
+ boost::asio::detail::strand_service& service_;
+ boost::asio::detail::strand_service::implementation_type impl_;
+};
+
+/// Typedef for backwards compatibility.
+typedef boost::asio::io_service::strand strand;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_STRAND_HPP
diff --git a/3rdParty/Boost/boost/asio/stream_socket_service.hpp b/3rdParty/Boost/boost/asio/stream_socket_service.hpp
new file mode 100644
index 0000000..502c293
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/stream_socket_service.hpp
@@ -0,0 +1,288 @@
+//
+// stream_socket_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_STREAM_SOCKET_SERVICE_HPP
+#define BOOST_ASIO_STREAM_SOCKET_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/epoll_reactor.hpp>
+#include <boost/asio/detail/kqueue_reactor.hpp>
+#include <boost/asio/detail/select_reactor.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/win_iocp_socket_service.hpp>
+#include <boost/asio/detail/reactive_socket_service.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Default service implementation for a stream socket.
+template <typename Protocol>
+class stream_socket_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<stream_socket_service<Protocol> >
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+ /// The protocol type.
+ typedef Protocol protocol_type;
+
+ /// The endpoint type.
+ typedef typename Protocol::endpoint endpoint_type;
+
+private:
+ // The type of the platform-specific implementation.
+#if defined(BOOST_ASIO_HAS_IOCP)
+ typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
+#elif defined(BOOST_ASIO_HAS_EPOLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::epoll_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_KQUEUE)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::kqueue_reactor<false> > service_impl_type;
+#elif defined(BOOST_ASIO_HAS_DEV_POLL)
+ typedef detail::reactive_socket_service<
+ Protocol, detail::dev_poll_reactor<false> > service_impl_type;
+#else
+ typedef detail::reactive_socket_service<
+ Protocol, detail::select_reactor<false> > service_impl_type;
+#endif
+
+public:
+ /// The type of a stream socket implementation.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef typename service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native socket type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef typename service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new stream socket service for the specified io_service.
+ explicit stream_socket_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ stream_socket_service<Protocol> >(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new stream socket implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a stream socket implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Open a stream socket.
+ boost::system::error_code open(implementation_type& impl,
+ const protocol_type& protocol, boost::system::error_code& ec)
+ {
+ if (protocol.type() == SOCK_STREAM)
+ service_impl_.open(impl, protocol, ec);
+ else
+ ec = boost::asio::error::invalid_argument;
+ return ec;
+ }
+
+ /// Assign an existing native socket to a stream socket.
+ boost::system::error_code assign(implementation_type& impl,
+ const protocol_type& protocol, const native_type& native_socket,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, protocol, native_socket, ec);
+ }
+
+ /// Determine whether the socket is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a stream socket implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native socket implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the socket.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Determine whether the socket is at the out-of-band data mark.
+ bool at_mark(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.at_mark(impl, ec);
+ }
+
+ /// Determine the number of bytes available for reading.
+ std::size_t available(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.available(impl, ec);
+ }
+
+ /// Bind the stream socket to the specified local endpoint.
+ boost::system::error_code bind(implementation_type& impl,
+ const endpoint_type& endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.bind(impl, endpoint, ec);
+ }
+
+ /// Connect the stream socket to the specified endpoint.
+ boost::system::error_code connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, boost::system::error_code& ec)
+ {
+ return service_impl_.connect(impl, peer_endpoint, ec);
+ }
+
+ /// Start an asynchronous connect.
+ template <typename ConnectHandler>
+ void async_connect(implementation_type& impl,
+ const endpoint_type& peer_endpoint, ConnectHandler handler)
+ {
+ service_impl_.async_connect(impl, peer_endpoint, handler);
+ }
+
+ /// Set a socket option.
+ template <typename SettableSocketOption>
+ boost::system::error_code set_option(implementation_type& impl,
+ const SettableSocketOption& option, boost::system::error_code& ec)
+ {
+ return service_impl_.set_option(impl, option, ec);
+ }
+
+ /// Get a socket option.
+ template <typename GettableSocketOption>
+ boost::system::error_code get_option(const implementation_type& impl,
+ GettableSocketOption& option, boost::system::error_code& ec) const
+ {
+ return service_impl_.get_option(impl, option, ec);
+ }
+
+ /// Perform an IO control command on the socket.
+ template <typename IoControlCommand>
+ boost::system::error_code io_control(implementation_type& impl,
+ IoControlCommand& command, boost::system::error_code& ec)
+ {
+ return service_impl_.io_control(impl, command, ec);
+ }
+
+ /// Get the local endpoint.
+ endpoint_type local_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.local_endpoint(impl, ec);
+ }
+
+ /// Get the remote endpoint.
+ endpoint_type remote_endpoint(const implementation_type& impl,
+ boost::system::error_code& ec) const
+ {
+ return service_impl_.remote_endpoint(impl, ec);
+ }
+
+ /// Disable sends or receives on the socket.
+ boost::system::error_code shutdown(implementation_type& impl,
+ socket_base::shutdown_type what, boost::system::error_code& ec)
+ {
+ return service_impl_.shutdown(impl, what, ec);
+ }
+
+ /// Send the given data to the peer.
+ template <typename ConstBufferSequence>
+ std::size_t send(implementation_type& impl,
+ const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.send(impl, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous send.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_send(implementation_type& impl,
+ const ConstBufferSequence& buffers,
+ socket_base::message_flags flags, WriteHandler handler)
+ {
+ service_impl_.async_send(impl, buffers, flags, handler);
+ }
+
+ /// Receive some data from the peer.
+ template <typename MutableBufferSequence>
+ std::size_t receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, boost::system::error_code& ec)
+ {
+ return service_impl_.receive(impl, buffers, flags, ec);
+ }
+
+ /// Start an asynchronous receive.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_receive(implementation_type& impl,
+ const MutableBufferSequence& buffers,
+ socket_base::message_flags flags, ReadHandler handler)
+ {
+ service_impl_.async_receive(impl, buffers, flags, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_STREAM_SOCKET_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/streambuf.hpp b/3rdParty/Boost/boost/asio/streambuf.hpp
new file mode 100644
index 0000000..63c8a41
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/streambuf.hpp
@@ -0,0 +1,33 @@
+//
+// streambuf.hpp
+// ~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_STREAMBUF_HPP
+#define BOOST_ASIO_STREAMBUF_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/basic_streambuf.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Typedef for the typical usage of basic_streambuf.
+typedef basic_streambuf<> streambuf;
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_STREAMBUF_HPP
diff --git a/3rdParty/Boost/boost/asio/time_traits.hpp b/3rdParty/Boost/boost/asio/time_traits.hpp
new file mode 100644
index 0000000..097ece4
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/time_traits.hpp
@@ -0,0 +1,80 @@
+//
+// time_traits.hpp
+// ~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_TIME_TRAITS_HPP
+#define BOOST_ASIO_TIME_TRAITS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/socket_types.hpp> // Must come before posix_time.
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+namespace boost {
+namespace asio {
+
+/// Time traits suitable for use with the deadline timer.
+template <typename Time>
+struct time_traits;
+
+/// Time traits specialised for posix_time.
+template <>
+struct time_traits<boost::posix_time::ptime>
+{
+ /// The time type.
+ typedef boost::posix_time::ptime time_type;
+
+ /// The duration type.
+ typedef boost::posix_time::time_duration duration_type;
+
+ /// Get the current time.
+ static time_type now()
+ {
+ return boost::posix_time::microsec_clock::universal_time();
+ }
+
+ /// Add a duration to a time.
+ static time_type add(const time_type& t, const duration_type& d)
+ {
+ return t + d;
+ }
+
+ /// Subtract one time from another.
+ static duration_type subtract(const time_type& t1, const time_type& t2)
+ {
+ return t1 - t2;
+ }
+
+ /// Test whether one time is less than another.
+ static bool less_than(const time_type& t1, const time_type& t2)
+ {
+ return t1 < t2;
+ }
+
+ /// Convert to POSIX duration type.
+ static boost::posix_time::time_duration to_posix_duration(
+ const duration_type& d)
+ {
+ return d;
+ }
+};
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_TIME_TRAITS_HPP
diff --git a/3rdParty/Boost/boost/asio/version.hpp b/3rdParty/Boost/boost/asio/version.hpp
new file mode 100644
index 0000000..bb10dc7
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/version.hpp
@@ -0,0 +1,23 @@
+//
+// version.hpp
+// ~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_VERSION_HPP
+#define BOOST_ASIO_VERSION_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+// 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 100402 // 1.4.2
+
+#endif // BOOST_ASIO_VERSION_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/basic_handle.hpp b/3rdParty/Boost/boost/asio/windows/basic_handle.hpp
new file mode 100644
index 0000000..96a7b90
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/basic_handle.hpp
@@ -0,0 +1,227 @@
+//
+// basic_handle.hpp
+// ~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_BASIC_HANDLE_HPP
+#define BOOST_ASIO_WINDOWS_BASIC_HANDLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_io_object.hpp>
+#include <boost/asio/error.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Provides Windows handle functionality.
+/**
+ * The windows::basic_handle class template provides the ability to wrap a
+ * Windows handle.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename HandleService>
+class basic_handle
+ : public basic_io_object<HandleService>
+{
+public:
+ /// The native representation of a handle.
+ typedef typename HandleService::native_type native_type;
+
+ /// A basic_handle is always the lowest layer.
+ typedef basic_handle<HandleService> lowest_layer_type;
+
+ /// Construct a basic_handle without opening it.
+ /**
+ * This constructor creates a handle without opening it.
+ *
+ * @param io_service The io_service object that the handle will use to
+ * dispatch handlers for any asynchronous operations performed on the handle.
+ */
+ explicit basic_handle(boost::asio::io_service& io_service)
+ : basic_io_object<HandleService>(io_service)
+ {
+ }
+
+ /// Construct a basic_handle on an existing native handle.
+ /**
+ * This constructor creates a handle object to hold an existing native handle.
+ *
+ * @param io_service The io_service object that the handle will use to
+ * dispatch handlers for any asynchronous operations performed on the handle.
+ *
+ * @param native_handle A native handle.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_handle(boost::asio::io_service& io_service,
+ const native_type& native_handle)
+ : basic_io_object<HandleService>(io_service)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, native_handle, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Get a reference to the lowest layer.
+ /**
+ * This function returns a reference to the lowest layer in a stack of
+ * layers. Since a basic_handle cannot contain any further layers, it simply
+ * returns a reference to itself.
+ *
+ * @return A reference to the lowest layer in the stack of layers. Ownership
+ * is not transferred to the caller.
+ */
+ lowest_layer_type& lowest_layer()
+ {
+ return *this;
+ }
+
+ /// Get a const reference to the lowest layer.
+ /**
+ * This function returns a const reference to the lowest layer in a stack of
+ * layers. Since a basic_handle cannot contain any further layers, it simply
+ * returns a reference to itself.
+ *
+ * @return A const reference to the lowest layer in the stack of layers.
+ * Ownership is not transferred to the caller.
+ */
+ const lowest_layer_type& lowest_layer() const
+ {
+ return *this;
+ }
+
+ /// Assign an existing native handle to the handle.
+ /*
+ * This function opens the handle to hold an existing native handle.
+ *
+ * @param native_handle A native handle.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void assign(const native_type& native_handle)
+ {
+ boost::system::error_code ec;
+ this->service.assign(this->implementation, native_handle, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Assign an existing native handle to the handle.
+ /*
+ * This function opens the handle to hold an existing native handle.
+ *
+ * @param native_handle A native handle.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code assign(const native_type& native_handle,
+ boost::system::error_code& ec)
+ {
+ return this->service.assign(this->implementation, native_handle, ec);
+ }
+
+ /// Determine whether the handle is open.
+ bool is_open() const
+ {
+ return this->service.is_open(this->implementation);
+ }
+
+ /// Close the handle.
+ /**
+ * This function is used to close the handle. Any asynchronous read or write
+ * operations will be cancelled immediately, and will complete with the
+ * boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void close()
+ {
+ boost::system::error_code ec;
+ this->service.close(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Close the handle.
+ /**
+ * This function is used to close the handle. Any asynchronous read or write
+ * operations will be cancelled immediately, and will complete with the
+ * boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code close(boost::system::error_code& ec)
+ {
+ return this->service.close(this->implementation, ec);
+ }
+
+ /// Get the native handle representation.
+ /**
+ * This function may be used to obtain the underlying representation of the
+ * handle. This is intended to allow access to native handle functionality
+ * that is not otherwise provided.
+ */
+ native_type native()
+ {
+ return this->service.native(this->implementation);
+ }
+
+ /// Cancel all asynchronous operations associated with the handle.
+ /**
+ * This function causes all outstanding asynchronous read or write operations
+ * to finish immediately, and the handlers for cancelled operations will be
+ * passed the boost::asio::error::operation_aborted error.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ void cancel()
+ {
+ boost::system::error_code ec;
+ this->service.cancel(this->implementation, ec);
+ boost::asio::detail::throw_error(ec);
+ }
+
+ /// Cancel all asynchronous operations associated with the handle.
+ /**
+ * This function causes all outstanding asynchronous read or write operations
+ * to finish immediately, and the handlers for cancelled operations will be
+ * passed the boost::asio::error::operation_aborted error.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ */
+ boost::system::error_code cancel(boost::system::error_code& ec)
+ {
+ return this->service.cancel(this->implementation, ec);
+ }
+
+protected:
+ /// Protected destructor to prevent deletion through this type.
+ ~basic_handle()
+ {
+ }
+};
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_BASIC_HANDLE_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/basic_random_access_handle.hpp b/3rdParty/Boost/boost/asio/windows/basic_random_access_handle.hpp
new file mode 100644
index 0000000..d6b63b1
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/basic_random_access_handle.hpp
@@ -0,0 +1,322 @@
+//
+// basic_random_access_handle.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
+#define BOOST_ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/windows/basic_handle.hpp>
+#include <boost/asio/windows/random_access_handle_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Provides random-access handle functionality.
+/**
+ * The windows::basic_random_access_handle class template provides asynchronous
+ * and blocking random-access handle functionality.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+template <typename RandomAccessHandleService = random_access_handle_service>
+class basic_random_access_handle
+ : public basic_handle<RandomAccessHandleService>
+{
+public:
+ /// The native representation of a handle.
+ typedef typename RandomAccessHandleService::native_type native_type;
+
+ /// Construct a basic_random_access_handle without opening it.
+ /**
+ * This constructor creates a random-access handle without opening it. The
+ * handle needs to be opened before data can be written to or or read from it.
+ *
+ * @param io_service The io_service object that the random-access handle will
+ * use to dispatch handlers for any asynchronous operations performed on the
+ * handle.
+ */
+ explicit basic_random_access_handle(boost::asio::io_service& io_service)
+ : basic_handle<RandomAccessHandleService>(io_service)
+ {
+ }
+
+ /// Construct a basic_random_access_handle on an existing native handle.
+ /**
+ * This constructor creates a random-access handle object to hold an existing
+ * native handle.
+ *
+ * @param io_service The io_service object that the random-access handle will
+ * use to dispatch handlers for any asynchronous operations performed on the
+ * handle.
+ *
+ * @param native_handle The new underlying handle implementation.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_random_access_handle(boost::asio::io_service& io_service,
+ const native_type& native_handle)
+ : basic_handle<RandomAccessHandleService>(io_service, native_handle)
+ {
+ }
+
+ /// Write some data to the handle at the specified offset.
+ /**
+ * This function is used to write data to the random-access handle. The
+ * function call will block until one or more bytes of the data has been
+ * written successfully, or until an error occurs.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more data buffers to be written to the handle.
+ *
+ * @returns The number of bytes written.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The write_some_at operation may not write all of the data. Consider
+ * using the @ref write_at function if you need to ensure that all data is
+ * written before the blocking operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.write_some_at(42, boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some_at(boost::uint64_t offset,
+ const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.write_some_at(
+ this->implementation, offset, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Write some data to the handle at the specified offset.
+ /**
+ * This function is used to write data to the random-access handle. The
+ * function call will block until one or more bytes of the data has been
+ * written successfully, or until an error occurs.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more data buffers to be written to the handle.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. Returns 0 if an error occurred.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write_at function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some_at(boost::uint64_t offset,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return this->service.write_some_at(
+ this->implementation, offset, buffers, ec);
+ }
+
+ /// Start an asynchronous write at the specified offset.
+ /**
+ * This function is used to asynchronously write data to the random-access
+ * handle. The function call always returns immediately.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more data buffers to be written to the handle.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes written.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The write operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write_at function if you need to ensure that
+ * all data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.async_write_some_at(42, boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some_at(boost::uint64_t offset,
+ const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ this->service.async_write_some_at(
+ this->implementation, offset, buffers, handler);
+ }
+
+ /// Read some data from the handle at the specified offset.
+ /**
+ * This function is used to read data from the random-access handle. The
+ * function call will block until one or more bytes of data has been read
+ * successfully, or until an error occurs.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @returns The number of bytes read.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read_at function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.read_some_at(42, boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some_at(boost::uint64_t offset,
+ const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.read_some_at(
+ this->implementation, offset, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Read some data from the handle at the specified offset.
+ /**
+ * This function is used to read data from the random-access handle. The
+ * function call will block until one or more bytes of data has been read
+ * successfully, or until an error occurs.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. Returns 0 if an error occurred.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read_at function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some_at(boost::uint64_t offset,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return this->service.read_some_at(
+ this->implementation, offset, buffers, ec);
+ }
+
+ /// Start an asynchronous read at the specified offset.
+ /**
+ * This function is used to asynchronously read data from the random-access
+ * handle. The function call always returns immediately.
+ *
+ * @param offset The offset at which the data will be read.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes read.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The read operation may not read all of the requested number of bytes.
+ * Consider using the @ref async_read_at function if you need to ensure that
+ * the requested amount of data is read before the asynchronous operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.async_read_some_at(42, boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some_at(boost::uint64_t offset,
+ const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ this->service.async_read_some_at(
+ this->implementation, offset, buffers, handler);
+ }
+};
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/basic_stream_handle.hpp b/3rdParty/Boost/boost/asio/windows/basic_stream_handle.hpp
new file mode 100644
index 0000000..aaa8448
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/basic_stream_handle.hpp
@@ -0,0 +1,304 @@
+//
+// basic_stream_handle.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
+#define BOOST_ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/windows/basic_handle.hpp>
+#include <boost/asio/windows/stream_handle_service.hpp>
+#include <boost/asio/detail/throw_error.hpp>
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Provides stream-oriented handle functionality.
+/**
+ * The windows::basic_stream_handle class template provides asynchronous and
+ * blocking stream-oriented handle functionality.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ *
+ * @par Concepts:
+ * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
+ */
+template <typename StreamHandleService = stream_handle_service>
+class basic_stream_handle
+ : public basic_handle<StreamHandleService>
+{
+public:
+ /// The native representation of a handle.
+ typedef typename StreamHandleService::native_type native_type;
+
+ /// Construct a basic_stream_handle without opening it.
+ /**
+ * This constructor creates a stream handle without opening it. The handle
+ * needs to be opened and then connected or accepted before data can be sent
+ * or received on it.
+ *
+ * @param io_service The io_service object that the stream handle will use to
+ * dispatch handlers for any asynchronous operations performed on the handle.
+ */
+ explicit basic_stream_handle(boost::asio::io_service& io_service)
+ : basic_handle<StreamHandleService>(io_service)
+ {
+ }
+
+ /// Construct a basic_stream_handle on an existing native handle.
+ /**
+ * This constructor creates a stream handle object to hold an existing native
+ * handle.
+ *
+ * @param io_service The io_service object that the stream handle will use to
+ * dispatch handlers for any asynchronous operations performed on the handle.
+ *
+ * @param native_handle The new underlying handle implementation.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+ basic_stream_handle(boost::asio::io_service& io_service,
+ const native_type& native_handle)
+ : basic_handle<StreamHandleService>(io_service, native_handle)
+ {
+ }
+
+ /// Write some data to the handle.
+ /**
+ * This function is used to write data to the stream handle. The function call
+ * will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the handle.
+ *
+ * @returns The number of bytes written.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.write_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.write_some(this->implementation, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Write some data to the handle.
+ /**
+ * This function is used to write data to the stream handle. The function call
+ * will block until one or more bytes of the data has been written
+ * successfully, or until an error occurs.
+ *
+ * @param buffers One or more data buffers to be written to the handle.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. Returns 0 if an error occurred.
+ *
+ * @note The write_some operation may not transmit all of the data to the
+ * peer. Consider using the @ref write function if you need to ensure that
+ * all data is written before the blocking operation completes.
+ */
+ template <typename ConstBufferSequence>
+ std::size_t write_some(const ConstBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.write_some(this->implementation, buffers, ec);
+ }
+
+ /// Start an asynchronous write.
+ /**
+ * This function is used to asynchronously write data to the stream handle.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more data buffers to be written to the handle.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes written.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The write operation may not transmit all of the data to the peer.
+ * Consider using the @ref async_write function if you need to ensure that all
+ * data is written before the asynchronous operation completes.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.async_write_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(const ConstBufferSequence& buffers,
+ WriteHandler handler)
+ {
+ this->service.async_write_some(this->implementation, buffers, handler);
+ }
+
+ /// Read some data from the handle.
+ /**
+ * This function is used to read data from the stream handle. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @returns The number of bytes read.
+ *
+ * @throws boost::system::system_error Thrown on failure. An error code of
+ * boost::asio::error::eof indicates that the connection was closed by the
+ * peer.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.read_some(boost::asio::buffer(data, size));
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers)
+ {
+ boost::system::error_code ec;
+ std::size_t s = this->service.read_some(this->implementation, buffers, ec);
+ boost::asio::detail::throw_error(ec);
+ return s;
+ }
+
+ /// Read some data from the handle.
+ /**
+ * This function is used to read data from the stream handle. The function
+ * call will block until one or more bytes of data has been read successfully,
+ * or until an error occurs.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes read. Returns 0 if an error occurred.
+ *
+ * @note The read_some operation may not read all of the requested number of
+ * bytes. Consider using the @ref read function if you need to ensure that
+ * the requested amount of data is read before the blocking operation
+ * completes.
+ */
+ template <typename MutableBufferSequence>
+ std::size_t read_some(const MutableBufferSequence& buffers,
+ boost::system::error_code& ec)
+ {
+ return this->service.read_some(this->implementation, buffers, ec);
+ }
+
+ /// Start an asynchronous read.
+ /**
+ * This function is used to asynchronously read data from the stream handle.
+ * The function call always returns immediately.
+ *
+ * @param buffers One or more buffers into which the data will be read.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the read operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ * std::size_t bytes_transferred // Number of bytes read.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation
+ * of the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @note The read operation may not read all of the requested number of bytes.
+ * Consider using the @ref async_read function if you need to ensure that the
+ * requested amount of data is read before the asynchronous operation
+ * completes.
+ *
+ * @par Example
+ * To read into a single data buffer use the @ref buffer function as follows:
+ * @code
+ * handle.async_read_some(boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on reading into multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(const MutableBufferSequence& buffers,
+ ReadHandler handler)
+ {
+ this->service.async_read_some(this->implementation, buffers, handler);
+ }
+};
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/overlapped_ptr.hpp b/3rdParty/Boost/boost/asio/windows/overlapped_ptr.hpp
new file mode 100644
index 0000000..e97c16e
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/overlapped_ptr.hpp
@@ -0,0 +1,120 @@
+//
+// overlapped_ptr.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_OVERLAPPED_PTR_HPP
+#define BOOST_ASIO_WINDOWS_OVERLAPPED_PTR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/noncopyable.hpp>
+#include <boost/asio/detail/win_iocp_overlapped_ptr.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
+# if defined(BOOST_ASIO_HAS_IOCP)
+# define BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1
+# endif // defined(BOOST_ASIO_HAS_IOCP)
+#endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
+/**
+ * A special-purpose smart pointer used to wrap an application handler so that
+ * it can be passed as the LPOVERLAPPED argument to overlapped I/O functions.
+ *
+ * @par Thread Safety
+ * @e Distinct @e objects: Safe.@n
+ * @e Shared @e objects: Unsafe.
+ */
+class overlapped_ptr
+ : private noncopyable
+{
+public:
+ /// Construct an empty overlapped_ptr.
+ overlapped_ptr()
+ : impl_()
+ {
+ }
+
+ /// Construct an overlapped_ptr to contain the specified handler.
+ template <typename Handler>
+ explicit overlapped_ptr(boost::asio::io_service& io_service, Handler handler)
+ : impl_(io_service, handler)
+ {
+ }
+
+ /// Destructor automatically frees the OVERLAPPED object unless released.
+ ~overlapped_ptr()
+ {
+ }
+
+ /// Reset to empty.
+ void reset()
+ {
+ impl_.reset();
+ }
+
+ /// Reset to contain the specified handler, freeing any current OVERLAPPED
+ /// object.
+ template <typename Handler>
+ void reset(boost::asio::io_service& io_service, Handler handler)
+ {
+ impl_.reset(io_service, handler);
+ }
+
+ /// Get the contained OVERLAPPED object.
+ OVERLAPPED* get()
+ {
+ return impl_.get();
+ }
+
+ /// Get the contained OVERLAPPED object.
+ const OVERLAPPED* get() const
+ {
+ return impl_.get();
+ }
+
+ /// Release ownership of the OVERLAPPED object.
+ OVERLAPPED* release()
+ {
+ return impl_.release();
+ }
+
+ /// Post completion notification for overlapped operation. Releases ownership.
+ void complete(const boost::system::error_code& ec,
+ std::size_t bytes_transferred)
+ {
+ impl_.complete(ec, bytes_transferred);
+ }
+
+private:
+ detail::win_iocp_overlapped_ptr impl_;
+};
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_OVERLAPPED_PTR_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/random_access_handle.hpp b/3rdParty/Boost/boost/asio/windows/random_access_handle.hpp
new file mode 100644
index 0000000..38e79e9
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/random_access_handle.hpp
@@ -0,0 +1,41 @@
+//
+// random_access_handle.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
+#define BOOST_ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/windows/basic_random_access_handle.hpp>
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Typedef for the typical usage of a random-access handle.
+typedef basic_random_access_handle<> random_access_handle;
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/random_access_handle_service.hpp b/3rdParty/Boost/boost/asio/windows/random_access_handle_service.hpp
new file mode 100644
index 0000000..3b11223
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/random_access_handle_service.hpp
@@ -0,0 +1,181 @@
+//
+// random_access_handle_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
+#define BOOST_ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/win_iocp_handle_service.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
+# if defined(BOOST_ASIO_HAS_IOCP)
+# define BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE 1
+# endif // defined(BOOST_ASIO_HAS_IOCP)
+#endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Default service implementation for a random-access handle.
+class random_access_handle_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<random_access_handle_service>
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+private:
+ // The type of the platform-specific implementation.
+ typedef detail::win_iocp_handle_service service_impl_type;
+
+public:
+ /// The type of a random-access handle implementation.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native handle type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new random-access handle service for the specified io_service.
+ explicit random_access_handle_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<
+ random_access_handle_service>(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new random-access handle implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a random-access handle implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Assign an existing native handle to a random-access handle.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_handle, boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, native_handle, ec);
+ }
+
+ /// Determine whether the handle is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a random-access handle implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native handle implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the handle.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Write the given data at the specified offset.
+ template <typename ConstBufferSequence>
+ std::size_t write_some_at(implementation_type& impl, boost::uint64_t offset,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.write_some_at(impl, offset, buffers, ec);
+ }
+
+ /// Start an asynchronous write at the specified offset.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some_at(implementation_type& impl, boost::uint64_t offset,
+ const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ service_impl_.async_write_some_at(impl, offset, buffers, handler);
+ }
+
+ /// Read some data from the specified offset.
+ template <typename MutableBufferSequence>
+ std::size_t read_some_at(implementation_type& impl, boost::uint64_t offset,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.read_some_at(impl, offset, buffers, ec);
+ }
+
+ /// Start an asynchronous read at the specified offset.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some_at(implementation_type& impl, boost::uint64_t offset,
+ const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ service_impl_.async_read_some_at(impl, offset, buffers, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/stream_handle.hpp b/3rdParty/Boost/boost/asio/windows/stream_handle.hpp
new file mode 100644
index 0000000..b247197
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/stream_handle.hpp
@@ -0,0 +1,41 @@
+//
+// stream_handle.hpp
+// ~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_STREAM_HANDLE_HPP
+#define BOOST_ASIO_WINDOWS_STREAM_HANDLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/windows/basic_stream_handle.hpp>
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Typedef for the typical usage of a stream-oriented handle.
+typedef basic_stream_handle<> stream_handle;
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_STREAM_HANDLE_HPP
diff --git a/3rdParty/Boost/boost/asio/windows/stream_handle_service.hpp b/3rdParty/Boost/boost/asio/windows/stream_handle_service.hpp
new file mode 100644
index 0000000..29cdc95
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/windows/stream_handle_service.hpp
@@ -0,0 +1,179 @@
+//
+// stream_handle_service.hpp
+// ~~~~~~~~~~~~~~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
+#define BOOST_ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/error.hpp>
+#include <boost/asio/io_service.hpp>
+#include <boost/asio/detail/service_base.hpp>
+#include <boost/asio/detail/win_iocp_handle_service.hpp>
+
+#if !defined(BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
+# if defined(BOOST_ASIO_HAS_IOCP)
+# define BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE 1
+# endif // defined(BOOST_ASIO_HAS_IOCP)
+#endif // !defined(BOOST_ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
+
+#if defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE) \
+ || defined(GENERATING_DOCUMENTATION)
+
+namespace boost {
+namespace asio {
+namespace windows {
+
+/// Default service implementation for a stream handle.
+class stream_handle_service
+#if defined(GENERATING_DOCUMENTATION)
+ : public boost::asio::io_service::service
+#else
+ : public boost::asio::detail::service_base<stream_handle_service>
+#endif
+{
+public:
+#if defined(GENERATING_DOCUMENTATION)
+ /// The unique service identifier.
+ static boost::asio::io_service::id id;
+#endif
+
+private:
+ // The type of the platform-specific implementation.
+ typedef detail::win_iocp_handle_service service_impl_type;
+
+public:
+ /// The type of a stream handle implementation.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined implementation_type;
+#else
+ typedef service_impl_type::implementation_type implementation_type;
+#endif
+
+ /// The native handle type.
+#if defined(GENERATING_DOCUMENTATION)
+ typedef implementation_defined native_type;
+#else
+ typedef service_impl_type::native_type native_type;
+#endif
+
+ /// Construct a new stream handle service for the specified io_service.
+ explicit stream_handle_service(boost::asio::io_service& io_service)
+ : boost::asio::detail::service_base<stream_handle_service>(io_service),
+ service_impl_(boost::asio::use_service<service_impl_type>(io_service))
+ {
+ }
+
+ /// Destroy all user-defined handler objects owned by the service.
+ void shutdown_service()
+ {
+ }
+
+ /// Construct a new stream handle implementation.
+ void construct(implementation_type& impl)
+ {
+ service_impl_.construct(impl);
+ }
+
+ /// Destroy a stream handle implementation.
+ void destroy(implementation_type& impl)
+ {
+ service_impl_.destroy(impl);
+ }
+
+ /// Assign an existing native handle to a stream handle.
+ boost::system::error_code assign(implementation_type& impl,
+ const native_type& native_handle, boost::system::error_code& ec)
+ {
+ return service_impl_.assign(impl, native_handle, ec);
+ }
+
+ /// Determine whether the handle is open.
+ bool is_open(const implementation_type& impl) const
+ {
+ return service_impl_.is_open(impl);
+ }
+
+ /// Close a stream handle implementation.
+ boost::system::error_code close(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.close(impl, ec);
+ }
+
+ /// Get the native handle implementation.
+ native_type native(implementation_type& impl)
+ {
+ return service_impl_.native(impl);
+ }
+
+ /// Cancel all asynchronous operations associated with the handle.
+ boost::system::error_code cancel(implementation_type& impl,
+ boost::system::error_code& ec)
+ {
+ return service_impl_.cancel(impl, ec);
+ }
+
+ /// Write the given data to the stream.
+ template <typename ConstBufferSequence>
+ std::size_t write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.write_some(impl, buffers, ec);
+ }
+
+ /// Start an asynchronous write.
+ template <typename ConstBufferSequence, typename WriteHandler>
+ void async_write_some(implementation_type& impl,
+ const ConstBufferSequence& buffers, WriteHandler handler)
+ {
+ service_impl_.async_write_some(impl, buffers, handler);
+ }
+
+ /// Read some data from the stream.
+ template <typename MutableBufferSequence>
+ std::size_t read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, boost::system::error_code& ec)
+ {
+ return service_impl_.read_some(impl, buffers, ec);
+ }
+
+ /// Start an asynchronous read.
+ template <typename MutableBufferSequence, typename ReadHandler>
+ void async_read_some(implementation_type& impl,
+ const MutableBufferSequence& buffers, ReadHandler handler)
+ {
+ service_impl_.async_read_some(impl, buffers, handler);
+ }
+
+private:
+ // The service that provides the platform-specific implementation.
+ service_impl_type& service_impl_;
+};
+
+} // namespace windows
+} // namespace asio
+} // namespace boost
+
+#endif // defined(BOOST_ASIO_HAS_WINDOWS_STREAM_HANDLE)
+ // || defined(GENERATING_DOCUMENTATION)
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
diff --git a/3rdParty/Boost/boost/asio/write.hpp b/3rdParty/Boost/boost/asio/write.hpp
new file mode 100644
index 0000000..61d59a0
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/write.hpp
@@ -0,0 +1,522 @@
+//
+// write.hpp
+// ~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WRITE_HPP
+#define BOOST_ASIO_WRITE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_streambuf.hpp>
+#include <boost/asio/error.hpp>
+
+namespace boost {
+namespace asio {
+
+/**
+ * @defgroup write boost::asio::write
+ *
+ * @brief Write a certain amount of data to a stream before returning.
+ */
+/*@{*/
+
+/// Write all of the supplied data to a stream before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a stream.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the SyncWriteStream concept.
+ *
+ * @param buffers One or more buffers containing the data to be written. The sum
+ * of the buffer sizes indicates the maximum number of bytes to write to the
+ * stream.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::write(s, boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::write(
+ * s, buffers,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncWriteStream, typename ConstBufferSequence>
+std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers);
+
+/// Write a certain amount of data to a stream before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a stream.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the SyncWriteStream concept.
+ *
+ * @param buffers One or more buffers containing the data to be written. The sum
+ * of the buffer sizes indicates the maximum number of bytes to write to the
+ * stream.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::write(s, boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32)); @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename SyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition>
+std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition);
+
+/// Write a certain amount of data to a stream before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a stream.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the SyncWriteStream concept.
+ *
+ * @param buffers One or more buffers containing the data to be written. The sum
+ * of the buffer sizes indicates the maximum number of bytes to write to the
+ * stream.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition>
+std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/// Write all of the supplied data to a stream before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a stream.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the SyncWriteStream concept.
+ *
+ * @param b The basic_streambuf object from which data will be written.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::write(
+ * s, b,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncWriteStream, typename Allocator>
+std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b);
+
+/// Write a certain amount of data to a stream before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a stream.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the SyncWriteStream concept.
+ *
+ * @param b The basic_streambuf object from which data will be written.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+template <typename SyncWriteStream, typename Allocator,
+ typename CompletionCondition>
+std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition);
+
+/// Write a certain amount of data to a stream before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a stream.
+ * The call will block until one of the following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the SyncWriteStream concept.
+ *
+ * @param b The basic_streambuf object from which data will be written.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's write_some function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncWriteStream, typename Allocator,
+ typename CompletionCondition>
+std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/*@}*/
+/**
+ * @defgroup async_write boost::asio::async_write
+ *
+ * @brief Start an asynchronous operation to write a certain amount of data to a
+ * stream.
+ */
+/*@{*/
+
+/// Start an asynchronous operation to write all of the supplied data to a
+/// stream.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions
+ * is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the AsyncWriteStream concept.
+ *
+ * @param buffers One or more buffers containing the data to be written.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes written from the
+ * // buffers. If an error occurred,
+ * // this will be less than the sum
+ * // of the buffer sizes.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::async_write(s, boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename WriteHandler>
+void async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
+ WriteHandler handler);
+
+/// Start an asynchronous operation to write a certain amount of data to a
+/// stream.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions
+ * is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the AsyncWriteStream concept.
+ *
+ * @param buffers One or more buffers containing the data to be written.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_write_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's async_write_some function.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes written from the
+ * // buffers. If an error occurred,
+ * // this will be less than the sum
+ * // of the buffer sizes.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::async_write(s,
+ * boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32),
+ * handler); @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename AsyncWriteStream, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+void async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, WriteHandler handler);
+
+/// Start an asynchronous operation to write all of the supplied data to a
+/// stream.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions
+ * is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the AsyncWriteStream concept.
+ *
+ * @param b A basic_streambuf object from which data will be written. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes written from the
+ * // buffers. If an error occurred,
+ * // this will be less than the sum
+ * // of the buffer sizes.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+template <typename AsyncWriteStream, typename Allocator, typename WriteHandler>
+void async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
+ WriteHandler handler);
+
+/// Start an asynchronous operation to write a certain amount of data to a
+/// stream.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a stream. The function call always returns immediately. The
+ * asynchronous operation will continue until one of the following conditions
+ * is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the stream's
+ * async_write_some function.
+ *
+ * @param s The stream to which the data is to be written. The type must support
+ * the AsyncWriteStream concept.
+ *
+ * @param b A basic_streambuf object from which data will be written. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_write_some operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the stream's async_write_some function.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * const boost::system::error_code& error, // Result of operation.
+ *
+ * std::size_t bytes_transferred // Number of bytes written from the
+ * // buffers. If an error occurred,
+ * // this will be less than the sum
+ * // of the buffer sizes.
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+template <typename AsyncWriteStream, typename Allocator,
+ typename CompletionCondition, typename WriteHandler>
+void async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
+ CompletionCondition completion_condition, WriteHandler handler);
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/write.ipp>
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WRITE_HPP
diff --git a/3rdParty/Boost/boost/asio/write_at.hpp b/3rdParty/Boost/boost/asio/write_at.hpp
new file mode 100644
index 0000000..85efbc2
--- /dev/null
+++ b/3rdParty/Boost/boost/asio/write_at.hpp
@@ -0,0 +1,557 @@
+//
+// write_at.hpp
+// ~~~~~~~~~~~~
+//
+// Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifndef BOOST_ASIO_WRITE_AT_HPP
+#define BOOST_ASIO_WRITE_AT_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
+
+#include <boost/asio/detail/push_options.hpp>
+
+#include <boost/asio/detail/push_options.hpp>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/asio/detail/pop_options.hpp>
+
+#include <boost/asio/basic_streambuf.hpp>
+#include <boost/asio/error.hpp>
+
+namespace boost {
+namespace asio {
+
+/**
+ * @defgroup write_at boost::asio::write_at
+ *
+ * @brief Write a certain amount of data at a specified offset before returning.
+ */
+/*@{*/
+
+/// Write all of the supplied data at the specified offset before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a random
+ * access device at a specified offset. The call will block until one of the
+ * following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the SyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more buffers containing the data to be written. The sum
+ * of the buffer sizes indicates the maximum number of bytes to write to the
+ * device.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::write_at(d, 42, boost::asio::buffer(data, size)); @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::write_at(
+ * d, offset, buffers,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
+std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers);
+
+/// Write a certain amount of data at a specified offset before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a random
+ * access device at a specified offset. The call will block until one of the
+ * following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the SyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more buffers containing the data to be written. The sum
+ * of the buffer sizes indicates the maximum number of bytes to write to the
+ * device.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the device's write_some_at function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::write_at(d, 42, boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32)); @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition>
+std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition);
+
+/// Write a certain amount of data at a specified offset before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a random
+ * access device at a specified offset. The call will block until one of the
+ * following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the SyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more buffers containing the data to be written. The sum
+ * of the buffer sizes indicates the maximum number of bytes to write to the
+ * device.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the device's write_some_at function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition>
+std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, boost::system::error_code& ec);
+
+/// Write all of the supplied data at the specified offset before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a random
+ * access device at a specified offset. The call will block until one of the
+ * following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the SyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param b The basic_streambuf object from which data will be written.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ *
+ * @note This overload is equivalent to calling:
+ * @code boost::asio::write_at(
+ * d, 42, b,
+ * boost::asio::transfer_all()); @endcode
+ */
+template <typename SyncRandomAccessWriteDevice, typename Allocator>
+std::size_t write_at(SyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, basic_streambuf<Allocator>& b);
+
+/// Write a certain amount of data at a specified offset before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a random
+ * access device at a specified offset. The call will block until one of the
+ * following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the SyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param b The basic_streambuf object from which data will be written.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the device's write_some_at function.
+ *
+ * @returns The number of bytes transferred.
+ *
+ * @throws boost::system::system_error Thrown on failure.
+ */
+template <typename SyncRandomAccessWriteDevice, typename Allocator,
+ typename CompletionCondition>
+std::size_t write_at(SyncRandomAccessWriteDevice& d, boost::uint64_t offset,
+ basic_streambuf<Allocator>& b, CompletionCondition completion_condition);
+
+/// Write a certain amount of data at a specified offset before returning.
+/**
+ * This function is used to write a certain number of bytes of data to a random
+ * access device at a specified offset. The call will block until one of the
+ * following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the SyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param b The basic_streambuf object from which data will be written.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest write_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the device's write_some_at function.
+ *
+ * @param ec Set to indicate what error occurred, if any.
+ *
+ * @returns The number of bytes written. If an error occurs, returns the total
+ * number of bytes successfully transferred prior to the error.
+ */
+template <typename SyncRandomAccessWriteDevice, typename Allocator,
+ typename CompletionCondition>
+std::size_t write_at(SyncRandomAccessWriteDevice& d, boost::uint64_t offset,
+ basic_streambuf<Allocator>& b, CompletionCondition completion_condition,
+ boost::system::error_code& ec);
+
+/*@}*/
+/**
+ * @defgroup async_write_at boost::asio::async_write_at
+ *
+ * @brief Start an asynchronous operation to write a certain amount of data at
+ * the specified offset.
+ */
+/*@{*/
+
+/// Start an asynchronous operation to write all of the supplied data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a random access device at a specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the AsyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more buffers containing the data to be written.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of
+ * the handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes written from the buffers. If an error
+ * // occurred, this will be less than the sum of the buffer sizes.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code
+ * boost::asio::async_write_at(d, 42, boost::asio::buffer(data, size), handler);
+ * @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename WriteHandler>
+void async_write_at(AsyncRandomAccessWriteDevice& d, boost::uint64_t offset,
+ const ConstBufferSequence& buffers, WriteHandler handler);
+
+/// Start an asynchronous operation to write a certain amount of data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a random access device at a specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li All of the data in the supplied buffers has been written. That is, the
+ * bytes transferred is equal to the sum of the buffer sizes.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the AsyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param buffers One or more buffers containing the data to be written.
+ * Although the buffers object may be copied as necessary, ownership of the
+ * underlying memory blocks is retained by the caller, which must guarantee
+ * that they remain valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_write_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the device's async_write_some_at function.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes written from the buffers. If an error
+ * // occurred, this will be less than the sum of the buffer sizes.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ *
+ * @par Example
+ * To write a single data buffer use the @ref buffer function as follows:
+ * @code boost::asio::async_write_at(d, 42,
+ * boost::asio::buffer(data, size),
+ * boost::asio::transfer_at_least(32),
+ * handler); @endcode
+ * See the @ref buffer documentation for information on writing multiple
+ * buffers in one go, and how to use it with arrays, boost::array or
+ * std::vector.
+ */
+template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
+ typename CompletionCondition, typename WriteHandler>
+void async_write_at(AsyncRandomAccessWriteDevice& d,
+ boost::uint64_t offset, const ConstBufferSequence& buffers,
+ CompletionCondition completion_condition, WriteHandler handler);
+
+/// Start an asynchronous operation to write all of the supplied data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a random access device at a specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li An error occurred.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the AsyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param b A basic_streambuf object from which data will be written. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes written from the buffers. If an error
+ * // occurred, this will be less than the sum of the buffer sizes.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename WriteHandler>
+void async_write_at(AsyncRandomAccessWriteDevice& d, boost::uint64_t offset,
+ basic_streambuf<Allocator>& b, WriteHandler handler);
+
+/// Start an asynchronous operation to write a certain amount of data at the
+/// specified offset.
+/**
+ * This function is used to asynchronously write a certain number of bytes of
+ * data to a random access device at a specified offset. The function call
+ * always returns immediately. The asynchronous operation will continue until
+ * one of the following conditions is true:
+ *
+ * @li All of the data in the supplied basic_streambuf has been written.
+ *
+ * @li The completion_condition function object returns 0.
+ *
+ * This operation is implemented in terms of zero or more calls to the device's
+ * async_write_some_at function.
+ *
+ * @param d The device to which the data is to be written. The type must support
+ * the AsyncRandomAccessWriteDevice concept.
+ *
+ * @param offset The offset at which the data will be written.
+ *
+ * @param b A basic_streambuf object from which data will be written. Ownership
+ * of the streambuf is retained by the caller, which must guarantee that it
+ * remains valid until the handler is called.
+ *
+ * @param completion_condition The function object to be called to determine
+ * whether the write operation is complete. The signature of the function object
+ * must be:
+ * @code std::size_t completion_condition(
+ * // Result of latest async_write_some_at operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes transferred so far.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * A return value of 0 indicates that the write operation is complete. A
+ * non-zero return value indicates the maximum number of bytes to be written on
+ * the next call to the device's async_write_some_at function.
+ *
+ * @param handler The handler to be called when the write operation completes.
+ * Copies will be made of the handler as required. The function signature of the
+ * handler must be:
+ * @code void handler(
+ * // Result of operation.
+ * const boost::system::error_code& error,
+ *
+ * // Number of bytes written from the buffers. If an error
+ * // occurred, this will be less than the sum of the buffer sizes.
+ * std::size_t bytes_transferred
+ * ); @endcode
+ * Regardless of whether the asynchronous operation completes immediately or
+ * not, the handler will not be invoked from within this function. Invocation of
+ * the handler will be performed in a manner equivalent to using
+ * boost::asio::io_service::post().
+ */
+template <typename AsyncRandomAccessWriteDevice, typename Allocator,
+ typename CompletionCondition, typename WriteHandler>
+void async_write_at(AsyncRandomAccessWriteDevice& d, boost::uint64_t offset,
+ basic_streambuf<Allocator>& b, CompletionCondition completion_condition,
+ WriteHandler handler);
+
+/*@}*/
+
+} // namespace asio
+} // namespace boost
+
+#include <boost/asio/impl/write_at.ipp>
+
+#include <boost/asio/detail/pop_options.hpp>
+
+#endif // BOOST_ASIO_WRITE_AT_HPP
diff --git a/3rdParty/Boost/boost/assert.hpp b/3rdParty/Boost/boost/assert.hpp
new file mode 100644
index 0000000..c227f17
--- /dev/null
+++ b/3rdParty/Boost/boost/assert.hpp
@@ -0,0 +1,50 @@
+//
+// boost/assert.hpp - BOOST_ASSERT(expr)
+//
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2007 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// Note: There are no include guards. This is intentional.
+//
+// See http://www.boost.org/libs/utility/assert.html for documentation.
+//
+
+#undef BOOST_ASSERT
+
+#if defined(BOOST_DISABLE_ASSERTS)
+
+# define BOOST_ASSERT(expr) ((void)0)
+
+#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
+
+#include <boost/current_function.hpp>
+
+namespace boost
+{
+
+void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined
+
+} // namespace boost
+
+#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+
+#else
+# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
+# define BOOST_ASSERT(expr) assert(expr)
+#endif
+
+#undef BOOST_VERIFY
+
+#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
+
+# define BOOST_VERIFY(expr) ((void)(expr))
+
+#else
+
+# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
+
+#endif
diff --git a/3rdParty/Boost/boost/bind.hpp b/3rdParty/Boost/boost/bind.hpp
new file mode 100644
index 0000000..fd3421e
--- /dev/null
+++ b/3rdParty/Boost/boost/bind.hpp
@@ -0,0 +1,24 @@
+#ifndef BOOST_BIND_HPP_INCLUDED
+#define BOOST_BIND_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// bind.hpp - binds function objects to arguments
+//
+// Copyright (c) 2009 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+#include <boost/bind/bind.hpp>
+
+#endif // #ifndef BOOST_BIND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/bind/arg.hpp b/3rdParty/Boost/boost/bind/arg.hpp
new file mode 100644
index 0000000..0d5cd03
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/arg.hpp
@@ -0,0 +1,62 @@
+#ifndef BOOST_BIND_ARG_HPP_INCLUDED
+#define BOOST_BIND_ARG_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// bind/arg.hpp
+//
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+#include <boost/config.hpp>
+#include <boost/is_placeholder.hpp>
+
+namespace boost
+{
+
+template< int I > struct arg
+{
+ arg()
+ {
+ }
+
+ template< class T > arg( T const & /* t */ )
+ {
+ // static assert I == is_placeholder<T>::value
+ typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
+ }
+};
+
+template< int I > bool operator==( arg<I> const &, arg<I> const & )
+{
+ return true;
+}
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< int I > struct is_placeholder< arg<I> >
+{
+ enum _vt { value = I };
+};
+
+template< int I > struct is_placeholder< arg<I> (*) () >
+{
+ enum _vt { value = I };
+};
+
+#endif
+
+} // namespace boost
+
+#endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/bind/bind.hpp b/3rdParty/Boost/boost/bind/bind.hpp
new file mode 100644
index 0000000..1e5c9e0
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/bind.hpp
@@ -0,0 +1,1733 @@
+#ifndef BOOST_BIND_BIND_HPP_INCLUDED
+#define BOOST_BIND_BIND_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// bind.hpp - binds function objects to arguments
+//
+// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2001 David Abrahams
+// Copyright (c) 2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+#include <boost/config.hpp>
+#include <boost/ref.hpp>
+#include <boost/mem_fn.hpp>
+#include <boost/type.hpp>
+#include <boost/is_placeholder.hpp>
+#include <boost/bind/arg.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/visit_each.hpp>
+
+// Borland-specific bug, visit_each() silently fails to produce code
+
+#if defined(__BORLANDC__)
+# define BOOST_BIND_VISIT_EACH boost::visit_each
+#else
+# define BOOST_BIND_VISIT_EACH visit_each
+#endif
+
+#include <boost/bind/storage.hpp>
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4512) // assignment operator could not be generated
+#endif
+
+namespace boost
+{
+
+template<class T> class weak_ptr;
+
+namespace _bi // implementation details
+{
+
+// result_traits
+
+template<class R, class F> struct result_traits
+{
+ typedef R type;
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+
+struct unspecified {};
+
+template<class F> struct result_traits<unspecified, F>
+{
+ typedef typename F::result_type type;
+};
+
+template<class F> struct result_traits< unspecified, reference_wrapper<F> >
+{
+ typedef typename F::result_type type;
+};
+
+#endif
+
+// ref_compare
+
+template<class T> bool ref_compare( T const & a, T const & b, long )
+{
+ return a == b;
+}
+
+template<int I> bool ref_compare( arg<I> const &, arg<I> const &, int )
+{
+ return true;
+}
+
+template<int I> bool ref_compare( arg<I> (*) (), arg<I> (*) (), int )
+{
+ return true;
+}
+
+template<class T> bool ref_compare( reference_wrapper<T> const & a, reference_wrapper<T> const & b, int )
+{
+ return a.get_pointer() == b.get_pointer();
+}
+
+// bind_t forward declaration for listN
+
+template<class R, class F, class L> class bind_t;
+
+template<class R, class F, class L> bool ref_compare( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
+{
+ return a.compare( b );
+}
+
+// value
+
+template<class T> class value
+{
+public:
+
+ value(T const & t): t_(t) {}
+
+ T & get() { return t_; }
+ T const & get() const { return t_; }
+
+ bool operator==(value const & rhs) const
+ {
+ return t_ == rhs.t_;
+ }
+
+private:
+
+ T t_;
+};
+
+// ref_compare for weak_ptr
+
+template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b, int )
+{
+ return !(a.get() < b.get()) && !(b.get() < a.get());
+}
+
+// type
+
+template<class T> class type {};
+
+// unwrap
+
+template<class F> struct unwrapper
+{
+ static inline F & unwrap( F & f, long )
+ {
+ return f;
+ }
+
+ template<class F2> static inline F2 & unwrap( reference_wrapper<F2> rf, int )
+ {
+ return rf.get();
+ }
+
+ template<class R, class T> static inline _mfi::dm<R, T> unwrap( R T::* pm, int )
+ {
+ return _mfi::dm<R, T>( pm );
+ }
+};
+
+// listN
+
+class list0
+{
+public:
+
+ list0() {}
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A &, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)();
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A &, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)();
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A &, int)
+ {
+ unwrapper<F>::unwrap(f, 0)();
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A &, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)();
+ }
+
+ template<class V> void accept(V &) const
+ {
+ }
+
+ bool operator==(list0 const &) const
+ {
+ return true;
+ }
+};
+
+template< class A1 > class list1: private storage1< A1 >
+{
+private:
+
+ typedef storage1< A1 > base_type;
+
+public:
+
+ explicit list1( A1 a1 ): base_type( a1 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+
+ template<class T> T & operator[] ( _bi::value<T> & v ) const { return v.get(); }
+
+ template<class T> T const & operator[] ( _bi::value<T> const & v ) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list1 const & rhs) const
+ {
+ return ref_compare(base_type::a1_, rhs.a1_, 0);
+ }
+};
+
+struct logical_and;
+struct logical_or;
+
+template< class A1, class A2 > class list2: private storage2< A1, A2 >
+{
+private:
+
+ typedef storage2< A1, A2 > base_type;
+
+public:
+
+ list2( A1 a1, A2 a2 ): base_type( a1, a2 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_]);
+ }
+
+ template<class A> bool operator()( type<bool>, logical_and & /*f*/, A & a, int )
+ {
+ return a[ base_type::a1_ ] && a[ base_type::a2_ ];
+ }
+
+ template<class A> bool operator()( type<bool>, logical_and const & /*f*/, A & a, int ) const
+ {
+ return a[ base_type::a1_ ] && a[ base_type::a2_ ];
+ }
+
+ template<class A> bool operator()( type<bool>, logical_or & /*f*/, A & a, int )
+ {
+ return a[ base_type::a1_ ] || a[ base_type::a2_ ];
+ }
+
+ template<class A> bool operator()( type<bool>, logical_or const & /*f*/, A & a, int ) const
+ {
+ return a[ base_type::a1_ ] || a[ base_type::a2_ ];
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list2 const & rhs) const
+ {
+ return ref_compare(base_type::a1_, rhs.a1_, 0) && ref_compare(base_type::a2_, rhs.a2_, 0);
+ }
+};
+
+template< class A1, class A2, class A3 > class list3: private storage3< A1, A2, A3 >
+{
+private:
+
+ typedef storage3< A1, A2, A3 > base_type;
+
+public:
+
+ list3( A1 a1, A2 a2, A3 a3 ): base_type( a1, a2, a3 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list3 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 );
+ }
+};
+
+template< class A1, class A2, class A3, class A4 > class list4: private storage4< A1, A2, A3, A4 >
+{
+private:
+
+ typedef storage4< A1, A2, A3, A4 > base_type;
+
+public:
+
+ list4( A1 a1, A2 a2, A3 a3, A4 a4 ): base_type( a1, a2, a3, a4 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list4 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
+ ref_compare( base_type::a4_, rhs.a4_, 0 );
+ }
+};
+
+template< class A1, class A2, class A3, class A4, class A5 > class list5: private storage5< A1, A2, A3, A4, A5 >
+{
+private:
+
+ typedef storage5< A1, A2, A3, A4, A5 > base_type;
+
+public:
+
+ list5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): base_type( a1, a2, a3, a4, a5 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list5 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
+ ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
+ ref_compare( base_type::a5_, rhs.a5_, 0 );
+ }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6> class list6: private storage6< A1, A2, A3, A4, A5, A6 >
+{
+private:
+
+ typedef storage6< A1, A2, A3, A4, A5, A6 > base_type;
+
+public:
+
+ list6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): base_type( a1, a2, a3, a4, a5, a6 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list6 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
+ ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
+ ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
+ ref_compare( base_type::a6_, rhs.a6_, 0 );
+ }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> class list7: private storage7< A1, A2, A3, A4, A5, A6, A7 >
+{
+private:
+
+ typedef storage7< A1, A2, A3, A4, A5, A6, A7 > base_type;
+
+public:
+
+ list7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): base_type( a1, a2, a3, a4, a5, a6, a7 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
+ A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
+ A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list7 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
+ ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
+ ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
+ ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
+ ref_compare( base_type::a7_, rhs.a7_, 0 );
+ }
+};
+
+template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class list8: private storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
+{
+private:
+
+ typedef storage8< A1, A2, A3, A4, A5, A6, A7, A8 > base_type;
+
+public:
+
+ list8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
+ A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
+ A8 operator[] (boost::arg<8>) const { return base_type::a8_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
+ A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
+ A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list8 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
+ ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
+ ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
+ ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
+ ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
+ ref_compare( base_type::a8_, rhs.a8_, 0 );
+ }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> class list9: private storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 >
+{
+private:
+
+ typedef storage9< A1, A2, A3, A4, A5, A6, A7, A8, A9 > base_type;
+
+public:
+
+ list9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): base_type( a1, a2, a3, a4, a5, a6, a7, a8, a9 ) {}
+
+ A1 operator[] (boost::arg<1>) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2>) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3>) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4>) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5>) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6>) const { return base_type::a6_; }
+ A7 operator[] (boost::arg<7>) const { return base_type::a7_; }
+ A8 operator[] (boost::arg<8>) const { return base_type::a8_; }
+ A9 operator[] (boost::arg<9>) const { return base_type::a9_; }
+
+ A1 operator[] (boost::arg<1> (*) ()) const { return base_type::a1_; }
+ A2 operator[] (boost::arg<2> (*) ()) const { return base_type::a2_; }
+ A3 operator[] (boost::arg<3> (*) ()) const { return base_type::a3_; }
+ A4 operator[] (boost::arg<4> (*) ()) const { return base_type::a4_; }
+ A5 operator[] (boost::arg<5> (*) ()) const { return base_type::a5_; }
+ A6 operator[] (boost::arg<6> (*) ()) const { return base_type::a6_; }
+ A7 operator[] (boost::arg<7> (*) ()) const { return base_type::a7_; }
+ A8 operator[] (boost::arg<8> (*) ()) const { return base_type::a8_; }
+ A9 operator[] (boost::arg<9> (*) ()) const { return base_type::a9_; }
+
+ template<class T> T & operator[] (_bi::value<T> & v) const { return v.get(); }
+
+ template<class T> T const & operator[] (_bi::value<T> const & v) const { return v.get(); }
+
+ template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
+
+ template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
+
+ template<class R, class F, class A> R operator()(type<R>, F & f, A & a, long)
+ {
+ return unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
+ }
+
+ template<class R, class F, class A> R operator()(type<R>, F const & f, A & a, long) const
+ {
+ return unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F & f, A & a, int)
+ {
+ unwrapper<F>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
+ }
+
+ template<class F, class A> void operator()(type<void>, F const & f, A & a, int) const
+ {
+ unwrapper<F const>::unwrap(f, 0)(a[base_type::a1_], a[base_type::a2_], a[base_type::a3_], a[base_type::a4_], a[base_type::a5_], a[base_type::a6_], a[base_type::a7_], a[base_type::a8_], a[base_type::a9_]);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+ base_type::accept(v);
+ }
+
+ bool operator==(list9 const & rhs) const
+ {
+ return
+
+ ref_compare( base_type::a1_, rhs.a1_, 0 ) &&
+ ref_compare( base_type::a2_, rhs.a2_, 0 ) &&
+ ref_compare( base_type::a3_, rhs.a3_, 0 ) &&
+ ref_compare( base_type::a4_, rhs.a4_, 0 ) &&
+ ref_compare( base_type::a5_, rhs.a5_, 0 ) &&
+ ref_compare( base_type::a6_, rhs.a6_, 0 ) &&
+ ref_compare( base_type::a7_, rhs.a7_, 0 ) &&
+ ref_compare( base_type::a8_, rhs.a8_, 0 ) &&
+ ref_compare( base_type::a9_, rhs.a9_, 0 );
+ }
+};
+
+// bind_t
+
+#ifndef BOOST_NO_VOID_RETURNS
+
+template<class R, class F, class L> class bind_t
+{
+public:
+
+ typedef bind_t this_type;
+
+ bind_t(F f, L const & l): f_(f), l_(l) {}
+
+#define BOOST_BIND_RETURN return
+#include <boost/bind/bind_template.hpp>
+#undef BOOST_BIND_RETURN
+
+};
+
+#else
+
+template<class R> struct bind_t_generator
+{
+
+template<class F, class L> class implementation
+{
+public:
+
+ typedef implementation this_type;
+
+ implementation(F f, L const & l): f_(f), l_(l) {}
+
+#define BOOST_BIND_RETURN return
+#include <boost/bind/bind_template.hpp>
+#undef BOOST_BIND_RETURN
+
+};
+
+};
+
+template<> struct bind_t_generator<void>
+{
+
+template<class F, class L> class implementation
+{
+private:
+
+ typedef void R;
+
+public:
+
+ typedef implementation this_type;
+
+ implementation(F f, L const & l): f_(f), l_(l) {}
+
+#define BOOST_BIND_RETURN
+#include <boost/bind/bind_template.hpp>
+#undef BOOST_BIND_RETURN
+
+};
+
+};
+
+template<class R2, class F, class L> class bind_t: public bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>
+{
+public:
+
+ bind_t(F f, L const & l): bind_t_generator<R2>::BOOST_NESTED_TEMPLATE implementation<F, L>(f, l) {}
+
+};
+
+#endif
+
+// function_equal
+
+#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+
+// put overloads in _bi, rely on ADL
+
+# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template<class R, class F, class L> bool function_equal( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b )
+{
+ return a.compare(b);
+}
+
+# else
+
+template<class R, class F, class L> bool function_equal_impl( bind_t<R, F, L> const & a, bind_t<R, F, L> const & b, int )
+{
+ return a.compare(b);
+}
+
+# endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+#else // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+
+// put overloads in boost
+
+} // namespace _bi
+
+# ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template<class R, class F, class L> bool function_equal( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b )
+{
+ return a.compare(b);
+}
+
+# else
+
+template<class R, class F, class L> bool function_equal_impl( _bi::bind_t<R, F, L> const & a, _bi::bind_t<R, F, L> const & b, int )
+{
+ return a.compare(b);
+}
+
+# endif // #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+namespace _bi
+{
+
+#endif // BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+
+// add_value
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || (__SUNPRO_CC >= 0x530)
+
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x582) )
+
+template<class T> struct add_value
+{
+ typedef _bi::value<T> type;
+};
+
+#else
+
+template< class T, int I > struct add_value_2
+{
+ typedef boost::arg<I> type;
+};
+
+template< class T > struct add_value_2< T, 0 >
+{
+ typedef _bi::value< T > type;
+};
+
+template<class T> struct add_value
+{
+ typedef typename add_value_2< T, boost::is_placeholder< T >::value >::type type;
+};
+
+#endif
+
+template<class T> struct add_value< value<T> >
+{
+ typedef _bi::value<T> type;
+};
+
+template<class T> struct add_value< reference_wrapper<T> >
+{
+ typedef reference_wrapper<T> type;
+};
+
+template<int I> struct add_value< arg<I> >
+{
+ typedef boost::arg<I> type;
+};
+
+template<int I> struct add_value< arg<I> (*) () >
+{
+ typedef boost::arg<I> (*type) ();
+};
+
+template<class R, class F, class L> struct add_value< bind_t<R, F, L> >
+{
+ typedef bind_t<R, F, L> type;
+};
+
+#else
+
+template<int I> struct _avt_0;
+
+template<> struct _avt_0<1>
+{
+ template<class T> struct inner
+ {
+ typedef T type;
+ };
+};
+
+template<> struct _avt_0<2>
+{
+ template<class T> struct inner
+ {
+ typedef value<T> type;
+ };
+};
+
+typedef char (&_avt_r1) [1];
+typedef char (&_avt_r2) [2];
+
+template<class T> _avt_r1 _avt_f(value<T>);
+template<class T> _avt_r1 _avt_f(reference_wrapper<T>);
+template<int I> _avt_r1 _avt_f(arg<I>);
+template<int I> _avt_r1 _avt_f(arg<I> (*) ());
+template<class R, class F, class L> _avt_r1 _avt_f(bind_t<R, F, L>);
+
+_avt_r2 _avt_f(...);
+
+template<class T> struct add_value
+{
+ static T t();
+ typedef typename _avt_0<sizeof(_avt_f(t()))>::template inner<T>::type type;
+};
+
+#endif
+
+// list_av_N
+
+template<class A1> struct list_av_1
+{
+ typedef typename add_value<A1>::type B1;
+ typedef list1<B1> type;
+};
+
+template<class A1, class A2> struct list_av_2
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef list2<B1, B2> type;
+};
+
+template<class A1, class A2, class A3> struct list_av_3
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef list3<B1, B2, B3> type;
+};
+
+template<class A1, class A2, class A3, class A4> struct list_av_4
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef typename add_value<A4>::type B4;
+ typedef list4<B1, B2, B3, B4> type;
+};
+
+template<class A1, class A2, class A3, class A4, class A5> struct list_av_5
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef typename add_value<A4>::type B4;
+ typedef typename add_value<A5>::type B5;
+ typedef list5<B1, B2, B3, B4, B5> type;
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6> struct list_av_6
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef typename add_value<A4>::type B4;
+ typedef typename add_value<A5>::type B5;
+ typedef typename add_value<A6>::type B6;
+ typedef list6<B1, B2, B3, B4, B5, B6> type;
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct list_av_7
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef typename add_value<A4>::type B4;
+ typedef typename add_value<A5>::type B5;
+ typedef typename add_value<A6>::type B6;
+ typedef typename add_value<A7>::type B7;
+ typedef list7<B1, B2, B3, B4, B5, B6, B7> type;
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct list_av_8
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef typename add_value<A4>::type B4;
+ typedef typename add_value<A5>::type B5;
+ typedef typename add_value<A6>::type B6;
+ typedef typename add_value<A7>::type B7;
+ typedef typename add_value<A8>::type B8;
+ typedef list8<B1, B2, B3, B4, B5, B6, B7, B8> type;
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct list_av_9
+{
+ typedef typename add_value<A1>::type B1;
+ typedef typename add_value<A2>::type B2;
+ typedef typename add_value<A3>::type B3;
+ typedef typename add_value<A4>::type B4;
+ typedef typename add_value<A5>::type B5;
+ typedef typename add_value<A6>::type B6;
+ typedef typename add_value<A7>::type B7;
+ typedef typename add_value<A8>::type B8;
+ typedef typename add_value<A9>::type B9;
+ typedef list9<B1, B2, B3, B4, B5, B6, B7, B8, B9> type;
+};
+
+// operator!
+
+struct logical_not
+{
+ template<class V> bool operator()(V const & v) const { return !v; }
+};
+
+template<class R, class F, class L>
+ bind_t< bool, logical_not, list1< bind_t<R, F, L> > >
+ operator! (bind_t<R, F, L> const & f)
+{
+ typedef list1< bind_t<R, F, L> > list_type;
+ return bind_t<bool, logical_not, list_type> ( logical_not(), list_type(f) );
+}
+
+// relational operators
+
+#define BOOST_BIND_OPERATOR( op, name ) \
+\
+struct name \
+{ \
+ template<class V, class W> bool operator()(V const & v, W const & w) const { return v op w; } \
+}; \
+ \
+template<class R, class F, class L, class A2> \
+ bind_t< bool, name, list2< bind_t<R, F, L>, typename add_value<A2>::type > > \
+ operator op (bind_t<R, F, L> const & f, A2 a2) \
+{ \
+ typedef typename add_value<A2>::type B2; \
+ typedef list2< bind_t<R, F, L>, B2> list_type; \
+ return bind_t<bool, name, list_type> ( name(), list_type(f, a2) ); \
+}
+
+BOOST_BIND_OPERATOR( ==, equal )
+BOOST_BIND_OPERATOR( !=, not_equal )
+
+BOOST_BIND_OPERATOR( <, less )
+BOOST_BIND_OPERATOR( <=, less_equal )
+
+BOOST_BIND_OPERATOR( >, greater )
+BOOST_BIND_OPERATOR( >=, greater_equal )
+
+BOOST_BIND_OPERATOR( &&, logical_and )
+BOOST_BIND_OPERATOR( ||, logical_or )
+
+#undef BOOST_BIND_OPERATOR
+
+#if defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3)
+
+// resolve ambiguity with rel_ops
+
+#define BOOST_BIND_OPERATOR( op, name ) \
+\
+template<class R, class F, class L> \
+ bind_t< bool, name, list2< bind_t<R, F, L>, bind_t<R, F, L> > > \
+ operator op (bind_t<R, F, L> const & f, bind_t<R, F, L> const & g) \
+{ \
+ typedef list2< bind_t<R, F, L>, bind_t<R, F, L> > list_type; \
+ return bind_t<bool, name, list_type> ( name(), list_type(f, g) ); \
+}
+
+BOOST_BIND_OPERATOR( !=, not_equal )
+BOOST_BIND_OPERATOR( <=, less_equal )
+BOOST_BIND_OPERATOR( >, greater )
+BOOST_BIND_OPERATOR( >=, greater_equal )
+
+#endif
+
+// visit_each, ADL
+
+#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ ) \
+ && !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
+
+template<class V, class T> void visit_each( V & v, value<T> const & t, int )
+{
+ using boost::visit_each;
+ BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
+}
+
+template<class V, class R, class F, class L> void visit_each( V & v, bind_t<R, F, L> const & t, int )
+{
+ t.accept( v );
+}
+
+#endif
+
+} // namespace _bi
+
+// visit_each, no ADL
+
+#if defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) || defined( __BORLANDC__ ) \
+ || (defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
+
+template<class V, class T> void visit_each( V & v, _bi::value<T> const & t, int )
+{
+ BOOST_BIND_VISIT_EACH( v, t.get(), 0 );
+}
+
+template<class V, class R, class F, class L> void visit_each( V & v, _bi::bind_t<R, F, L> const & t, int )
+{
+ t.accept( v );
+}
+
+#endif
+
+// is_bind_expression
+
+template< class T > struct is_bind_expression
+{
+ enum _vt { value = 0 };
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template< class R, class F, class L > struct is_bind_expression< _bi::bind_t< R, F, L > >
+{
+ enum _vt { value = 1 };
+};
+
+#endif
+
+// bind
+
+#ifndef BOOST_BIND
+#define BOOST_BIND bind
+#endif
+
+// generic function objects
+
+template<class R, class F>
+ _bi::bind_t<R, F, _bi::list0>
+ BOOST_BIND(F f)
+{
+ typedef _bi::list0 list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type());
+}
+
+template<class R, class F, class A1>
+ _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(F f, A1 a1)
+{
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type(a1));
+}
+
+template<class R, class F, class A1, class A2>
+ _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2)
+{
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
+}
+
+template<class R, class F, class A1, class A2, class A3>
+ _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
+{
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4>
+ _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+// generic function objects, alternative syntax
+
+template<class R, class F>
+ _bi::bind_t<R, F, _bi::list0>
+ BOOST_BIND(boost::type<R>, F f)
+{
+ typedef _bi::list0 list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type());
+}
+
+template<class R, class F, class A1>
+ _bi::bind_t<R, F, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1)
+{
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type(a1));
+}
+
+template<class R, class F, class A1, class A2>
+ _bi::bind_t<R, F, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2)
+{
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
+}
+
+template<class R, class F, class A1, class A2, class A3>
+ _bi::bind_t<R, F, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3)
+{
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4>
+ _bi::bind_t<R, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<R, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<R, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<R, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<R, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<class R, class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<R, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(boost::type<R>, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+
+// adaptable function objects
+
+template<class F>
+ _bi::bind_t<_bi::unspecified, F, _bi::list0>
+ BOOST_BIND(F f)
+{
+ typedef _bi::list0 list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type());
+}
+
+template<class F, class A1>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(F f, A1 a1)
+{
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1));
+}
+
+template<class F, class A1, class A2>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2)
+{
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type> (f, list_type(a1, a2));
+}
+
+template<class F, class A1, class A2, class A3>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3)
+{
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3));
+}
+
+template<class F, class A1, class A2, class A3, class A4>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4));
+}
+
+template<class F, class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
+}
+
+template<class F, class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
+}
+
+template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<class F, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<_bi::unspecified, F, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<_bi::unspecified, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+#endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+
+// function pointers
+
+#define BOOST_BIND_CC
+#define BOOST_BIND_ST
+
+#include <boost/bind/bind_cc.hpp>
+
+#undef BOOST_BIND_CC
+#undef BOOST_BIND_ST
+
+#ifdef BOOST_BIND_ENABLE_STDCALL
+
+#define BOOST_BIND_CC __stdcall
+#define BOOST_BIND_ST
+
+#include <boost/bind/bind_cc.hpp>
+
+#undef BOOST_BIND_CC
+#undef BOOST_BIND_ST
+
+#endif
+
+#ifdef BOOST_BIND_ENABLE_FASTCALL
+
+#define BOOST_BIND_CC __fastcall
+#define BOOST_BIND_ST
+
+#include <boost/bind/bind_cc.hpp>
+
+#undef BOOST_BIND_CC
+#undef BOOST_BIND_ST
+
+#endif
+
+#ifdef BOOST_BIND_ENABLE_PASCAL
+
+#define BOOST_BIND_ST pascal
+#define BOOST_BIND_CC
+
+#include <boost/bind/bind_cc.hpp>
+
+#undef BOOST_BIND_ST
+#undef BOOST_BIND_CC
+
+#endif
+
+// member function pointers
+
+#define BOOST_BIND_MF_NAME(X) X
+#define BOOST_BIND_MF_CC
+
+#include <boost/bind/bind_mf_cc.hpp>
+#include <boost/bind/bind_mf2_cc.hpp>
+
+#undef BOOST_BIND_MF_NAME
+#undef BOOST_BIND_MF_CC
+
+#ifdef BOOST_MEM_FN_ENABLE_CDECL
+
+#define BOOST_BIND_MF_NAME(X) X##_cdecl
+#define BOOST_BIND_MF_CC __cdecl
+
+#include <boost/bind/bind_mf_cc.hpp>
+#include <boost/bind/bind_mf2_cc.hpp>
+
+#undef BOOST_BIND_MF_NAME
+#undef BOOST_BIND_MF_CC
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_STDCALL
+
+#define BOOST_BIND_MF_NAME(X) X##_stdcall
+#define BOOST_BIND_MF_CC __stdcall
+
+#include <boost/bind/bind_mf_cc.hpp>
+#include <boost/bind/bind_mf2_cc.hpp>
+
+#undef BOOST_BIND_MF_NAME
+#undef BOOST_BIND_MF_CC
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
+
+#define BOOST_BIND_MF_NAME(X) X##_fastcall
+#define BOOST_BIND_MF_CC __fastcall
+
+#include <boost/bind/bind_mf_cc.hpp>
+#include <boost/bind/bind_mf2_cc.hpp>
+
+#undef BOOST_BIND_MF_NAME
+#undef BOOST_BIND_MF_CC
+
+#endif
+
+// data member pointers
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) || defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ || ( defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, <= 0x610 ) )
+
+template<class R, class T, class A1>
+_bi::bind_t< R, _mfi::dm<R, T>, typename _bi::list_av_1<A1>::type >
+ BOOST_BIND(R T::*f, A1 a1)
+{
+ typedef _mfi::dm<R, T> F;
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<R, F, list_type>( F(f), list_type(a1) );
+}
+
+#else
+
+namespace _bi
+{
+
+template< class Pm, int I > struct add_cref;
+
+template< class M, class T > struct add_cref< M T::*, 0 >
+{
+ typedef M type;
+};
+
+template< class M, class T > struct add_cref< M T::*, 1 >
+{
+ typedef M const & type;
+};
+
+template< class R, class T > struct add_cref< R (T::*) (), 1 >
+{
+ typedef void type;
+};
+
+#if !( defined(__IBMCPP__) && BOOST_WORKAROUND( __IBMCPP__, BOOST_TESTED_AT(600) ) )
+
+template< class R, class T > struct add_cref< R (T::*) () const, 1 >
+{
+ typedef void type;
+};
+
+#endif // __IBMCPP__
+
+template<class R> struct isref
+{
+ enum value_type { value = 0 };
+};
+
+template<class R> struct isref< R& >
+{
+ enum value_type { value = 1 };
+};
+
+template<class R> struct isref< R* >
+{
+ enum value_type { value = 1 };
+};
+
+template<class Pm, class A1> struct dm_result
+{
+ typedef typename add_cref< Pm, 1 >::type type;
+};
+
+template<class Pm, class R, class F, class L> struct dm_result< Pm, bind_t<R, F, L> >
+{
+ typedef typename bind_t<R, F, L>::result_type result_type;
+ typedef typename add_cref< Pm, isref< result_type >::value >::type type;
+};
+
+} // namespace _bi
+
+template< class A1, class M, class T >
+
+_bi::bind_t<
+ typename _bi::dm_result< M T::*, A1 >::type,
+ _mfi::dm<M, T>,
+ typename _bi::list_av_1<A1>::type
+>
+
+BOOST_BIND( M T::*f, A1 a1 )
+{
+ typedef typename _bi::dm_result< M T::*, A1 >::type result_type;
+ typedef _mfi::dm<M, T> F;
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) );
+}
+
+#endif
+
+} // namespace boost
+
+#ifndef BOOST_BIND_NO_PLACEHOLDERS
+
+# include <boost/bind/placeholders.hpp>
+
+#endif
+
+#ifdef BOOST_MSVC
+# pragma warning(default: 4512) // assignment operator could not be generated
+# pragma warning(pop)
+#endif
+
+#endif // #ifndef BOOST_BIND_BIND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/bind/bind_cc.hpp b/3rdParty/Boost/boost/bind/bind_cc.hpp
new file mode 100644
index 0000000..35f8ece
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/bind_cc.hpp
@@ -0,0 +1,117 @@
+//
+// bind/bind_cc.hpp - support for different calling conventions
+//
+// Do not include this header directly.
+//
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+template<class R>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (), _bi::list0>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ())
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) ();
+ typedef _bi::list0 list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type());
+}
+
+template<class R, class B1, class A1>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1), typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1);
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type(a1));
+}
+
+template<class R, class B1, class B2, class A1, class A2>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2), typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2);
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
+}
+
+template<class R,
+ class B1, class B2, class B3,
+ class A1, class A2, class A3>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3), typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3);
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
+}
+
+template<class R,
+ class B1, class B2, class B3, class B4,
+ class A1, class A2, class A3, class A4>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4), typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4);
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
+}
+
+template<class R,
+ class B1, class B2, class B3, class B4, class B5,
+ class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5), typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5);
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
+}
+
+template<class R,
+ class B1, class B2, class B3, class B4, class B5, class B6,
+ class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6), typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6);
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
+}
+
+template<class R,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7), typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7);
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<class R,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8), typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8);
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<class R,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B9,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8, B9), typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9);
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
diff --git a/3rdParty/Boost/boost/bind/bind_mf2_cc.hpp b/3rdParty/Boost/boost/bind/bind_mf2_cc.hpp
new file mode 100644
index 0000000..66476bc
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/bind_mf2_cc.hpp
@@ -0,0 +1,228 @@
+//
+// bind/bind_mf2_cc.hpp - member functions, type<> syntax
+//
+// Do not include this header directly.
+//
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+// 0
+
+template<class Rt2, class R, class T,
+ class A1>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
+}
+
+template<class Rt2, class R, class T,
+ class A1>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
+}
+
+// 1
+
+template<class Rt2, class R, class T,
+ class B1,
+ class A1, class A2>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
+}
+
+template<class Rt2, class R, class T,
+ class B1,
+ class A1, class A2>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
+}
+
+// 2
+
+template<class Rt2, class R, class T,
+ class B1, class B2,
+ class A1, class A2, class A3>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2,
+ class A1, class A2, class A3>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
+}
+
+// 3
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3,
+ class A1, class A2, class A3, class A4>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3,
+ class A1, class A2, class A3, class A4>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
+}
+
+// 4
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4,
+ class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4,
+ class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
+}
+
+// 5
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5,
+ class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5,
+ class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
+}
+
+// 6
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+// 7
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+// 8
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+template<class Rt2, class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
diff --git a/3rdParty/Boost/boost/bind/bind_mf_cc.hpp b/3rdParty/Boost/boost/bind/bind_mf_cc.hpp
new file mode 100644
index 0000000..88be822
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/bind_mf_cc.hpp
@@ -0,0 +1,227 @@
+//
+// bind/bind_mf_cc.hpp - support for different calling conventions
+//
+// Do not include this header directly.
+//
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+// 0
+
+template<class R, class T,
+ class A1>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
+}
+
+template<class R, class T,
+ class A1>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
+ typedef typename _bi::list_av_1<A1>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
+}
+
+// 1
+
+template<class R, class T,
+ class B1,
+ class A1, class A2>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
+}
+
+template<class R, class T,
+ class B1,
+ class A1, class A2>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
+ typedef typename _bi::list_av_2<A1, A2>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
+}
+
+// 2
+
+template<class R, class T,
+ class B1, class B2,
+ class A1, class A2, class A3>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
+}
+
+template<class R, class T,
+ class B1, class B2,
+ class A1, class A2, class A3>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
+ typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
+}
+
+// 3
+
+template<class R, class T,
+ class B1, class B2, class B3,
+ class A1, class A2, class A3, class A4>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
+}
+
+template<class R, class T,
+ class B1, class B2, class B3,
+ class A1, class A2, class A3, class A4>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
+ typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
+}
+
+// 4
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4,
+ class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
+}
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4,
+ class A1, class A2, class A3, class A4, class A5>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
+ typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
+}
+
+// 5
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5,
+ class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
+}
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5,
+ class A1, class A2, class A3, class A4, class A5, class A6>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
+ typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
+}
+
+// 6
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
+ typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
+}
+
+// 7
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
+ typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
+}
+
+// 8
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
+
+template<class R, class T,
+ class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
+ class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+ _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
+ BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+{
+ typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
+ typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
+ return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
+}
diff --git a/3rdParty/Boost/boost/bind/bind_template.hpp b/3rdParty/Boost/boost/bind/bind_template.hpp
new file mode 100644
index 0000000..411d20c
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/bind_template.hpp
@@ -0,0 +1,345 @@
+//
+// bind/bind_template.hpp
+//
+// Do not include this header directly.
+//
+// Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+ typedef typename result_traits<R, F>::type result_type;
+
+ result_type operator()()
+ {
+ list0 a;
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ result_type operator()() const
+ {
+ list0 a;
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1> result_type operator()(A1 & a1)
+ {
+ list1<A1 &> a(a1);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1> result_type operator()(A1 & a1) const
+ {
+ list1<A1 &> a(a1);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1> result_type operator()(A1 const & a1)
+ {
+ list1<A1 const &> a(a1);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1> result_type operator()(A1 const & a1) const
+ {
+ list1<A1 const &> a(a1);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
+ {
+ list2<A1 &, A2 &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
+ {
+ list2<A1 &, A2 &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
+ {
+ list2<A1 const &, A2 &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
+ {
+ list2<A1 const &, A2 &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+
+ template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
+ {
+ list2<A1 &, A2 const &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
+ {
+ list2<A1 &, A2 const &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+
+ template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
+ {
+ list2<A1 const &, A2 const &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
+ {
+ list2<A1 const &, A2 const &> a(a1, a2);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
+ {
+ list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
+ {
+ list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)
+ {
+ list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const
+ {
+ list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
+ {
+ list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
+ {
+ list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4)
+ {
+ list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const
+ {
+ list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
+ {
+ list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
+ {
+ list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5)
+ {
+ list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const
+ {
+ list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
+ {
+ list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
+ {
+ list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6)
+ {
+ list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const
+ {
+ list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
+ {
+ list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
+ {
+ list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7)
+ {
+ list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const
+ {
+ list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
+ {
+ list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
+ {
+ list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8)
+ {
+ list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const
+ {
+ list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
+ {
+ list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
+ {
+ list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9)
+ {
+ list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const
+ {
+ list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+#endif
+
+ template<class A> result_type eval(A & a)
+ {
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class A> result_type eval(A & a) const
+ {
+ BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
+ }
+
+ template<class V> void accept(V & v) const
+ {
+#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
+
+ using boost::visit_each;
+
+#endif
+ BOOST_BIND_VISIT_EACH(v, f_, 0);
+ l_.accept(v);
+ }
+
+ bool compare(this_type const & rhs) const
+ {
+ return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;
+ }
+
+private:
+
+ F f_;
+ L l_;
diff --git a/3rdParty/Boost/boost/bind/mem_fn.hpp b/3rdParty/Boost/boost/bind/mem_fn.hpp
new file mode 100644
index 0000000..956e7d8
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/mem_fn.hpp
@@ -0,0 +1,389 @@
+#ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED
+#define BOOST_BIND_MEM_FN_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// mem_fn.hpp - a generalization of std::mem_fun[_ref]
+//
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2001 David Abrahams
+// Copyright (c) 2003-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
+//
+
+#include <boost/config.hpp>
+#include <boost/get_pointer.hpp>
+#include <boost/detail/workaround.hpp>
+
+namespace boost
+{
+
+#if defined(BOOST_NO_VOID_RETURNS)
+
+#define BOOST_MEM_FN_CLASS_F , class F
+#define BOOST_MEM_FN_TYPEDEF(X)
+
+namespace _mfi // mem_fun_impl
+{
+
+template<class V> struct mf
+{
+
+#define BOOST_MEM_FN_RETURN return
+
+#define BOOST_MEM_FN_NAME(X) inner_##X
+#define BOOST_MEM_FN_CC
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#ifdef BOOST_MEM_FN_ENABLE_CDECL
+
+#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl
+#define BOOST_MEM_FN_CC __cdecl
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_STDCALL
+
+#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall
+#define BOOST_MEM_FN_CC __stdcall
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
+
+#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall
+#define BOOST_MEM_FN_CC __fastcall
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#undef BOOST_MEM_FN_RETURN
+
+}; // struct mf<V>
+
+template<> struct mf<void>
+{
+
+#define BOOST_MEM_FN_RETURN
+
+#define BOOST_MEM_FN_NAME(X) inner_##X
+#define BOOST_MEM_FN_CC
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#ifdef BOOST_MEM_FN_ENABLE_CDECL
+
+#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl
+#define BOOST_MEM_FN_CC __cdecl
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_STDCALL
+
+#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall
+#define BOOST_MEM_FN_CC __stdcall
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
+
+#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall
+#define BOOST_MEM_FN_CC __fastcall
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#undef BOOST_MEM_FN_RETURN
+
+}; // struct mf<void>
+
+#undef BOOST_MEM_FN_CLASS_F
+#undef BOOST_MEM_FN_TYPEDEF_F
+
+#define BOOST_MEM_FN_NAME(X) X
+#define BOOST_MEM_FN_NAME2(X) inner_##X
+#define BOOST_MEM_FN_CC
+
+#include <boost/bind/mem_fn_vw.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_NAME2
+#undef BOOST_MEM_FN_CC
+
+#ifdef BOOST_MEM_FN_ENABLE_CDECL
+
+#define BOOST_MEM_FN_NAME(X) X##_cdecl
+#define BOOST_MEM_FN_NAME2(X) inner_##X##_cdecl
+#define BOOST_MEM_FN_CC __cdecl
+
+#include <boost/bind/mem_fn_vw.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_NAME2
+#undef BOOST_MEM_FN_CC
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_STDCALL
+
+#define BOOST_MEM_FN_NAME(X) X##_stdcall
+#define BOOST_MEM_FN_NAME2(X) inner_##X##_stdcall
+#define BOOST_MEM_FN_CC __stdcall
+
+#include <boost/bind/mem_fn_vw.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_NAME2
+#undef BOOST_MEM_FN_CC
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
+
+#define BOOST_MEM_FN_NAME(X) X##_fastcall
+#define BOOST_MEM_FN_NAME2(X) inner_##X##_fastcall
+#define BOOST_MEM_FN_CC __fastcall
+
+#include <boost/bind/mem_fn_vw.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_NAME2
+#undef BOOST_MEM_FN_CC
+
+#endif
+
+} // namespace _mfi
+
+#else // #ifdef BOOST_NO_VOID_RETURNS
+
+#define BOOST_MEM_FN_CLASS_F
+#define BOOST_MEM_FN_TYPEDEF(X) typedef X;
+
+namespace _mfi
+{
+
+#define BOOST_MEM_FN_RETURN return
+
+#define BOOST_MEM_FN_NAME(X) X
+#define BOOST_MEM_FN_CC
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#ifdef BOOST_MEM_FN_ENABLE_CDECL
+
+#define BOOST_MEM_FN_NAME(X) X##_cdecl
+#define BOOST_MEM_FN_CC __cdecl
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_STDCALL
+
+#define BOOST_MEM_FN_NAME(X) X##_stdcall
+#define BOOST_MEM_FN_CC __stdcall
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
+
+#define BOOST_MEM_FN_NAME(X) X##_fastcall
+#define BOOST_MEM_FN_CC __fastcall
+
+#include <boost/bind/mem_fn_template.hpp>
+
+#undef BOOST_MEM_FN_CC
+#undef BOOST_MEM_FN_NAME
+
+#endif
+
+#undef BOOST_MEM_FN_RETURN
+
+} // namespace _mfi
+
+#undef BOOST_MEM_FN_CLASS_F
+#undef BOOST_MEM_FN_TYPEDEF
+
+#endif // #ifdef BOOST_NO_VOID_RETURNS
+
+#define BOOST_MEM_FN_NAME(X) X
+#define BOOST_MEM_FN_CC
+
+#include <boost/bind/mem_fn_cc.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_CC
+
+#ifdef BOOST_MEM_FN_ENABLE_CDECL
+
+#define BOOST_MEM_FN_NAME(X) X##_cdecl
+#define BOOST_MEM_FN_CC __cdecl
+
+#include <boost/bind/mem_fn_cc.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_CC
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_STDCALL
+
+#define BOOST_MEM_FN_NAME(X) X##_stdcall
+#define BOOST_MEM_FN_CC __stdcall
+
+#include <boost/bind/mem_fn_cc.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_CC
+
+#endif
+
+#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
+
+#define BOOST_MEM_FN_NAME(X) X##_fastcall
+#define BOOST_MEM_FN_CC __fastcall
+
+#include <boost/bind/mem_fn_cc.hpp>
+
+#undef BOOST_MEM_FN_NAME
+#undef BOOST_MEM_FN_CC
+
+#endif
+
+// data member support
+
+namespace _mfi
+{
+
+template<class R, class T> class dm
+{
+public:
+
+ typedef R const & result_type;
+ typedef T const * argument_type;
+
+private:
+
+ typedef R (T::*F);
+ F f_;
+
+ template<class U> R const & call(U & u, T const *) const
+ {
+ return (u.*f_);
+ }
+
+ template<class U> R const & call(U & u, void const *) const
+ {
+ return (get_pointer(u)->*f_);
+ }
+
+public:
+
+ explicit dm(F f): f_(f) {}
+
+ R & operator()(T * p) const
+ {
+ return (p->*f_);
+ }
+
+ R const & operator()(T const * p) const
+ {
+ return (p->*f_);
+ }
+
+ template<class U> R const & operator()(U const & u) const
+ {
+ return call(u, &u);
+ }
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__MWERKS__, < 0x3200)
+
+ R & operator()(T & t) const
+ {
+ return (t.*f_);
+ }
+
+ R const & operator()(T const & t) const
+ {
+ return (t.*f_);
+ }
+
+#endif
+
+ bool operator==(dm const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(dm const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+} // namespace _mfi
+
+template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f)
+{
+ return _mfi::dm<R, T>(f);
+}
+
+} // namespace boost
+
+#endif // #ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/bind/mem_fn_cc.hpp b/3rdParty/Boost/boost/bind/mem_fn_cc.hpp
new file mode 100644
index 0000000..8b6ea0b
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/mem_fn_cc.hpp
@@ -0,0 +1,103 @@
+//
+// bind/mem_fn_cc.hpp - support for different calling conventions
+//
+// Do not include this header directly.
+//
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
+//
+
+template<class R, class T> _mfi::BOOST_MEM_FN_NAME(mf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) ())
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf0)<R, T>(f);
+}
+
+template<class R, class T> _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) () const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T>(f);
+}
+
+template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1>(f);
+}
+
+template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1>(f);
+}
+
+template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2>(f);
+}
+
+template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8))
+{
+ return _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
+}
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const)
+{
+ return _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
+}
diff --git a/3rdParty/Boost/boost/bind/mem_fn_template.hpp b/3rdParty/Boost/boost/bind/mem_fn_template.hpp
new file mode 100644
index 0000000..1db0713
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/mem_fn_template.hpp
@@ -0,0 +1,1020 @@
+//
+// bind/mem_fn_template.hpp
+//
+// Do not include this header directly
+//
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
+//
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+# define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+#endif
+
+// mf0
+
+template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf0)
+{
+public:
+
+ typedef R result_type;
+ typedef T * argument_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ())
+ F f_;
+
+ template<class U> R call(U & u, T const *) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)();
+ }
+
+ template<class U> R call(U & u, void const *) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {}
+
+ R operator()(T * p) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)();
+ }
+
+ template<class U> R operator()(U & u) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u);
+ }
+
+#endif
+
+ R operator()(T & t) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)();
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf0
+
+template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf0)
+{
+public:
+
+ typedef R result_type;
+ typedef T const * argument_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const)
+ F f_;
+
+ template<class U> R call(U & u, T const *) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)();
+ }
+
+ template<class U> R call(U & u, void const *) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)();
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u);
+ }
+
+ R operator()(T const & t) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)();
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf1
+
+template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf1)
+{
+public:
+
+ typedef R result_type;
+ typedef T * first_argument_type;
+ typedef A1 second_argument_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1))
+ F f_;
+
+ template<class U, class B1> R call(U & u, T const *, B1 & b1) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1);
+ }
+
+ template<class U, class B1> R call(U & u, void const *, B1 & b1) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1);
+ }
+
+ template<class U> R operator()(U & u, A1 a1) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf1
+
+template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf1)
+{
+public:
+
+ typedef R result_type;
+ typedef T const * first_argument_type;
+ typedef A1 second_argument_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const)
+ F f_;
+
+ template<class U, class B1> R call(U & u, T const *, B1 & b1) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1);
+ }
+
+ template<class U, class B1> R call(U & u, void const *, B1 & b1) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1);
+ }
+
+ R operator()(T const & t, A1 a1) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf2
+
+template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf2)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2))
+ F f_;
+
+ template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
+ }
+
+ template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf2
+
+template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf2)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const)
+ F f_;
+
+ template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2);
+ }
+
+ template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf3
+
+template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf3)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3))
+ F f_;
+
+ template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
+ }
+
+ template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2, A3 a3) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2, A3 a3) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf3
+
+template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf3)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const)
+ F f_;
+
+ template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3);
+ }
+
+ template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2, A3 a3) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf4
+
+template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf4)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4))
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf4
+
+template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf4)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const)
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf5
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf5)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5))
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf5
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf5)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const)
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf6
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf6)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6))
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf6
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf6)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const)
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf7
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf7)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7))
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf7
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf7)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const)
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {}
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// mf8
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf8)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8))
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {}
+
+ R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+ template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+#ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+#endif
+
+ R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+// cmf8
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf8)
+{
+public:
+
+ typedef R result_type;
+
+private:
+
+ BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const)
+ F f_;
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
+ {
+ BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
+ }
+
+ template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const
+ {
+ BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8);
+ }
+
+public:
+
+ explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {}
+
+ R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+ template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN call(u, &u, a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+ R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const
+ {
+ BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8);
+ }
+
+ bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
+ {
+ return f_ == rhs.f_;
+ }
+
+ bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const
+ {
+ return f_ != rhs.f_;
+ }
+};
+
+#undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS
diff --git a/3rdParty/Boost/boost/bind/mem_fn_vw.hpp b/3rdParty/Boost/boost/bind/mem_fn_vw.hpp
new file mode 100644
index 0000000..f3fc58d
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/mem_fn_vw.hpp
@@ -0,0 +1,130 @@
+//
+// bind/mem_fn_vw.hpp - void return helper wrappers
+//
+// Do not include this header directly
+//
+// Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
+//
+
+template<class R, class T> struct BOOST_MEM_FN_NAME(mf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, R (BOOST_MEM_FN_CC T::*) ()>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) ();
+ explicit BOOST_MEM_FN_NAME(mf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, F>(f) {}
+};
+
+template<class R, class T> struct BOOST_MEM_FN_NAME(cmf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, R (BOOST_MEM_FN_CC T::*) () const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) () const;
+ explicit BOOST_MEM_FN_NAME(cmf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, F>(f) {}
+};
+
+
+template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(mf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1);
+ explicit BOOST_MEM_FN_NAME(mf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, F>(f) {}
+};
+
+template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(cmf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1) const;
+ explicit BOOST_MEM_FN_NAME(cmf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(mf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2);
+ explicit BOOST_MEM_FN_NAME(mf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(cmf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2) const;
+ explicit BOOST_MEM_FN_NAME(cmf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(mf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3);
+ explicit BOOST_MEM_FN_NAME(mf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(cmf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const;
+ explicit BOOST_MEM_FN_NAME(cmf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(mf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4);
+ explicit BOOST_MEM_FN_NAME(mf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(cmf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const;
+ explicit BOOST_MEM_FN_NAME(cmf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(mf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5);
+ explicit BOOST_MEM_FN_NAME(mf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(cmf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const;
+ explicit BOOST_MEM_FN_NAME(cmf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(mf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6);
+ explicit BOOST_MEM_FN_NAME(mf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(cmf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const;
+ explicit BOOST_MEM_FN_NAME(cmf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(mf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7);
+ explicit BOOST_MEM_FN_NAME(mf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(cmf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const;
+ explicit BOOST_MEM_FN_NAME(cmf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {}
+};
+
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(mf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8)>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8);
+ explicit BOOST_MEM_FN_NAME(mf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {}
+};
+
+template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(cmf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8) const>
+{
+ typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const;
+ explicit BOOST_MEM_FN_NAME(cmf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {}
+};
+
diff --git a/3rdParty/Boost/boost/bind/placeholders.hpp b/3rdParty/Boost/boost/bind/placeholders.hpp
new file mode 100644
index 0000000..37d01db
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/placeholders.hpp
@@ -0,0 +1,69 @@
+#ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
+#define BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// bind/placeholders.hpp - _N definitions
+//
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+#include <boost/bind/arg.hpp>
+#include <boost/config.hpp>
+
+namespace
+{
+
+#if defined(__BORLANDC__) || defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 400)
+
+static inline boost::arg<1> _1() { return boost::arg<1>(); }
+static inline boost::arg<2> _2() { return boost::arg<2>(); }
+static inline boost::arg<3> _3() { return boost::arg<3>(); }
+static inline boost::arg<4> _4() { return boost::arg<4>(); }
+static inline boost::arg<5> _5() { return boost::arg<5>(); }
+static inline boost::arg<6> _6() { return boost::arg<6>(); }
+static inline boost::arg<7> _7() { return boost::arg<7>(); }
+static inline boost::arg<8> _8() { return boost::arg<8>(); }
+static inline boost::arg<9> _9() { return boost::arg<9>(); }
+
+#elif defined(BOOST_MSVC) || (defined(__DECCXX_VER) && __DECCXX_VER <= 60590031) || defined(__MWERKS__) || \
+ defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ == 400)
+
+static boost::arg<1> _1;
+static boost::arg<2> _2;
+static boost::arg<3> _3;
+static boost::arg<4> _4;
+static boost::arg<5> _5;
+static boost::arg<6> _6;
+static boost::arg<7> _7;
+static boost::arg<8> _8;
+static boost::arg<9> _9;
+
+#else
+
+boost::arg<1> _1;
+boost::arg<2> _2;
+boost::arg<3> _3;
+boost::arg<4> _4;
+boost::arg<5> _5;
+boost::arg<6> _6;
+boost::arg<7> _7;
+boost::arg<8> _8;
+boost::arg<9> _9;
+
+#endif
+
+} // unnamed namespace
+
+#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/bind/storage.hpp b/3rdParty/Boost/boost/bind/storage.hpp
new file mode 100644
index 0000000..be490b0
--- /dev/null
+++ b/3rdParty/Boost/boost/bind/storage.hpp
@@ -0,0 +1,475 @@
+#ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
+#define BOOST_BIND_STORAGE_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// bind/storage.hpp
+//
+// boost/bind.hpp support header, optimized storage
+//
+// Copyright (c) 2006 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://www.boost.org/libs/bind/bind.html for documentation.
+//
+
+#include <boost/config.hpp>
+#include <boost/bind/arg.hpp>
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4512) // assignment operator could not be generated
+#endif
+
+namespace boost
+{
+
+namespace _bi
+{
+
+// 1
+
+template<class A1> struct storage1
+{
+ explicit storage1( A1 a1 ): a1_( a1 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ BOOST_BIND_VISIT_EACH(v, a1_, 0);
+ }
+
+ A1 a1_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( __BORLANDC__ )
+
+template<int I> struct storage1< boost::arg<I> >
+{
+ explicit storage1( boost::arg<I> ) {}
+
+ template<class V> void accept(V &) const { }
+
+ static boost::arg<I> a1_() { return boost::arg<I>(); }
+};
+
+template<int I> struct storage1< boost::arg<I> (*) () >
+{
+ explicit storage1( boost::arg<I> (*) () ) {}
+
+ template<class V> void accept(V &) const { }
+
+ static boost::arg<I> a1_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 2
+
+template<class A1, class A2> struct storage2: public storage1<A1>
+{
+ typedef storage1<A1> inherited;
+
+ storage2( A1 a1, A2 a2 ): storage1<A1>( a1 ), a2_( a2 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a2_, 0);
+ }
+
+ A2 a2_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, int I> struct storage2< A1, boost::arg<I> >: public storage1<A1>
+{
+ typedef storage1<A1> inherited;
+
+ storage2( A1 a1, boost::arg<I> ): storage1<A1>( a1 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a2_() { return boost::arg<I>(); }
+};
+
+template<class A1, int I> struct storage2< A1, boost::arg<I> (*) () >: public storage1<A1>
+{
+ typedef storage1<A1> inherited;
+
+ storage2( A1 a1, boost::arg<I> (*) () ): storage1<A1>( a1 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a2_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 3
+
+template<class A1, class A2, class A3> struct storage3: public storage2< A1, A2 >
+{
+ typedef storage2<A1, A2> inherited;
+
+ storage3( A1 a1, A2 a2, A3 a3 ): storage2<A1, A2>( a1, a2 ), a3_( a3 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a3_, 0);
+ }
+
+ A3 a3_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> >: public storage2< A1, A2 >
+{
+ typedef storage2<A1, A2> inherited;
+
+ storage3( A1 a1, A2 a2, boost::arg<I> ): storage2<A1, A2>( a1, a2 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a3_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> (*) () >: public storage2< A1, A2 >
+{
+ typedef storage2<A1, A2> inherited;
+
+ storage3( A1 a1, A2 a2, boost::arg<I> (*) () ): storage2<A1, A2>( a1, a2 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a3_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 4
+
+template<class A1, class A2, class A3, class A4> struct storage4: public storage3< A1, A2, A3 >
+{
+ typedef storage3<A1, A2, A3> inherited;
+
+ storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3<A1, A2, A3>( a1, a2, a3 ), a4_( a4 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a4_, 0);
+ }
+
+ A4 a4_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> >: public storage3< A1, A2, A3 >
+{
+ typedef storage3<A1, A2, A3> inherited;
+
+ storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a4_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> (*) () >: public storage3< A1, A2, A3 >
+{
+ typedef storage3<A1, A2, A3> inherited;
+
+ storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> (*) () ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a4_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 5
+
+template<class A1, class A2, class A3, class A4, class A5> struct storage5: public storage4< A1, A2, A3, A4 >
+{
+ typedef storage4<A1, A2, A3, A4> inherited;
+
+ storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ), a5_( a5 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a5_, 0);
+ }
+
+ A5 a5_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> >: public storage4< A1, A2, A3, A4 >
+{
+ typedef storage4<A1, A2, A3, A4> inherited;
+
+ storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a5_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> (*) () >: public storage4< A1, A2, A3, A4 >
+{
+ typedef storage4<A1, A2, A3, A4> inherited;
+
+ storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> (*) () ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a5_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 6
+
+template<class A1, class A2, class A3, class A4, class A5, class A6> struct storage6: public storage5< A1, A2, A3, A4, A5 >
+{
+ typedef storage5<A1, A2, A3, A4, A5> inherited;
+
+ storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ), a6_( a6 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a6_, 0);
+ }
+
+ A6 a6_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> >: public storage5< A1, A2, A3, A4, A5 >
+{
+ typedef storage5<A1, A2, A3, A4, A5> inherited;
+
+ storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a6_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> (*) () >: public storage5< A1, A2, A3, A4, A5 >
+{
+ typedef storage5<A1, A2, A3, A4, A5> inherited;
+
+ storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> (*) () ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a6_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 7
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct storage7: public storage6< A1, A2, A3, A4, A5, A6 >
+{
+ typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
+
+ storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a7_, 0);
+ }
+
+ A7 a7_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> >: public storage6< A1, A2, A3, A4, A5, A6 >
+{
+ typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
+
+ storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a7_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> (*) () >: public storage6< A1, A2, A3, A4, A5, A6 >
+{
+ typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
+
+ storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> (*) () ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a7_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 8
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 >
+{
+ typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
+
+ storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a8_, 0);
+ }
+
+ A8 a8_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
+{
+ typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
+
+ storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a8_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
+{
+ typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
+
+ storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> (*) () ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a8_() { return boost::arg<I>(); }
+};
+
+#endif
+
+// 9
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
+{
+ typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
+
+ storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ BOOST_BIND_VISIT_EACH(v, a9_, 0);
+ }
+
+ A9 a9_;
+};
+
+#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
+{
+ typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
+
+ storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a9_() { return boost::arg<I>(); }
+};
+
+template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
+{
+ typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
+
+ storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> (*) () ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
+
+ template<class V> void accept(V & v) const
+ {
+ inherited::accept(v);
+ }
+
+ static boost::arg<I> a9_() { return boost::arg<I>(); }
+};
+
+#endif
+
+} // namespace _bi
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(default: 4512) // assignment operator could not be generated
+# pragma warning(pop)
+#endif
+
+#endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/call_traits.hpp b/3rdParty/Boost/boost/call_traits.hpp
new file mode 100644
index 0000000..5253a6d
--- /dev/null
+++ b/3rdParty/Boost/boost/call_traits.hpp
@@ -0,0 +1,24 @@
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/utility for most recent version including documentation.
+
+// See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp
+// for full copyright notices.
+
+#ifndef BOOST_CALL_TRAITS_HPP
+#define BOOST_CALL_TRAITS_HPP
+
+#ifndef BOOST_CONFIG_HPP
+#include <boost/config.hpp>
+#endif
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/detail/ob_call_traits.hpp>
+#else
+#include <boost/detail/call_traits.hpp>
+#endif
+
+#endif // BOOST_CALL_TRAITS_HPP
diff --git a/3rdParty/Boost/boost/cerrno.hpp b/3rdParty/Boost/boost/cerrno.hpp
new file mode 100644
index 0000000..6f26698
--- /dev/null
+++ b/3rdParty/Boost/boost/cerrno.hpp
@@ -0,0 +1,331 @@
+// Boost cerrno.hpp header -------------------------------------------------//
+
+// Copyright Beman Dawes 2005.
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See library home page at http://www.boost.org/libs/system
+
+#ifndef BOOST_CERRNO_HPP
+#define BOOST_CERRNO_HPP
+
+#include <cerrno>
+
+// supply errno values likely to be missing, particularly on Windows
+
+#ifndef EAFNOSUPPORT
+#define EAFNOSUPPORT 9901
+#endif
+
+#ifndef EADDRINUSE
+#define EADDRINUSE 9902
+#endif
+
+#ifndef EADDRNOTAVAIL
+#define EADDRNOTAVAIL 9903
+#endif
+
+#ifndef EISCONN
+#define EISCONN 9904
+#endif
+
+#ifndef EBADMSG
+#define EBADMSG 9905
+#endif
+
+#ifndef ECONNABORTED
+#define ECONNABORTED 9906
+#endif
+
+#ifndef EALREADY
+#define EALREADY 9907
+#endif
+
+#ifndef ECONNREFUSED
+#define ECONNREFUSED 9908
+#endif
+
+#ifndef ECONNRESET
+#define ECONNRESET 9909
+#endif
+
+#ifndef EDESTADDRREQ
+#define EDESTADDRREQ 9910
+#endif
+
+#ifndef EHOSTUNREACH
+#define EHOSTUNREACH 9911
+#endif
+
+#ifndef EIDRM
+#define EIDRM 9912
+#endif
+
+#ifndef EMSGSIZE
+#define EMSGSIZE 9913
+#endif
+
+#ifndef ENETDOWN
+#define ENETDOWN 9914
+#endif
+
+#ifndef ENETRESET
+#define ENETRESET 9915
+#endif
+
+#ifndef ENETUNREACH
+#define ENETUNREACH 9916
+#endif
+
+#ifndef ENOBUFS
+#define ENOBUFS 9917
+#endif
+
+#ifndef ENOLINK
+#define ENOLINK 9918
+#endif
+
+#ifndef ENODATA
+#define ENODATA 9919
+#endif
+
+#ifndef ENOMSG
+#define ENOMSG 9920
+#endif
+
+#ifndef ENOPROTOOPT
+#define ENOPROTOOPT 9921
+#endif
+
+#ifndef ENOSR
+#define ENOSR 9922
+#endif
+
+#ifndef ENOTSOCK
+#define ENOTSOCK 9923
+#endif
+
+#ifndef ENOSTR
+#define ENOSTR 9924
+#endif
+
+#ifndef ENOTCONN
+#define ENOTCONN 9925
+#endif
+
+#ifndef ENOTSUP
+#define ENOTSUP 9926
+#endif
+
+#ifndef ECANCELED
+#define ECANCELED 9927
+#endif
+
+#ifndef EINPROGRESS
+#define EINPROGRESS 9928
+#endif
+
+#ifndef EOPNOTSUPP
+#define EOPNOTSUPP 9929
+#endif
+
+#ifndef EWOULDBLOCK
+#define EWOULDBLOCK 9930
+#endif
+
+#ifndef EOWNERDEAD
+#define EOWNERDEAD 9931
+#endif
+
+#ifndef EPROTO
+#define EPROTO 9932
+#endif
+
+#ifndef EPROTONOSUPPORT
+#define EPROTONOSUPPORT 9933
+#endif
+
+#ifndef ENOTRECOVERABLE
+#define ENOTRECOVERABLE 9934
+#endif
+
+#ifndef ETIME
+#define ETIME 9935
+#endif
+
+#ifndef ETXTBSY
+#define ETXTBSY 9936
+#endif
+
+#ifndef ETIMEDOUT
+#define ETIMEDOUT 9938
+#endif
+
+#ifndef ELOOP
+#define ELOOP 9939
+#endif
+
+#ifndef EOVERFLOW
+#define EOVERFLOW 9940
+#endif
+
+#ifndef EPROTOTYPE
+#define EPROTOTYPE 9941
+#endif
+
+#ifndef ENOSYS
+#define ENOSYS 9942
+#endif
+
+#ifndef EINVAL
+#define EINVAL 9943
+#endif
+
+#ifndef ERANGE
+#define ERANGE 9944
+#endif
+
+#ifndef EILSEQ
+#define EILSEQ 9945
+#endif
+
+// Windows Mobile doesn't appear to define these:
+
+#ifndef E2BIG
+#define E2BIG 9946
+#endif
+
+#ifndef EDOM
+#define EDOM 9947
+#endif
+
+#ifndef EFAULT
+#define EFAULT 9948
+#endif
+
+#ifndef EBADF
+#define EBADF 9949
+#endif
+
+#ifndef EPIPE
+#define EPIPE 9950
+#endif
+
+#ifndef EXDEV
+#define EXDEV 9951
+#endif
+
+#ifndef EBUSY
+#define EBUSY 9952
+#endif
+
+#ifndef ENOTEMPTY
+#define ENOTEMPTY 9953
+#endif
+
+#ifndef ENOEXEC
+#define ENOEXEC 9954
+#endif
+
+#ifndef EEXIST
+#define EEXIST 9955
+#endif
+
+#ifndef EFBIG
+#define EFBIG 9956
+#endif
+
+#ifndef ENAMETOOLONG
+#define ENAMETOOLONG 9957
+#endif
+
+#ifndef ENOTTY
+#define ENOTTY 9958
+#endif
+
+#ifndef EINTR
+#define EINTR 9959
+#endif
+
+#ifndef ESPIPE
+#define ESPIPE 9960
+#endif
+
+#ifndef EIO
+#define EIO 9961
+#endif
+
+#ifndef EISDIR
+#define EISDIR 9962
+#endif
+
+#ifndef ECHILD
+#define ECHILD 9963
+#endif
+
+#ifndef ENOLCK
+#define ENOLCK 9964
+#endif
+
+#ifndef ENOSPC
+#define ENOSPC 9965
+#endif
+
+#ifndef ENXIO
+#define ENXIO 9966
+#endif
+
+#ifndef ENODEV
+#define ENODEV 9967
+#endif
+
+#ifndef ENOENT
+#define ENOENT 9968
+#endif
+
+#ifndef ESRCH
+#define ESRCH 9969
+#endif
+
+#ifndef ENOTDIR
+#define ENOTDIR 9970
+#endif
+
+#ifndef ENOMEM
+#define ENOMEM 9971
+#endif
+
+#ifndef EPERM
+#define EPERM 9972
+#endif
+
+#ifndef EACCES
+#define EACCES 9973
+#endif
+
+#ifndef EROFS
+#define EROFS 9974
+#endif
+
+#ifndef EDEADLK
+#define EDEADLK 9975
+#endif
+
+#ifndef EAGAIN
+#define EAGAIN 9976
+#endif
+
+#ifndef ENFILE
+#define ENFILE 9977
+#endif
+
+#ifndef EMFILE
+#define EMFILE 9978
+#endif
+
+#ifndef EMLINK
+#define EMLINK 9979
+#endif
+
+#endif // include guard
diff --git a/3rdParty/Boost/boost/checked_delete.hpp b/3rdParty/Boost/boost/checked_delete.hpp
new file mode 100644
index 0000000..9bb84e8
--- /dev/null
+++ b/3rdParty/Boost/boost/checked_delete.hpp
@@ -0,0 +1,69 @@
+#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
+#define BOOST_CHECKED_DELETE_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/checked_delete.hpp
+//
+// Copyright (c) 2002, 2003 Peter Dimov
+// Copyright (c) 2003 Daniel Frey
+// Copyright (c) 2003 Howard Hinnant
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/utility/checked_delete.html for documentation.
+//
+
+namespace boost
+{
+
+// verify that types are complete for increased safety
+
+template<class T> inline void checked_delete(T * x)
+{
+ // intentionally complex - simplification causes regressions
+ typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
+ (void) sizeof(type_must_be_complete);
+ delete x;
+}
+
+template<class T> inline void checked_array_delete(T * x)
+{
+ typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
+ (void) sizeof(type_must_be_complete);
+ delete [] x;
+}
+
+template<class T> struct checked_deleter
+{
+ typedef void result_type;
+ typedef T * argument_type;
+
+ void operator()(T * x) const
+ {
+ // boost:: disables ADL
+ boost::checked_delete(x);
+ }
+};
+
+template<class T> struct checked_array_deleter
+{
+ typedef void result_type;
+ typedef T * argument_type;
+
+ void operator()(T * x) const
+ {
+ boost::checked_array_delete(x);
+ }
+};
+
+} // namespace boost
+
+#endif // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/concept/assert.hpp b/3rdParty/Boost/boost/concept/assert.hpp
new file mode 100644
index 0000000..80eca81
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/assert.hpp
@@ -0,0 +1,46 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_ASSERT_DWA2006430_HPP
+# define BOOST_CONCEPT_ASSERT_DWA2006430_HPP
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+
+// The old protocol used a constraints() member function in concept
+// checking classes. If the compiler supports SFINAE, we can detect
+// that function and seamlessly support the old concept checking
+// classes. In this release, backward compatibility with the old
+// concept checking classes is enabled by default, where available.
+// The old protocol is deprecated, though, and backward compatibility
+// will no longer be the default in the next release.
+
+# if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT) \
+ && !defined(BOOST_NO_SFINAE) \
+ \
+ && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \
+ && !(BOOST_WORKAROUND(__GNUC__, == 2))
+
+// Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to
+// check for the presence of particularmember functions.
+
+# define BOOST_OLD_CONCEPT_SUPPORT
+
+# endif
+
+# ifdef BOOST_MSVC
+# include <boost/concept/detail/msvc.hpp>
+# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# include <boost/concept/detail/borland.hpp>
+# else
+# include <boost/concept/detail/general.hpp>
+# endif
+
+ // Usage, in class or function context:
+ //
+ // BOOST_CONCEPT_ASSERT((UnaryFunctionConcept<F,bool,int>));
+ //
+# define BOOST_CONCEPT_ASSERT(ModelInParens) \
+ BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
+
+#endif // BOOST_CONCEPT_ASSERT_DWA2006430_HPP
diff --git a/3rdParty/Boost/boost/concept/detail/borland.hpp b/3rdParty/Boost/boost/concept/detail/borland.hpp
new file mode 100644
index 0000000..59fec55
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/detail/borland.hpp
@@ -0,0 +1,29 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+# define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace concept {
+
+template <class ModelFnPtr>
+struct require;
+
+template <class Model>
+struct require<void(*)(Model)>
+{
+ enum { instantiate = sizeof((((Model*)0)->~Model()), 3) };
+};
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+ enum \
+ { \
+ BOOST_PP_CAT(boost_concept_check,__LINE__) = \
+ boost::concept::require<ModelFnPtr>::instantiate \
+ }
+
+}} // namespace boost::concept
+
+#endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
diff --git a/3rdParty/Boost/boost/concept/detail/concept_def.hpp b/3rdParty/Boost/boost/concept/detail/concept_def.hpp
new file mode 100644
index 0000000..79f628e
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/detail/concept_def.hpp
@@ -0,0 +1,51 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+# define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+# include <boost/preprocessor/seq/for_each_i.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/cat.hpp>
+#endif // BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+
+// BOOST_concept(SomeName, (p1)(p2)...(pN))
+//
+// Expands to "template <class p1, class p2, ...class pN> struct SomeName"
+//
+// Also defines an equivalent SomeNameConcept for backward compatibility.
+// Maybe in the next release we can kill off the "Concept" suffix for good.
+#if BOOST_WORKAROUND(__GNUC__, <= 3)
+# define BOOST_concept(name, params) \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name; /* forward declaration */ \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct BOOST_PP_CAT(name,Concept) \
+ : name< BOOST_PP_SEQ_ENUM(params) > \
+ { \
+ /* at least 2.96 and 3.4.3 both need this */ \
+ BOOST_PP_CAT(name,Concept)(); \
+ }; \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name
+#else
+# define BOOST_concept(name, params) \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name; /* forward declaration */ \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct BOOST_PP_CAT(name,Concept) \
+ : name< BOOST_PP_SEQ_ENUM(params) > \
+ { \
+ }; \
+ \
+ template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) > \
+ struct name
+#endif
+
+// Helper for BOOST_concept, above.
+# define BOOST_CONCEPT_typename(r, ignored, index, t) \
+ BOOST_PP_COMMA_IF(index) typename t
+
diff --git a/3rdParty/Boost/boost/concept/detail/concept_undef.hpp b/3rdParty/Boost/boost/concept/detail/concept_undef.hpp
new file mode 100644
index 0000000..713db89
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/detail/concept_undef.hpp
@@ -0,0 +1,5 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+# undef BOOST_concept_typename
+# undef BOOST_concept
diff --git a/3rdParty/Boost/boost/concept/detail/general.hpp b/3rdParty/Boost/boost/concept/detail/general.hpp
new file mode 100644
index 0000000..f36f9c4
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/detail/general.hpp
@@ -0,0 +1,66 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+# define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+
+# include <boost/preprocessor/cat.hpp>
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# include <boost/concept/detail/has_constraints.hpp>
+# include <boost/mpl/if.hpp>
+# endif
+
+// This implementation works on Comeau and GCC, all the way back to
+// 2.95
+namespace boost { namespace concept {
+
+template <class ModelFn>
+struct requirement_;
+
+namespace detail
+{
+ template <void(*)()> struct instantiate {};
+}
+
+template <class Model>
+struct requirement
+{
+ static void failed() { ((Model*)0)->~Model(); }
+};
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+
+template <class Model>
+struct constraint
+{
+ static void failed() { ((Model*)0)->constraints(); }
+};
+
+template <class Model>
+struct requirement_<void(*)(Model)>
+ : mpl::if_<
+ concept::not_satisfied<Model>
+ , constraint<Model>
+ , requirement<Model>
+ >::type
+{};
+
+# else
+
+// For GCC-2.x, these can't have exactly the same name
+template <class Model>
+struct requirement_<void(*)(Model)>
+ : requirement<Model>
+{};
+
+# endif
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+ typedef ::boost::concept::detail::instantiate< \
+ &::boost::concept::requirement_<ModelFnPtr>::failed> \
+ BOOST_PP_CAT(boost_concept_check,__LINE__)
+
+}}
+
+#endif // BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
diff --git a/3rdParty/Boost/boost/concept/detail/has_constraints.hpp b/3rdParty/Boost/boost/concept/detail/has_constraints.hpp
new file mode 100644
index 0000000..3112b55
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/detail/has_constraints.hpp
@@ -0,0 +1,48 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+
+# include <boost/mpl/bool.hpp>
+# include <boost/detail/workaround.hpp>
+namespace boost { namespace concept {
+
+namespace detail
+{
+
+// Here we implement the metafunction that detects whether a
+// constraints metafunction exists
+ typedef char yes;
+ typedef char (&no)[2];
+
+ template <class Model, void (Model::*)()>
+ struct wrap_constraints {};
+
+#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580)
+ // Work around the following bogus error in Sun Studio 11, by
+ // turning off the has_constraints function entirely:
+ // Error: complex expression not allowed in dependent template
+ // argument expression
+ inline no has_constraints_(...);
+#else
+ template <class Model>
+ inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
+ inline no has_constraints_(...);
+#endif
+}
+
+// This would be called "detail::has_constraints," but it has a strong
+// tendency to show up in error messages.
+template <class Model>
+struct not_satisfied
+{
+ BOOST_STATIC_CONSTANT(
+ bool
+ , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) );
+ typedef mpl::bool_<value> type;
+};
+
+}} // namespace boost::concept::detail
+
+#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
diff --git a/3rdParty/Boost/boost/concept/detail/msvc.hpp b/3rdParty/Boost/boost/concept/detail/msvc.hpp
new file mode 100644
index 0000000..3aadb79
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/detail/msvc.hpp
@@ -0,0 +1,92 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+
+# include <boost/preprocessor/cat.hpp>
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# include <boost/concept/detail/has_constraints.hpp>
+# include <boost/mpl/if.hpp>
+# endif
+
+
+namespace boost { namespace concept {
+
+template <class Model>
+struct check
+{
+ virtual void failed(Model* x)
+ {
+ x->~Model();
+ }
+};
+
+# ifdef BOOST_OLD_CONCEPT_SUPPORT
+
+namespace detail
+{
+ // No need for a virtual function here, since evaluating
+ // not_satisfied below will have already instantiated the
+ // constraints() member.
+ struct constraint {};
+}
+
+template <class Model>
+struct require
+ : mpl::if_c<
+ not_satisfied<Model>::value
+ , detail::constraint
+ , check<Model>
+ >::type
+{};
+
+# else
+
+template <class Model>
+struct require
+ : check<Model>
+{};
+
+# endif
+
+# if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+
+//
+// The iterator library sees some really strange errors unless we
+// do things this way.
+//
+template <class Model>
+struct require<void(*)(Model)>
+{
+ virtual void failed(Model*)
+ {
+ require<Model>();
+ }
+};
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+enum \
+{ \
+ BOOST_PP_CAT(boost_concept_check,__LINE__) = \
+ sizeof(::boost::concept::require<ModelFnPtr>) \
+}
+
+# else // Not vc-7.1
+
+template <class Model>
+require<Model>
+require_(void(*)(Model));
+
+# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr ) \
+enum \
+{ \
+ BOOST_PP_CAT(boost_concept_check,__LINE__) = \
+ sizeof(::boost::concept::require_((ModelFnPtr)0)) \
+}
+
+# endif
+}}
+
+#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
diff --git a/3rdParty/Boost/boost/concept/usage.hpp b/3rdParty/Boost/boost/concept/usage.hpp
new file mode 100644
index 0000000..9af8ca3
--- /dev/null
+++ b/3rdParty/Boost/boost/concept/usage.hpp
@@ -0,0 +1,43 @@
+// Copyright David Abrahams 2006. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP
+# define BOOST_CONCEPT_USAGE_DWA2006919_HPP
+
+# include <boost/concept/assert.hpp>
+# include <boost/detail/workaround.hpp>
+
+namespace boost { namespace concept {
+
+# if BOOST_WORKAROUND(__GNUC__, == 2)
+
+# define BOOST_CONCEPT_USAGE(model) ~model()
+
+# else
+
+template <class Model>
+struct usage_requirements
+{
+ ~usage_requirements() { ((Model*)0)->~Model(); }
+};
+
+# if BOOST_WORKAROUND(__GNUC__, <= 3)
+
+# define BOOST_CONCEPT_USAGE(model) \
+ model(); /* at least 2.96 and 3.4.3 both need this :( */ \
+ BOOST_CONCEPT_ASSERT((boost::concept::usage_requirements<model>)); \
+ ~model()
+
+# else
+
+# define BOOST_CONCEPT_USAGE(model) \
+ BOOST_CONCEPT_ASSERT((boost::concept::usage_requirements<model>)); \
+ ~model()
+
+# endif
+
+# endif
+
+}} // namespace boost::concept
+
+#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP
diff --git a/3rdParty/Boost/boost/concept_check.hpp b/3rdParty/Boost/boost/concept_check.hpp
new file mode 100644
index 0000000..12ec2ad
--- /dev/null
+++ b/3rdParty/Boost/boost/concept_check.hpp
@@ -0,0 +1,998 @@
+//
+// (C) Copyright Jeremy Siek 2000.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// Revision History:
+// 05 May 2001: Workarounds for HP aCC from Thomas Matelich. (Jeremy Siek)
+// 02 April 2001: Removed limits header altogether. (Jeremy Siek)
+// 01 April 2001: Modified to use new <boost/limits.hpp> header. (JMaddock)
+//
+
+// See http://www.boost.org/libs/concept_check for documentation.
+
+#ifndef BOOST_CONCEPT_CHECKS_HPP
+# define BOOST_CONCEPT_CHECKS_HPP
+
+# include <boost/concept/assert.hpp>
+
+# include <boost/iterator.hpp>
+# include <boost/type_traits/conversion_traits.hpp>
+# include <utility>
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_void.hpp>
+# include <boost/mpl/assert.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/detail/iterator.hpp>
+
+# include <boost/concept/usage.hpp>
+# include <boost/concept/detail/concept_def.hpp>
+
+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>))
+
+# define BOOST_CLASS_REQUIRE2(type_var1, type_var2, ns, concept) \
+ BOOST_CONCEPT_ASSERT((ns::concept<type_var1,type_var2>))
+
+# define BOOST_CLASS_REQUIRE3(tv1, tv2, tv3, ns, concept) \
+ BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3>))
+
+# 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<signed char> {};
+ template <> struct Integer<unsigned char> {};
+ template <> struct Integer<short> {};
+ template <> struct Integer<unsigned short> {};
+ template <> struct Integer<int> {};
+ template <> struct Integer<unsigned int> {};
+ template <> struct Integer<long> {};
+ template <> struct Integer<unsigned long> {};
+# if defined(BOOST_HAS_LONG_LONG)
+ template <> struct Integer< ::boost::long_long_type> {};
+ template <> struct Integer< ::boost::ulong_long_type> {};
+# elif defined(BOOST_HAS_MS_INT64)
+ template <> struct Integer<__int64> {};
+ template <> struct Integer<unsigned __int64> {};
+# endif
+
+ BOOST_concept(SignedInteger,(T)) {
+ BOOST_CONCEPT_USAGE(SignedInteger) {
+ x.error_type_must_be_a_signed_integer_type();
+ }
+ private:
+ T x;
+ };
+ template <> struct SignedInteger<signed char> { };
+ template <> struct SignedInteger<short> {};
+ template <> struct SignedInteger<int> {};
+ template <> struct SignedInteger<long> {};
+# if defined(BOOST_HAS_LONG_LONG)
+ template <> struct SignedInteger< ::boost::long_long_type> {};
+# elif defined(BOOST_HAS_MS_INT64)
+ template <> struct SignedInteger<__int64> {};
+# endif
+
+ BOOST_concept(UnsignedInteger,(T)) {
+ BOOST_CONCEPT_USAGE(UnsignedInteger) {
+ x.error_type_must_be_an_unsigned_integer_type();
+ }
+ private:
+ T x;
+ };
+
+ template <> struct UnsignedInteger<unsigned char> {};
+ template <> struct UnsignedInteger<unsigned short> {};
+ template <> struct UnsignedInteger<unsigned int> {};
+ template <> struct UnsignedInteger<unsigned long> {};
+# if defined(BOOST_HAS_LONG_LONG)
+ template <> struct UnsignedInteger< ::boost::ulong_long_type> {};
+# elif defined(BOOST_HAS_MS_INT64)
+ template <> struct UnsignedInteger<unsigned __int64> {};
+# endif
+
+ //===========================================================================
+ // Basic Concepts
+
+ BOOST_concept(DefaultConstructible,(TT))
+ {
+ BOOST_CONCEPT_USAGE(DefaultConstructible) {
+ TT a; // require default constructor
+ ignore_unused_variable_warning(a);
+ }
+ };
+
+ BOOST_concept(Assignable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(Assignable) {
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = a; // require assignment operator
+#endif
+ const_constraints(a);
+ }
+ private:
+ void const_constraints(const TT& b) {
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = b; // const required for argument to assignment
+#else
+ ignore_unused_variable_warning(b);
+#endif
+ }
+ private:
+ TT a;
+ };
+
+
+ BOOST_concept(CopyConstructible,(TT))
+ {
+ BOOST_CONCEPT_USAGE(CopyConstructible) {
+ TT a(b); // require copy constructor
+ TT* ptr = &a; // require address of operator
+ const_constraints(a);
+ ignore_unused_variable_warning(ptr);
+ }
+ private:
+ void const_constraints(const TT& a) {
+ TT c(a); // require const copy constructor
+ const TT* ptr = &a; // require const address of operator
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(ptr);
+ }
+ TT b;
+ };
+
+#if (defined _MSC_VER)
+# pragma warning( push )
+# pragma warning( disable : 4510 ) // default constructor could not be generated
+# pragma warning( disable : 4610 ) // object 'class' can never be instantiated - user-defined constructor required
+#endif
+ // The SGI STL version of Assignable requires copy constructor and operator=
+ BOOST_concept(SGIAssignable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(SGIAssignable) {
+ TT b(a);
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = a; // require assignment operator
+#endif
+ const_constraints(a);
+ ignore_unused_variable_warning(b);
+ }
+ private:
+ void const_constraints(const TT& b) {
+ TT c(b);
+#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
+ a = b; // const required for argument to assignment
+#endif
+ ignore_unused_variable_warning(c);
+ }
+ TT a;
+ };
+#if (defined _MSC_VER)
+# pragma warning( pop )
+#endif
+
+ BOOST_concept(Convertible,(X)(Y))
+ {
+ BOOST_CONCEPT_USAGE(Convertible) {
+ Y y = x;
+ ignore_unused_variable_warning(y);
+ }
+ private:
+ X x;
+ };
+
+ // The C++ standard requirements for many concepts talk about return
+ // types that must be "convertible to bool". The problem with this
+ // requirement is that it leaves the door open for evil proxies that
+ // define things like operator|| with strange return types. Two
+ // possible solutions are:
+ // 1) require the return type to be exactly bool
+ // 2) stay with convertible to bool, and also
+ // specify stuff about all the logical operators.
+ // For now we just test for convertible to bool.
+ template <class TT>
+ void require_boolean_expr(const TT& t) {
+ bool x = t;
+ ignore_unused_variable_warning(x);
+ }
+
+ BOOST_concept(EqualityComparable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(EqualityComparable) {
+ require_boolean_expr(a == b);
+ require_boolean_expr(a != b);
+ }
+ private:
+ TT a, b;
+ };
+
+ BOOST_concept(LessThanComparable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(LessThanComparable) {
+ require_boolean_expr(a < b);
+ }
+ private:
+ TT a, b;
+ };
+
+ // This is equivalent to SGI STL's LessThanComparable.
+ BOOST_concept(Comparable,(TT))
+ {
+ BOOST_CONCEPT_USAGE(Comparable) {
+ require_boolean_expr(a < b);
+ require_boolean_expr(a > b);
+ require_boolean_expr(a <= b);
+ require_boolean_expr(a >= b);
+ }
+ private:
+ TT a, b;
+ };
+
+#define BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(OP,NAME) \
+ BOOST_concept(NAME, (First)(Second)) \
+ { \
+ BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } \
+ private: \
+ bool constraints_() { return a OP b; } \
+ First a; \
+ Second b; \
+ }
+
+#define BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(OP,NAME) \
+ BOOST_concept(NAME, (Ret)(First)(Second)) \
+ { \
+ BOOST_CONCEPT_USAGE(NAME) { (void)constraints_(); } \
+ private: \
+ Ret constraints_() { return a OP b; } \
+ First a; \
+ Second b; \
+ }
+
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(==, EqualOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(!=, NotEqualOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<, LessThanOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(<=, LessEqualOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>, GreaterThanOp);
+ BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT(>=, GreaterEqualOp);
+
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(+, PlusOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(*, TimesOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(/, DivideOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, SubtractOp);
+ BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, ModOp);
+
+ //===========================================================================
+ // Function Object Concepts
+
+ BOOST_concept(Generator,(Func)(Return))
+ {
+ BOOST_CONCEPT_USAGE(Generator) { test(is_void<Return>()); }
+
+ private:
+ void test(boost::mpl::false_)
+ {
+ // Do we really want a reference here?
+ const Return& r = f();
+ ignore_unused_variable_warning(r);
+ }
+
+ void test(boost::mpl::true_)
+ {
+ f();
+ }
+
+ Func f;
+ };
+
+ BOOST_concept(UnaryFunction,(Func)(Return)(Arg))
+ {
+ BOOST_CONCEPT_USAGE(UnaryFunction) { test(is_void<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);
+ }
+
+ void test(boost::mpl::true_)
+ {
+ f(arg);
+ }
+
+ Func f;
+ Arg arg;
+ };
+
+ BOOST_concept(BinaryFunction,(Func)(Return)(First)(Second))
+ {
+ BOOST_CONCEPT_USAGE(BinaryFunction) { test(is_void<Return>()); }
+ private:
+ void test(boost::mpl::false_)
+ {
+ f(first,second);
+ Return r = f(first, second); // require operator()
+ (void)r;
+ }
+
+ void test(boost::mpl::true_)
+ {
+ f(first,second);
+ }
+
+ Func f;
+ First first;
+ Second second;
+ };
+
+ BOOST_concept(UnaryPredicate,(Func)(Arg))
+ {
+ BOOST_CONCEPT_USAGE(UnaryPredicate) {
+ require_boolean_expr(f(arg)); // require operator() returning bool
+ }
+ private:
+ Func f;
+ Arg arg;
+ };
+
+ BOOST_concept(BinaryPredicate,(Func)(First)(Second))
+ {
+ BOOST_CONCEPT_USAGE(BinaryPredicate) {
+ require_boolean_expr(f(a, b)); // require operator() returning bool
+ }
+ private:
+ Func f;
+ First a;
+ Second b;
+ };
+
+ // use this when functor is used inside a container class like std::set
+ BOOST_concept(Const_BinaryPredicate,(Func)(First)(Second))
+ : BinaryPredicate<Func, First, Second>
+ {
+ BOOST_CONCEPT_USAGE(Const_BinaryPredicate) {
+ const_constraints(f);
+ }
+ private:
+ void const_constraints(const Func& fun) {
+ // operator() must be a const member function
+ require_boolean_expr(fun(a, b));
+ }
+ Func f;
+ First a;
+ Second b;
+ };
+
+ BOOST_concept(AdaptableGenerator,(Func)(Return))
+ : Generator<Func, typename Func::result_type>
+ {
+ typedef typename Func::result_type result_type;
+
+ BOOST_CONCEPT_USAGE(AdaptableGenerator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
+ }
+ };
+
+ BOOST_concept(AdaptableUnaryFunction,(Func)(Return)(Arg))
+ : UnaryFunction<Func, typename Func::result_type, typename Func::argument_type>
+ {
+ typedef typename Func::argument_type argument_type;
+ typedef typename Func::result_type result_type;
+
+ ~AdaptableUnaryFunction()
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
+ BOOST_CONCEPT_ASSERT((Convertible<Arg, argument_type>));
+ }
+ };
+
+ BOOST_concept(AdaptableBinaryFunction,(Func)(Return)(First)(Second))
+ : BinaryFunction<
+ Func
+ , typename Func::result_type
+ , typename Func::first_argument_type
+ , typename Func::second_argument_type
+ >
+ {
+ typedef typename Func::first_argument_type first_argument_type;
+ typedef typename Func::second_argument_type second_argument_type;
+ typedef typename Func::result_type result_type;
+
+ ~AdaptableBinaryFunction()
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
+ BOOST_CONCEPT_ASSERT((Convertible<First, first_argument_type>));
+ BOOST_CONCEPT_ASSERT((Convertible<Second, second_argument_type>));
+ }
+ };
+
+ BOOST_concept(AdaptablePredicate,(Func)(Arg))
+ : UnaryPredicate<Func, Arg>
+ , AdaptableUnaryFunction<Func, bool, Arg>
+ {
+ };
+
+ BOOST_concept(AdaptableBinaryPredicate,(Func)(First)(Second))
+ : BinaryPredicate<Func, First, Second>
+ , AdaptableBinaryFunction<Func, bool, First, Second>
+ {
+ };
+
+ //===========================================================================
+ // Iterator Concepts
+
+ BOOST_concept(InputIterator,(TT))
+ : Assignable<TT>
+ , EqualityComparable<TT>
+ {
+ typedef typename boost::detail::iterator_traits<TT>::value_type value_type;
+ typedef typename boost::detail::iterator_traits<TT>::difference_type difference_type;
+ typedef typename boost::detail::iterator_traits<TT>::reference reference;
+ typedef typename boost::detail::iterator_traits<TT>::pointer pointer;
+ typedef typename boost::detail::iterator_traits<TT>::iterator_category iterator_category;
+
+ BOOST_CONCEPT_USAGE(InputIterator)
+ {
+ 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
+ i++; // require postincrement operator
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(OutputIterator,(TT)(ValueT))
+ : Assignable<TT>
+ {
+ BOOST_CONCEPT_USAGE(OutputIterator) {
+
+ ++i; // require preincrement operator
+ i++; // require postincrement operator
+ *i++ = t; // require postincrement and assignment
+ }
+ private:
+ TT i, j;
+ ValueT t;
+ };
+
+ BOOST_concept(ForwardIterator,(TT))
+ : InputIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(ForwardIterator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<
+ BOOST_DEDUCED_TYPENAME ForwardIterator::iterator_category
+ , std::forward_iterator_tag
+ >));
+
+ typename InputIterator<TT>::reference r = *i;
+ ignore_unused_variable_warning(r);
+ }
+
+ private:
+ TT i;
+ };
+
+ BOOST_concept(Mutable_ForwardIterator,(TT))
+ : ForwardIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_ForwardIterator) {
+ *i++ = *i; // require postincrement and assignment
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(BidirectionalIterator,(TT))
+ : ForwardIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(BidirectionalIterator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalIterator::iterator_category
+ , std::bidirectional_iterator_tag
+ >));
+
+ --i; // require predecrement operator
+ i--; // require postdecrement operator
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(Mutable_BidirectionalIterator,(TT))
+ : BidirectionalIterator<TT>
+ , Mutable_ForwardIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_BidirectionalIterator)
+ {
+ *i-- = *i; // require postdecrement and assignment
+ }
+ private:
+ TT i;
+ };
+
+ BOOST_concept(RandomAccessIterator,(TT))
+ : BidirectionalIterator<TT>
+ , Comparable<TT>
+ {
+ BOOST_CONCEPT_USAGE(RandomAccessIterator)
+ {
+ BOOST_CONCEPT_ASSERT((Convertible<
+ BOOST_DEDUCED_TYPENAME BidirectionalIterator<TT>::iterator_category
+ , std::random_access_iterator_tag
+ >));
+
+ i += n; // require assignment addition operator
+ i = i + n; i = n + i; // require addition with difference type
+ i -= n; // require assignment subtraction operator
+ i = i - n; // require subtraction with difference type
+ n = i - j; // require difference operator
+ (void)i[n]; // require element access operator
+ }
+
+ private:
+ TT a, b;
+ TT i, j;
+ typename boost::detail::iterator_traits<TT>::difference_type n;
+ };
+
+ BOOST_concept(Mutable_RandomAccessIterator,(TT))
+ : RandomAccessIterator<TT>
+ , Mutable_BidirectionalIterator<TT>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_RandomAccessIterator)
+ {
+ i[n] = *i; // require element access and assignment
+ }
+ private:
+ TT i;
+ typename boost::detail::iterator_traits<TT>::difference_type n;
+ };
+
+ //===========================================================================
+ // Container s
+
+ BOOST_concept(Container,(C))
+ : Assignable<C>
+ {
+ typedef typename C::value_type value_type;
+ typedef typename C::difference_type difference_type;
+ typedef typename C::size_type size_type;
+ typedef typename C::const_reference const_reference;
+ typedef typename C::const_pointer const_pointer;
+ typedef typename C::const_iterator const_iterator;
+
+ BOOST_CONCEPT_USAGE(Container)
+ {
+ BOOST_CONCEPT_ASSERT((InputIterator<const_iterator>));
+ const_constraints(c);
+ }
+
+ private:
+ void const_constraints(const C& cc) {
+ i = cc.begin();
+ i = cc.end();
+ n = cc.size();
+ n = cc.max_size();
+ b = cc.empty();
+ }
+ C c;
+ bool b;
+ const_iterator i;
+ size_type n;
+ };
+
+ BOOST_concept(Mutable_Container,(C))
+ : Container<C>
+ {
+ 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;
+ };
+
+ BOOST_concept(ForwardContainer,(C))
+ : Container<C>
+ {
+ BOOST_CONCEPT_USAGE(ForwardContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ ForwardIterator<
+ typename ForwardContainer::const_iterator
+ >));
+ }
+ };
+
+ BOOST_concept(Mutable_ForwardContainer,(C))
+ : ForwardContainer<C>
+ , Mutable_Container<C>
+ {
+ BOOST_CONCEPT_USAGE(Mutable_ForwardContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ Mutable_ForwardIterator<
+ typename Mutable_ForwardContainer::iterator
+ >));
+ }
+ };
+
+ BOOST_concept(ReversibleContainer,(C))
+ : ForwardContainer<C>
+ {
+ typedef typename
+ C::const_reverse_iterator
+ const_reverse_iterator;
+
+ BOOST_CONCEPT_USAGE(ReversibleContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ BidirectionalIterator<
+ typename ReversibleContainer::const_iterator>));
+
+ BOOST_CONCEPT_ASSERT((BidirectionalIterator<const_reverse_iterator>));
+
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const C& cc)
+ {
+ const_reverse_iterator i = cc.rbegin();
+ i = cc.rend();
+ }
+ C c;
+ };
+
+ BOOST_concept(Mutable_ReversibleContainer,(C))
+ : Mutable_ForwardContainer<C>
+ , 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:
+ C c;
+ };
+
+ BOOST_concept(RandomAccessContainer,(C))
+ : ReversibleContainer<C>
+ {
+ typedef typename C::size_type size_type;
+ typedef typename C::const_reference const_reference;
+
+ BOOST_CONCEPT_USAGE(RandomAccessContainer)
+ {
+ BOOST_CONCEPT_ASSERT((
+ RandomAccessIterator<
+ typename RandomAccessContainer::const_iterator
+ >));
+
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const C& cc)
+ {
+ const_reference r = cc[n];
+ ignore_unused_variable_warning(r);
+ }
+
+ C c;
+ size_type n;
+ };
+
+ BOOST_concept(Mutable_RandomAccessContainer,(C))
+ : Mutable_ReversibleContainer<C>
+ , RandomAccessContainer<C>
+ {
+ private:
+ typedef Mutable_RandomAccessContainer self;
+ public:
+ BOOST_CONCEPT_USAGE(Mutable_RandomAccessContainer)
+ {
+ 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;
+ };
+
+ // A Sequence is inherently mutable
+ BOOST_concept(Sequence,(S))
+ : Mutable_ForwardContainer<S>
+ // Matt Austern's book puts DefaultConstructible here, the C++
+ // standard places it in Container --JGS
+ // ... so why aren't we following the standard? --DWA
+ , DefaultConstructible<S>
+ {
+ BOOST_CONCEPT_USAGE(Sequence)
+ {
+ S
+ c(n),
+ c2(n, t),
+ c3(first, last);
+
+ c.insert(p, t);
+ c.insert(p, n, t);
+ c.insert(p, first, last);
+
+ c.erase(p);
+ c.erase(p, q);
+
+ typename Sequence::reference r = c.front();
+
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(c2);
+ ignore_unused_variable_warning(c3);
+ ignore_unused_variable_warning(r);
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const S& c) {
+ typename Sequence::const_reference r = c.front();
+ ignore_unused_variable_warning(r);
+ }
+
+ typename S::value_type t;
+ typename S::size_type n;
+ typename S::value_type* first, *last;
+ typename S::iterator p, q;
+ };
+
+ BOOST_concept(FrontInsertionSequence,(S))
+ : Sequence<S>
+ {
+ BOOST_CONCEPT_USAGE(FrontInsertionSequence)
+ {
+ c.push_front(t);
+ c.pop_front();
+ }
+ private:
+ S c;
+ typename S::value_type t;
+ };
+
+ BOOST_concept(BackInsertionSequence,(S))
+ : Sequence<S>
+ {
+ BOOST_CONCEPT_USAGE(BackInsertionSequence)
+ {
+ c.push_back(t);
+ c.pop_back();
+ typename BackInsertionSequence::reference r = c.back();
+ ignore_unused_variable_warning(r);
+ const_constraints(c);
+ }
+ private:
+ void const_constraints(const S& cc) {
+ typename BackInsertionSequence::const_reference
+ r = cc.back();
+ ignore_unused_variable_warning(r);
+ };
+ S c;
+ typename S::value_type t;
+ };
+
+ BOOST_concept(AssociativeContainer,(C))
+ : ForwardContainer<C>
+ , DefaultConstructible<C>
+ {
+ typedef typename C::key_type key_type;
+ typedef typename C::key_compare key_compare;
+ typedef typename C::value_compare value_compare;
+ typedef typename C::iterator iterator;
+
+ BOOST_CONCEPT_USAGE(AssociativeContainer)
+ {
+ i = c.find(k);
+ r = c.equal_range(k);
+ c.erase(k);
+ c.erase(i);
+ c.erase(r.first, r.second);
+ const_constraints(c);
+ BOOST_CONCEPT_ASSERT((BinaryPredicate<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:
+ void const_constraints(const C& cc)
+ {
+ ci = cc.find(k);
+ n = cc.count(k);
+ cr = cc.equal_range(k);
+ }
+
+ C c;
+ iterator i;
+ std::pair<iterator,iterator> r;
+ const_iterator ci;
+ std::pair<const_iterator,const_iterator> cr;
+ typename C::key_type k;
+ typename C::size_type n;
+ };
+
+ BOOST_concept(UniqueAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(UniqueAssociativeContainer)
+ {
+ C c(first, last);
+
+ pos_flag = c.insert(t);
+ c.insert(first, last);
+
+ ignore_unused_variable_warning(c);
+ }
+ private:
+ std::pair<typename C::iterator, bool> pos_flag;
+ typename C::value_type t;
+ typename C::value_type* first, *last;
+ };
+
+ BOOST_concept(MultipleAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(MultipleAssociativeContainer)
+ {
+ C c(first, last);
+
+ pos = c.insert(t);
+ c.insert(first, last);
+
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(pos);
+ }
+ private:
+ typename C::iterator pos;
+ typename C::value_type t;
+ typename C::value_type* first, *last;
+ };
+
+ BOOST_concept(SimpleAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(SimpleAssociativeContainer)
+ {
+ typedef typename C::key_type key_type;
+ typedef typename C::value_type value_type;
+ BOOST_MPL_ASSERT((boost::is_same<key_type,value_type>));
+ }
+ };
+
+ BOOST_concept(PairAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(PairAssociativeContainer)
+ {
+ typedef typename C::key_type key_type;
+ typedef typename C::value_type value_type;
+ typedef typename C::mapped_type mapped_type;
+ typedef std::pair<const key_type, mapped_type> required_value_type;
+ BOOST_MPL_ASSERT((boost::is_same<value_type,required_value_type>));
+ }
+ };
+
+ BOOST_concept(SortedAssociativeContainer,(C))
+ : AssociativeContainer<C>
+ , ReversibleContainer<C>
+ {
+ BOOST_CONCEPT_USAGE(SortedAssociativeContainer)
+ {
+ C
+ c(kc),
+ c2(first, last),
+ c3(first, last, kc);
+
+ p = c.upper_bound(k);
+ p = c.lower_bound(k);
+ r = c.equal_range(k);
+
+ c.insert(p, t);
+
+ ignore_unused_variable_warning(c);
+ ignore_unused_variable_warning(c2);
+ ignore_unused_variable_warning(c3);
+ const_constraints(c);
+ }
+
+ void const_constraints(const C& c)
+ {
+ kc = c.key_comp();
+ vc = c.value_comp();
+
+ cp = c.upper_bound(k);
+ cp = c.lower_bound(k);
+ cr = c.equal_range(k);
+ }
+
+ private:
+ typename C::key_compare kc;
+ typename C::value_compare vc;
+ typename C::value_type t;
+ typename C::key_type k;
+ typedef typename C::iterator iterator;
+ typedef typename C::const_iterator const_iterator;
+
+ typedef SortedAssociativeContainer self;
+ iterator p;
+ const_iterator cp;
+ std::pair<typename self::iterator,typename self::iterator> r;
+ std::pair<typename self::const_iterator,typename self::const_iterator> cr;
+ typename C::value_type* first, *last;
+ };
+
+ // HashedAssociativeContainer
+
+} // namespace boost
+
+# include <boost/concept/detail/concept_undef.hpp>
+
+#endif // BOOST_CONCEPT_CHECKS_HPP
+
diff --git a/3rdParty/Boost/boost/config.hpp b/3rdParty/Boost/boost/config.hpp
new file mode 100644
index 0000000..055a278
--- /dev/null
+++ b/3rdParty/Boost/boost/config.hpp
@@ -0,0 +1,70 @@
+// Boost config.hpp configuration header file ------------------------------//
+
+// (C) Copyright John Maddock 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// Boost config.hpp policy and rationale documentation has been moved to
+// http://www.boost.org/libs/config
+//
+// CAUTION: This file is intended to be completely stable -
+// DO NOT MODIFY THIS FILE!
+//
+
+#ifndef BOOST_CONFIG_HPP
+#define BOOST_CONFIG_HPP
+
+// if we don't have a user config, then use the default location:
+#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
+# define BOOST_USER_CONFIG <boost/config/user.hpp>
+#endif
+// include it first:
+#ifdef BOOST_USER_CONFIG
+# include BOOST_USER_CONFIG
+#endif
+
+// if we don't have a compiler config set, try and find one:
+#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include <boost/config/select_compiler_config.hpp>
+#endif
+// if we have a compiler config, include it now:
+#ifdef BOOST_COMPILER_CONFIG
+# include BOOST_COMPILER_CONFIG
+#endif
+
+// if we don't have a std library config set, try and find one:
+#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include <boost/config/select_stdlib_config.hpp>
+#endif
+// if we have a std library config, include it now:
+#ifdef BOOST_STDLIB_CONFIG
+# include BOOST_STDLIB_CONFIG
+#endif
+
+// if we don't have a platform config set, try and find one:
+#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include <boost/config/select_platform_config.hpp>
+#endif
+// if we have a platform config, include it now:
+#ifdef BOOST_PLATFORM_CONFIG
+# include BOOST_PLATFORM_CONFIG
+#endif
+
+// get config suffix code:
+#include <boost/config/suffix.hpp>
+
+#endif // BOOST_CONFIG_HPP
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/abi/borland_prefix.hpp b/3rdParty/Boost/boost/config/abi/borland_prefix.hpp
new file mode 100644
index 0000000..49f4249
--- /dev/null
+++ b/3rdParty/Boost/boost/config/abi/borland_prefix.hpp
@@ -0,0 +1,27 @@
+// (C) Copyright John Maddock 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// for C++ Builder the following options effect the ABI:
+//
+// -b (on or off - effect emum sizes)
+// -Vx (on or off - empty members)
+// -Ve (on or off - empty base classes)
+// -aX (alignment - 5 options).
+// -pX (Calling convention - 4 options)
+// -VmX (member pointer size and layout - 5 options)
+// -VC (on or off, changes name mangling)
+// -Vl (on or off, changes struct layout).
+
+// In addition the following warnings are sufficiently annoying (and
+// unfixable) to have them turned off by default:
+//
+// 8027 - functions containing [for|while] loops are not expanded inline
+// 8026 - functions taking class by value arguments are not expanded inline
+
+#pragma nopushoptwarn
+# pragma option push -Vx -Ve -a8 -b -pc -Vmv -VC- -Vl- -w-8027 -w-8026
+
+
+
diff --git a/3rdParty/Boost/boost/config/abi/borland_suffix.hpp b/3rdParty/Boost/boost/config/abi/borland_suffix.hpp
new file mode 100644
index 0000000..940535f
--- /dev/null
+++ b/3rdParty/Boost/boost/config/abi/borland_suffix.hpp
@@ -0,0 +1,12 @@
+// (C) Copyright John Maddock 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+# pragma option pop
+#pragma nopushoptwarn
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/abi/msvc_prefix.hpp b/3rdParty/Boost/boost/config/abi/msvc_prefix.hpp
new file mode 100644
index 0000000..97f06cd
--- /dev/null
+++ b/3rdParty/Boost/boost/config/abi/msvc_prefix.hpp
@@ -0,0 +1,22 @@
+// (C) Copyright John Maddock 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+//
+// Boost binaries are built with the compiler's default ABI settings,
+// if the user changes their default alignment in the VS IDE then their
+// code will no longer be binary compatible with the bjam built binaries
+// unless this header is included to force Boost code into a consistent ABI.
+//
+// Note that inclusion of this header is only necessary for libraries with
+// separate source, header only libraries DO NOT need this as long as all
+// translation units are built with the same options.
+//
+#if defined(_M_X64)
+# pragma pack(push,16)
+#else
+# pragma pack(push,8)
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/abi/msvc_suffix.hpp b/3rdParty/Boost/boost/config/abi/msvc_suffix.hpp
new file mode 100644
index 0000000..a64d783
--- /dev/null
+++ b/3rdParty/Boost/boost/config/abi/msvc_suffix.hpp
@@ -0,0 +1,8 @@
+// (C) Copyright John Maddock 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#pragma pack(pop)
+
+
diff --git a/3rdParty/Boost/boost/config/abi_prefix.hpp b/3rdParty/Boost/boost/config/abi_prefix.hpp
new file mode 100644
index 0000000..3b13474
--- /dev/null
+++ b/3rdParty/Boost/boost/config/abi_prefix.hpp
@@ -0,0 +1,25 @@
+// abi_prefix header -------------------------------------------------------//
+
+// (c) Copyright John Maddock 2003
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
+# define BOOST_CONFIG_ABI_PREFIX_HPP
+#else
+# error double inclusion of header boost/config/abi_prefix.hpp is an error
+#endif
+
+#include <boost/config.hpp>
+
+// this must occur after all other includes and before any code appears:
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#if defined( __BORLANDC__ )
+#pragma nopushoptwarn
+#endif
+
diff --git a/3rdParty/Boost/boost/config/abi_suffix.hpp b/3rdParty/Boost/boost/config/abi_suffix.hpp
new file mode 100644
index 0000000..9391616
--- /dev/null
+++ b/3rdParty/Boost/boost/config/abi_suffix.hpp
@@ -0,0 +1,27 @@
+// abi_sufffix header -------------------------------------------------------//
+
+// (c) Copyright John Maddock 2003
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+// This header should be #included AFTER code that was preceded by a #include
+// <boost/config/abi_prefix.hpp>.
+
+#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
+# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp
+#else
+# undef BOOST_CONFIG_ABI_PREFIX_HPP
+#endif
+
+// the suffix header occurs after all of our code:
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#if defined( __BORLANDC__ )
+#pragma nopushoptwarn
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/auto_link.hpp b/3rdParty/Boost/boost/config/auto_link.hpp
new file mode 100644
index 0000000..f2eb583
--- /dev/null
+++ b/3rdParty/Boost/boost/config/auto_link.hpp
@@ -0,0 +1,373 @@
+// (C) Copyright John Maddock 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE auto_link.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
+ */
+
+/*************************************************************************
+
+USAGE:
+~~~~~~
+
+Before including this header you must define one or more of define the following macros:
+
+BOOST_LIB_NAME: Required: A string containing the basename of the library,
+ for example boost_regex.
+BOOST_LIB_TOOLSET: Optional: the base name of the toolset.
+BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
+BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
+ of the library selected (useful for debugging).
+BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
+ rather than a mangled-name version.
+
+These macros will be undef'ed at the end of the header, further this header
+has no include guards - so be sure to include it only once from your library!
+
+Algorithm:
+~~~~~~~~~~
+
+Libraries for Borland and Microsoft compilers are automatically
+selected here, the name of the lib is selected according to the following
+formula:
+
+BOOST_LIB_PREFIX
+ + BOOST_LIB_NAME
+ + "_"
+ + BOOST_LIB_TOOLSET
+ + BOOST_LIB_THREAD_OPT
+ + BOOST_LIB_RT_OPT
+ "-"
+ + BOOST_LIB_VERSION
+
+These are defined as:
+
+BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
+
+BOOST_LIB_NAME: The base name of the lib ( for example boost_regex).
+
+BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc).
+
+BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
+
+BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
+ contains one or more of the following letters after
+ a hiphen:
+
+ s static runtime (dynamic if not present).
+ d debug build (release if not present).
+ g debug/diagnostic runtime (release if not present).
+ p STLPort Build.
+
+BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
+
+
+***************************************************************************/
+
+#ifdef __cplusplus
+# ifndef BOOST_CONFIG_HPP
+# include <boost/config.hpp>
+# endif
+#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
+//
+// C language compatability (no, honestly)
+//
+# define BOOST_MSVC _MSC_VER
+# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
+# define BOOST_DO_STRINGIZE(X) #X
+#endif
+//
+// Only include what follows for known and supported compilers:
+//
+#if defined(BOOST_MSVC) \
+ || defined(__BORLANDC__) \
+ || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
+ || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
+
+#ifndef BOOST_VERSION_HPP
+# include <boost/version.hpp>
+#endif
+
+#ifndef BOOST_LIB_NAME
+# error "Macro BOOST_LIB_NAME not set (internal error)"
+#endif
+
+//
+// error check:
+//
+#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
+# pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
+# pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
+# error "Incompatible build options"
+#endif
+//
+// select toolset if not defined already:
+//
+#ifndef BOOST_LIB_TOOLSET
+// Note: no compilers before 1200 are supported
+#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+
+# ifdef UNDER_CE
+ // vc6:
+# define BOOST_LIB_TOOLSET "evc4"
+# else
+ // vc6:
+# define BOOST_LIB_TOOLSET "vc6"
+# endif
+
+#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
+
+ // vc7:
+# define BOOST_LIB_TOOLSET "vc7"
+
+#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+
+ // vc71:
+# define BOOST_LIB_TOOLSET "vc71"
+
+#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1400)
+
+ // vc80:
+# define BOOST_LIB_TOOLSET "vc80"
+
+#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500)
+
+ // vc90:
+# define BOOST_LIB_TOOLSET "vc90"
+
+#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)
+
+ // vc10:
+# define BOOST_LIB_TOOLSET "vc100"
+
+#elif defined(__BORLANDC__)
+
+ // CBuilder 6:
+# define BOOST_LIB_TOOLSET "bcb"
+
+#elif defined(__ICL)
+
+ // Intel C++, no version number:
+# define BOOST_LIB_TOOLSET "iw"
+
+#elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
+
+ // Metrowerks CodeWarrior 8.x
+# define BOOST_LIB_TOOLSET "cw8"
+
+#elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
+
+ // Metrowerks CodeWarrior 9.x
+# define BOOST_LIB_TOOLSET "cw9"
+
+#endif
+#endif // BOOST_LIB_TOOLSET
+
+//
+// select thread opt:
+//
+#if defined(_MT) || defined(__MT__)
+# define BOOST_LIB_THREAD_OPT "-mt"
+#else
+# define BOOST_LIB_THREAD_OPT
+#endif
+
+#if defined(_MSC_VER) || defined(__MWERKS__)
+
+# ifdef _DLL
+
+# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-gdp"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gdp"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-p"
+# endif
+
+# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-gdpn"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gdpn"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-pn"
+# endif
+
+# else
+
+# if defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gd"
+# else
+# define BOOST_LIB_RT_OPT
+# endif
+
+# endif
+
+# else
+
+# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-sgdp"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgdp"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-sp"
+# endif
+
+# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-sgdpn"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgdpn"
+# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-spn"
+# endif
+
+# else
+
+# if defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgd"
+# else
+# define BOOST_LIB_RT_OPT "-s"
+# endif
+
+# endif
+
+# endif
+
+#elif defined(__BORLANDC__)
+
+//
+// figure out whether we want the debug builds or not:
+//
+#if __BORLANDC__ > 0x561
+#pragma defineonoption BOOST_BORLAND_DEBUG -v
+#endif
+//
+// sanity check:
+//
+#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
+#error "Pre-built versions of the Boost libraries are not provided in STLPort-debug form"
+#endif
+
+# ifdef _RTLDLL
+
+# ifdef BOOST_BORLAND_DEBUG
+# define BOOST_LIB_RT_OPT "-d"
+# else
+# define BOOST_LIB_RT_OPT
+# endif
+
+# else
+
+# ifdef BOOST_BORLAND_DEBUG
+# define BOOST_LIB_RT_OPT "-sd"
+# else
+# define BOOST_LIB_RT_OPT "-s"
+# endif
+
+# endif
+
+#endif
+
+//
+// select linkage opt:
+//
+#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
+# define BOOST_LIB_PREFIX
+#elif defined(BOOST_DYN_LINK)
+# error "Mixing a dll boost library with a static runtime is a really bad idea..."
+#else
+# define BOOST_LIB_PREFIX "lib"
+#endif
+
+//
+// now include the lib:
+//
+#if defined(BOOST_LIB_NAME) \
+ && defined(BOOST_LIB_PREFIX) \
+ && defined(BOOST_LIB_TOOLSET) \
+ && defined(BOOST_LIB_THREAD_OPT) \
+ && defined(BOOST_LIB_RT_OPT) \
+ && defined(BOOST_LIB_VERSION)
+
+#ifndef BOOST_AUTO_LINK_NOMANGLE
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
+# endif
+#else
+# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
+# endif
+#endif
+
+#else
+# error "some required macros where not defined (internal logic error)."
+#endif
+
+
+#endif // _MSC_VER || __BORLANDC__
+
+//
+// finally undef any macros we may have set:
+//
+#ifdef BOOST_LIB_PREFIX
+# undef BOOST_LIB_PREFIX
+#endif
+#if defined(BOOST_LIB_NAME)
+# undef BOOST_LIB_NAME
+#endif
+// Don't undef this one: it can be set by the user and should be the
+// same for all libraries:
+//#if defined(BOOST_LIB_TOOLSET)
+//# undef BOOST_LIB_TOOLSET
+//#endif
+#if defined(BOOST_LIB_THREAD_OPT)
+# undef BOOST_LIB_THREAD_OPT
+#endif
+#if defined(BOOST_LIB_RT_OPT)
+# undef BOOST_LIB_RT_OPT
+#endif
+#if defined(BOOST_LIB_LINK_OPT)
+# undef BOOST_LIB_LINK_OPT
+#endif
+#if defined(BOOST_LIB_DEBUG_OPT)
+# undef BOOST_LIB_DEBUG_OPT
+#endif
+#if defined(BOOST_DYN_LINK)
+# undef BOOST_DYN_LINK
+#endif
+#if defined(BOOST_AUTO_LINK_NOMANGLE)
+# undef BOOST_AUTO_LINK_NOMANGLE
+#endif
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/borland.hpp b/3rdParty/Boost/boost/config/compiler/borland.hpp
new file mode 100644
index 0000000..c6413b3
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/borland.hpp
@@ -0,0 +1,267 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Borland C++ compiler setup:
+
+//
+// versions check:
+// we don't support Borland prior to version 5.4:
+#if __BORLANDC__ < 0x540
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+// last known compiler version:
+#if (__BORLANDC__ > 0x610)
+//# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+//# else
+//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+//# endif
+#elif (__BORLANDC__ == 0x600)
+# error "CBuilderX preview compiler is no longer supported"
+#endif
+
+//
+// Support macros to help with standard library detection
+#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
+# define BOOST_BCB_WITH_ROGUE_WAVE
+#elif __BORLANDC__ < 0x570
+# define BOOST_BCB_WITH_STLPORT
+#else
+# define BOOST_BCB_WITH_DINKUMWARE
+#endif
+
+//
+// Version 5.0 and below:
+# if __BORLANDC__ <= 0x0550
+// Borland C++Builder 4 and 5:
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# if __BORLANDC__ == 0x0550
+// Borland C++Builder 5, command-line compiler 5.5:
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# endif
+# endif
+
+// Version 5.51 and below:
+#if (__BORLANDC__ <= 0x551)
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# define BOOST_NO_DEDUCED_TYPENAME
+// workaround for missing WCHAR_MAX/WCHAR_MIN:
+#include <climits>
+#include <cwchar>
+#ifndef WCHAR_MAX
+# define WCHAR_MAX 0xffff
+#endif
+#ifndef WCHAR_MIN
+# define WCHAR_MIN 0
+#endif
+#endif
+
+// Borland C++ Builder 6 and below:
+#if (__BORLANDC__ <= 0x564)
+# define BOOST_NO_INTEGRAL_INT64_T
+
+# ifdef NDEBUG
+ // fix broken <cstring> so that Boost.test works:
+# include <cstring>
+# undef strcmp
+# endif
+ // fix broken errno declaration:
+# include <errno.h>
+# ifndef errno
+# define errno errno
+# endif
+
+#endif
+
+//
+// new bug in 5.61:
+#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
+ // this seems to be needed by the command line compiler, but not the IDE:
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#endif
+
+// Borland C++ Builder 2006 Update 2 and below:
+#if (__BORLANDC__ <= 0x582)
+# define BOOST_NO_SFINAE
+# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+# define BOOST_NO_TEMPLATE_TEMPLATES
+
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+
+# ifdef _WIN32
+# define BOOST_NO_SWPRINTF
+# elif defined(linux) || defined(__linux__) || defined(__linux)
+ // we should really be able to do without this
+ // but the wcs* functions aren't imported into std::
+# define BOOST_NO_STDC_NAMESPACE
+ // _CPPUNWIND doesn't get automatically set for some reason:
+# pragma defineonoption BOOST_CPPUNWIND -x
+# endif
+#endif
+
+// Borland C++ Builder 2007 December 2007 Update and below:
+//#if (__BORLANDC__ <= 0x593)
+#if (__BORLANDC__ <= 0x610) // Beman has asked Alisdair for more info
+ // we shouldn't really need this - but too many things choke
+ // without it, this needs more investigation:
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+
+// Temporary workaround
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif
+
+// Borland C++ Builder 2008 and below:
+#if (__BORLANDC__ <= 0x601)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_ILLEGAL_CV_REFERENCES
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_USING_TEMPLATE
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#endif
+
+//
+// Positive Feature detection
+//
+// Borland C++ Builder 2008 and below:
+#if (__BORLANDC__ >= 0x599)
+# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
+#endif
+//
+// C++0x Macros:
+//
+#if defined( BOOST_CODEGEAR_0X_SUPPORT ) && (__BORLANDC__ >= 0x610)
+# define BOOST_HAS_ALIGNOF
+# define BOOST_HAS_CHAR16_T
+# define BOOST_HAS_CHAR32_T
+# define BOOST_HAS_DECLTYPE
+# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
+# define BOOST_HAS_REF_QUALIFIER
+# define BOOST_HAS_RVALUE_REFS
+# define BOOST_HAS_STATIC_ASSERT
+
+# define BOOST_NO_EXTERN_TEMPLATE
+# define BOOST_NO_SCOPED_ENUMS
+# define BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_NO_CONSTEXPR
+# define BOOST_NO_DEFAULTED_FUNCTIONS
+# define BOOST_NO_DELETED_FUNCTIONS
+# define BOOST_NO_RAW_LITERALS
+# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported
+#else
+# define BOOST_NO_CHAR16_T
+# define BOOST_NO_CHAR32_T
+# define BOOST_NO_DECLTYPE
+# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_EXTERN_TEMPLATE
+# define BOOST_NO_SCOPED_ENUMS
+# define BOOST_NO_STATIC_ASSERT
+# define BOOST_NO_RVALUE_REFERENCES
+# define BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_NO_CONSTEXPR
+# define BOOST_NO_DEFAULTED_FUNCTIONS
+# define BOOST_NO_DELETED_FUNCTIONS
+# define BOOST_NO_RAW_LITERALS
+# define BOOST_NO_UNICODE_LITERALS
+#endif
+
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_INITIALIZER_LISTS
+
+#if __BORLANDC__ >= 0x590
+# define BOOST_HAS_TR1_HASH
+
+# define BOOST_HAS_MACRO_USE_FACET
+#endif
+
+//
+// Post 0x561 we have long long and stdint.h:
+#if __BORLANDC__ >= 0x561
+# ifndef __NO_LONG_LONG
+# define BOOST_HAS_LONG_LONG
+# else
+# define BOOST_NO_LONG_LONG
+# endif
+ // On non-Win32 platforms let the platform config figure this out:
+# ifdef _WIN32
+# define BOOST_HAS_STDINT_H
+# endif
+#endif
+
+// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is
+// defined, then we have 0x560 or greater with the Rogue Wave implementation
+// which presumably has the std::DBL_MAX bug.
+#if defined( BOOST_BCB_WITH_ROGUE_WAVE )
+// <climits> is partly broken, some macros define symbols that are really in
+// namespace std, so you end up having to use illegal constructs like
+// std::DBL_MAX, as a fix we'll just include float.h and have done with:
+#include <float.h>
+#endif
+//
+// __int64:
+//
+#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
+# define BOOST_HAS_MS_INT64
+#endif
+//
+// check for exception handling support:
+//
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+//
+// all versions have a <dirent.h>:
+//
+#ifndef __STRICT_ANSI__
+# define BOOST_HAS_DIRENT_H
+#endif
+//
+// all versions support __declspec:
+//
+#ifndef __STRICT_ANSI__
+# define BOOST_HAS_DECLSPEC
+#endif
+//
+// ABI fixing headers:
+//
+#if __BORLANDC__ < 0x600 // not implemented for version 6 compiler yet
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
+#endif
+#endif
+//
+// Disable Win32 support in ANSI mode:
+//
+#if __BORLANDC__ < 0x600
+# pragma defineonoption BOOST_DISABLE_WIN32 -A
+#elif defined(__STRICT_ANSI__)
+# define BOOST_DISABLE_WIN32
+#endif
+//
+// MSVC compatibility mode does some nasty things:
+// TODO: look up if this doesn't apply to the whole 12xx range
+//
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/codegear.hpp b/3rdParty/Boost/boost/config/compiler/codegear.hpp
new file mode 100644
index 0000000..803d17a
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/codegear.hpp
@@ -0,0 +1,153 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// CodeGear C++ compiler setup:
+
+#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
+// these warnings occur frequently in optimized template code
+# pragma warn -8004 // var assigned value, but never used
+# pragma warn -8008 // condition always true/false
+# pragma warn -8066 // dead code can never execute
+# pragma warn -8104 // static members with ctors not threadsafe
+# pragma warn -8105 // reference member in class without ctors
+#endif
+//
+// versions check:
+// last known and checked version is 0x610
+#if (__CODEGEARC__ > 0x610)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
+// CodeGear C++ Builder 2009
+#if (__CODEGEARC__ <= 0x610)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+# define BOOST_NO_USING_TEMPLATE
+ // we shouldn't really need this - but too many things choke
+ // without it, this needs more investigation:
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
+# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
+
+// Temporary hack, until specific MPL preprocessed headers are generated
+# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+# ifdef NDEBUG
+ // fix broken <cstring> so that Boost.test works:
+# include <cstring>
+# undef strcmp
+# endif
+ // fix broken errno declaration:
+# include <errno.h>
+# ifndef errno
+# define errno errno
+# endif
+
+#endif
+
+//
+// C++0x macros:
+//
+#define BOOST_HAS_CHAR16_T
+#define BOOST_HAS_CHAR32_T
+#define BOOST_HAS_LONG_LONG
+// #define BOOST_HAS_ALIGNOF
+#define BOOST_HAS_DECLTYPE
+#define BOOST_HAS_EXPLICIT_CONVERSION_OPS
+// #define BOOST_HAS_RVALUE_REFS
+#define BOOST_HAS_SCOPED_ENUM
+// #define BOOST_HAS_STATIC_ASSERT
+#define BOOST_HAS_STD_TYPE_TRAITS
+
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// TR1 macros:
+//
+#define BOOST_HAS_TR1_HASH
+#define BOOST_HAS_TR1_TYPE_TRAITS
+#define BOOST_HAS_TR1_UNORDERED_MAP
+#define BOOST_HAS_TR1_UNORDERED_SET
+
+#define BOOST_HAS_MACRO_USE_FACET
+
+#define BOOST_NO_INITIALIZER_LISTS
+
+// On non-Win32 platforms let the platform config figure this out:
+#ifdef _WIN32
+# define BOOST_HAS_STDINT_H
+#endif
+
+//
+// __int64:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_MS_INT64
+#endif
+//
+// check for exception handling support:
+//
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+//
+// all versions have a <dirent.h>:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_DIRENT_H
+#endif
+//
+// all versions support __declspec:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_DECLSPEC
+#endif
+//
+// ABI fixing headers:
+//
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
+#endif
+//
+// Disable Win32 support in ANSI mode:
+//
+# pragma defineonoption BOOST_DISABLE_WIN32 -A
+//
+// MSVC compatibility mode does some nasty things:
+// TODO: look up if this doesn't apply to the whole 12xx range
+//
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
+
diff --git a/3rdParty/Boost/boost/config/compiler/comeau.hpp b/3rdParty/Boost/boost/config/compiler/comeau.hpp
new file mode 100644
index 0000000..278222d
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/comeau.hpp
@@ -0,0 +1,59 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Douglas Gregor 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Beman Dawes 2003.
+// (C) Copyright Jens Maurer 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Comeau C++ compiler setup:
+
+#include "boost/config/compiler/common_edg.hpp"
+
+#if (__COMO_VERSION__ <= 4245)
+
+# if defined(_MSC_VER) && _MSC_VER <= 1300
+# if _MSC_VER > 100
+ // only set this in non-strict mode:
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# endif
+# endif
+
+// Void returns don't work when emulating VC 6 (Peter Dimov)
+// TODO: look up if this doesn't apply to the whole 12xx range
+# if defined(_MSC_VER) && (_MSC_VER < 1300)
+# define BOOST_NO_VOID_RETURNS
+# endif
+
+#endif // version 4245
+
+//
+// enable __int64 support in VC emulation mode
+//
+# if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# define BOOST_HAS_MS_INT64
+# endif
+
+#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
+
+//
+// versions check:
+// we don't know Comeau prior to version 4245:
+#if __COMO_VERSION__ < 4245
+# error "Compiler not configured - please reconfigure"
+#endif
+//
+// last known and checked version is 4245:
+#if (__COMO_VERSION__ > 4245)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/common_edg.hpp b/3rdParty/Boost/boost/config/compiler/common_edg.hpp
new file mode 100644
index 0000000..3e62bb0
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/common_edg.hpp
@@ -0,0 +1,90 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright Markus Schoepflin 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+//
+// Options common to all edg based compilers.
+//
+// This is included from within the individual compiler mini-configs.
+
+#ifndef __EDG_VERSION__
+# error This file requires that __EDG_VERSION__ be defined.
+#endif
+
+#if (__EDG_VERSION__ <= 238)
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_SFINAE
+#endif
+
+#if (__EDG_VERSION__ <= 240)
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+#endif
+
+#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
+# define BOOST_NO_TEMPLATE_TEMPLATES
+#endif
+
+#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
+# define BOOST_NO_IS_ABSTRACT
+#endif
+
+#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#endif
+
+#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
+// No support for initializer lists
+# define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+// See also kai.hpp which checks a Kai-specific symbol for EH
+# if !defined(__KCC) && !defined(__EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+# endif
+
+# if !defined(__NO_LONG_LONG)
+# define BOOST_HAS_LONG_LONG
+# else
+# define BOOST_NO_LONG_LONG
+# endif
+
+//
+// C++0x features
+//
+// See above for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+#ifdef c_plusplus
+// EDG has "long long" in non-strict mode
+// However, some libraries have insufficient "long long" support
+// #define BOOST_HAS_LONG_LONG
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/compaq_cxx.hpp b/3rdParty/Boost/boost/config/compiler/compaq_cxx.hpp
new file mode 100644
index 0000000..b44486c
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/compaq_cxx.hpp
@@ -0,0 +1,19 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Tru64 C++ compiler setup (now HP):
+
+#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER)
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// versions check:
+// Nothing to do here?
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/digitalmars.hpp b/3rdParty/Boost/boost/config/compiler/digitalmars.hpp
new file mode 100644
index 0000000..5984312
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/digitalmars.hpp
@@ -0,0 +1,87 @@
+// Copyright (C) Christof Meerwald 2003
+// Copyright (C) Dan Watkins 2003
+//
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// Digital Mars C++ compiler setup:
+#define BOOST_COMPILER __DMC_VERSION_STRING__
+
+#define BOOST_HAS_LONG_LONG
+#define BOOST_HAS_PRAGMA_ONCE
+
+#if (__DMC__ <= 0x833)
+#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#define BOOST_NO_TEMPLATE_TEMPLATES
+#define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
+#define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+#endif
+#if (__DMC__ <= 0x840) || !defined(BOOST_STRICT_CONFIG)
+#define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#define BOOST_NO_OPERATORS_IN_NAMESPACE
+#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
+#define BOOST_NO_SFINAE
+#define BOOST_NO_USING_TEMPLATE
+#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+//
+// has macros:
+#if (__DMC__ >= 0x840)
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_WINTHREADS
+#endif
+
+#if (__DMC__ >= 0x847)
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_LOG1P
+#endif
+
+//
+// Is this really the best way to detect whether the std lib is in namespace std?
+//
+#include <cstddef>
+#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
+# define BOOST_NO_STDC_NAMESPACE
+#endif
+
+
+// check for exception handling support:
+#ifndef _CPPUNWIND
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+//
+// C++0x features
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+#if __DMC__ < 0x800
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is ...:
+#if (__DMC__ > 0x848)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
diff --git a/3rdParty/Boost/boost/config/compiler/gcc.hpp b/3rdParty/Boost/boost/config/compiler/gcc.hpp
new file mode 100644
index 0000000..62bf45e
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/gcc.hpp
@@ -0,0 +1,177 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Jens Maurer 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Douglas Gregor 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Synge Todo 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// GNU C++ compiler setup:
+
+#if __GNUC__ < 3
+# if __GNUC_MINOR__ == 91
+ // egcs 1.1 won't parse shared_ptr.hpp without this:
+# define BOOST_NO_AUTO_PTR
+# endif
+# if __GNUC_MINOR__ < 95
+ //
+ // Prior to gcc 2.95 member templates only partly
+ // work - define BOOST_MSVC6_MEMBER_TEMPLATES
+ // instead since inline member templates mostly work.
+ //
+# define BOOST_NO_MEMBER_TEMPLATES
+# if __GNUC_MINOR__ >= 9
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# endif
+# endif
+
+# if __GNUC_MINOR__ < 96
+# define BOOST_NO_SFINAE
+# endif
+
+# if __GNUC_MINOR__ <= 97
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# endif
+
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_NO_IS_ABSTRACT
+#elif __GNUC__ == 3
+# if defined (__PATHSCALE__)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_IS_ABSTRACT
+# endif
+ //
+ // gcc-3.x problems:
+ //
+ // Bug specific to gcc 3.1 and 3.2:
+ //
+# if ((__GNUC_MINOR__ == 1) || (__GNUC_MINOR__ == 2))
+# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# endif
+# if __GNUC_MINOR__ < 4
+# define BOOST_NO_IS_ABSTRACT
+# endif
+#endif
+#if __GNUC__ < 4
+//
+// All problems to gcc-3.x and earlier here:
+//
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+#ifndef __EXCEPTIONS
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+
+//
+// Threading support: Turn this on unconditionally here (except for
+// those platforms where we can know for sure). It will get turned off again
+// later if no threading API is detected.
+//
+#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// gcc has "long long"
+//
+#define BOOST_HAS_LONG_LONG
+
+//
+// gcc implements the named return value optimization since version 3.1
+//
+#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
+#define BOOST_HAS_NRVO
+#endif
+//
+// RTTI and typeinfo detection is possible post gcc-4.3:
+//
+#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403
+# ifndef __GXX_RTTI
+# define BOOST_NO_TYPEID
+# define BOOST_NO_RTTI
+# endif
+#endif
+
+//
+// C++0x features
+//
+
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_UNICODE_LITERALS
+// See below for BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
+// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
+// passed on the command line, which in turn defines
+// __GXX_EXPERIMENTAL_CXX0X__.
+# define BOOST_HAS_DECLTYPE
+# define BOOST_HAS_RVALUE_REFS
+# define BOOST_HAS_STATIC_ASSERT
+# define BOOST_HAS_VARIADIC_TMPL
+#else
+# define BOOST_NO_DECLTYPE
+# define BOOST_NO_RVALUE_REFERENCES
+# define BOOST_NO_STATIC_ASSERT
+
+// Variadic templates compiler:
+// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
+# ifdef __VARIADIC_TEMPLATES
+# define BOOST_HAS_VARIADIC_TMPL
+# else
+# define BOOST_NO_VARIADIC_TEMPLATES
+# endif
+#endif
+
+#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)
+# define BOOST_NO_INITIALIZER_LISTS
+# define BOOST_NO_AUTO_DECLARATIONS
+#endif
+
+// ConceptGCC compiler:
+// http://www.generic-programming.org/software/ConceptGCC/
+#ifdef __GXX_CONCEPTS__
+# define BOOST_HAS_CONCEPTS
+# define BOOST_COMPILER "ConceptGCC version " __VERSION__
+#endif
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "GNU C++ version " __VERSION__
+#endif
+
+//
+// versions check:
+// we don't know gcc prior to version 2.90:
+#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90)
+# error "Compiler not configured - please reconfigure"
+#endif
+//
+// last known and checked version is 4.3 (Pre-release):
+#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 3))
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+// we don't emit warnings here anymore since there are no defect macros defined for
+// gcc post 3.4, so any failures are gcc regressions...
+//# warning "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/gcc_xml.hpp b/3rdParty/Boost/boost/config/compiler/gcc_xml.hpp
new file mode 100644
index 0000000..5dd67c7
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/gcc_xml.hpp
@@ -0,0 +1,30 @@
+// (C) Copyright John Maddock 2006.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// GCC-XML C++ compiler setup:
+
+# if !defined(__GCCXML_GNUC__) || ((__GCCXML_GNUC__ <= 3) && (__GCCXML_GNUC_MINOR__ <= 3))
+# define BOOST_NO_IS_ABSTRACT
+# endif
+
+//
+// Threading support: Turn this on unconditionally here (except for
+// those platforms where we can know for sure). It will get turned off again
+// later if no threading API is detected.
+//
+#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// gcc has "long long"
+//
+#define BOOST_HAS_LONG_LONG
+
+#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/greenhills.hpp b/3rdParty/Boost/boost/config/compiler/greenhills.hpp
new file mode 100644
index 0000000..038b6b2
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/greenhills.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Greenhills C++ compiler setup:
+
+#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// versions check:
+// we don't support Greenhills prior to version 0:
+#if __ghs < 0
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0:
+#if (__ghs > 0)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/hp_acc.hpp b/3rdParty/Boost/boost/config/compiler/hp_acc.hpp
new file mode 100644
index 0000000..0c3cc9a
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/hp_acc.hpp
@@ -0,0 +1,117 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Toon Knapen 2003.
+// (C) Copyright Boris Gubenko 2006 - 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// HP aCC C++ compiler setup:
+
+#if defined(__EDG__)
+#include "boost/config/compiler/common_edg.hpp"
+#endif
+
+#if (__HP_aCC <= 33100)
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# if !defined(_NAMESPACE_STD)
+# define BOOST_NO_STD_LOCALE
+# define BOOST_NO_STRINGSTREAM
+# endif
+#endif
+
+#if (__HP_aCC <= 33300)
+// member templates are sufficiently broken that we disable them for now
+# define BOOST_NO_MEMBER_TEMPLATES
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#endif
+
+#if (__HP_aCC <= 38000)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+#if (__HP_aCC > 50000) && (__HP_aCC < 60000)
+# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# define BOOST_NO_TEMPLATE_TEMPLATES
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#endif
+
+// optional features rather than defects:
+#if (__HP_aCC >= 33900)
+# define BOOST_HAS_LONG_LONG
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#endif
+
+#if (__HP_aCC >= 50000 ) && (__HP_aCC <= 53800 ) || (__HP_aCC < 31300 )
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+#endif
+
+// This macro should not be defined when compiling in strict ansi
+// mode, but, currently, we don't have the ability to determine
+// what standard mode we are compiling with. Some future version
+// of aCC6 compiler will provide predefined macros reflecting the
+// compilation options, including the standard mode.
+#if (__HP_aCC >= 60000) || ((__HP_aCC > 38000) && defined(__hpxstd98))
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
+
+//
+// versions check:
+// we don't support HP aCC prior to version 33000:
+#if __HP_aCC < 33000
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+//
+// Extended checks for supporting aCC on PA-RISC
+#if __HP_aCC > 30000 && __HP_aCC < 50000
+# if __HP_aCC < 38000
+ // versions prior to version A.03.80 not supported
+# error "Compiler version not supported - version A.03.80 or higher is required"
+# elif !defined(__hpxstd98)
+ // must compile using the option +hpxstd98 with version A.03.80 and above
+# error "Compiler option '+hpxstd98' is required for proper support"
+# endif //PA-RISC
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// last known and checked version for HP-UX/ia64 is 61300
+// last known and checked version for PA-RISC is 38000
+#if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
diff --git a/3rdParty/Boost/boost/config/compiler/intel.hpp b/3rdParty/Boost/boost/config/compiler/intel.hpp
new file mode 100644
index 0000000..e4d1b07
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/intel.hpp
@@ -0,0 +1,195 @@
+// (C) Copyright John Maddock 2001-8.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright Guillaume Melquiond 2002 - 2003.
+// (C) Copyright Beman Dawes 2003.
+// (C) Copyright Martin Wille 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Intel compiler setup:
+
+#include "boost/config/compiler/common_edg.hpp"
+
+#if defined(__INTEL_COMPILER)
+# define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
+#elif defined(__ICL)
+# define BOOST_INTEL_CXX_VERSION __ICL
+#elif defined(__ICC)
+# define BOOST_INTEL_CXX_VERSION __ICC
+#elif defined(__ECC)
+# define BOOST_INTEL_CXX_VERSION __ECC
+#endif
+
+#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
+
+#if defined(_WIN32) || defined(_WIN64)
+# define BOOST_INTEL_WIN BOOST_INTEL
+#else
+# define BOOST_INTEL_LINUX BOOST_INTEL
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION <= 500) && defined(_MSC_VER)
+# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# define BOOST_NO_TEMPLATE_TEMPLATES
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION <= 600)
+
+# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
+
+// Boost libraries assume strong standard conformance unless otherwise
+// indicated by a config macro. As configured by Intel, the EDG front-end
+// requires certain compiler options be set to achieve that strong conformance.
+// Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt)
+// and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for
+// details as they apply to particular versions of the compiler. When the
+// compiler does not predefine a macro indicating if an option has been set,
+// this config file simply assumes the option has been set.
+// Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if
+// the compiler option is not enabled.
+
+# define BOOST_NO_SWPRINTF
+# endif
+
+// Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov)
+
+# if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_VOID_RETURNS
+# define BOOST_NO_INTEGRAL_INT64_T
+# endif
+
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION <= 710) && defined(_WIN32)
+# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+#endif
+
+// See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864
+#if BOOST_INTEL_CXX_VERSION < 600
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#else
+// We should test the macro _WCHAR_T_DEFINED to check if the compiler
+// supports wchar_t natively. *BUT* there is a problem here: the standard
+// headers define this macro if they typedef wchar_t. Anyway, we're lucky
+// because they define it without a value, while Intel C++ defines it
+// to 1. So we can check its value to see if the macro was defined natively
+// or not.
+// Under UNIX, the situation is exactly the same, but the macro _WCHAR_T
+// is used instead.
+# if ((_WCHAR_T_DEFINED + 0) == 0) && ((_WCHAR_T + 0) == 0)
+# define BOOST_NO_INTRINSIC_WCHAR_T
+# endif
+#endif
+
+#if defined(__GNUC__) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
+//
+// Figure out when Intel is emulating this gcc bug
+// (All Intel versions prior to 9.0.26, and versions
+// later than that if they are set up to emulate gcc 3.2
+// or earlier):
+//
+# if ((__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)) || (BOOST_INTEL < 900) || (__INTEL_COMPILER_BUILD_DATE < 20050912)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# endif
+#endif
+#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1100)
+// GCC or VC emulation:
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+//
+// Verify that we have actually got BOOST_NO_INTRINSIC_WCHAR_T
+// set correctly, if we don't do this now, we will get errors later
+// in type_traits code among other things, getting this correct
+// for the Intel compiler is actually remarkably fragile and tricky:
+//
+#if defined(BOOST_NO_INTRINSIC_WCHAR_T)
+#include <cwchar>
+template< typename T > struct assert_no_intrinsic_wchar_t;
+template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; };
+// if you see an error here then you need to unset BOOST_NO_INTRINSIC_WCHAR_T
+// where it is defined above:
+typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_;
+#else
+template< typename T > struct assert_intrinsic_wchar_t;
+template<> struct assert_intrinsic_wchar_t<wchar_t> {};
+// if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
+template<> struct assert_intrinsic_wchar_t<unsigned short> {};
+#endif
+
+#if _MSC_VER+0 >= 1000
+# if _MSC_VER >= 1200
+# define BOOST_HAS_MS_INT64
+# endif
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#elif defined(_WIN32)
+# define BOOST_DISABLE_WIN32
+#endif
+
+// I checked version 6.0 build 020312Z, it implements the NRVO.
+// Correct this as you find out which version of the compiler
+// implemented the NRVO first. (Daniel Frey)
+#if (BOOST_INTEL_CXX_VERSION >= 600)
+# define BOOST_HAS_NRVO
+#endif
+
+//
+// versions check:
+// we don't support Intel prior to version 5.0:
+#if BOOST_INTEL_CXX_VERSION < 500
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+// Intel on MacOS requires
+#if defined(__APPLE__) && defined(__INTEL_COMPILER)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+// Intel on Altix Itanium
+#if defined(__itanium__) && defined(__INTEL_COMPILER)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// last known and checked version:
+#if (BOOST_INTEL_CXX_VERSION > 1100)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# elif defined(_MSC_VER)
+//
+// We don't emit this warning any more, since we have so few
+// defect macros set anyway (just the one).
+//
+//# pragma message("Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
diff --git a/3rdParty/Boost/boost/config/compiler/kai.hpp b/3rdParty/Boost/boost/config/compiler/kai.hpp
new file mode 100644
index 0000000..de16f1a
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/kai.hpp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Kai C++ compiler setup:
+
+#include "boost/config/compiler/common_edg.hpp"
+
+# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
+ // at least on Sun, the contents of <cwchar> is not in namespace std
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+// see also common_edg.hpp which needs a special check for __KCC
+# if !defined(_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+# endif
+
+#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION)
+
+//
+// last known and checked version is 4001:
+#if (__KCC_VERSION > 4001)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/metrowerks.hpp b/3rdParty/Boost/boost/config/compiler/metrowerks.hpp
new file mode 100644
index 0000000..5f6e0fe
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/metrowerks.hpp
@@ -0,0 +1,131 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright David Abrahams 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Stefan Slapeta 2004.
+// 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.
+
+// Metrowerks C++ compiler setup:
+
+// locale support is disabled when linking with the dynamic runtime
+# ifdef _MSL_NO_LOCALE
+# define BOOST_NO_STD_LOCALE
+# endif
+
+# if __MWERKS__ <= 0x2301 // 5.3
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_NO_POINTER_TO_MEMBER_CONST
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# endif
+
+# if __MWERKS__ <= 0x2401 // 6.2
+//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# endif
+
+# if(__MWERKS__ <= 0x2407) // 7.x
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# endif
+
+# if(__MWERKS__ <= 0x3003) // 8.x
+# define BOOST_NO_SFINAE
+# endif
+
+// the "|| !defined(BOOST_STRICT_CONFIG)" part should apply to the last
+// tested version *only*:
+# if(__MWERKS__ <= 0x3206) || !defined(BOOST_STRICT_CONFIG) // 9.5
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_INITIALIZER_LISTS
+# endif
+
+#if !__option(wchar_type)
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+#if !__option(exceptions)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+#if (__INTEL__ && _WIN32) || (__POWERPC__ && macintosh)
+# if __MWERKS__ == 0x3000
+# define BOOST_COMPILER_VERSION 8.0
+# elif __MWERKS__ == 0x3001
+# define BOOST_COMPILER_VERSION 8.1
+# elif __MWERKS__ == 0x3002
+# define BOOST_COMPILER_VERSION 8.2
+# elif __MWERKS__ == 0x3003
+# define BOOST_COMPILER_VERSION 8.3
+# elif __MWERKS__ == 0x3200
+# define BOOST_COMPILER_VERSION 9.0
+# elif __MWERKS__ == 0x3201
+# define BOOST_COMPILER_VERSION 9.1
+# elif __MWERKS__ == 0x3202
+# define BOOST_COMPILER_VERSION 9.2
+# elif __MWERKS__ == 0x3204
+# define BOOST_COMPILER_VERSION 9.3
+# elif __MWERKS__ == 0x3205
+# define BOOST_COMPILER_VERSION 9.4
+# elif __MWERKS__ == 0x3206
+# define BOOST_COMPILER_VERSION 9.5
+# else
+# define BOOST_COMPILER_VERSION __MWERKS__
+# endif
+#else
+# define BOOST_COMPILER_VERSION __MWERKS__
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#if __MWERKS__ > 0x3206 && __option(rvalue_refs)
+# define BOOST_HAS_RVALUE_REFS
+#else
+# define BOOST_NO_RVALUE_REFERENCES
+#endif
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
+
+//
+// versions check:
+// we don't support Metrowerks prior to version 5.3:
+#if __MWERKS__ < 0x2301
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version:
+#if (__MWERKS__ > 0x3205)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/mpw.hpp b/3rdParty/Boost/boost/config/compiler/mpw.hpp
new file mode 100644
index 0000000..1d72406
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/mpw.hpp
@@ -0,0 +1,75 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// MPW C++ compilers setup:
+
+# if defined(__SC__)
+# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
+# elif defined(__MRC__)
+# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
+# else
+# error "Using MPW compiler configuration by mistake. Please update."
+# endif
+
+//
+// MPW 8.90:
+//
+#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_INTRINSIC_WCHAR_T
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# define BOOST_NO_USING_TEMPLATE
+
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+
+# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
+
+# define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// versions check:
+// we don't support MPW prior to version 8.9:
+#if MPW_CPLUS < 0x890
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0x890:
+#if (MPW_CPLUS > 0x890)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/pgi.hpp b/3rdParty/Boost/boost/config/compiler/pgi.hpp
new file mode 100644
index 0000000..ce09e2a
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/pgi.hpp
@@ -0,0 +1,56 @@
+// (C) Copyright Noel Belcourt 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// PGI C++ compiler setup:
+
+#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
+#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
+
+//
+// Threading support:
+// Turn this on unconditionally here, it will get turned off again later
+// if no threading API is detected.
+//
+
+#if (__PGIC__ >= 7)
+
+#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_NO_SWPRINTF
+#define BOOST_NO_INITIALIZER_LISTS
+
+#else
+
+# error "Pgi compiler not configured - please reconfigure"
+
+#endif
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// version check:
+// probably nothing to do here?
+
diff --git a/3rdParty/Boost/boost/config/compiler/sgi_mipspro.hpp b/3rdParty/Boost/boost/config/compiler/sgi_mipspro.hpp
new file mode 100644
index 0000000..f6a86ad
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/sgi_mipspro.hpp
@@ -0,0 +1,52 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// SGI C++ compiler setup:
+
+#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
+
+#include "boost/config/compiler/common_edg.hpp"
+
+//
+// Threading support:
+// Turn this on unconditionally here, it will get turned off again later
+// if no threading API is detected.
+//
+#define BOOST_HAS_THREADS
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+
+#undef BOOST_NO_SWPRINTF
+#undef BOOST_DEDUCED_TYPENAME
+
+#define BOOST_NO_INITIALIZER_LISTS
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// version check:
+// probably nothing to do here?
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/sunpro_cc.hpp b/3rdParty/Boost/boost/config/compiler/sunpro_cc.hpp
new file mode 100644
index 0000000..6553a46
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/sunpro_cc.hpp
@@ -0,0 +1,124 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Peter Dimov 2002.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright David Abrahams 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Sun C++ compiler setup:
+
+# if __SUNPRO_CC <= 0x500
+# define BOOST_NO_MEMBER_TEMPLATES
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# endif
+
+# if (__SUNPRO_CC <= 0x520)
+ //
+ // Sunpro 5.2 and earler:
+ //
+ // although sunpro 5.2 supports the syntax for
+ // inline initialization it often gets the value
+ // wrong, especially where the value is computed
+ // from other constants (J Maddock 6th May 2001)
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+ // Although sunpro 5.2 supports the syntax for
+ // partial specialization, it often seems to
+ // bind to the wrong specialization. Better
+ // to disable it until suppport becomes more stable
+ // (J Maddock 6th May 2001).
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif
+
+# if (__SUNPRO_CC <= 0x530)
+ // Requesting debug info (-g) with Boost.Python results
+ // in an internal compiler error for "static const"
+ // initialized in-class.
+ // >> Assertion: (../links/dbg_cstabs.cc, line 611)
+ // while processing ../test.cpp at line 0.
+ // (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002)
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+ // SunPro 5.3 has better support for partial specialization,
+ // but breaks when compiling std::less<shared_ptr<T> >
+ // (Jens Maurer 4 Nov 2001).
+
+ // std::less specialization fixed as reported by George
+ // Heintzelman; partial specialization re-enabled
+ // (Peter Dimov 17 Jan 2002)
+
+//# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ // integral constant expressions with 64 bit numbers fail
+# define BOOST_NO_INTEGRAL_INT64_T
+# endif
+
+# if (__SUNPRO_CC < 0x570)
+# define BOOST_NO_TEMPLATE_TEMPLATES
+ // see http://lists.boost.org/MailArchives/boost/msg47184.php
+ // and http://lists.boost.org/MailArchives/boost/msg47220.php
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_SFINAE
+# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+# endif
+# if (__SUNPRO_CC <= 0x580)
+# define BOOST_NO_IS_ABSTRACT
+# endif
+
+//
+// Issues that effect all known versions:
+//
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_NO_ADL_BARRIER
+#define BOOST_NO_INITIALIZER_LISTS
+
+//
+// C++0x features
+//
+
+#if(__SUNPRO_CC >= 0x590)
+# define BOOST_HAS_LONG_LONG
+#else
+# define BOOST_NO_LONG_LONG
+#endif
+
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+//
+// Version
+//
+
+#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
+
+//
+// versions check:
+// we don't support sunpro prior to version 4:
+#if __SUNPRO_CC < 0x400
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0x590:
+#if (__SUNPRO_CC > 0x590)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
diff --git a/3rdParty/Boost/boost/config/compiler/vacpp.hpp b/3rdParty/Boost/boost/config/compiler/vacpp.hpp
new file mode 100644
index 0000000..eb75cdb
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/vacpp.hpp
@@ -0,0 +1,82 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Toon Knapen 2001 - 2003.
+// (C) Copyright Lie-Quan Lee 2001.
+// (C) Copyright Markus Schoepflin 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Visual Age (IBM) C++ compiler setup:
+
+#if __IBMCPP__ <= 501
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#endif
+
+#if (__IBMCPP__ <= 502)
+// Actually the compiler supports inclass member initialization but it
+// requires a definition for the class member and it doesn't recognize
+// it as an integral constant expression when used as a template argument.
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+#endif
+
+#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+# define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+//
+// On AIX thread support seems to be indicated by _THREAD_SAFE:
+//
+#ifdef _THREAD_SAFE
+# define BOOST_HAS_THREADS
+#endif
+
+#define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__)
+
+//
+// versions check:
+// we don't support Visual age prior to version 5:
+#if __IBMCPP__ < 500
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 600:
+#if (__IBMCPP__ > 600)
+# 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
+#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+
+
+
diff --git a/3rdParty/Boost/boost/config/compiler/visualc.hpp b/3rdParty/Boost/boost/config/compiler/visualc.hpp
new file mode 100644
index 0000000..552e5bb
--- /dev/null
+++ b/3rdParty/Boost/boost/config/compiler/visualc.hpp
@@ -0,0 +1,241 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Microsoft Visual C++ compiler setup:
+
+#define BOOST_MSVC _MSC_VER
+
+// turn off the warnings before we #include anything
+#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
+
+#if _MSC_VER < 1300 // 1200 == VC++ 6.0, 1200-1202 == eVC++4
+# pragma warning( disable : 4786 ) // ident trunc to '255' chars in debug info
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_VOID_RETURNS
+# define BOOST_NO_EXCEPTION_STD_NAMESPACE
+
+# if BOOST_MSVC == 1202
+# define BOOST_NO_STD_TYPEINFO
+# endif
+
+ // disable min/max macro defines on vc6:
+ //
+#endif
+
+#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
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# endif
+
+# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_DEDUCED_TYPENAME
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+
+// VC++ 6/7 has member templates but they have numerous problems including
+// cases of silent failure, so for safety we define:
+# define BOOST_NO_MEMBER_TEMPLATES
+// For VC++ experts wishing to attempt workarounds, we define:
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_NO_USING_TEMPLATE
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_TEMPLATE_TEMPLATES
+# define BOOST_NO_SFINAE
+# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
+# if (_MSC_VER > 1200)
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+# endif
+
+#endif
+
+#if _MSC_VER < 1400
+// although a conforming signature for swprint exists in VC7.1
+// it appears not to actually work:
+# define BOOST_NO_SWPRINTF
+#endif
+
+#if defined(UNDER_CE)
+// Windows CE does not have a conforming signature for swprintf
+# define BOOST_NO_SWPRINTF
+#endif
+
+#if _MSC_VER <= 1400 // 1400 == VC++ 8.0
+# 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
+#endif
+
+#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
+# define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+#ifndef _NATIVE_WCHAR_T_DEFINED
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+#if defined(_WIN32_WCE) || defined(UNDER_CE)
+# define BOOST_NO_THREADEX
+# define BOOST_NO_GETSYSTEMTIMEASFILETIME
+# define BOOST_NO_SWPRINTF
+#endif
+
+//
+// check for exception handling support:
+#ifndef _CPPUNWIND
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+//
+// __int64 support:
+//
+#if (_MSC_VER >= 1200)
+# define BOOST_HAS_MS_INT64
+#endif
+#if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS)
+# define BOOST_HAS_LONG_LONG
+#else
+# define BOOST_NO_LONG_LONG
+#endif
+#if (_MSC_VER >= 1400) && !defined(_DEBUG)
+# define BOOST_HAS_NRVO
+#endif
+//
+// disable Win32 API's if compiler extentions are
+// turned off:
+//
+#ifndef _MSC_EXTENSIONS
+# define BOOST_DISABLE_WIN32
+#endif
+#ifndef _CPPRTTI
+# define BOOST_NO_RTTI
+#endif
+
+//
+// all versions support __declspec:
+//
+#define BOOST_HAS_DECLSPEC
+//
+// C++0x features
+//
+// See above for BOOST_NO_LONG_LONG
+#define BOOST_NO_CHAR16_T
+#define BOOST_NO_CHAR32_T
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_DECLTYPE
+#define BOOST_NO_DEFAULTED_FUNCTIONS
+#define BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_EXTERN_TEMPLATE
+#define BOOST_NO_RAW_LITERALS
+#define BOOST_NO_SCOPED_ENUMS
+#define BOOST_NO_UNICODE_LITERALS
+#define BOOST_NO_VARIADIC_TEMPLATES
+
+// MSVC 2010 CTP has some support for C++0x, but we still disable it until the compiler release
+// #if _MSC_VER < 1600
+#define BOOST_NO_RVALUE_REFERENCES
+#define BOOST_NO_STATIC_ASSERT
+#define BOOST_NO_AUTO_DECLARATIONS
+#define BOOST_NO_AUTO_MULTIDECLARATIONS
+// #endif // _MSC_VER < 1600
+
+//
+// prefix and suffix headers:
+//
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
+#endif
+
+// TODO:
+// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
+// artificial versions assigned to them only refer to the versions of some IDE
+// these compilers have been shipped with, and even that is not all of it. Some
+// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
+// IOW, you can't use these 'versions' in any sensible way. Sorry.
+# if defined(UNDER_CE)
+# if _MSC_VER < 1200
+ // Note: these are so far off, they are not really supported
+# elif _MSC_VER < 1300 // eVC++ 4 comes with 1200-1202
+# define BOOST_COMPILER_VERSION evc4.0
+# elif _MSC_VER == 1400
+# define BOOST_COMPILER_VERSION evc8
+# elif _MSC_VER == 1500
+# define BOOST_COMPILER_VERSION evc9
+# elif _MSC_VER == 1600
+# define BOOST_COMPILER_VERSION evc10
+# else
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
+# else
+# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
+# endif
+# endif
+# else
+# if _MSC_VER < 1200
+ // Note: these are so far off, they are not really supported
+# define BOOST_COMPILER_VERSION 5.0
+# elif _MSC_VER < 1300
+# define BOOST_COMPILER_VERSION 6.0
+# elif _MSC_VER == 1300
+# define BOOST_COMPILER_VERSION 7.0
+# elif _MSC_VER == 1310
+# define BOOST_COMPILER_VERSION 7.1
+# elif _MSC_VER == 1400
+# define BOOST_COMPILER_VERSION 8.0
+# elif _MSC_VER == 1500
+# define BOOST_COMPILER_VERSION 9.0
+# elif _MSC_VER == 1600
+# define BOOST_COMPILER_VERSION 10.0
+# else
+# define BOOST_COMPILER_VERSION _MSC_VER
+# endif
+# endif
+
+#define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
+
+//
+// versions check:
+// we don't support Visual C++ prior to version 6:
+#if _MSC_VER < 1200
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 1500 (VC9):
+#if (_MSC_VER > 1600)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# pragma message("Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
diff --git a/3rdParty/Boost/boost/config/no_tr1/cmath.hpp b/3rdParty/Boost/boost/config/no_tr1/cmath.hpp
new file mode 100644
index 0000000..d8268d8
--- /dev/null
+++ b/3rdParty/Boost/boost/config/no_tr1/cmath.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2008.
+// 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)
+//
+// The aim of this header is just to include <cmath> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/cmath is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_CMATH
+# define BOOST_CONFIG_CMATH
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_CMATH_RECURSION
+# endif
+
+# include <cmath>
+
+# ifdef BOOST_CONFIG_NO_CMATH_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_CMATH_RECURSION
+# endif
+
+#endif
diff --git a/3rdParty/Boost/boost/config/no_tr1/complex.hpp b/3rdParty/Boost/boost/config/no_tr1/complex.hpp
new file mode 100644
index 0000000..ca20092
--- /dev/null
+++ b/3rdParty/Boost/boost/config/no_tr1/complex.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// The aim of this header is just to include <complex> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/complex is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_COMPLEX
+# define BOOST_CONFIG_COMPLEX
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_COMPLEX_RECURSION
+# endif
+
+# include <complex>
+
+# ifdef BOOST_CONFIG_NO_COMPLEX_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_COMPLEX_RECURSION
+# endif
+
+#endif
diff --git a/3rdParty/Boost/boost/config/no_tr1/functional.hpp b/3rdParty/Boost/boost/config/no_tr1/functional.hpp
new file mode 100644
index 0000000..e395efc
--- /dev/null
+++ b/3rdParty/Boost/boost/config/no_tr1/functional.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// The aim of this header is just to include <functional> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/functional is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_FUNCTIONAL
+# define BOOST_CONFIG_FUNCTIONAL
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
+# endif
+
+# include <functional>
+
+# ifdef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
+# endif
+
+#endif
diff --git a/3rdParty/Boost/boost/config/no_tr1/memory.hpp b/3rdParty/Boost/boost/config/no_tr1/memory.hpp
new file mode 100644
index 0000000..2b5d208
--- /dev/null
+++ b/3rdParty/Boost/boost/config/no_tr1/memory.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// The aim of this header is just to include <memory> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/memory is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_MEMORY
+# define BOOST_CONFIG_MEMORY
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_MEMORY_RECURSION
+# endif
+
+# include <memory>
+
+# ifdef BOOST_CONFIG_NO_MEMORY_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_MEMORY_RECURSION
+# endif
+
+#endif
diff --git a/3rdParty/Boost/boost/config/no_tr1/utility.hpp b/3rdParty/Boost/boost/config/no_tr1/utility.hpp
new file mode 100644
index 0000000..dea8f11
--- /dev/null
+++ b/3rdParty/Boost/boost/config/no_tr1/utility.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// The aim of this header is just to include <utility> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/utility is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_UTILITY
+# define BOOST_CONFIG_UTILITY
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_UTILITY_RECURSION
+# endif
+
+# include <utility>
+
+# ifdef BOOST_CONFIG_NO_UTILITY_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_UTILITY_RECURSION
+# endif
+
+#endif
diff --git a/3rdParty/Boost/boost/config/platform/aix.hpp b/3rdParty/Boost/boost/config/platform/aix.hpp
new file mode 100644
index 0000000..894ef42
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/aix.hpp
@@ -0,0 +1,33 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// IBM/Aix specific config options:
+
+#define BOOST_PLATFORM "IBM Aix"
+
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_CLOCK_GETTIME
+
+// This needs support in "boost/cstdint.hpp" exactly like FreeBSD.
+// This platform has header named <inttypes.h> which includes all
+// the things needed.
+#define BOOST_HAS_STDINT_H
+
+// Threading API's:
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_PTHREAD_DELAY_NP
+#define BOOST_HAS_SCHED_YIELD
+//#define BOOST_HAS_PTHREAD_YIELD
+
+// boilerplate code:
+#include <boost/config/posix_features.hpp>
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/amigaos.hpp b/3rdParty/Boost/boost/config/platform/amigaos.hpp
new file mode 100644
index 0000000..34bcf41
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/amigaos.hpp
@@ -0,0 +1,15 @@
+// (C) Copyright John Maddock 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+#define BOOST_PLATFORM "AmigaOS"
+
+#define BOOST_DISABLE_THREADS
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_STD_WSTRING
+#define BOOST_NO_INTRINSIC_WCHAR_T
+
+
diff --git a/3rdParty/Boost/boost/config/platform/beos.hpp b/3rdParty/Boost/boost/config/platform/beos.hpp
new file mode 100644
index 0000000..48c3d8d
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/beos.hpp
@@ -0,0 +1,26 @@
+// (C) Copyright John Maddock 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// BeOS specific config options:
+
+#define BOOST_PLATFORM "BeOS"
+
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_CWCTYPE
+#define BOOST_HAS_UNISTD_H
+
+#define BOOST_HAS_BETHREADS
+
+#ifndef BOOST_DISABLE_THREADS
+# define BOOST_HAS_THREADS
+#endif
+
+// boilerplate code:
+#include <boost/config/posix_features.hpp>
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/bsd.hpp b/3rdParty/Boost/boost/config/platform/bsd.hpp
new file mode 100644
index 0000000..f02b0e2
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/bsd.hpp
@@ -0,0 +1,86 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Douglas Gregor 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// generic BSD config options:
+
+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
+#error "This platform is not BSD"
+#endif
+
+#ifdef __FreeBSD__
+#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
+#elif defined(__NetBSD__)
+#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
+#elif defined(__OpenBSD__)
+#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
+#elif defined(__DragonFly__)
+#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
+#endif
+
+//
+// is this the correct version check?
+// FreeBSD has <nl_types.h> but does not
+// advertise the fact in <unistd.h>:
+//
+#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__)
+# define BOOST_HAS_NL_TYPES_H
+#endif
+
+//
+// FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in <pthread.h>
+// and not in <unistd.h>
+//
+#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3))\
+ || defined(__OpenBSD__) || defined(__DragonFly__)
+# define BOOST_HAS_PTHREADS
+#endif
+
+//
+// No wide character support in the BSD header files:
+//
+#if defined(__NetBSD__)
+#define __NetBSD_GCC__ (__GNUC__ * 1000000 \
+ + __GNUC_MINOR__ * 1000 \
+ + __GNUC_PATCHLEVEL__)
+// XXX - the following is required until c++config.h
+// defines _GLIBCXX_HAVE_SWPRINTF and friends
+// or the preprocessor conditionals are removed
+// from the cwchar header.
+#define _GLIBCXX_HAVE_SWPRINTF 1
+#endif
+
+#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
+ || (__NetBSD_GCC__ >= 2095003) || defined(__DragonFly__))
+# define BOOST_NO_CWCHAR
+#endif
+//
+// The BSD <ctype.h> has macros only, no functions:
+//
+#if !defined(__OpenBSD__) || defined(__DragonFly__)
+# define BOOST_NO_CTYPE_FUNCTIONS
+#endif
+
+//
+// thread API's not auto detected:
+//
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_SIGACTION
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/cygwin.hpp b/3rdParty/Boost/boost/config/platform/cygwin.hpp
new file mode 100644
index 0000000..41fcaa1
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/cygwin.hpp
@@ -0,0 +1,51 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// cygwin specific config options:
+
+#define BOOST_PLATFORM "Cygwin"
+#define BOOST_NO_CWCTYPE
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_SWPRINTF
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_LOG1P
+#define BOOST_HAS_EXPM1
+
+//
+// Threading API:
+// See if we have POSIX threads, if we do use them, otherwise
+// revert to native Win threads.
+#define BOOST_HAS_UNISTD_H
+#include <unistd.h>
+#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_SIGACTION
+#else
+# if !defined(BOOST_HAS_WINTHREADS)
+# define BOOST_HAS_WINTHREADS
+# endif
+# define BOOST_HAS_FTIME
+#endif
+
+//
+// find out if we have a stdint.h, there should be a better way to do this:
+//
+#include <sys/types.h>
+#ifdef _STDINT_H
+#define BOOST_HAS_STDINT_H
+#endif
+
+// boilerplate code:
+#include <boost/config/posix_features.hpp>
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/hpux.hpp b/3rdParty/Boost/boost/config/platform/hpux.hpp
new file mode 100644
index 0000000..19ce68e
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/hpux.hpp
@@ -0,0 +1,87 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Toon Knapen 2003.
+// (C) Copyright Boris Gubenko 2006 - 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// hpux specific config options:
+
+#define BOOST_PLATFORM "HP-UX"
+
+// In principle, HP-UX has a nice <stdint.h> under the name <inttypes.h>
+// However, it has the following problem:
+// Use of UINT32_C(0) results in "0u l" for the preprocessed source
+// (verifyable with gcc 2.95.3)
+#if (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__HP_aCC)
+# define BOOST_HAS_STDINT_H
+#endif
+
+#if !(defined(__HP_aCC) || !defined(_INCLUDE__STDC_A1_SOURCE))
+# define BOOST_NO_SWPRINTF
+#endif
+#if defined(__HP_aCC) && !defined(_INCLUDE__STDC_A1_SOURCE)
+# define BOOST_NO_CWCTYPE
+#endif
+
+#if defined(__GNUC__)
+# if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))
+ // GNU C on HP-UX does not support threads (checked up to gcc 3.3)
+# define BOOST_DISABLE_THREADS
+# elif !defined(BOOST_DISABLE_THREADS)
+ // threads supported from gcc-3.3 onwards:
+# define BOOST_HAS_THREADS
+# define BOOST_HAS_PTHREADS
+# endif
+#elif defined(__HP_aCC) && !defined(BOOST_DISABLE_THREADS)
+# define BOOST_HAS_PTHREADS
+#endif
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+// the following are always available:
+#ifndef BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+#ifndef BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_SCHED_YIELD
+#endif
+#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#endif
+#ifndef BOOST_HAS_NL_TYPES_H
+# define BOOST_HAS_NL_TYPES_H
+#endif
+#ifndef BOOST_HAS_NANOSLEEP
+# define BOOST_HAS_NANOSLEEP
+#endif
+#ifndef BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+#ifndef BOOST_HAS_DIRENT_H
+# define BOOST_HAS_DIRENT_H
+#endif
+#ifndef BOOST_HAS_CLOCK_GETTIME
+# define BOOST_HAS_CLOCK_GETTIME
+#endif
+#ifndef BOOST_HAS_SIGACTION
+# define BOOST_HAS_SIGACTION
+#endif
+#ifndef BOOST_HAS_NRVO
+# ifndef __parisc
+# define BOOST_HAS_NRVO
+# endif
+#endif
+#ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+#endif
+#ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+#endif
+
diff --git a/3rdParty/Boost/boost/config/platform/irix.hpp b/3rdParty/Boost/boost/config/platform/irix.hpp
new file mode 100644
index 0000000..aeae49c
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/irix.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+// See http://www.boost.org for most recent version.
+
+// SGI Irix specific config options:
+
+#define BOOST_PLATFORM "SGI Irix"
+
+#define BOOST_NO_SWPRINTF
+//
+// these are not auto detected by POSIX feature tests:
+//
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+
+#ifdef __GNUC__
+ // GNU C on IRIX does not support threads (checked up to gcc 3.3)
+# define BOOST_DISABLE_THREADS
+#endif
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/linux.hpp b/3rdParty/Boost/boost/config/platform/linux.hpp
new file mode 100644
index 0000000..51ae133
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/linux.hpp
@@ -0,0 +1,98 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// linux specific config options:
+
+#define BOOST_PLATFORM "linux"
+
+// make sure we have __GLIBC_PREREQ if available at all
+#include <cstdlib>
+
+//
+// <stdint.h> added to glibc 2.1.1
+// We can only test for 2.1 though:
+//
+#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
+ // <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
+ // int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h>
+ // only when using GCC.
+# if defined __GNUC__
+# define BOOST_HAS_STDINT_H
+# endif
+#endif
+
+#if defined(__LIBCOMO__)
+ //
+ // como on linux doesn't have std:: c functions:
+ // NOTE: versions of libcomo prior to beta28 have octal version numbering,
+ // e.g. version 25 is 21 (dec)
+ //
+# if __LIBCOMO_VERSION__ <= 20
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+# if __LIBCOMO_VERSION__ <= 21
+# define BOOST_NO_SWPRINTF
+# endif
+
+#endif
+
+//
+// If glibc is past version 2 then we definitely have
+// gettimeofday, earlier versions may or may not have it:
+//
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+
+#ifdef __USE_POSIX199309
+# define BOOST_HAS_NANOSLEEP
+#endif
+
+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+// __GLIBC_PREREQ is available since 2.1.2
+
+ // swprintf is available since glibc 2.2.0
+# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
+# define BOOST_NO_SWPRINTF
+# endif
+#else
+# define BOOST_NO_SWPRINTF
+#endif
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+#ifndef __GNUC__
+//
+// if the compiler is not gcc we still need to be able to parse
+// the GNU system headers, some of which (mainly <stdint.h>)
+// use GNU specific extensions:
+//
+# ifndef __extension__
+# define __extension__
+# endif
+# ifndef __const__
+# define __const__ const
+# endif
+# ifndef __volatile__
+# define __volatile__ volatile
+# endif
+# ifndef __signed__
+# define __signed__ signed
+# endif
+# ifndef __typeof__
+# define __typeof__ typeof
+# endif
+# ifndef __inline__
+# define __inline__ inline
+# endif
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/platform/macos.hpp b/3rdParty/Boost/boost/config/platform/macos.hpp
new file mode 100644
index 0000000..2780ef9
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/macos.hpp
@@ -0,0 +1,86 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Bill Kempf 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Mac OS specific config options:
+
+#define BOOST_PLATFORM "Mac OS"
+
+#if __MACH__ && !defined(_MSL_USING_MSL_C)
+
+// Using the Mac OS X system BSD-style C library.
+
+# ifndef BOOST_HAS_UNISTD_H
+# define BOOST_HAS_UNISTD_H
+# endif
+//
+// Begin by including our boilerplate code for POSIX
+// feature detection, this is safe even when using
+// the MSL as Metrowerks supply their own <unistd.h>
+// to replace the platform-native BSD one. G++ users
+// should also always be able to do this on MaxOS X.
+//
+# include <boost/config/posix_features.hpp>
+# ifndef BOOST_HAS_STDINT_H
+# define BOOST_HAS_STDINT_H
+# endif
+
+//
+// BSD runtime has pthreads, sigaction, sched_yield and gettimeofday,
+// of these only pthreads are advertised in <unistd.h>, so set the
+// other options explicitly:
+//
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_SIGACTION
+
+# if (__GNUC__ < 3) && !defined( __APPLE_CC__)
+
+// GCC strange "ignore std" mode works better if you pretend everything
+// is in the std namespace, for the most part.
+
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+# if (__GNUC__ == 4)
+
+// Both gcc and intel require these.
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_NANOSLEEP
+
+# endif
+
+#else
+
+// Using the MSL C library.
+
+// We will eventually support threads in non-Carbon builds, but we do
+// not support this yet.
+# if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON )
+
+# if !defined(BOOST_HAS_PTHREADS)
+# define BOOST_HAS_MPTASKS
+# elif ( __dest_os == __mac_os_x )
+// We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the
+// gettimeofday and no posix.
+# define BOOST_HAS_GETTIMEOFDAY
+# endif
+
+// The MP task implementation of Boost Threads aims to replace MP-unsafe
+// parts of the MSL, so we turn on threads unconditionally.
+# define BOOST_HAS_THREADS
+
+// The remote call manager depends on this.
+# define BOOST_BIND_ENABLE_PASCAL
+
+# endif
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/qnxnto.hpp b/3rdParty/Boost/boost/config/platform/qnxnto.hpp
new file mode 100644
index 0000000..b1377c8
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/qnxnto.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright Jim Douglas 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// QNX specific config options:
+
+#define BOOST_PLATFORM "QNX"
+
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+// QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h
+// or log1p and expm1:
+#undef BOOST_HAS_NL_TYPES_H
+#undef BOOST_HAS_LOG1P
+#undef BOOST_HAS_EXPM1
+
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_NANOSLEEP
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/solaris.hpp b/3rdParty/Boost/boost/config/platform/solaris.hpp
new file mode 100644
index 0000000..9f92566
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/solaris.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// sun specific config options:
+
+#define BOOST_PLATFORM "Sun Solaris"
+
+#define BOOST_HAS_GETTIMEOFDAY
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/posix_features.hpp>
+
+//
+// pthreads don't actually work with gcc unless _PTHREADS is defined:
+//
+#if defined(__GNUC__) && defined(_POSIX_THREADS) && !defined(_PTHREADS)
+# undef BOOST_HAS_PTHREADS
+#endif
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/platform/win32.hpp b/3rdParty/Boost/boost/config/platform/win32.hpp
new file mode 100644
index 0000000..9344818
--- /dev/null
+++ b/3rdParty/Boost/boost/config/platform/win32.hpp
@@ -0,0 +1,58 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Bill Kempf 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Rene Rivera 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Win32 specific config options:
+
+#define BOOST_PLATFORM "Win32"
+
+// Get the information about the MinGW runtime, i.e. __MINGW32_*VERSION.
+#if defined(__MINGW32__)
+# include <_mingw.h>
+#endif
+
+#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
+# define BOOST_NO_SWPRINTF
+#endif
+
+#if !defined(__GNUC__) && !defined(BOOST_HAS_DECLSPEC)
+# define BOOST_HAS_DECLSPEC
+#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
+# define BOOST_HAS_DIRENT_H
+# define BOOST_HAS_UNISTD_H
+#endif
+
+//
+// Win32 will normally be using native Win32 threads,
+// but there is a pthread library avaliable as an option,
+// we used to disable this when BOOST_DISABLE_WIN32 was
+// defined but no longer - this should allow some
+// files to be compiled in strict mode - while maintaining
+// a consistent setting of BOOST_HAS_THREADS across
+// all translation units (needed for shared_ptr etc).
+//
+
+#ifdef _WIN32_WCE
+# define BOOST_NO_ANSI_APIS
+#endif
+
+#ifndef BOOST_HAS_PTHREADS
+# define BOOST_HAS_WINTHREADS
+#endif
+
+#ifndef BOOST_DISABLE_WIN32
+// WEK: Added
+#define BOOST_HAS_FTIME
+#define BOOST_WINDOWS 1
+
+#endif
diff --git a/3rdParty/Boost/boost/config/posix_features.hpp b/3rdParty/Boost/boost/config/posix_features.hpp
new file mode 100644
index 0000000..d129547
--- /dev/null
+++ b/3rdParty/Boost/boost/config/posix_features.hpp
@@ -0,0 +1,95 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+// See http://www.boost.org for most recent version.
+
+// All POSIX feature tests go in this file,
+// Note that we test _POSIX_C_SOURCE and _XOPEN_SOURCE as well
+// _POSIX_VERSION and _XOPEN_VERSION: on some systems POSIX API's
+// may be present but none-functional unless _POSIX_C_SOURCE and
+// _XOPEN_SOURCE have been defined to the right value (it's up
+// to the user to do this *before* including any header, although
+// in most cases the compiler will do this for you).
+
+# if defined(BOOST_HAS_UNISTD_H)
+# include <unistd.h>
+
+ // XOpen has <nl_types.h>, but is this the correct version check?
+# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
+# define BOOST_HAS_NL_TYPES_H
+# endif
+
+ // POSIX version 6 requires <stdint.h>
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
+# define BOOST_HAS_STDINT_H
+# endif
+
+ // POSIX version 2 requires <dirent.h>
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199009L)
+# define BOOST_HAS_DIRENT_H
+# endif
+
+ // POSIX version 3 requires <signal.h> to have sigaction:
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199506L)
+# define BOOST_HAS_SIGACTION
+# endif
+ // POSIX defines _POSIX_THREADS > 0 for pthread support,
+ // however some platforms define _POSIX_THREADS without
+ // a value, hence the (_POSIX_THREADS+0 >= 0) check.
+ // Strictly speaking this may catch platforms with a
+ // non-functioning stub <pthreads.h>, but such occurrences should
+ // occur very rarely if at all.
+# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS)
+# define BOOST_HAS_PTHREADS
+# endif
+
+ // BOOST_HAS_NANOSLEEP:
+ // This is predicated on _POSIX_TIMERS or _XOPEN_REALTIME:
+# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) \
+ || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
+# define BOOST_HAS_NANOSLEEP
+# endif
+
+ // BOOST_HAS_CLOCK_GETTIME:
+ // This is predicated on _POSIX_TIMERS (also on _XOPEN_REALTIME
+ // but at least one platform - linux - defines that flag without
+ // defining clock_gettime):
+# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0))
+# define BOOST_HAS_CLOCK_GETTIME
+# endif
+
+ // BOOST_HAS_SCHED_YIELD:
+ // This is predicated on _POSIX_PRIORITY_SCHEDULING or
+ // on _POSIX_THREAD_PRIORITY_SCHEDULING or on _XOPEN_REALTIME.
+# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)\
+ || (defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0))\
+ || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
+# define BOOST_HAS_SCHED_YIELD
+# endif
+
+ // BOOST_HAS_GETTIMEOFDAY:
+ // BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
+ // These are predicated on _XOPEN_VERSION, and appears to be first released
+ // in issue 4, version 2 (_XOPEN_VERSION > 500).
+ // Likewise for the functions log1p and expm1.
+# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 >= 500)
+# define BOOST_HAS_GETTIMEOFDAY
+# if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE+0 >= 500)
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# endif
+# ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+# endif
+# ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+# endif
+# endif
+
+# endif
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/requires_threads.hpp b/3rdParty/Boost/boost/config/requires_threads.hpp
new file mode 100644
index 0000000..cfaff23
--- /dev/null
+++ b/3rdParty/Boost/boost/config/requires_threads.hpp
@@ -0,0 +1,92 @@
+// (C) Copyright John Maddock 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+#ifndef BOOST_CONFIG_REQUIRES_THREADS_HPP
+#define BOOST_CONFIG_REQUIRES_THREADS_HPP
+
+#ifndef BOOST_CONFIG_HPP
+# include <boost/config.hpp>
+#endif
+
+#if defined(BOOST_DISABLE_THREADS)
+
+//
+// special case to handle versions of gcc which don't currently support threads:
+//
+#if defined(__GNUC__) && ((__GNUC__ < 3) || (__GNUC_MINOR__ <= 3) || !defined(BOOST_STRICT_CONFIG))
+//
+// this is checked up to gcc 3.3:
+//
+#if defined(__sgi) || defined(__hpux)
+# error "Multi-threaded programs are not supported by gcc on HPUX or Irix (last checked with gcc 3.3)"
+#endif
+
+#endif
+
+# error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"
+
+#elif !defined(BOOST_HAS_THREADS)
+
+# if defined __COMO__
+// Comeau C++
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_MT (Windows) or -D_REENTRANT (Unix)"
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+// Intel
+#ifdef _WIN32
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
+#else
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -openmp"
+#endif
+
+# elif defined __GNUC__
+// GNU C++:
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
+
+#elif defined __sgi
+// SGI MIPSpro C++
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_SGI_MP_SOURCE"
+
+#elif defined __DECCXX
+// Compaq Tru64 Unix cxx
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread"
+
+#elif defined __BORLANDC__
+// Borland
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -tWM"
+
+#elif defined __MWERKS__
+// Metrowerks CodeWarrior
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either -runtime sm, -runtime smd, -runtime dm, or -runtime dmd"
+
+#elif defined __SUNPRO_CC
+// Sun Workshop Compiler C++
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
+
+#elif defined __HP_aCC
+// HP aCC
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
+
+#elif defined(__IBMCPP__)
+// IBM Visual Age
+# error "Compiler threading support is not turned on. Please compile the code with the xlC_r compiler"
+
+#elif defined _MSC_VER
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for
+// example) also #define _MSC_VER
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
+
+#else
+
+# error "Compiler threading support is not turned on. Please consult your compiler's documentation for the appropriate options to use"
+
+#endif // compilers
+
+#endif // BOOST_HAS_THREADS
+
+#endif // BOOST_CONFIG_REQUIRES_THREADS_HPP
diff --git a/3rdParty/Boost/boost/config/select_compiler_config.hpp b/3rdParty/Boost/boost/config/select_compiler_config.hpp
new file mode 100644
index 0000000..9141cd6
--- /dev/null
+++ b/3rdParty/Boost/boost/config/select_compiler_config.hpp
@@ -0,0 +1,119 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Martin Wille 2003.
+// (C) Copyright Guillaume Melquiond 2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for most recent version.
+
+
+// one identification macro for each of the
+// compilers we support:
+
+# define BOOST_CXX_GCCXML 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
+
+
+// locate which compiler we are using and define
+// BOOST_COMPILER_CONFIG as needed:
+
+#if defined(__GCCXML__)
+// GCC-XML emulates other compilers, it has to appear first here!
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp"
+
+#elif defined __COMO__
+// Comeau C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
+
+#elif defined __DMC__
+// Digital Mars C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/digitalmars.hpp"
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+// Intel
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
+
+# elif defined __GNUC__
+// GNU C++:
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
+
+#elif defined __KCC
+// Kai C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp"
+
+#elif defined __sgi
+// SGI MIPSpro C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp"
+
+#elif defined __DECCXX
+// Compaq Tru64 Unix cxx
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp"
+
+#elif defined __ghs
+// Greenhills C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp"
+
+#elif defined __CODEGEARC__
+// CodeGear - must be checked for before Borland
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/codegear.hpp"
+
+#elif defined __BORLANDC__
+// Borland
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp"
+
+#elif defined __MWERKS__
+// Metrowerks CodeWarrior
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp"
+
+#elif defined __SUNPRO_CC
+// Sun Workshop Compiler C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp"
+
+#elif defined __HP_aCC
+// HP aCC
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp"
+
+#elif defined(__MRC__) || defined(__SC__)
+// MPW MrCpp or SCpp
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp"
+
+#elif defined(__IBMCPP__)
+// IBM Visual Age
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp"
+
+#elif defined(__PGI)
+// Portland Group Inc.
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp"
+
+#elif defined _MSC_VER
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for
+// example) also #define _MSC_VER
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the compiler:
+# error "Unknown compiler - please configure (http://www.boost.org/libs/config/config.htm#configuring) and report the results to the main boost mailing list (http://www.boost.org/more/mailing_lists.htm#main)"
+
+#endif
diff --git a/3rdParty/Boost/boost/config/select_platform_config.hpp b/3rdParty/Boost/boost/config/select_platform_config.hpp
new file mode 100644
index 0000000..4ce2c01
--- /dev/null
+++ b/3rdParty/Boost/boost/config/select_platform_config.hpp
@@ -0,0 +1,90 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Jens Maurer 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
+// Note that we define the headers to include using "header_name" not
+// <header_name> in order to prevent macro expansion within the header
+// name (for example "linux" is a macro on linux systems).
+
+#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)
+// linux, also other platforms (Hurd etc) that use GLIBC, should these really have their own config headers though?
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
+
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+// BSD:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp"
+
+#elif defined(sun) || defined(__sun)
+// solaris:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp"
+
+#elif defined(__sgi)
+// SGI Irix:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp"
+
+#elif defined(__hpux)
+// hp unix:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp"
+
+#elif defined(__CYGWIN__)
+// cygwin is not win32:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+// win32:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp"
+
+#elif defined(__BEOS__)
+// BeOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp"
+
+#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
+// MacOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp"
+
+#elif defined(__IBMCPP__) || defined(_AIX)
+// IBM
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
+
+#elif defined(__amigaos__)
+// AmigaOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/amigaos.hpp"
+
+#elif defined(__QNXNTO__)
+// QNX:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/qnxnto.hpp"
+
+#else
+
+# if defined(unix) \
+ || defined(__unix) \
+ || defined(_XOPEN_SOURCE) \
+ || defined(_POSIX_SOURCE)
+
+ // generic unix platform:
+
+# ifndef BOOST_HAS_UNISTD_H
+# define BOOST_HAS_UNISTD_H
+# endif
+
+# include <boost/config/posix_features.hpp>
+
+# endif
+
+# if defined (BOOST_ASSERT_CONFIG)
+ // this must come last - generate an error if we don't
+ // recognise the platform:
+# error "Unknown platform - please configure and report the results to boost.org"
+# endif
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/config/select_stdlib_config.hpp b/3rdParty/Boost/boost/config/select_stdlib_config.hpp
new file mode 100644
index 0000000..13e5e4c
--- /dev/null
+++ b/3rdParty/Boost/boost/config/select_stdlib_config.hpp
@@ -0,0 +1,68 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+// See http://www.boost.org for most recent version.
+
+// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
+
+// we need to include a std lib header here in order to detect which
+// library is in use, use <utility> as it's about the smallest
+// of the std lib headers - do not rely on this header being included -
+// users can short-circuit this header if they know whose std lib
+// they are using.
+
+#include <boost/config/no_tr1/utility.hpp>
+
+#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+// STLPort library; this _must_ come first, otherwise since
+// STLport typically sits on top of some other library, we
+// can end up detecting that first rather than STLport:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp"
+
+#elif defined(__LIBCOMO__)
+// Comeau STL:
+#define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp"
+
+#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
+// Rogue Wave library:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
+
+#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
+// GNU libstdc++ 3
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
+
+#elif defined(__STL_CONFIG_H)
+// generic SGI STL
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp"
+
+#elif defined(__MSL_CPP__)
+// MSL standard lib:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp"
+
+#elif defined(__IBMCPP__)
+// take the default VACPP std lib
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp"
+
+#elif defined(MSIPL_COMPILE_H)
+// Modena C++ standard library
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp"
+
+#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
+// Dinkumware Library (this has to appear after any possible replacement libraries):
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the library:
+# error "Unknown standard library - please configure and report the results to boost.org"
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/dinkumware.hpp b/3rdParty/Boost/boost/config/stdlib/dinkumware.hpp
new file mode 100644
index 0000000..ff1aed9
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/dinkumware.hpp
@@ -0,0 +1,111 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Guillaume Melquiond 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Dinkumware standard library config:
+
+#if !defined(_YVALS) && !defined(_CPPLIB_VER)
+#include <boost/config/no_tr1/utility.hpp>
+#if !defined(_YVALS) && !defined(_CPPLIB_VER)
+#error This is not the Dinkumware lib!
+#endif
+#endif
+
+
+#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
+ // full dinkumware 3.06 and above
+ // fully conforming provided the compiler supports it:
+# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC)
+# define BOOST_NO_STD_ALLOCATOR
+# endif
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+ // if this lib version is set up for vc6 then there is no std::use_facet:
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+ // C lib functions aren't in namespace std either:
+# define BOOST_NO_STDC_NAMESPACE
+ // and nor is <exception>
+# define BOOST_NO_EXCEPTION_STD_NAMESPACE
+# endif
+// There's no numeric_limits<long long> support unless _LONGLONG is defined:
+# if !defined(_LONGLONG) && (_CPPLIB_VER <= 310)
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# endif
+// 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>,
+// and no <slist> at all
+#else
+# define BOOST_MSVC_STD_ITERATOR 1
+# define BOOST_NO_STD_ITERATOR
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STDC_NAMESPACE
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+# define BOOST_HAS_MACRO_USE_FACET
+# ifndef _CPPLIB_VER
+ // Updated Dinkum library defines this, and provides
+ // its own min and max definitions.
+# define BOOST_NO_STD_MIN_MAX
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# endif
+#endif
+
+//
+// std extension namespace is stdext for vc7.1 and later,
+// the same applies to other compilers that sit on top
+// of vc7.1 (Intel and Comeau):
+//
+#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__)
+# define BOOST_STD_EXTENSION_NAMESPACE stdext
+#endif
+
+
+#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
+ // if we're using a dinkum lib that's
+ // been configured for VC6/7 then there is
+ // no iterator traits (true even for icl)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No std::unordered_* containers yet:
+//
+#define BOOST_NO_STD_UNORDERED
+
+#if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310)
+// Intel C++ chokes over any non-trivial use of <locale>
+// this may be an overly restrictive define, but regex fails without it:
+# define BOOST_NO_STD_LOCALE
+#endif
+
+#ifdef _CPPLIB_VER
+# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
+#else
+# define BOOST_DINKUMWARE_STDLIB 1
+#endif
+
+#ifdef _CPPLIB_VER
+# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
+#else
+# define BOOST_STDLIB "Dinkumware standard library version 1.x"
+#endif
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/libcomo.hpp b/3rdParty/Boost/boost/config/stdlib/libcomo.hpp
new file mode 100644
index 0000000..3114094
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/libcomo.hpp
@@ -0,0 +1,50 @@
+// (C) Copyright John Maddock 2002 - 2003.
+// (C) Copyright Jens Maurer 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Comeau STL:
+
+#if !defined(__LIBCOMO__)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__LIBCOMO__)
+# error "This is not the Comeau STL!"
+# endif
+#endif
+
+//
+// std::streambuf<wchar_t> is non-standard
+// NOTE: versions of libcomo prior to beta28 have octal version numbering,
+// e.g. version 25 is 21 (dec)
+#if __LIBCOMO_VERSION__ <= 22
+# define BOOST_NO_STD_WSTREAMBUF
+#endif
+
+#if (__LIBCOMO_VERSION__ <= 31) && defined(_WIN32)
+#define BOOST_NO_SWPRINTF
+#endif
+
+#if __LIBCOMO_VERSION__ >= 31
+# define BOOST_HAS_HASH
+# define BOOST_HAS_SLIST
+#endif
+//
+// We never have the new C++0x unordered containers:
+//
+#define BOOST_NO_STD_UNORDERED
+
+//
+// Intrinsic type_traits support.
+// The SGI STL has it's own __type_traits class, which
+// has intrinsic compiler support with SGI's compilers.
+// Whatever map SGI style type traits to boost equivalents:
+//
+#define BOOST_HAS_SGI_TYPE_TRAITS
+
+#define BOOST_STDLIB "Comeau standard library " BOOST_STRINGIZE(__LIBCOMO_VERSION__)
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/libstdcpp3.hpp b/3rdParty/Boost/boost/config/stdlib/libstdcpp3.hpp
new file mode 100644
index 0000000..8e1c811
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/libstdcpp3.hpp
@@ -0,0 +1,83 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Jens Maurer 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// config for libstdc++ v3
+// not much to go in here:
+
+#ifdef __GLIBCXX__
+#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
+#else
+#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
+#endif
+
+#if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_CWCTYPE
+# define BOOST_NO_STD_WSTRING
+# define BOOST_NO_STD_WSTREAMBUF
+#endif
+
+#if defined(__osf__) && !defined(_REENTRANT) \
+ && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
+// GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
+// file is included, therefore for consistency we define it here as well.
+# define _REENTRANT
+#endif
+
+#ifdef __GLIBCXX__ // gcc 3.4 and greater:
+# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
+ || defined(_GLIBCXX__PTHREADS)
+ //
+ // If the std lib has thread support turned on, then turn it on in Boost
+ // as well. We do this because some gcc-3.4 std lib headers define _REENTANT
+ // while others do not...
+ //
+# define BOOST_HAS_THREADS
+# else
+# define BOOST_DISABLE_THREADS
+# endif
+#elif defined(__GLIBCPP__) \
+ && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
+ && !defined(_GLIBCPP__PTHREADS)
+ // disable thread support if the std lib was built single threaded:
+# define BOOST_DISABLE_THREADS
+#endif
+
+#if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
+// linux on arm apparently doesn't define _REENTRANT
+// so just turn on threading support whenever the std lib is thread safe:
+# define BOOST_HAS_THREADS
+#endif
+
+
+#if !defined(_GLIBCPP_USE_LONG_LONG) \
+ && !defined(_GLIBCXX_USE_LONG_LONG)\
+ && defined(BOOST_HAS_LONG_LONG)
+// May have been set by compiler/*.hpp, but "long long" without library
+// support is useless.
+# undef BOOST_HAS_LONG_LONG
+#endif
+
+#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
+# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
+# define BOOST_HAS_SLIST
+# define BOOST_HAS_HASH
+# define BOOST_SLIST_HEADER <ext/slist>
+# if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
+# define BOOST_HASH_SET_HEADER <ext/hash_set>
+# define BOOST_HASH_MAP_HEADER <ext/hash_map>
+# else
+# define BOOST_HASH_SET_HEADER <backward/hash_set>
+# define BOOST_HASH_MAP_HEADER <backward/hash_map>
+# endif
+#endif
+
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
+# define BOOST_NO_STD_UNORDERED
+#endif
+
diff --git a/3rdParty/Boost/boost/config/stdlib/modena.hpp b/3rdParty/Boost/boost/config/stdlib/modena.hpp
new file mode 100644
index 0000000..e488d13
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/modena.hpp
@@ -0,0 +1,34 @@
+// (C) Copyright Jens Maurer 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Modena C++ standard library (comes with KAI C++)
+
+#if !defined(MSIPL_COMPILE_H)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__MSIPL_COMPILE_H)
+# error "This is not the Modena C++ library!"
+# endif
+#endif
+
+#ifndef MSIPL_NL_TYPES
+#define BOOST_NO_STD_MESSAGES
+#endif
+
+#ifndef MSIPL_WCHART
+#define BOOST_NO_STD_WSTRING
+#endif
+//
+// We never have the new C++0x unordered containers:
+//
+#define BOOST_NO_STD_UNORDERED
+
+#define BOOST_STDLIB "Modena C++ standard library"
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/msl.hpp b/3rdParty/Boost/boost/config/stdlib/msl.hpp
new file mode 100644
index 0000000..746878d
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/msl.hpp
@@ -0,0 +1,63 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Darin Adler 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Metrowerks standard library:
+
+#ifndef __MSL_CPP__
+# include <boost/config/no_tr1/utility.hpp>
+# ifndef __MSL_CPP__
+# error This is not the MSL standard library!
+# endif
+#endif
+
+#if __MSL_CPP__ >= 0x6000 // Pro 6
+# define BOOST_HAS_HASH
+# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
+#endif
+#define BOOST_HAS_SLIST
+
+#if __MSL_CPP__ < 0x6209
+# define BOOST_NO_STD_MESSAGES
+#endif
+
+// check C lib version for <stdint.h>
+#include <cstddef>
+
+#if defined(__MSL__) && (__MSL__ >= 0x5000)
+# define BOOST_HAS_STDINT_H
+# if !defined(__PALMOS_TRAPS__)
+# define BOOST_HAS_UNISTD_H
+# endif
+ // boilerplate code:
+# include <boost/config/posix_features.hpp>
+#endif
+
+#if defined(_MWMT) || _MSL_THREADSAFE
+# define BOOST_HAS_THREADS
+#endif
+
+#ifdef _MSL_NO_EXPLICIT_FUNC_TEMPLATE_ARG
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+#endif
+//
+// We never have the new C++0x unordered containers:
+//
+#define BOOST_NO_STD_UNORDERED
+
+
+#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/roguewave.hpp b/3rdParty/Boost/boost/config/stdlib/roguewave.hpp
new file mode 100644
index 0000000..3e58882
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/roguewave.hpp
@@ -0,0 +1,159 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2003.
+// (C) Copyright Boris Gubenko 2007.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// Rogue Wave std lib:
+
+#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
+# error This is not the Rogue Wave standard library
+# endif
+#endif
+//
+// figure out a consistent version number:
+//
+#ifndef _RWSTD_VER
+# define BOOST_RWSTD_VER 0x010000
+#elif _RWSTD_VER < 0x010000
+# define BOOST_RWSTD_VER (_RWSTD_VER << 8)
+#else
+# define BOOST_RWSTD_VER _RWSTD_VER
+#endif
+
+#ifndef _RWSTD_VER
+# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
+#elif _RWSTD_VER < 0x04010200
+ # define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
+#else
+# ifdef _RWSTD_VER_STR
+# define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR
+# else
+# define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER)
+# endif
+#endif
+
+//
+// Prior to version 2.2.0 the primary template for std::numeric_limits
+// does not have compile time constants, even though specializations of that
+// template do:
+//
+#if BOOST_RWSTD_VER < 0x020200
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+// Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
+// library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
+#if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
+# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+# endif
+
+//
+// Borland version of numeric_limits lacks __int64 specialisation:
+//
+#ifdef __BORLANDC__
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+#endif
+
+//
+// No std::iterator if it can't figure out default template args:
+//
+#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+//
+// No iterator traits without partial specialization:
+//
+#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// Prior to version 2.0, std::auto_ptr was buggy, and there were no
+// new-style iostreams, and no conformant std::allocator:
+//
+#if (BOOST_RWSTD_VER < 0x020000)
+# define BOOST_NO_AUTO_PTR
+# define BOOST_NO_STRINGSTREAM
+# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// No template iterator constructors without member template support:
+//
+#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+#endif
+
+//
+// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
+// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
+// on HP aCC systems even though the allocator is in fact broken):
+//
+#if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// If we have a std::locale, we still may not have std::use_facet:
+//
+#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+#endif
+
+//
+// There's no std::distance prior to version 2, or without
+// partial specialization support:
+//
+#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ #define BOOST_NO_STD_DISTANCE
+#endif
+
+//
+// Some versions of the rogue wave library don't have assignable
+// OutputIterators:
+//
+#if BOOST_RWSTD_VER < 0x020100
+# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+#endif
+
+//
+// Disable BOOST_HAS_LONG_LONG when the library has no support for it.
+//
+#if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
+# undef BOOST_HAS_LONG_LONG
+#endif
+
+//
+// check that on HP-UX, the proper RW library is used
+//
+#if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD)
+# error "Boost requires Standard RW library. Please compile and link with -AA"
+#endif
+
+//
+// Define macros specific to RW V2.2 on HP-UX
+//
+#if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100)
+# ifndef __HP_TC1_MAKE_PAIR
+# define __HP_TC1_MAKE_PAIR
+# endif
+# ifndef _HP_INSTANTIATE_STD2_VL
+# define _HP_INSTANTIATE_STD2_VL
+# endif
+#endif
+
+//
+// We never have the new C++0x unordered containers:
+//
+#define BOOST_NO_STD_UNORDERED
+
diff --git a/3rdParty/Boost/boost/config/stdlib/sgi.hpp b/3rdParty/Boost/boost/config/stdlib/sgi.hpp
new file mode 100644
index 0000000..b493d49
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/sgi.hpp
@@ -0,0 +1,112 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// generic SGI STL:
+
+#if !defined(__STL_CONFIG_H)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__STL_CONFIG_H)
+# error "This is not the SGI STL!"
+# endif
+#endif
+
+//
+// No std::iterator traits without partial specialisation:
+//
+#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No std::stringstream with gcc < 3
+//
+#if defined(__GNUC__) && (__GNUC__ < 3) && \
+ ((__GNUC_MINOR__ < 95) || (__GNUC_MINOR__ == 96)) && \
+ !defined(__STL_USE_NEW_IOSTREAMS) || \
+ defined(__APPLE_CC__)
+ // Note that we only set this for GNU C++ prior to 2.95 since the
+ // latest patches for that release do contain a minimal <sstream>
+ // If you are running a 2.95 release prior to 2.95.3 then this will need
+ // setting, but there is no way to detect that automatically (other
+ // than by running the configure script).
+ // Also, the unofficial GNU C++ 2.96 included in RedHat 7.1 doesn't
+ // have <sstream>.
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// Assume no std::locale without own iostreams (this may be an
+// incorrect assumption in some cases):
+//
+#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// Original native SGI streams have non-standard std::messages facet:
+//
+#if defined(__sgi) && (_COMPILER_VERSION <= 650) && !defined(__SGI_STL_OWN_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// SGI's new iostreams have missing "const" in messages<>::open
+//
+#if defined(__sgi) && (_COMPILER_VERSION <= 740) && defined(__STL_USE_NEW_IOSTREAMS)
+# define BOOST_NO_STD_MESSAGES
+#endif
+
+//
+// No template iterator constructors, or std::allocator
+// without member templates:
+//
+#if !defined(__STL_MEMBER_TEMPLATES)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// We always have SGI style hash_set, hash_map, and slist:
+//
+#define BOOST_HAS_HASH
+#define BOOST_HAS_SLIST
+#define BOOST_NO_STD_UNORDERED
+
+//
+// If this is GNU libstdc++2, then no <limits> and no std::wstring:
+//
+#if (defined(__GNUC__) && (__GNUC__ < 3))
+# include <string>
+# if defined(__BASTRING__)
+# define BOOST_NO_LIMITS
+// Note: <boost/limits.hpp> will provide compile-time constants
+# undef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_STD_WSTRING
+# endif
+#endif
+
+//
+// There is no standard iterator unless we have namespace support:
+//
+#if !defined(__STL_USE_NAMESPACES)
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+//
+// Intrinsic type_traits support.
+// The SGI STL has it's own __type_traits class, which
+// has intrinsic compiler support with SGI's compilers.
+// Whatever map SGI style type traits to boost equivalents:
+//
+#define BOOST_HAS_SGI_TYPE_TRAITS
+
+#define BOOST_STDLIB "SGI standard library"
+
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/stlport.hpp b/3rdParty/Boost/boost/config/stdlib/stlport.hpp
new file mode 100644
index 0000000..82e4cff
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/stlport.hpp
@@ -0,0 +1,206 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Jens Maurer 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// STLPort standard library config:
+
+#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# include <cstddef>
+# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# error "This is not STLPort!"
+# endif
+#endif
+
+//
+// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+// for versions prior to 4.1(beta)
+//
+#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+//
+// If STLport thinks that there is no partial specialisation, then there is no
+// std::iterator traits:
+//
+#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No new style iostreams on GCC without STLport's iostreams enabled:
+//
+#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// No new iostreams implies no std::locale, and no std::stringstream:
+//
+#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// If the streams are not native, and we have a "using ::x" compiler bug
+// then the io stream facets are not available in namespace std::
+//
+#ifdef _STLPORT_VERSION
+# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
+# define BOOST_NO_STD_LOCALE
+# endif
+#else
+# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
+# define BOOST_NO_STD_LOCALE
+# endif
+#endif
+
+#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION < 0x500)
+# define BOOST_NO_STD_UNORDERED
+#endif
+//
+// Without member template support enabled, their are no template
+// iterate constructors, and no std::allocator:
+//
+#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+//
+// however we always have at least a partial allocator:
+//
+#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+
+#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES) || defined(_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+#if defined(_STLP_NO_MEMBER_TEMPLATE_KEYWORD) && defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// If STLport thinks there is no wchar_t at all, then we have to disable
+// the support for the relevant specilazations of std:: templates.
+//
+#if !defined(_STLP_HAS_WCHAR_T) && !defined(_STLP_WCHAR_T_IS_USHORT)
+# ifndef BOOST_NO_STD_WSTRING
+# define BOOST_NO_STD_WSTRING
+# endif
+# ifndef BOOST_NO_STD_WSTREAMBUF
+# define BOOST_NO_STD_WSTREAMBUF
+# endif
+#endif
+
+//
+// We always have SGI style hash_set, hash_map, and slist:
+//
+#ifndef _STLP_NO_EXTENSIONS
+#define BOOST_HAS_HASH
+#define BOOST_HAS_SLIST
+#endif
+
+//
+// STLport does a good job of importing names into namespace std::,
+// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
+// workaround does not conflict with STLports:
+//
+//
+// Harold Howe says:
+// Borland switched to STLport in BCB6. Defining BOOST_NO_STDC_NAMESPACE with
+// BCB6 does cause problems. If we detect C++ Builder, then don't define
+// BOOST_NO_STDC_NAMESPACE
+//
+#if !defined(__BORLANDC__) && !defined(__DMC__)
+//
+// If STLport is using it's own namespace, and the real names are in
+// the global namespace, then we duplicate STLport's using declarations
+// (by defining BOOST_NO_STDC_NAMESPACE), we do this because STLport doesn't
+// necessarily import all the names we need into namespace std::
+//
+# if (defined(__STL_IMPORT_VENDOR_CSTD) \
+ || defined(__STL_USE_OWN_NAMESPACE) \
+ || defined(_STLP_IMPORT_VENDOR_CSTD) \
+ || defined(_STLP_USE_OWN_NAMESPACE)) \
+ && (defined(__STL_VENDOR_GLOBAL_CSTD) || defined (_STLP_VENDOR_GLOBAL_CSTD))
+# define BOOST_NO_STDC_NAMESPACE
+# define BOOST_NO_EXCEPTION_STD_NAMESPACE
+# endif
+#elif defined(__BORLANDC__) && __BORLANDC__ < 0x560
+// STLport doesn't import std::abs correctly:
+#include <stdlib.h>
+namespace std { using ::abs; }
+// and strcmp/strcpy don't get imported either ('cos they are macros)
+#include <string.h>
+#ifdef strcpy
+# undef strcpy
+#endif
+#ifdef strcmp
+# undef strcmp
+#endif
+#ifdef _STLP_VENDOR_CSTD
+namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; }
+#endif
+#endif
+
+//
+// std::use_facet may be non-standard, uses a class instead:
+//
+#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_STLP_USE_FACET
+#endif
+
+//
+// If STLport thinks there are no wide functions, <cwchar> etc. is not working; but
+// only if BOOST_NO_STDC_NAMESPACE is not defined (if it is then we do the import
+// into std:: ourselves).
+//
+#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined(BOOST_NO_STDC_NAMESPACE)
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_CWCTYPE
+#endif
+
+//
+// If STLport for some reason was configured so that it thinks that wchar_t
+// is not an intrinsic type, then we have to disable the support for it as
+// well (we would be missing required specializations otherwise).
+//
+#if !defined( _STLP_HAS_WCHAR_T) || defined(_STLP_WCHAR_T_IS_USHORT)
+# undef BOOST_NO_INTRINSIC_WCHAR_T
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+//
+// Borland ships a version of STLport with C++ Builder 6 that lacks
+// hashtables and the like:
+//
+#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560)
+# undef BOOST_HAS_HASH
+#endif
+
+//
+// gcc-2.95.3/STLPort does not like the using declarations we use to get ADL with std::min/max
+//
+#if defined(__GNUC__) && (__GNUC__ < 3)
+# include <algorithm> // for std::min and std::max
+# define BOOST_USING_STD_MIN() ((void)0)
+# define BOOST_USING_STD_MAX() ((void)0)
+namespace boost { using std::min; using std::max; }
+#endif
+
+#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/config/stdlib/vacpp.hpp b/3rdParty/Boost/boost/config/stdlib/vacpp.hpp
new file mode 100644
index 0000000..c6c4566
--- /dev/null
+++ b/3rdParty/Boost/boost/config/stdlib/vacpp.hpp
@@ -0,0 +1,19 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+#if __IBMCPP__ <= 501
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+#define BOOST_HAS_MACRO_USE_FACET
+#define BOOST_NO_STD_MESSAGES
+#define BOOST_NO_STD_UNORDERED
+
+#define BOOST_STDLIB "Visual Age default standard library"
+
+
+
diff --git a/3rdParty/Boost/boost/config/suffix.hpp b/3rdParty/Boost/boost/config/suffix.hpp
new file mode 100644
index 0000000..ca80330
--- /dev/null
+++ b/3rdParty/Boost/boost/config/suffix.hpp
@@ -0,0 +1,593 @@
+// Boost config.hpp configuration header file ------------------------------//
+
+// Copyright (c) 2001-2003 John Maddock
+// Copyright (c) 2001 Darin Adler
+// Copyright (c) 2001 Peter Dimov
+// Copyright (c) 2002 Bill Kempf
+// Copyright (c) 2002 Jens Maurer
+// Copyright (c) 2002-2003 David Abrahams
+// Copyright (c) 2003 Gennaro Prota
+// Copyright (c) 2003 Eric Friedman
+//
+// Distributed under the 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.
+
+// Boost config.hpp policy and rationale documentation has been moved to
+// http://www.boost.org/libs/config/
+//
+// This file is intended to be stable, and relatively unchanging.
+// It should contain boilerplate code only - no compiler specific
+// code unless it is unavoidable - no changes unless unavoidable.
+
+#ifndef BOOST_CONFIG_SUFFIX_HPP
+#define BOOST_CONFIG_SUFFIX_HPP
+
+//
+// look for long long by looking for the appropriate macros in <limits.h>.
+// Note that we use limits.h rather than climits for maximal portability,
+// remember that since these just declare a bunch of macros, there should be
+// no namespace issues from this.
+//
+#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG) \
+ && !defined(BOOST_MSVC) && !defined(__BORLANDC__)
+# include <limits.h>
+# if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
+# define BOOST_HAS_LONG_LONG
+# else
+# define BOOST_NO_LONG_LONG
+# endif
+#endif
+
+// GCC 3.x will clean up all of those nasty macro definitions that
+// BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine
+// it under GCC 3.x.
+#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(BOOST_NO_CTYPE_FUNCTIONS)
+# undef BOOST_NO_CTYPE_FUNCTIONS
+#endif
+
+//
+// Assume any extensions are in namespace std:: unless stated otherwise:
+//
+# ifndef BOOST_STD_EXTENSION_NAMESPACE
+# define BOOST_STD_EXTENSION_NAMESPACE std
+# endif
+
+//
+// If cv-qualified specializations are not allowed, then neither are cv-void ones:
+//
+# if defined(BOOST_NO_CV_SPECIALIZATIONS) \
+ && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# endif
+
+//
+// If there is no numeric_limits template, then it can't have any compile time
+// constants either!
+//
+# if defined(BOOST_NO_LIMITS) \
+ && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+# endif
+
+//
+// if there is no long long then there is no specialisation
+// for numeric_limits<long long> either:
+//
+#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)
+# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+#endif
+
+//
+// if there is no __int64 then there is no specialisation
+// for numeric_limits<__int64> either:
+//
+#if !defined(BOOST_HAS_MS_INT64) && !defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+#endif
+
+//
+// if member templates are supported then so is the
+// VC6 subset of member templates:
+//
+# if !defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# endif
+
+//
+// Without partial specialization, can't test for partial specialisation bugs:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG)
+# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+# endif
+
+//
+// Without partial specialization, we can't have array-type partial specialisations:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+# endif
+
+//
+// Without partial specialization, std::iterator_traits can't work:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+# endif
+
+//
+// Without partial specialization, partial
+// specialization with default args won't work either:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+# define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+# endif
+
+//
+// Without member template support, we can't have template constructors
+// in the standard library either:
+//
+# if defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
+ && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# endif
+
+//
+// Without member template support, we can't have a conforming
+// std::allocator template either:
+//
+# if defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
+ && !defined(BOOST_NO_STD_ALLOCATOR)
+# define BOOST_NO_STD_ALLOCATOR
+# endif
+
+//
+// without ADL support then using declarations will break ADL as well:
+//
+#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#endif
+
+//
+// Without typeid support we have no dynamic RTTI either:
+//
+#if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+//
+// If we have a standard allocator, then we have a partial one as well:
+//
+#if !defined(BOOST_NO_STD_ALLOCATOR)
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#endif
+
+//
+// We can't have a working std::use_facet if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
+# define BOOST_NO_STD_USE_FACET
+# endif
+
+//
+// We can't have a std::messages facet if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
+# define BOOST_NO_STD_MESSAGES
+# endif
+
+//
+// We can't have a working std::wstreambuf if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_WSTREAMBUF)
+# define BOOST_NO_STD_WSTREAMBUF
+# endif
+
+//
+// We can't have a <cwctype> if there is no <cwchar>:
+//
+# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
+# define BOOST_NO_CWCTYPE
+# endif
+
+//
+// We can't have a swprintf if there is no <cwchar>:
+//
+# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
+# define BOOST_NO_SWPRINTF
+# endif
+
+//
+// If Win32 support is turned off, then we must turn off
+// threading support also, unless there is some other
+// thread API enabled:
+//
+#if defined(BOOST_DISABLE_WIN32) && defined(_WIN32) \
+ && !defined(BOOST_DISABLE_THREADS) && !defined(BOOST_HAS_PTHREADS)
+# define BOOST_DISABLE_THREADS
+#endif
+
+//
+// Turn on threading support if the compiler thinks that it's in
+// multithreaded mode. We put this here because there are only a
+// limited number of macros that identify this (if there's any missing
+// from here then add to the appropriate compiler section):
+//
+#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
+ || defined(_PTHREADS) || defined(__APPLE__) || defined(__DragonFly__)) \
+ && !defined(BOOST_HAS_THREADS)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading support off if BOOST_DISABLE_THREADS is defined:
+//
+#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
+# undef BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading support off if we don't recognise the threading API:
+//
+#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
+ && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)\
+ && !defined(BOOST_HAS_MPTASKS)
+# undef BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading detail macros off if we don't (want to) use threading
+//
+#ifndef BOOST_HAS_THREADS
+# undef BOOST_HAS_PTHREADS
+# undef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# undef BOOST_HAS_PTHREAD_YIELD
+# undef BOOST_HAS_PTHREAD_DELAY_NP
+# undef BOOST_HAS_WINTHREADS
+# undef BOOST_HAS_BETHREADS
+# undef BOOST_HAS_MPTASKS
+#endif
+
+//
+// If the compiler claims to be C99 conformant, then it had better
+// have a <stdint.h>:
+//
+# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
+# define BOOST_HAS_STDINT_H
+# ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+# endif
+# ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+# endif
+# endif
+
+//
+// Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
+// Note that this is for backwards compatibility only.
+//
+# if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST)
+# define BOOST_NO_SLIST
+# endif
+
+# if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH)
+# define BOOST_NO_HASH
+# endif
+
+//
+// Set BOOST_SLIST_HEADER if not set already:
+//
+#if defined(BOOST_HAS_SLIST) && !defined(BOOST_SLIST_HEADER)
+# define BOOST_SLIST_HEADER <slist>
+#endif
+
+//
+// Set BOOST_HASH_SET_HEADER if not set already:
+//
+#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_SET_HEADER)
+# define BOOST_HASH_SET_HEADER <hash_set>
+#endif
+
+//
+// Set BOOST_HASH_MAP_HEADER if not set already:
+//
+#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_MAP_HEADER)
+# define BOOST_HASH_MAP_HEADER <hash_map>
+#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:
+#if defined(BOOST_ABI_PREFIX) && defined(BOOST_ABI_SUFFIX) && !defined(BOOST_HAS_ABI_HEADERS)
+# define BOOST_HAS_ABI_HEADERS
+#endif
+
+#if defined(BOOST_HAS_ABI_HEADERS) && defined(BOOST_DISABLE_ABI_HEADERS)
+# undef BOOST_HAS_ABI_HEADERS
+#endif
+
+// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
+// Because std::size_t usage is so common, even in boost headers which do not
+// otherwise use the C library, the <cstddef> workaround is included here so
+// that ugly workaround code need not appear in many other boost headers.
+// NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
+// must still be #included in the usual places so that <cstddef> inclusion
+// works as expected with standard conforming compilers. The resulting
+// double inclusion of <cstddef> is harmless.
+
+# ifdef BOOST_NO_STDC_NAMESPACE
+# include <cstddef>
+ namespace std { using ::ptrdiff_t; using ::size_t; }
+# endif
+
+// Workaround for the unfortunate min/max macros defined by some platform headers
+
+#define BOOST_PREVENT_MACRO_SUBSTITUTION
+
+#ifndef BOOST_USING_STD_MIN
+# define BOOST_USING_STD_MIN() using std::min
+#endif
+
+#ifndef BOOST_USING_STD_MAX
+# define BOOST_USING_STD_MAX() using std::max
+#endif
+
+// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
+
+# ifdef BOOST_NO_STD_MIN_MAX
+
+namespace std {
+ template <class _Tp>
+ inline const _Tp& min BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
+ return __b < __a ? __b : __a;
+ }
+ template <class _Tp>
+ inline const _Tp& max BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
+ return __a < __b ? __b : __a;
+ }
+}
+
+# endif
+
+// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
+// On compilers which don't allow in-class initialization of static integral
+// constant members, we must use enums as a workaround if we want the constants
+// to be available at compile-time. This macro gives us a convenient way to
+// declare such constants.
+
+# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
+# else
+# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
+# endif
+
+// BOOST_USE_FACET / HAS_FACET workaround ----------------------------------//
+// When the standard library does not have a conforming std::use_facet there
+// are various workarounds available, but they differ from library to library.
+// The same problem occurs with has_facet.
+// These macros provide a consistent way to access a locale's facets.
+// Usage:
+// replace
+// std::use_facet<Type>(loc);
+// with
+// BOOST_USE_FACET(Type, loc);
+// Note do not add a std:: prefix to the front of BOOST_USE_FACET!
+// Use for BOOST_HAS_FACET is analogous.
+
+#if defined(BOOST_NO_STD_USE_FACET)
+# ifdef BOOST_HAS_TWO_ARG_USE_FACET
+# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type*>(0))
+# define BOOST_HAS_FACET(Type, loc) std::has_facet(loc, static_cast<Type*>(0))
+# elif defined(BOOST_HAS_MACRO_USE_FACET)
+# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
+# define BOOST_HAS_FACET(Type, loc) std::_HAS(loc, Type)
+# elif defined(BOOST_HAS_STLP_USE_FACET)
+# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet<Type >(loc))
+# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
+# endif
+#else
+# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
+# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
+#endif
+
+// BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
+// Member templates are supported by some compilers even though they can't use
+// the A::template member<U> syntax, as a workaround replace:
+//
+// typedef typename A::template rebind<U> binder;
+//
+// with:
+//
+// typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# define BOOST_NESTED_TEMPLATE template
+#else
+# define BOOST_NESTED_TEMPLATE
+#endif
+
+// BOOST_UNREACHABLE_RETURN(x) workaround -------------------------------------//
+// Normally evaluates to nothing, unless BOOST_NO_UNREACHABLE_RETURN_DETECTION
+// is defined, in which case it evaluates to return x; Use when you have a return
+// statement that can never be reached.
+
+#ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# define BOOST_UNREACHABLE_RETURN(x) return x;
+#else
+# define BOOST_UNREACHABLE_RETURN(x)
+#endif
+
+// BOOST_DEDUCED_TYPENAME workaround ------------------------------------------//
+//
+// Some compilers don't support the use of `typename' for dependent
+// types in deduced contexts, e.g.
+//
+// template <class T> void f(T, typename T::type);
+// ^^^^^^^^
+// Replace these declarations with:
+//
+// template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);
+
+#ifndef BOOST_NO_DEDUCED_TYPENAME
+# define BOOST_DEDUCED_TYPENAME typename
+#else
+# define BOOST_DEDUCED_TYPENAME
+#endif
+
+#ifndef BOOST_NO_TYPENAME_WITH_CTOR
+# define BOOST_CTOR_TYPENAME typename
+#else
+# define BOOST_CTOR_TYPENAME
+#endif
+
+// long long workaround ------------------------------------------//
+// On gcc (and maybe other compilers?) long long is alway supported
+// but it's use may generate either warnings (with -ansi), or errors
+// (with -pedantic -ansi) unless it's use is prefixed by __extension__
+//
+#if defined(BOOST_HAS_LONG_LONG)
+namespace boost{
+# ifdef __GNUC__
+ __extension__ typedef long long long_long_type;
+ __extension__ typedef unsigned long long ulong_long_type;
+# else
+ typedef long long long_long_type;
+ typedef unsigned long long ulong_long_type;
+# endif
+}
+#endif
+
+// BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
+//
+// Some compilers have problems with function templates whose template
+// parameters don't appear in the function parameter list (basically
+// they just link one instantiation of the template in the final
+// executable). These macros provide a uniform way to cope with the
+// problem with no effects on the calling syntax.
+
+// Example:
+//
+// #include <iostream>
+// #include <ostream>
+// #include <typeinfo>
+//
+// template <int n>
+// void f() { std::cout << n << ' '; }
+//
+// template <typename T>
+// void g() { std::cout << typeid(T).name() << ' '; }
+//
+// int main() {
+// f<1>();
+// f<2>();
+//
+// g<int>();
+// g<double>();
+// }
+//
+// With VC++ 6.0 the output is:
+//
+// 2 2 double double
+//
+// To fix it, write
+//
+// template <int n>
+// void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
+//
+// template <typename T>
+// void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
+//
+
+
+#if defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+
+# include "boost/type.hpp"
+# include "boost/non_type.hpp"
+
+# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type<t>* = 0
+# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type<t>*
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type<t, v>* = 0
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type<t, v>*
+
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \
+ , BOOST_EXPLICIT_TEMPLATE_TYPE(t)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \
+ , BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \
+ , BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \
+ , BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
+
+#else
+
+// no workaround needed: expand to nothing
+
+# define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
+# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
+
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
+
+
+#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+
+
+// ---------------------------------------------------------------------------//
+
+//
+// Helper macro BOOST_STRINGIZE:
+// Converts the parameter X to a string after macro replacement
+// on X has been performed.
+//
+#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
+#define BOOST_DO_STRINGIZE(X) #X
+
+//
+// Helper macro BOOST_JOIN:
+// The following piece of macro magic joins the two
+// arguments together, even when one of the arguments is
+// itself a macro (see 16.3.1 in C++ standard). The key
+// is that macro expansion of macro arguments does not
+// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
+//
+#define BOOST_JOIN( X, Y ) BOOST_DO_JOIN( X, Y )
+#define BOOST_DO_JOIN( X, Y ) BOOST_DO_JOIN2(X,Y)
+#define BOOST_DO_JOIN2( X, Y ) X##Y
+
+//
+// Set some default values for compiler/library/platform names.
+// These are for debugging config setup only:
+//
+# ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Unknown ISO C++ Compiler"
+# endif
+# ifndef BOOST_STDLIB
+# define BOOST_STDLIB "Unknown ISO standard library"
+# endif
+# ifndef BOOST_PLATFORM
+# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
+ || defined(_POSIX_SOURCE)
+# define BOOST_PLATFORM "Generic Unix"
+# else
+# define BOOST_PLATFORM "Unknown"
+# endif
+# endif
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/config/user.hpp b/3rdParty/Boost/boost/config/user.hpp
new file mode 100644
index 0000000..5a4a9d4
--- /dev/null
+++ b/3rdParty/Boost/boost/config/user.hpp
@@ -0,0 +1,124 @@
+// boost/config/user.hpp ---------------------------------------------------//
+
+// (C) Copyright John Maddock 2001.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// Do not check in modified versions of this file,
+// This file may be customized by the end user, but not by boost.
+
+//
+// Use this file to define a site and compiler specific
+// configuration policy:
+//
+
+// define this to locate a compiler config file:
+// #define BOOST_COMPILER_CONFIG <myheader>
+
+// define this to locate a stdlib config file:
+// #define BOOST_STDLIB_CONFIG <myheader>
+
+// define this to locate a platform config file:
+// #define BOOST_PLATFORM_CONFIG <myheader>
+
+// define this to disable compiler config,
+// use if your compiler config has nothing to set:
+// #define BOOST_NO_COMPILER_CONFIG
+
+// define this to disable stdlib config,
+// use if your stdlib config has nothing to set:
+// #define BOOST_NO_STDLIB_CONFIG
+
+// define this to disable platform config,
+// use if your platform config has nothing to set:
+// #define BOOST_NO_PLATFORM_CONFIG
+
+// define this to disable all config options,
+// excluding the user config. Use if your
+// setup is fully ISO compliant, and has no
+// useful extensions, or for autoconf generated
+// setups:
+// #define BOOST_NO_CONFIG
+
+// define this to make the config "optimistic"
+// about unknown compiler versions. Normally
+// unknown compiler versions are assumed to have
+// all the defects of the last known version, however
+// setting this flag, causes the config to assume
+// that unknown compiler versions are fully conformant
+// with the standard:
+// #define BOOST_STRICT_CONFIG
+
+// define this to cause the config to halt compilation
+// with an #error if it encounters anything unknown --
+// either an unknown compiler version or an unknown
+// compiler/platform/library:
+// #define BOOST_ASSERT_CONFIG
+
+
+// define if you want to disable threading support, even
+// when available:
+// #define BOOST_DISABLE_THREADS
+
+// define when you want to disable Win32 specific features
+// even when available:
+// #define BOOST_DISABLE_WIN32
+
+// BOOST_DISABLE_ABI_HEADERS: Stops boost headers from including any
+// prefix/suffix headers that normally control things like struct
+// packing and alignment.
+// #define BOOST_DISABLE_ABI_HEADERS
+
+// BOOST_ABI_PREFIX: A prefix header to include in place of whatever
+// boost.config would normally select, any replacement should set up
+// struct packing and alignment options as required.
+// #define BOOST_ABI_PREFIX my-header-name
+
+// BOOST_ABI_SUFFIX: A suffix header to include in place of whatever
+// boost.config would normally select, any replacement should undo
+// the effects of the prefix header.
+// #define BOOST_ABI_SUFFIX my-header-name
+
+// BOOST_ALL_DYN_LINK: Forces all libraries that have separate source,
+// to be linked as dll's rather than static libraries on Microsoft Windows
+// (this macro is used to turn on __declspec(dllimport) modifiers, so that
+// the compiler knows which symbols to look for in a dll rather than in a
+// static library). Note that there may be some libraries that can only
+// be statically linked (Boost.Test for example) and others which may only
+// be dynamically linked (Boost.Threads for example), in these cases this
+// macro has no effect.
+// #define BOOST_ALL_DYN_LINK
+
+// BOOST_WHATEVER_DYN_LINK: Forces library "whatever" to be linked as a dll
+// rather than a static library on Microsoft Windows: replace the WHATEVER
+// part of the macro name with the name of the library that you want to
+// dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK or
+// BOOST_REGEX_DYN_LINK etc (this macro is used to turn on __declspec(dllimport)
+// modifiers, so that the compiler knows which symbols to look for in a dll
+// rather than in a static library).
+// Note that there may be some libraries that can only be statically linked
+// (Boost.Test for example) and others which may only be dynamically linked
+// (Boost.Threads for example), in these cases this macro is unsupported.
+// #define BOOST_WHATEVER_DYN_LINK
+
+// BOOST_ALL_NO_LIB: Tells the config system not to automatically select
+// which libraries to link against.
+// Normally if a compiler supports #pragma lib, then the correct library
+// build variant will be automatically selected and linked against,
+// simply by the act of including one of that library's headers.
+// This macro turns that feature off.
+// #define BOOST_ALL_NO_LIB
+
+// BOOST_WHATEVER_NO_LIB: Tells the config system not to automatically
+// select which library to link against for library "whatever",
+// replace WHATEVER in the macro name with the name of the library;
+// for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB.
+// Normally if a compiler supports #pragma lib, then the correct library
+// build variant will be automatically selected and linked against, simply
+// by the act of including one of that library's headers. This macro turns
+// that feature off.
+// #define BOOST_WHATEVER_NO_LIB
+
+
+
diff --git a/3rdParty/Boost/boost/config/warning_disable.hpp b/3rdParty/Boost/boost/config/warning_disable.hpp
new file mode 100644
index 0000000..26ff132
--- /dev/null
+++ b/3rdParty/Boost/boost/config/warning_disable.hpp
@@ -0,0 +1,47 @@
+// Copyright John Maddock 2008
+// 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)
+//
+// This file exists to turn off some overly-pedantic warning emitted
+// by certain compilers. You should include this header only in:
+//
+// * A test case, before any other headers, or,
+// * A library source file before any other headers.
+//
+// IT SHOULD NOT BE INCLUDED BY ANY BOOST HEADER.
+//
+// YOU SHOULD NOT INCLUDE IT IF YOU CAN REASONABLY FIX THE WARNING.
+//
+// The only warnings disabled here are those that are:
+//
+// * Quite unreasonably pedantic.
+// * Generally only emitted by a single compiler.
+// * Can't easily be fixed: for example if the vendors own std lib
+// code emits these warnings!
+//
+// Note that THIS HEADER MUST NOT INCLUDE ANY OTHER HEADERS:
+// not even std library ones! Doing so may turn the warning
+// off too late to be of any use. For example the VC++ C4996
+// warning can be omitted from <iosfwd> if that header is included
+// before or by this one :-(
+//
+
+#ifndef BOOST_CONFIG_WARNING_DISABLE_HPP
+#define BOOST_CONFIG_WARNING_DISABLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ // Error 'function': was declared deprecated
+ // http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx
+ // This error is emitted when you use some perfectly conforming
+ // std lib functions in a perfectly correct way, and also by
+ // some of Microsoft's own std lib code !
+# pragma warning(disable:4996)
+#endif
+#if defined(__INTEL_COMPILER) || defined(__ICL)
+ // As above: gives warning when a "deprecated"
+ // std library function is encountered.
+# pragma warning(disable:1786)
+#endif
+
+#endif // BOOST_CONFIG_WARNING_DISABLE_HPP
diff --git a/3rdParty/Boost/boost/cregex.hpp b/3rdParty/Boost/boost/cregex.hpp
new file mode 100644
index 0000000..b7a918e
--- /dev/null
+++ b/3rdParty/Boost/boost/cregex.hpp
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org/libs/regex for most recent version.
+ * FILE cregex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares POSIX API functions
+ * + boost::RegEx high level wrapper.
+ */
+
+#ifndef BOOST_RE_CREGEX_HPP
+#define BOOST_RE_CREGEX_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <boost/regex/v4/cregex.hpp>
+
+#endif /* include guard */
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/cstdint.hpp b/3rdParty/Boost/boost/cstdint.hpp
new file mode 100644
index 0000000..d55a484
--- /dev/null
+++ b/3rdParty/Boost/boost/cstdint.hpp
@@ -0,0 +1,446 @@
+// boost cstdint.hpp header file ------------------------------------------//
+
+// (C) Copyright Beman Dawes 1999.
+// (C) Copyright Jens Mauer 2001
+// (C) Copyright John Maddock 2001
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/integer for documentation.
+
+// Revision History
+// 31 Oct 01 use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.)
+// 16 Apr 01 check LONGLONG_MAX when looking for "long long" (Jens Maurer)
+// 23 Jan 01 prefer "long" over "int" for int32_t and intmax_t (Jens Maurer)
+// 12 Nov 00 Merged <boost/stdint.h> (Jens Maurer)
+// 23 Sep 00 Added INTXX_C macro support (John Maddock).
+// 22 Sep 00 Better 64-bit support (John Maddock)
+// 29 Jun 00 Reimplement to avoid including stdint.h within namespace boost
+// 8 Aug 99 Initial version (Beman Dawes)
+
+
+#ifndef BOOST_CSTDINT_HPP
+#define BOOST_CSTDINT_HPP
+
+#include <boost/config.hpp>
+
+
+#ifdef BOOST_HAS_STDINT_H
+
+// The following #include is an implementation artifact; not part of interface.
+# ifdef __hpux
+// HP-UX has a vaguely nice <stdint.h> in a non-standard location
+# include <inttypes.h>
+# ifdef __STDC_32_MODE__
+ // this is triggered with GCC, because it defines __cplusplus < 199707L
+# define BOOST_NO_INT64_T
+# endif
+# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+
+// There is a bug in Cygwin two _C macros
+# if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__)
+# undef INTMAX_C
+# undef UINTMAX_C
+# define INTMAX_C(c) c##LL
+# define UINTMAX_C(c) c##ULL
+# endif
+
+# endif
+
+#ifdef __QNX__
+
+// QNX (Dinkumware stdlib) defines these as non-standard names.
+// Reflect to the standard names.
+
+typedef ::intleast8_t int_least8_t;
+typedef ::intfast8_t int_fast8_t;
+typedef ::uintleast8_t uint_least8_t;
+typedef ::uintfast8_t uint_fast8_t;
+
+typedef ::intleast16_t int_least16_t;
+typedef ::intfast16_t int_fast16_t;
+typedef ::uintleast16_t uint_least16_t;
+typedef ::uintfast16_t uint_fast16_t;
+
+typedef ::intleast32_t int_least32_t;
+typedef ::intfast32_t int_fast32_t;
+typedef ::uintleast32_t uint_least32_t;
+typedef ::uintfast32_t uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+typedef ::intleast64_t int_least64_t;
+typedef ::intfast64_t int_fast64_t;
+typedef ::uintleast64_t uint_least64_t;
+typedef ::uintfast64_t uint_fast64_t;
+
+# endif
+
+#endif
+
+namespace boost
+{
+
+ using ::int8_t;
+ using ::int_least8_t;
+ using ::int_fast8_t;
+ using ::uint8_t;
+ using ::uint_least8_t;
+ using ::uint_fast8_t;
+
+ using ::int16_t;
+ using ::int_least16_t;
+ using ::int_fast16_t;
+ using ::uint16_t;
+ using ::uint_least16_t;
+ using ::uint_fast16_t;
+
+ using ::int32_t;
+ using ::int_least32_t;
+ using ::int_fast32_t;
+ using ::uint32_t;
+ using ::uint_least32_t;
+ using ::uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+ using ::int64_t;
+ using ::int_least64_t;
+ using ::int_fast64_t;
+ using ::uint64_t;
+ using ::uint_least64_t;
+ using ::uint_fast64_t;
+
+# endif
+
+ using ::intmax_t;
+ using ::uintmax_t;
+
+} // namespace boost
+
+#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__)
+// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
+# include <inttypes.h>
+
+namespace boost {
+
+ using ::int8_t;
+ typedef int8_t int_least8_t;
+ typedef int8_t int_fast8_t;
+ using ::uint8_t;
+ typedef uint8_t uint_least8_t;
+ typedef uint8_t uint_fast8_t;
+
+ using ::int16_t;
+ typedef int16_t int_least16_t;
+ typedef int16_t int_fast16_t;
+ using ::uint16_t;
+ typedef uint16_t uint_least16_t;
+ typedef uint16_t uint_fast16_t;
+
+ using ::int32_t;
+ typedef int32_t int_least32_t;
+ typedef int32_t int_fast32_t;
+ using ::uint32_t;
+ typedef uint32_t uint_least32_t;
+ typedef uint32_t uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+ using ::int64_t;
+ typedef int64_t int_least64_t;
+ typedef int64_t int_fast64_t;
+ using ::uint64_t;
+ typedef uint64_t uint_least64_t;
+ typedef uint64_t uint_fast64_t;
+
+ typedef int64_t intmax_t;
+ typedef uint64_t uintmax_t;
+
+# else
+
+ typedef int32_t intmax_t;
+ typedef uint32_t uintmax_t;
+
+# endif
+
+} // namespace boost
+
+#else // BOOST_HAS_STDINT_H
+
+# include <boost/limits.hpp> // implementation artifact; not part of interface
+# include <limits.h> // needed for limits macros
+
+
+namespace boost
+{
+
+// These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit
+// platforms. For other systems, they will have to be hand tailored.
+//
+// Because the fast types are assumed to be the same as the undecorated types,
+// it may be possible to hand tailor a more efficient implementation. Such
+// an optimization may be illusionary; on the Intel x86-family 386 on, for
+// example, byte arithmetic and load/stores are as fast as "int" sized ones.
+
+// 8-bit types ------------------------------------------------------------//
+
+# if UCHAR_MAX == 0xff
+ typedef signed char int8_t;
+ typedef signed char int_least8_t;
+ typedef signed char int_fast8_t;
+ typedef unsigned char uint8_t;
+ typedef unsigned char uint_least8_t;
+ typedef unsigned char uint_fast8_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+// 16-bit types -----------------------------------------------------------//
+
+# if USHRT_MAX == 0xffff
+# if defined(__crayx1)
+ // The Cray X1 has a 16-bit short, however it is not recommend
+ // for use in performance critical code.
+ typedef short int16_t;
+ typedef short int_least16_t;
+ typedef int int_fast16_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned short uint_least16_t;
+ typedef unsigned int uint_fast16_t;
+# else
+ typedef short int16_t;
+ typedef short int_least16_t;
+ typedef short int_fast16_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned short uint_least16_t;
+ typedef unsigned short uint_fast16_t;
+# endif
+# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
+ // no 16-bit types on Cray:
+ typedef short int_least16_t;
+ typedef short int_fast16_t;
+ typedef unsigned short uint_least16_t;
+ typedef unsigned short uint_fast16_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+// 32-bit types -----------------------------------------------------------//
+
+# if ULONG_MAX == 0xffffffff
+ typedef long int32_t;
+ typedef long int_least32_t;
+ typedef long int_fast32_t;
+ typedef unsigned long uint32_t;
+ typedef unsigned long uint_least32_t;
+ typedef unsigned long uint_fast32_t;
+# elif UINT_MAX == 0xffffffff
+ typedef int int32_t;
+ typedef int int_least32_t;
+ typedef int int_fast32_t;
+ typedef unsigned int uint32_t;
+ typedef unsigned int uint_least32_t;
+ typedef unsigned int uint_fast32_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+// 64-bit types + intmax_t and uintmax_t ----------------------------------//
+
+# if defined(BOOST_HAS_LONG_LONG) && \
+ !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
+ (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
+ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
+# if defined(__hpux)
+ // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
+# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL)
+ // 2**64 - 1
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+ typedef ::boost::long_long_type intmax_t;
+ typedef ::boost::ulong_long_type uintmax_t;
+ typedef ::boost::long_long_type int64_t;
+ typedef ::boost::long_long_type int_least64_t;
+ typedef ::boost::long_long_type int_fast64_t;
+ typedef ::boost::ulong_long_type uint64_t;
+ typedef ::boost::ulong_long_type uint_least64_t;
+ typedef ::boost::ulong_long_type uint_fast64_t;
+
+# elif ULONG_MAX != 0xffffffff
+
+# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
+ typedef long intmax_t;
+ typedef unsigned long uintmax_t;
+ typedef long int64_t;
+ typedef long int_least64_t;
+ typedef long int_fast64_t;
+ typedef unsigned long uint64_t;
+ typedef unsigned long uint_least64_t;
+ typedef unsigned long uint_fast64_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG)
+ __extension__ typedef long long intmax_t;
+ __extension__ typedef unsigned long long uintmax_t;
+ __extension__ typedef long long int64_t;
+ __extension__ typedef long long int_least64_t;
+ __extension__ typedef long long int_fast64_t;
+ __extension__ typedef unsigned long long uint64_t;
+ __extension__ typedef unsigned long long uint_least64_t;
+ __extension__ typedef unsigned long long uint_fast64_t;
+# elif defined(BOOST_HAS_MS_INT64)
+ //
+ // we have Borland/Intel/Microsoft __int64:
+ //
+ typedef __int64 intmax_t;
+ typedef unsigned __int64 uintmax_t;
+ typedef __int64 int64_t;
+ typedef __int64 int_least64_t;
+ typedef __int64 int_fast64_t;
+ typedef unsigned __int64 uint64_t;
+ typedef unsigned __int64 uint_least64_t;
+ typedef unsigned __int64 uint_fast64_t;
+# else // assume no 64-bit integers
+# define BOOST_NO_INT64_T
+ typedef int32_t intmax_t;
+ typedef uint32_t uintmax_t;
+# endif
+
+} // namespace boost
+
+
+#endif // BOOST_HAS_STDINT_H
+
+#endif // BOOST_CSTDINT_HPP
+
+
+/****************************************************
+
+Macro definition section:
+
+Define various INTXX_C macros only if
+__STDC_CONSTANT_MACROS is defined.
+
+Undefine the macros if __STDC_CONSTANT_MACROS is
+not defined and the macros are (cf <cassert>).
+
+Added 23rd September 2000 (John Maddock).
+Modified 11th September 2001 to be excluded when
+BOOST_HAS_STDINT_H is defined (John Maddock).
+
+******************************************************/
+
+#if defined(__STDC_CONSTANT_MACROS) && !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && !defined(BOOST_HAS_STDINT_H)
+# define BOOST__STDC_CONSTANT_MACROS_DEFINED
+# if defined(BOOST_HAS_MS_INT64)
+//
+// Borland/Intel/Microsoft compilers have width specific suffixes:
+//
+# define INT8_C(value) value##i8
+# define INT16_C(value) value##i16
+# define INT32_C(value) value##i32
+# define INT64_C(value) value##i64
+# ifdef __BORLANDC__
+ // Borland bug: appending ui8 makes the type a signed char
+# define UINT8_C(value) static_cast<unsigned char>(value##u)
+# else
+# define UINT8_C(value) value##ui8
+# endif
+# define UINT16_C(value) value##ui16
+# define UINT32_C(value) value##ui32
+# define UINT64_C(value) value##ui64
+# define INTMAX_C(value) value##i64
+# define UINTMAX_C(value) value##ui64
+
+# else
+// do it the old fashioned way:
+
+// 8-bit types ------------------------------------------------------------//
+
+# if UCHAR_MAX == 0xff
+# define INT8_C(value) static_cast<boost::int8_t>(value)
+# define UINT8_C(value) static_cast<boost::uint8_t>(value##u)
+# endif
+
+// 16-bit types -----------------------------------------------------------//
+
+# if USHRT_MAX == 0xffff
+# define INT16_C(value) static_cast<boost::int16_t>(value)
+# define UINT16_C(value) static_cast<boost::uint16_t>(value##u)
+# endif
+
+// 32-bit types -----------------------------------------------------------//
+
+# if UINT_MAX == 0xffffffff
+# define INT32_C(value) value
+# define UINT32_C(value) value##u
+# elif ULONG_MAX == 0xffffffff
+# define INT32_C(value) value##L
+# define UINT32_C(value) value##uL
+# endif
+
+// 64-bit types + intmax_t and uintmax_t ----------------------------------//
+
+# if defined(BOOST_HAS_LONG_LONG) && \
+ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
+
+# if defined(__hpux)
+ // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
+# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615U) || \
+ (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615U) || \
+ (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615U)
+
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# define INT64_C(value) value##LL
+# define UINT64_C(value) value##uLL
+# elif ULONG_MAX != 0xffffffff
+
+# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
+# define INT64_C(value) value##L
+# define UINT64_C(value) value##uL
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# endif
+
+# ifdef BOOST_NO_INT64_T
+# define INTMAX_C(value) INT32_C(value)
+# define UINTMAX_C(value) UINT32_C(value)
+# else
+# define INTMAX_C(value) INT64_C(value)
+# define UINTMAX_C(value) UINT64_C(value)
+# endif
+
+# endif // Borland/Microsoft specific width suffixes
+
+
+#elif defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && !defined(__STDC_CONSTANT_MACROS) && !defined(BOOST_HAS_STDINT_H)
+//
+// undef all the macros:
+//
+# undef INT8_C
+# undef INT16_C
+# undef INT32_C
+# undef INT64_C
+# undef UINT8_C
+# undef UINT16_C
+# undef UINT32_C
+# undef UINT64_C
+# undef INTMAX_C
+# undef UINTMAX_C
+
+#endif // __STDC_CONSTANT_MACROS_DEFINED etc.
+
+
+
+
diff --git a/3rdParty/Boost/boost/current_function.hpp b/3rdParty/Boost/boost/current_function.hpp
new file mode 100644
index 0000000..aa5756e
--- /dev/null
+++ b/3rdParty/Boost/boost/current_function.hpp
@@ -0,0 +1,67 @@
+#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
+#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/current_function.hpp - BOOST_CURRENT_FUNCTION
+//
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/utility/current_function.html
+//
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void current_function_helper()
+{
+
+#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600))
+
+# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
+
+#elif defined(__DMC__) && (__DMC__ >= 0x810)
+
+# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
+
+#elif defined(__FUNCSIG__)
+
+# define BOOST_CURRENT_FUNCTION __FUNCSIG__
+
+#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))
+
+# define BOOST_CURRENT_FUNCTION __FUNCTION__
+
+#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550)
+
+# define BOOST_CURRENT_FUNCTION __FUNC__
+
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
+
+# define BOOST_CURRENT_FUNCTION __func__
+
+#else
+
+# define BOOST_CURRENT_FUNCTION "(unknown)"
+
+#endif
+
+}
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/date_time/adjust_functors.hpp b/3rdParty/Boost/boost/date_time/adjust_functors.hpp
new file mode 100644
index 0000000..7854ae4
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/adjust_functors.hpp
@@ -0,0 +1,178 @@
+#ifndef _DATE_TIME_ADJUST_FUNCTORS_HPP___
+#define _DATE_TIME_ADJUST_FUNCTORS_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/date.hpp"
+#include "boost/date_time/wrapping_int.hpp"
+
+namespace boost {
+namespace date_time {
+
+
+ //! Functor to iterate a fixed number of days
+ template<class date_type>
+ class day_functor
+ {
+ public:
+ typedef typename date_type::duration_type duration_type;
+ day_functor(int f) : f_(f) {}
+ duration_type get_offset(const date_type& d) const
+ {
+ // why is 'd' a parameter???
+ // fix compiler warnings
+ d.year();
+ return duration_type(f_);
+ }
+ duration_type get_neg_offset(const date_type& d) const
+ {
+ // fix compiler warnings
+ d.year();
+ return duration_type(-f_);
+ }
+ private:
+ int f_;
+ };
+
+
+ //! Provides calculation to find next nth month given a date
+ /*! This adjustment function provides the logic for 'month-based'
+ * advancement on a ymd based calendar. The policy it uses
+ * to handle the non existant end of month days is to back
+ * up to the last day of the month. Also, if the starting
+ * date is the last day of a month, this functor will attempt
+ * to adjust to the end of the month.
+
+ */
+ template<class date_type>
+ class month_functor
+ {
+ public:
+ typedef typename date_type::duration_type duration_type;
+ typedef typename date_type::calendar_type cal_type;
+ typedef typename cal_type::ymd_type ymd_type;
+ typedef typename cal_type::day_type day_type;
+
+ month_functor(int f) : f_(f), origDayOfMonth_(0) {}
+ duration_type get_offset(const date_type& d) const
+ {
+ ymd_type ymd(d.year_month_day());
+ if (origDayOfMonth_ == 0) {
+ origDayOfMonth_ = ymd.day;
+ day_type endOfMonthDay(cal_type::end_of_month_day(ymd.year,ymd.month));
+ if (endOfMonthDay == ymd.day) {
+ origDayOfMonth_ = -1; //force the value to the end of month
+ }
+ }
+ typedef date_time::wrapping_int2<short,1,12> wrap_int2;
+ typedef typename wrap_int2::int_type int_type;
+ wrap_int2 wi(ymd.month);
+ //calc the year wrap around, add() returns 0 or 1 if wrapped
+ int_type year = wi.add(static_cast<int_type>(f_));
+ year = static_cast<int_type>(year + ymd.year); //calculate resulting year
+// std::cout << "trace wi: " << wi.as_int() << std::endl;
+// std::cout << "trace year: " << year << std::endl;
+ //find the last day for the new month
+ day_type resultingEndOfMonthDay(cal_type::end_of_month_day(year, wi.as_int()));
+ //original was the end of month -- force to last day of month
+ if (origDayOfMonth_ == -1) {
+ return date_type(year, wi.as_int(), resultingEndOfMonthDay) - d;
+ }
+ day_type dayOfMonth = origDayOfMonth_;
+ if (dayOfMonth > resultingEndOfMonthDay) {
+ dayOfMonth = resultingEndOfMonthDay;
+ }
+ return date_type(year, wi.as_int(), dayOfMonth) - d;
+ }
+ //! Returns a negative duration_type
+ duration_type get_neg_offset(const date_type& d) const
+ {
+ ymd_type ymd(d.year_month_day());
+ if (origDayOfMonth_ == 0) {
+ origDayOfMonth_ = ymd.day;
+ day_type endOfMonthDay(cal_type::end_of_month_day(ymd.year,ymd.month));
+ if (endOfMonthDay == ymd.day) {
+ origDayOfMonth_ = -1; //force the value to the end of month
+ }
+ }
+ typedef date_time::wrapping_int2<short,1,12> wrap_int2;
+ typedef typename wrap_int2::int_type int_type;
+ wrap_int2 wi(ymd.month);
+ //calc the year wrap around, add() returns 0 or 1 if wrapped
+ int_type year = wi.subtract(static_cast<int_type>(f_));
+ year = static_cast<int_type>(year + ymd.year); //calculate resulting year
+ //find the last day for the new month
+ day_type resultingEndOfMonthDay(cal_type::end_of_month_day(year, wi.as_int()));
+ //original was the end of month -- force to last day of month
+ if (origDayOfMonth_ == -1) {
+ return date_type(year, wi.as_int(), resultingEndOfMonthDay) - d;
+ }
+ day_type dayOfMonth = origDayOfMonth_;
+ if (dayOfMonth > resultingEndOfMonthDay) {
+ dayOfMonth = resultingEndOfMonthDay;
+ }
+ return date_type(year, wi.as_int(), dayOfMonth) - d;
+ }
+ private:
+ int f_;
+ mutable short origDayOfMonth_;
+ };
+
+
+ //! Functor to iterate a over weeks
+ template<class date_type>
+ class week_functor
+ {
+ public:
+ typedef typename date_type::duration_type duration_type;
+ typedef typename date_type::calendar_type calendar_type;
+ week_functor(int f) : f_(f) {}
+ duration_type get_offset(const date_type& d) const
+ {
+ // why is 'd' a parameter???
+ // fix compiler warnings
+ d.year();
+ return duration_type(f_*calendar_type::days_in_week());
+ }
+ duration_type get_neg_offset(const date_type& d) const
+ {
+ // fix compiler warnings
+ d.year();
+ return duration_type(-f_*calendar_type::days_in_week());
+ }
+ private:
+ int f_;
+ };
+
+ //! Functor to iterate by a year adjusting for leap years
+ template<class date_type>
+ class year_functor
+ {
+ public:
+ //typedef typename date_type::year_type year_type;
+ typedef typename date_type::duration_type duration_type;
+ year_functor(int f) : _mf(f * 12) {}
+ duration_type get_offset(const date_type& d) const
+ {
+ return _mf.get_offset(d);
+ }
+ duration_type get_neg_offset(const date_type& d) const
+ {
+ return _mf.get_neg_offset(d);
+ }
+ private:
+ month_functor<date_type> _mf;
+ };
+
+
+} }//namespace date_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/c_time.hpp b/3rdParty/Boost/boost/date_time/c_time.hpp
new file mode 100644
index 0000000..42902a5
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/c_time.hpp
@@ -0,0 +1,105 @@
+#ifndef DATE_TIME_C_TIME_HPP___
+#define DATE_TIME_C_TIME_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+/*! @file c_time.hpp
+ Provide workarounds related to the ctime header
+*/
+
+#include <ctime>
+#include <string> // to be able to convert from string literals to exceptions
+#include <stdexcept>
+#include <boost/throw_exception.hpp>
+#include <boost/date_time/compiler_config.hpp>
+
+//Work around libraries that don't put time_t and time in namespace std
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std { using ::time_t; using ::time; using ::localtime;
+ using ::tm; using ::gmtime; }
+#endif // BOOST_NO_STDC_NAMESPACE
+
+//The following is used to support high precision time clocks
+#ifdef BOOST_HAS_GETTIMEOFDAY
+#include <sys/time.h>
+#endif
+
+#ifdef BOOST_HAS_FTIME
+#include <time.h>
+#endif
+
+namespace boost {
+namespace date_time {
+ //! Provides a uniform interface to some 'ctime' functions
+ /*! Provides a uniform interface to some ctime functions and
+ * their '_r' counterparts. The '_r' functions require a pointer to a
+ * user created std::tm struct whereas the regular functions use a
+ * staticly created struct and return a pointer to that. These wrapper
+ * functions require the user to create a std::tm struct and send in a
+ * pointer to it. A pointer to the user created struct will be returned.
+ * All functions do proper checking of the C function results and throw
+ * exceptions on error. Therefore the functions will never return NULL.
+ */
+ struct c_time {
+ public:
+#if defined(BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS)
+ //! requires a pointer to a user created std::tm struct
+ inline
+ static std::tm* localtime(const std::time_t* t, std::tm* result)
+ {
+ // localtime_r() not in namespace std???
+ result = localtime_r(t, result);
+ if (!result)
+ boost::throw_exception(std::runtime_error("could not convert calendar time to local time"));
+ return result;
+ }
+ //! requires a pointer to a user created std::tm struct
+ inline
+ static std::tm* gmtime(const std::time_t* t, std::tm* result)
+ {
+ // gmtime_r() not in namespace std???
+ result = gmtime_r(t, result);
+ if (!result)
+ boost::throw_exception(std::runtime_error("could not convert calendar time to UTC time"));
+ return result;
+ }
+#else // BOOST_HAS_THREADS
+
+#if (defined(_MSC_VER) && (_MSC_VER >= 1400))
+#pragma warning(push) // preserve warning settings
+#pragma warning(disable : 4996) // disable depricated localtime/gmtime warning on vc8
+#endif // _MSC_VER >= 1400
+ //! requires a pointer to a user created std::tm struct
+ inline
+ static std::tm* localtime(const std::time_t* t, std::tm* result)
+ {
+ result = std::localtime(t);
+ if (!result)
+ boost::throw_exception(std::runtime_error("could not convert calendar time to local time"));
+ return result;
+ }
+ //! requires a pointer to a user created std::tm struct
+ inline
+ static std::tm* gmtime(const std::time_t* t, std::tm* result)
+ {
+ result = std::gmtime(t);
+ if (!result)
+ boost::throw_exception(std::runtime_error("could not convert calendar time to UTC time"));
+ return result;
+ }
+#if (defined(_MSC_VER) && (_MSC_VER >= 1400))
+#pragma warning(pop) // restore warnings to previous state
+#endif // _MSC_VER >= 1400
+
+#endif // BOOST_HAS_THREADS
+ };
+}} // namespaces
+
+#endif // DATE_TIME_C_TIME_HPP___
diff --git a/3rdParty/Boost/boost/date_time/compiler_config.hpp b/3rdParty/Boost/boost/date_time/compiler_config.hpp
new file mode 100644
index 0000000..0dc893f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/compiler_config.hpp
@@ -0,0 +1,171 @@
+#ifndef DATE_TIME_COMPILER_CONFIG_HPP___
+#define DATE_TIME_COMPILER_CONFIG_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <cstdlib>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+// With boost release 1.33, date_time will be using a different,
+// more flexible, IO system. This new system is not compatible with
+// old compilers. The original date_time IO system remains for those
+// compilers. They must define this macro to use the legacy IO.
+// (defined(__BORLANDC__) && (__BORLANDC__ <= 0x0581) ) ) &&
+ #if( BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) \
+ || BOOST_WORKAROUND( __GNUC__, < 3) \
+ || (BOOST_WORKAROUND( _MSC_VER, <= 1300) ) \
+ ) \
+ && !defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+# define USE_DATE_TIME_PRE_1_33_FACET_IO
+#endif
+
+
+// This file performs some local compiler configurations
+
+#include <boost/date_time/locale_config.hpp> //set up locale configurations
+
+//Set up a configuration parameter for platforms that have
+//GetTimeOfDay
+#if defined(BOOST_HAS_GETTIMEOFDAY) || defined(BOOST_HAS_FTIME)
+#define BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
+#endif
+
+// To Force no default constructors for date & ptime, un-comment following
+//#define DATE_TIME_NO_DEFAULT_CONSTRUCTOR
+
+// Include extensions to date_duration - comment out to remove this feature
+#define BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES
+// these extensions are known to cause problems with gcc295
+#if defined(__GNUC__) && (__GNUC__ < 3)
+#undef BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES
+#endif
+
+#if (defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION) || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) ) )
+#define BOOST_DATE_TIME_NO_MEMBER_INIT
+#endif
+
+// include these types before we try to re-define them
+#include <boost/cstdint.hpp>
+
+//Define INT64_C for compilers that don't have it
+#if (!defined(INT64_C))
+#define INT64_C(value) int64_t(value)
+#endif
+
+
+/* Workaround for Borland iterator error. Error was "Cannot convert 'istream *' to 'wistream *' in function istream_iterator<>::istream_iterator() */
+#if defined(__BORLANDC__) && defined(BOOST_BCB_WITH_RW_LIB)
+#define BOOST_DATE_TIME_NO_WISTREAM_ITERATOR
+#endif
+
+
+// Borland v5.64 does not have the following in std namespace; v5.5.1 does
+#if defined(__BORLANDC__) && defined(BOOST_BCB_WITH_STLPORT)
+#include <locale>
+namespace std {
+ using stlport::tolower;
+ using stlport::ctype;
+ using stlport::use_facet;
+}
+#endif
+
+// workaround for errors associated with output for date classes
+// modifications and input streaming for time classes.
+// Compilers affected are:
+// gcc295, msvc (neither with STLPort), any borland
+//
+#if (((defined(__GNUC__) && (__GNUC__ < 3)) || \
+ (defined(_MSC_VER) && (_MSC_VER < 1300)) ) && \
+ !defined(_STLP_OWN_IOSTREAMS) ) || \
+ BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) )
+#define BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS
+#endif
+
+// The macro marks up places where compiler complains for missing return statement or
+// uninitialized variables after calling to boost::throw_exception.
+// BOOST_UNREACHABLE_RETURN doesn't work since even compilers that support
+// unreachable statements detection emit such warnings.
+#if defined(_MSC_VER)
+// Use special MSVC extension to markup unreachable code
+# define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) __assume(false)
+#elif !defined(BOOST_NO_UNREACHABLE_RETURN_DETECTION)
+// Call to a non-returning function should suppress the warning
+# if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std {
+ using ::abort;
+}
+# endif // defined(BOOST_NO_STDC_NAMESPACE)
+# define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) std::abort()
+#else
+// For other poor compilers the specified expression is compiled. Usually, this would be a return statement.
+# define BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(x) x
+#endif
+
+/* The following handles the definition of the necessary macros
+ * for dll building on Win32 platforms.
+ *
+ * For code that will be placed in the date_time .dll,
+ * it must be properly prefixed with BOOST_DATE_TIME_DECL.
+ * The corresponding .cpp file must have BOOST_DATE_TIME_SOURCE
+ * defined before including its header. For examples see:
+ * greg_month.hpp & greg_month.cpp
+ *
+ */
+
+#ifdef BOOST_HAS_DECLSPEC // defined in config system
+ // we need to import/export our code only if the user has specifically
+ // asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
+ // libraries to be dynamically linked, or BOOST_DATE_TIME_DYN_LINK
+ // if they want just this one to be dynamically liked:
+# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_DATE_TIME_DYN_LINK)
+ // export if this is our own source, otherwise import:
+# ifdef BOOST_DATE_TIME_SOURCE
+# define BOOST_DATE_TIME_DECL __declspec(dllexport)
+# else
+# define BOOST_DATE_TIME_DECL __declspec(dllimport)
+# endif // BOOST_DATE_TIME_SOURCE
+# endif // DYN_LINK
+#endif // BOOST_HAS_DECLSPEC
+//
+// if BOOST_WHATEVER_DECL isn't defined yet define it now:
+#ifndef BOOST_DATE_TIME_DECL
+# define BOOST_DATE_TIME_DECL
+#endif
+
+//
+// Automatically link to the correct build variant where possible.
+//
+#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_DATE_TIME_NO_LIB) && !defined(BOOST_DATE_TIME_SOURCE)
+//
+// Set the name of our library, this will get undef'ed by auto_link.hpp
+// once it's done with it:
+//
+#define BOOST_LIB_NAME boost_date_time
+//
+// If we're importing code from a dll, then tell auto_link.hpp about it:
+//
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_DATE_TIME_DYN_LINK)
+# define BOOST_DYN_LINK
+#endif
+//
+// And include the header that does the work:
+//
+#include <boost/config/auto_link.hpp>
+#endif // auto-linking disabled
+
+#if defined(BOOST_HAS_THREADS)
+# if defined(_MSC_VER) || defined(__MWERKS__) || defined(__MINGW32__) || defined(__BORLANDC__)
+ //no reentrant posix functions (eg: localtime_r)
+# elif (!defined(__hpux) || (defined(__hpux) && defined(_REENTRANT)))
+# define BOOST_DATE_TIME_HAS_REENTRANT_STD_FUNCTIONS
+# endif
+#endif
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/constrained_value.hpp b/3rdParty/Boost/boost/date_time/constrained_value.hpp
new file mode 100644
index 0000000..b273dd5
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/constrained_value.hpp
@@ -0,0 +1,121 @@
+#ifndef CONSTRAINED_VALUE_HPP___
+#define CONSTRAINED_VALUE_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <exception>
+#include <stdexcept>
+#include <boost/config.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+
+namespace boost {
+
+//! Namespace containing constrained_value template and types
+namespace CV {
+ //! Represent a min or max violation type
+ enum violation_enum {min_violation, max_violation};
+
+ //! A template to specify a constrained basic value type
+ /*! This template provides a quick way to generate
+ * an integer type with a constrained range. The type
+ * provides for the ability to specify the min, max, and
+ * and error handling policy.
+ *
+ * <b>value policies</b>
+ * A class that provides the range limits via the min and
+ * max functions as well as a function on_error that
+ * determines how errors are handled. A common strategy
+ * would be to assert or throw and exception. The on_error
+ * is passed both the current value and the new value that
+ * is in error.
+ *
+ */
+ template<class value_policies>
+ class constrained_value {
+ public:
+ typedef typename value_policies::value_type value_type;
+ // typedef except_type exception_type;
+ constrained_value(value_type value) : value_((min)())
+ {
+ assign(value);
+ }
+ constrained_value& operator=(value_type v)
+ {
+ assign(v);
+ return *this;
+ }
+ //! Return the max allowed value (traits method)
+ static value_type max BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::max)();}
+ //! Return the min allowed value (traits method)
+ static value_type min BOOST_PREVENT_MACRO_SUBSTITUTION () {return (value_policies::min)();}
+ //! Coerce into the representation type
+ operator value_type() const {return value_;}
+ protected:
+ value_type value_;
+ private:
+ void assign(value_type value)
+ {
+ //adding 1 below gets rid of a compiler warning which occurs when the
+ //min_value is 0 and the type is unsigned....
+ if (value+1 < (min)()+1) {
+ value_policies::on_error(value_, value, min_violation);
+ return;
+ }
+ if (value > (max)()) {
+ value_policies::on_error(value_, value, max_violation);
+ return;
+ }
+ value_ = value;
+ }
+};
+
+ //! Template to shortcut the constrained_value policy creation process
+ template<typename rep_type, rep_type min_value,
+ rep_type max_value, class exception_type>
+ class simple_exception_policy
+ {
+ struct exception_wrapper : public exception_type
+ {
+ // In order to support throw_exception mechanism in the BOOST_NO_EXCEPTIONS mode,
+ // we'll have to provide a way to acquire std::exception from the exception being thrown.
+ // However, we cannot derive from it, since it would make it interceptable by this class,
+ // which might not be what the user wanted.
+ operator std::out_of_range () const
+ {
+ // TODO: Make the message more descriptive by using arguments to on_error
+ return std::out_of_range("constrained value boundary has been violated");
+ }
+ };
+
+ typedef typename mpl::if_<
+ is_base_of< std::exception, exception_type >,
+ exception_type,
+ exception_wrapper
+ >::type actual_exception_type;
+
+ public:
+ typedef rep_type value_type;
+ static rep_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return min_value; }
+ static rep_type max BOOST_PREVENT_MACRO_SUBSTITUTION () { return max_value; }
+ static void on_error(rep_type, rep_type, violation_enum)
+ {
+ boost::throw_exception(actual_exception_type());
+ }
+ };
+
+
+
+} } //namespace CV
+
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date.hpp b/3rdParty/Boost/boost/date_time/date.hpp
new file mode 100644
index 0000000..beab047
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date.hpp
@@ -0,0 +1,197 @@
+#ifndef DATE_TIME_DATE_HPP___
+#define DATE_TIME_DATE_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/year_month_day.hpp"
+#include "boost/date_time/special_defs.hpp"
+#include "boost/operators.hpp"
+
+namespace boost {
+namespace date_time {
+
+ //!Representation of timepoint at the one day level resolution.
+ /*!
+ The date template represents an interface shell for a date class
+ that is based on a year-month-day system such as the gregorian
+ or iso systems. It provides basic operations to enable calculation
+ and comparisons.
+
+ <b>Theory</b>
+
+ This date representation fundamentally departs from the C tm struct
+ approach. The goal for this type is to provide efficient date
+ operations (add, subtract) and storage (minimize space to represent)
+ in a concrete class. Thus, the date uses a count internally to
+ represent a particular date. The calendar parameter defines
+ the policies for converting the the year-month-day and internal
+ counted form here. Applications that need to perform heavy
+ formatting of the same date repeatedly will perform better
+ by using the year-month-day representation.
+
+ Internally the date uses a day number to represent the date.
+ This is a monotonic time representation. This representation
+ allows for fast comparison as well as simplifying
+ the creation of writing numeric operations. Essentially, the
+ internal day number is like adjusted julian day. The adjustment
+ is determined by the Epoch date which is represented as day 1 of
+ the calendar. Day 0 is reserved for negative infinity so that
+ any actual date is automatically greater than negative infinity.
+ When a date is constructed from a date or formatted for output,
+ the appropriate conversions are applied to create the year, month,
+ day representations.
+ */
+
+
+ template<class T, class calendar, class duration_type_>
+ class date : private
+ boost::less_than_comparable<T
+ , boost::equality_comparable<T
+ > >
+ {
+ public:
+ typedef T date_type;
+ typedef calendar calendar_type;
+ typedef typename calendar::date_traits_type traits_type;
+ typedef duration_type_ duration_type;
+ typedef typename calendar::year_type year_type;
+ typedef typename calendar::month_type month_type;
+ typedef typename calendar::day_type day_type;
+ typedef typename calendar::ymd_type ymd_type;
+ typedef typename calendar::date_rep_type date_rep_type;
+ typedef typename calendar::date_int_type date_int_type;
+ typedef typename calendar::day_of_week_type day_of_week_type;
+ date(year_type y, month_type m, day_type d)
+ : days_(calendar::day_number(ymd_type(y, m, d)))
+ {}
+ date(const ymd_type& ymd)
+ : days_(calendar::day_number(ymd))
+ {}
+ //let the compiler write copy, assignment, and destructor
+ year_type year() const
+ {
+ ymd_type ymd = calendar::from_day_number(days_);
+ return ymd.year;
+ }
+ month_type month() const
+ {
+ ymd_type ymd = calendar::from_day_number(days_);
+ return ymd.month;
+ }
+ day_type day() const
+ {
+ ymd_type ymd = calendar::from_day_number(days_);
+ return ymd.day;
+ }
+ day_of_week_type day_of_week() const
+ {
+ ymd_type ymd = calendar::from_day_number(days_);
+ return calendar::day_of_week(ymd);
+ }
+ ymd_type year_month_day() const
+ {
+ return calendar::from_day_number(days_);
+ }
+ bool operator<(const date_type& rhs) const
+ {
+ return days_ < rhs.days_;
+ }
+ bool operator==(const date_type& rhs) const
+ {
+ return days_ == rhs.days_;
+ }
+ //! check to see if date is a special value
+ bool is_special()const
+ {
+ return(is_not_a_date() || is_infinity());
+ }
+ //! check to see if date is not a value
+ bool is_not_a_date() const
+ {
+ return traits_type::is_not_a_number(days_);
+ }
+ //! check to see if date is one of the infinity values
+ bool is_infinity() const
+ {
+ return traits_type::is_inf(days_);
+ }
+ //! check to see if date is greater than all possible dates
+ bool is_pos_infinity() const
+ {
+ return traits_type::is_pos_inf(days_);
+ }
+ //! check to see if date is greater than all possible dates
+ bool is_neg_infinity() const
+ {
+ return traits_type::is_neg_inf(days_);
+ }
+ //! return as a special value or a not_special if a normal date
+ special_values as_special() const
+ {
+ return traits_type::to_special(days_);
+ }
+ duration_type operator-(const date_type& d) const
+ {
+ date_rep_type val = date_rep_type(days_) - date_rep_type(d.days_);
+ return duration_type(val.as_number());
+ }
+
+ date_type operator-(const duration_type& dd) const
+ {
+ if(dd.is_special())
+ {
+ return date_type(date_rep_type(days_) - dd.get_rep());
+ }
+ return date_type(date_rep_type(days_) - dd.days());
+ }
+ date_type operator-=(const duration_type& dd)
+ {
+ *this = *this - dd;
+ return date_type(days_);
+ }
+ date_rep_type day_count() const
+ {
+ return days_;
+ };
+ //allow internal access from operators
+ date_type operator+(const duration_type& dd) const
+ {
+ if(dd.is_special())
+ {
+ return date_type(date_rep_type(days_) + dd.get_rep());
+ }
+ return date_type(date_rep_type(days_) + dd.days());
+ }
+ date_type operator+=(const duration_type& dd)
+ {
+ *this = *this + dd;
+ return date_type(days_);
+ }
+
+ //see reference
+ protected:
+ /*! This is a private constructor which allows for the creation of new
+ dates. It is not exposed to users since that would require class
+ users to understand the inner workings of the date class.
+ */
+ explicit date(date_int_type days) : days_(days) {};
+ explicit date(date_rep_type days) : days_(days.as_number()) {};
+ date_int_type days_;
+
+ };
+
+
+
+
+} } // namespace date_time
+
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_clock_device.hpp b/3rdParty/Boost/boost/date_time/date_clock_device.hpp
new file mode 100644
index 0000000..6ccb26e
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_clock_device.hpp
@@ -0,0 +1,77 @@
+#ifndef DATE_CLOCK_DEVICE_HPP___
+#define DATE_CLOCK_DEVICE_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/c_time.hpp"
+
+
+namespace boost {
+namespace date_time {
+
+ //! A clock providing day level services based on C time_t capabilities
+ /*! This clock uses Posix interfaces as its implementation and hence
+ * uses the timezone settings of the operating system. Incorrect
+ * user settings will result in incorrect results for the calls
+ * to local_day.
+ */
+ template<class date_type>
+ class day_clock
+ {
+ public:
+ typedef typename date_type::ymd_type ymd_type;
+ //! Get the local day as a date type
+ static date_type local_day()
+ {
+ return date_type(local_day_ymd());
+ }
+ //! Get the local day as a ymd_type
+ static typename date_type::ymd_type local_day_ymd()
+ {
+ ::std::tm result;
+ ::std::tm* curr = get_local_time(result);
+ return ymd_type(curr->tm_year + 1900,
+ curr->tm_mon + 1,
+ curr->tm_mday);
+ }
+ //! Get the current day in universal date as a ymd_type
+ static typename date_type::ymd_type universal_day_ymd()
+ {
+ ::std::tm result;
+ ::std::tm* curr = get_universal_time(result);
+ return ymd_type(curr->tm_year + 1900,
+ curr->tm_mon + 1,
+ curr->tm_mday);
+ }
+ //! Get the UTC day as a date type
+ static date_type universal_day()
+ {
+ return date_type(universal_day_ymd());
+ }
+
+ private:
+ static ::std::tm* get_local_time(std::tm& result)
+ {
+ ::std::time_t t;
+ ::std::time(&t);
+ return c_time::localtime(&t, &result);
+ }
+ static ::std::tm* get_universal_time(std::tm& result)
+ {
+ ::std::time_t t;
+ ::std::time(&t);
+ return c_time::gmtime(&t, &result);
+ }
+
+ };
+
+} } //namespace date_time
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_defs.hpp b/3rdParty/Boost/boost/date_time/date_defs.hpp
new file mode 100644
index 0000000..bc25b56
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_defs.hpp
@@ -0,0 +1,26 @@
+#ifndef DATE_TIME_DATE_DEFS_HPP
+#define DATE_TIME_DATE_DEFS_HPP
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+namespace boost {
+namespace date_time {
+
+ //! An enumeration of weekday names
+ enum weekdays {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
+
+ //! Simple enum to allow for nice programming with Jan, Feb, etc
+ enum months_of_year {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec,NotAMonth,NumMonths};
+
+} } //namespace date_time
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_duration.hpp b/3rdParty/Boost/boost/date_time/date_duration.hpp
new file mode 100644
index 0000000..3871aac
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_duration.hpp
@@ -0,0 +1,146 @@
+#ifndef DATE_TIME_DATE_DURATION__
+#define DATE_TIME_DATE_DURATION__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+#include <boost/operators.hpp>
+#include <boost/date_time/special_defs.hpp>
+
+namespace boost {
+namespace date_time {
+
+
+ //! Duration type with date level resolution
+ template<class duration_rep_traits>
+ class date_duration : private
+ boost::less_than_comparable1< date_duration< duration_rep_traits >
+ , boost::equality_comparable1< date_duration< duration_rep_traits >
+ , boost::addable1< date_duration< duration_rep_traits >
+ , boost::subtractable1< date_duration< duration_rep_traits >
+ , boost::dividable2< date_duration< duration_rep_traits >, int
+ > > > > >
+ {
+ public:
+ typedef typename duration_rep_traits::int_type duration_rep_type;
+ typedef typename duration_rep_traits::impl_type duration_rep;
+
+ //! Construct from a day count
+ explicit date_duration(duration_rep day_count) : days_(day_count) {};
+
+ /*! construct from special_values - only works when
+ * instantiated with duration_traits_adapted */
+ date_duration(special_values sv) :
+ days_(duration_rep::from_special(sv))
+ {}
+
+ // copy constructor required for addable<> & subtractable<>
+ //! Construct from another date_duration (Copy Constructor)
+ date_duration(const date_duration<duration_rep_traits>& other) :
+ days_(other.days_)
+ {}
+
+ //! returns days_ as it's instantiated type - used for streaming
+ duration_rep get_rep()const
+ {
+ return days_;
+ }
+ bool is_special()const
+ {
+ return days_.is_special();
+ }
+ //! returns days as value, not object.
+ duration_rep_type days() const
+ {
+ return duration_rep_traits::as_number(days_);
+ }
+ //! Returns the smallest duration -- used by to calculate 'end'
+ static date_duration unit()
+ {
+ return date_duration<duration_rep_traits>(1);
+ }
+ //! Equality
+ bool operator==(const date_duration& rhs) const
+ {
+ return days_ == rhs.days_;
+ }
+ //! Less
+ bool operator<(const date_duration& rhs) const
+ {
+ return days_ < rhs.days_;
+ }
+
+ /* For shortcut operators (+=, -=, etc) simply using
+ * "days_ += days_" may not work. If instantiated with
+ * an int_adapter, shortcut operators are not present,
+ * so this will not compile */
+
+ //! Subtract another duration -- result is signed
+ date_duration& operator-=(const date_duration& rhs)
+ {
+ //days_ -= rhs.days_;
+ days_ = days_ - rhs.days_;
+ return *this;
+ }
+ //! Add a duration -- result is signed
+ date_duration& operator+=(const date_duration& rhs)
+ {
+ days_ = days_ + rhs.days_;
+ return *this;
+ }
+
+ //! unary- Allows for dd = -date_duration(2); -> dd == -2
+ date_duration operator-() const
+ {
+ return date_duration<duration_rep_traits>(get_rep() * (-1));
+ }
+ //! Division operations on a duration with an integer.
+ date_duration& operator/=(int divisor)
+ {
+ days_ = days_ / divisor;
+ return *this;
+ }
+
+ //! return sign information
+ bool is_negative() const
+ {
+ return days_ < 0;
+ }
+
+ private:
+ duration_rep days_;
+ };
+
+
+ /*! Struct for instantiating date_duration with <b>NO</b> special values
+ * functionality. Allows for transparent implementation of either
+ * date_duration<long> or date_duration<int_adapter<long> > */
+ struct duration_traits_long
+ {
+ typedef long int_type;
+ typedef long impl_type;
+ static int_type as_number(impl_type i) { return i; };
+ };
+
+ /*! Struct for instantiating date_duration <b>WITH</b> special values
+ * functionality. Allows for transparent implementation of either
+ * date_duration<long> or date_duration<int_adapter<long> > */
+ struct duration_traits_adapted
+ {
+ typedef long int_type;
+ typedef boost::date_time::int_adapter<long> impl_type;
+ static int_type as_number(impl_type i) { return i.as_number(); };
+ };
+
+
+} } //namspace date_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/date_duration_types.hpp b/3rdParty/Boost/boost/date_time/date_duration_types.hpp
new file mode 100644
index 0000000..1512c0e
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_duration_types.hpp
@@ -0,0 +1,269 @@
+#ifndef DATE_DURATION_TYPES_HPP___
+#define DATE_DURATION_TYPES_HPP___
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include <boost/date_time/int_adapter.hpp>
+#include <boost/date_time/special_defs.hpp>
+#include <boost/date_time/date_duration.hpp>
+
+namespace boost {
+namespace date_time {
+
+
+ //! Additional duration type that represents a number of n*7 days
+ template <class duration_config>
+ class weeks_duration : public date_duration<duration_config> {
+ public:
+ weeks_duration(typename duration_config::impl_type w)
+ : date_duration<duration_config>(w * 7) {}
+ weeks_duration(special_values sv)
+ : date_duration<duration_config>(sv) {}
+ };
+
+ // predeclare
+ template<class t>
+ class years_duration;
+
+ //! additional duration type that represents a logical month
+ /*! A logical month enables things like: "date(2002,Mar,2) + months(2) ->
+ * 2002-May2". If the date is a last day-of-the-month, the result will
+ * also be a last-day-of-the-month.
+ */
+ template<class base_config>
+ class months_duration
+ {
+ private:
+ typedef typename base_config::int_rep int_rep;
+ typedef typename int_rep::int_type int_type;
+ typedef typename base_config::date_type date_type;
+ typedef typename date_type::duration_type duration_type;
+ typedef typename base_config::month_adjustor_type month_adjustor_type;
+ typedef months_duration<base_config> months_type;
+ typedef years_duration<base_config> years_type;
+ public:
+ months_duration(int_rep num) : _m(num) {}
+ months_duration(special_values sv) : _m(sv)
+ {
+ _m = int_rep::from_special(sv);
+ }
+ int_rep number_of_months() const { return _m; }
+ //! returns a negative duration
+ duration_type get_neg_offset(const date_type& d) const
+ {
+ month_adjustor_type m_adj(_m.as_number());
+ return duration_type(m_adj.get_neg_offset(d));
+ }
+ duration_type get_offset(const date_type& d) const
+ {
+ month_adjustor_type m_adj(_m.as_number());
+ return duration_type(m_adj.get_offset(d));
+ }
+ bool operator==(const months_type& rhs) const
+ {
+ return(_m == rhs._m);
+ }
+ bool operator!=(const months_type& rhs) const
+ {
+ return(_m != rhs._m);
+ }
+ months_type operator+(const months_type& rhs)const
+ {
+ return months_type(_m + rhs._m);
+ }
+ months_type& operator+=(const months_type& rhs)
+ {
+ _m = _m + rhs._m;
+ return *this;
+ }
+ months_type operator-(const months_type& rhs)const
+ {
+ return months_type(_m - rhs._m);
+ }
+ months_type& operator-=(const months_type& rhs)
+ {
+ _m = _m - rhs._m;
+ return *this;
+ }
+ months_type operator*(const int_type rhs)const
+ {
+ return months_type(_m * rhs);
+ }
+ months_type& operator*=(const int_type rhs)
+ {
+ _m = _m * rhs;
+ return *this;
+ }
+ months_type operator/(const int_type rhs)const
+ {
+ return months_type(_m / rhs);
+ }
+ months_type& operator/=(const int_type rhs)
+ {
+ _m = _m / rhs;
+ return *this;
+ }
+ months_type operator+(const years_type& y)const
+ {
+ return months_type(y.number_of_years() * 12 + _m);
+ }
+ months_type& operator+=(const years_type& y)
+ {
+ _m = y.number_of_years() * 12 + _m;
+ return *this;
+ }
+ months_type operator-(const years_type& y) const
+ {
+ return months_type(_m - y.number_of_years() * 12);
+ }
+ months_type& operator-=(const years_type& y)
+ {
+ _m = _m - y.number_of_years() * 12;
+ return *this;
+ }
+
+ //
+ friend date_type operator+(const date_type& d, const months_type& m)
+ {
+ return d + m.get_offset(d);
+ }
+ friend date_type operator+=(date_type& d, const months_type& m)
+ {
+ return d += m.get_offset(d);
+ }
+ friend date_type operator-(const date_type& d, const months_type& m)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return d + m.get_neg_offset(d);
+ }
+ friend date_type operator-=(date_type& d, const months_type& m)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return d += m.get_neg_offset(d);
+ }
+
+ private:
+ int_rep _m;
+ };
+
+ //! additional duration type that represents a logical year
+ /*! A logical year enables things like: "date(2002,Mar,2) + years(2) ->
+ * 2004-Mar-2". If the date is a last day-of-the-month, the result will
+ * also be a last-day-of-the-month (ie date(2001-Feb-28) + years(3) ->
+ * 2004-Feb-29).
+ */
+ template<class base_config>
+ class years_duration
+ {
+ private:
+ typedef typename base_config::int_rep int_rep;
+ typedef typename int_rep::int_type int_type;
+ typedef typename base_config::date_type date_type;
+ typedef typename date_type::duration_type duration_type;
+ typedef typename base_config::month_adjustor_type month_adjustor_type;
+ typedef years_duration<base_config> years_type;
+ typedef months_duration<base_config> months_type;
+ public:
+ years_duration(int_rep num) : _y(num) {}
+ years_duration(special_values sv) : _y(sv)
+ {
+ _y = int_rep::from_special(sv);
+ }
+ int_rep number_of_years() const { return _y; }
+ //! returns a negative duration
+ duration_type get_neg_offset(const date_type& d) const
+ {
+ month_adjustor_type m_adj(_y.as_number() * 12);
+ return duration_type(m_adj.get_neg_offset(d));
+ }
+ duration_type get_offset(const date_type& d) const
+ {
+ month_adjustor_type m_adj(_y.as_number() * 12);
+ return duration_type(m_adj.get_offset(d));
+ }
+ bool operator==(const years_type& rhs) const
+ {
+ return(_y == rhs._y);
+ }
+ bool operator!=(const years_type& rhs) const
+ {
+ return(_y != rhs._y);
+ }
+ years_type operator+(const years_type& rhs)const
+ {
+ return years_type(_y + rhs._y);
+ }
+ years_type& operator+=(const years_type& rhs)
+ {
+ _y = _y + rhs._y;
+ return *this;
+ }
+ years_type operator-(const years_type& rhs)const
+ {
+ return years_type(_y - rhs._y);
+ }
+ years_type& operator-=(const years_type& rhs)
+ {
+ _y = _y - rhs._y;
+ return *this;
+ }
+ years_type operator*(const int_type rhs)const
+ {
+ return years_type(_y * rhs);
+ }
+ years_type& operator*=(const int_type rhs)
+ {
+ _y = _y * rhs;
+ return *this;
+ }
+ years_type operator/(const int_type rhs)const
+ {
+ return years_type(_y / rhs);
+ }
+ years_type& operator/=(const int_type rhs)
+ {
+ _y = _y / rhs;
+ return *this;
+ }
+ months_type operator+(const months_type& m) const
+ {
+ return(months_type(_y * 12 + m.number_of_months()));
+ }
+ months_type operator-(const months_type& m) const
+ {
+ return(months_type(_y * 12 - m.number_of_months()));
+ }
+
+ //
+ friend date_type operator+(const date_type& d, const years_type& y)
+ {
+ return d + y.get_offset(d);
+ }
+ friend date_type operator+=(date_type& d, const years_type& y)
+ {
+ return d += y.get_offset(d);
+ }
+ friend date_type operator-(const date_type& d, const years_type& y)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return d + y.get_neg_offset(d);
+ }
+ friend date_type operator-=(date_type& d, const years_type& y)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return d += y.get_neg_offset(d);
+ }
+
+ private:
+ int_rep _y;
+ };
+
+}} // namespace boost::date_time
+
+#endif // DATE_DURATION_TYPES_HPP___
diff --git a/3rdParty/Boost/boost/date_time/date_facet.hpp b/3rdParty/Boost/boost/date_time/date_facet.hpp
new file mode 100644
index 0000000..a592c11
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_facet.hpp
@@ -0,0 +1,781 @@
+#ifndef _DATE_TIME_DATE_FACET__HPP___
+#define _DATE_TIME_DATE_FACET__HPP___
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Martin Andrian, Jeff Garland, Bart Garst
+ * $Date: 2009-02-01 06:29:43 -0500 (Sun, 01 Feb 2009) $
+ */
+
+#include <locale>
+#include <string>
+#include <vector>
+#include <iterator> // ostreambuf_iterator
+#include <boost/throw_exception.hpp>
+#include <boost/algorithm/string/replace.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/period.hpp>
+#include <boost/date_time/special_defs.hpp>
+#include <boost/date_time/special_values_formatter.hpp>
+#include <boost/date_time/period_formatter.hpp>
+#include <boost/date_time/period_parser.hpp>
+#include <boost/date_time/date_generator_formatter.hpp>
+#include <boost/date_time/date_generator_parser.hpp>
+#include <boost/date_time/format_date_parser.hpp>
+
+namespace boost { namespace date_time {
+
+
+ /*! Class that provides format based I/O facet for date types.
+ *
+ * This class allows the formatting of dates by using format string.
+ * Format strings are:
+ *
+ * - %A => long_weekday_format - Full name Ex: Tuesday
+ * - %a => short_weekday_format - Three letter abbreviation Ex: Tue
+ * - %B => long_month_format - Full name Ex: October
+ * - %b => short_month_format - Three letter abbreviation Ex: Oct
+ * - %x => standard_format_specifier - defined by the locale
+ * - %Y-%b-%d => default_date_format - YYYY-Mon-dd
+ *
+ * Default month format == %b
+ * Default weekday format == %a
+ */
+ template <class date_type,
+ class CharT,
+ class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class date_facet : public std::locale::facet {
+ public:
+ typedef typename date_type::duration_type duration_type;
+ // greg_weekday is gregorian_calendar::day_of_week_type
+ typedef typename date_type::day_of_week_type day_of_week_type;
+ typedef typename date_type::day_type day_type;
+ typedef typename date_type::month_type month_type;
+ typedef boost::date_time::period<date_type,duration_type> period_type;
+ typedef std::basic_string<CharT> string_type;
+ typedef CharT char_type;
+ typedef boost::date_time::period_formatter<CharT> period_formatter_type;
+ typedef boost::date_time::special_values_formatter<CharT> special_values_formatter_type;
+ typedef std::vector<std::basic_string<CharT> > input_collection_type;
+ // used for the output of the date_generators
+ typedef date_generator_formatter<date_type, CharT> date_gen_formatter_type;
+ typedef partial_date<date_type> partial_date_type;
+ typedef nth_kday_of_month<date_type> nth_kday_type;
+ typedef first_kday_of_month<date_type> first_kday_type;
+ typedef last_kday_of_month<date_type> last_kday_type;
+ typedef first_kday_after<date_type> kday_after_type;
+ typedef first_kday_before<date_type> kday_before_type;
+ static const char_type long_weekday_format[3];
+ static const char_type short_weekday_format[3];
+ static const char_type long_month_format[3];
+ static const char_type short_month_format[3];
+ static const char_type default_period_separator[4];
+ static const char_type standard_format_specifier[3];
+ static const char_type iso_format_specifier[7];
+ static const char_type iso_format_extended_specifier[9];
+ static const char_type default_date_format[9]; // YYYY-Mon-DD
+ static std::locale::id id;
+
+#if defined (__SUNPRO_CC) && defined (_RWSTD_VER)
+ std::locale::id& __get_id (void) const { return id; }
+#endif
+
+ explicit date_facet(::size_t a_ref = 0)
+ : std::locale::facet(a_ref),
+ //m_format(standard_format_specifier)
+ m_format(default_date_format),
+ m_month_format(short_month_format),
+ m_weekday_format(short_weekday_format)
+ {}
+
+ explicit date_facet(const char_type* format_str,
+ const input_collection_type& short_names,
+ ::size_t ref_count = 0)
+ : std::locale::facet(ref_count),
+ m_format(format_str),
+ m_month_format(short_month_format),
+ m_weekday_format(short_weekday_format),
+ m_month_short_names(short_names)
+ {}
+
+
+ explicit date_facet(const char_type* format_str,
+ period_formatter_type per_formatter = period_formatter_type(),
+ special_values_formatter_type sv_formatter = special_values_formatter_type(),
+ date_gen_formatter_type dg_formatter = date_gen_formatter_type(),
+ ::size_t ref_count = 0)
+ : std::locale::facet(ref_count),
+ m_format(format_str),
+ m_month_format(short_month_format),
+ m_weekday_format(short_weekday_format),
+ m_period_formatter(per_formatter),
+ m_date_gen_formatter(dg_formatter),
+ m_special_values_formatter(sv_formatter)
+ {}
+ void format(const char_type* const format_str) {
+ m_format = format_str;
+ }
+ virtual void set_iso_format()
+ {
+ m_format = iso_format_specifier;
+ }
+ virtual void set_iso_extended_format()
+ {
+ m_format = iso_format_extended_specifier;
+ }
+ void month_format(const char_type* const format_str) {
+ m_month_format = format_str;
+ }
+ void weekday_format(const char_type* const format_str) {
+ m_weekday_format = format_str;
+ }
+
+ void period_formatter(period_formatter_type per_formatter) {
+ m_period_formatter= per_formatter;
+ }
+ void special_values_formatter(const special_values_formatter_type& svf)
+ {
+ m_special_values_formatter = svf;
+ }
+ void short_weekday_names(const input_collection_type& short_names)
+ {
+ m_weekday_short_names = short_names;
+ }
+ void long_weekday_names(const input_collection_type& long_names)
+ {
+ m_weekday_long_names = long_names;
+ }
+
+ void short_month_names(const input_collection_type& short_names)
+ {
+ m_month_short_names = short_names;
+ }
+
+ void long_month_names(const input_collection_type& long_names)
+ {
+ m_month_long_names = long_names;
+ }
+
+ void date_gen_phrase_strings(const input_collection_type& new_strings,
+ typename date_gen_formatter_type::phrase_elements beg_pos=date_gen_formatter_type::first)
+ {
+ m_date_gen_formatter.elements(new_strings, beg_pos);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const date_type& d) const
+ {
+ if (d.is_special()) {
+ return do_put_special(next, a_ios, fill_char, d.as_special());
+ }
+ //The following line of code required the date to support a to_tm function
+ return do_put_tm(next, a_ios, fill_char, to_tm(d), m_format);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const duration_type& dd) const
+ {
+ if (dd.is_special()) {
+ return do_put_special(next, a_ios, fill_char, dd.get_rep().as_special());
+ }
+
+ typedef std::num_put<CharT, OutItrT> num_put;
+ if (std::has_facet<num_put>(a_ios.getloc())) {
+ return std::use_facet<num_put>(a_ios.getloc()).put(next, a_ios, fill_char, dd.get_rep().as_number());
+ }
+ else {
+ num_put* f = new num_put();
+ std::locale l = std::locale(a_ios.getloc(), f);
+ a_ios.imbue(l);
+ return f->put(next, a_ios, fill_char, dd.get_rep().as_number());
+ }
+
+ }
+
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const month_type& m) const
+ {
+ //if (d.is_special()) {
+ // return do_put_special(next, a_ios, fill_char, d.as_special());
+ //}
+ //The following line of code required the date to support a to_tm function
+ tm dtm;
+ init_tm(dtm);
+ dtm.tm_mon = m -1;
+ return do_put_tm(next, a_ios, fill_char, dtm, m_month_format);
+ }
+
+ //! puts the day of month
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const day_type& day) const
+ {
+ tm dtm;
+ init_tm(dtm);
+ dtm.tm_mday = day.as_number();
+ char_type tmp[3] = {'%','d'};
+ string_type temp_format(tmp);
+ return do_put_tm(next, a_ios, fill_char, dtm, temp_format);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const day_of_week_type& dow) const
+ {
+ //if (d.is_special()) {
+ // return do_put_special(next, a_ios, fill_char, d.as_special());
+ //}
+ //The following line of code required the date to support a to_tm function
+ tm dtm;
+ init_tm(dtm);
+ dtm.tm_wday = dow;
+ return do_put_tm(next, a_ios, fill_char, dtm, m_weekday_format);
+ }
+
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const period_type& p) const
+ {
+ return m_period_formatter.put_period(next, a_ios, fill_char, p, *this);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const partial_date_type& pd) const
+ {
+ return m_date_gen_formatter.put_partial_date(next, a_ios, fill_char, pd, *this);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const nth_kday_type& nkd) const
+ {
+ return m_date_gen_formatter.put_nth_kday(next, a_ios, fill_char, nkd, *this);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const first_kday_type& fkd) const
+ {
+ return m_date_gen_formatter.put_first_kday(next, a_ios, fill_char, fkd, *this);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const last_kday_type& lkd) const
+ {
+ return m_date_gen_formatter.put_last_kday(next, a_ios, fill_char, lkd, *this);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const kday_before_type& fkb) const
+ {
+ return m_date_gen_formatter.put_kday_before(next, a_ios, fill_char, fkb, *this);
+ }
+
+ OutItrT put(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const kday_after_type& fka) const
+ {
+ return m_date_gen_formatter.put_kday_after(next, a_ios, fill_char, fka, *this);
+ }
+
+ protected:
+ //! Helper function to initialize all fields in a tm struct
+ tm init_tm(tm& tm_value) const
+ {
+ tm_value.tm_sec = 0; /* seconds */
+ tm_value.tm_min = 0; /* minutes */
+ tm_value.tm_hour = 0; /* hours */
+ tm_value.tm_mday = 0; /* day of the month */
+ tm_value.tm_mon = 0; /* month */
+ tm_value.tm_year = 0; /* year */
+ tm_value.tm_wday = 0; /* day of the week */
+ tm_value.tm_yday = 0; /* day in the year */
+ tm_value.tm_isdst = 0; /* daylight saving time */
+ return tm_value;
+ }
+ virtual OutItrT do_put_special(OutItrT next,
+ std::ios_base& /*a_ios*/,
+ char_type /*fill_char*/,
+ const boost::date_time::special_values sv) const
+ {
+ m_special_values_formatter.put_special(next, sv);
+ return next;
+ }
+ virtual OutItrT do_put_tm(OutItrT next,
+ std::ios_base& a_ios,
+ char_type fill_char,
+ const tm& tm_value,
+ string_type a_format) const
+ {
+ // update format string with custom names
+ if (m_weekday_long_names.size()) {
+ boost::algorithm::replace_all(a_format,
+ long_weekday_format,
+ m_weekday_long_names[tm_value.tm_wday]);
+ }
+ if (m_weekday_short_names.size()) {
+ boost::algorithm::replace_all(a_format,
+ short_weekday_format,
+ m_weekday_short_names[tm_value.tm_wday]);
+
+ }
+ if (m_month_long_names.size()) {
+ boost::algorithm::replace_all(a_format,
+ long_month_format,
+ m_month_long_names[tm_value.tm_mon]);
+ }
+ if (m_month_short_names.size()) {
+ boost::algorithm::replace_all(a_format,
+ short_month_format,
+ m_month_short_names[tm_value.tm_mon]);
+ }
+ // use time_put facet to create final string
+ const char_type* p_format = a_format.c_str();
+ return std::use_facet<std::time_put<CharT> >(a_ios.getloc()).put(next, a_ios,
+ fill_char,
+ &tm_value,
+ p_format,
+ p_format + a_format.size());
+ }
+ protected:
+ string_type m_format;
+ string_type m_month_format;
+ string_type m_weekday_format;
+ period_formatter_type m_period_formatter;
+ date_gen_formatter_type m_date_gen_formatter;
+ special_values_formatter_type m_special_values_formatter;
+ input_collection_type m_month_short_names;
+ input_collection_type m_month_long_names;
+ input_collection_type m_weekday_short_names;
+ input_collection_type m_weekday_long_names;
+ private:
+ };
+
+ template <class date_type, class CharT, class OutItrT>
+ std::locale::id date_facet<date_type, CharT, OutItrT>::id;
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::long_weekday_format[3] = {'%','A'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::short_weekday_format[3] = {'%','a'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::long_month_format[3] = {'%','B'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::short_month_format[3] = {'%','b'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::default_period_separator[4] = { ' ', '/', ' '};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::standard_format_specifier[3] =
+ {'%', 'x' };
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::iso_format_specifier[7] =
+ {'%', 'Y', '%', 'm', '%', 'd' };
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::iso_format_extended_specifier[9] =
+ {'%', 'Y', '-', '%', 'm', '-', '%', 'd' };
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_facet<date_type, CharT, OutItrT>::char_type
+ date_facet<date_type, CharT, OutItrT>::default_date_format[9] =
+ {'%','Y','-','%','b','-','%','d'};
+
+
+
+ //! Input facet
+ template <class date_type,
+ class CharT,
+ class InItrT = std::istreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class date_input_facet : public std::locale::facet {
+ public:
+ typedef typename date_type::duration_type duration_type;
+ // greg_weekday is gregorian_calendar::day_of_week_type
+ typedef typename date_type::day_of_week_type day_of_week_type;
+ typedef typename date_type::day_type day_type;
+ typedef typename date_type::month_type month_type;
+ typedef typename date_type::year_type year_type;
+ typedef boost::date_time::period<date_type,duration_type> period_type;
+ typedef std::basic_string<CharT> string_type;
+ typedef CharT char_type;
+ typedef boost::date_time::period_parser<date_type, CharT> period_parser_type;
+ typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
+ typedef std::vector<std::basic_string<CharT> > input_collection_type;
+ typedef format_date_parser<date_type, CharT> format_date_parser_type;
+ // date_generators stuff goes here
+ typedef date_generator_parser<date_type, CharT> date_gen_parser_type;
+ typedef partial_date<date_type> partial_date_type;
+ typedef nth_kday_of_month<date_type> nth_kday_type;
+ typedef first_kday_of_month<date_type> first_kday_type;
+ typedef last_kday_of_month<date_type> last_kday_type;
+ typedef first_kday_after<date_type> kday_after_type;
+ typedef first_kday_before<date_type> kday_before_type;
+
+ static const char_type long_weekday_format[3];
+ static const char_type short_weekday_format[3];
+ static const char_type long_month_format[3];
+ static const char_type short_month_format[3];
+ static const char_type four_digit_year_format[3];
+ static const char_type two_digit_year_format[3];
+ static const char_type default_period_separator[4];
+ static const char_type standard_format_specifier[3];
+ static const char_type iso_format_specifier[7];
+ static const char_type iso_format_extended_specifier[9];
+ static const char_type default_date_format[9]; // YYYY-Mon-DD
+ static std::locale::id id;
+
+ explicit date_input_facet(::size_t a_ref = 0)
+ : std::locale::facet(a_ref),
+ m_format(default_date_format),
+ m_month_format(short_month_format),
+ m_weekday_format(short_weekday_format),
+ m_year_format(four_digit_year_format),
+ m_parser(m_format, std::locale::classic())
+ // default period_parser & special_values_parser used
+ {}
+
+ explicit date_input_facet(const string_type& format_str,
+ ::size_t a_ref = 0)
+ : std::locale::facet(a_ref),
+ m_format(format_str),
+ m_month_format(short_month_format),
+ m_weekday_format(short_weekday_format),
+ m_year_format(four_digit_year_format),
+ m_parser(m_format, std::locale::classic())
+ // default period_parser & special_values_parser used
+ {}
+
+ explicit date_input_facet(const string_type& format_str,
+ const format_date_parser_type& date_parser,
+ const special_values_parser_type& sv_parser,
+ const period_parser_type& per_parser,
+ const date_gen_parser_type& date_gen_parser,
+ ::size_t ref_count = 0)
+ : std::locale::facet(ref_count),
+ m_format(format_str),
+ m_month_format(short_month_format),
+ m_weekday_format(short_weekday_format),
+ m_year_format(four_digit_year_format),
+ m_parser(date_parser),
+ m_date_gen_parser(date_gen_parser),
+ m_period_parser(per_parser),
+ m_sv_parser(sv_parser)
+ {}
+
+
+ void format(const char_type* const format_str) {
+ m_format = format_str;
+ }
+ virtual void set_iso_format()
+ {
+ m_format = iso_format_specifier;
+ }
+ virtual void set_iso_extended_format()
+ {
+ m_format = iso_format_extended_specifier;
+ }
+ void month_format(const char_type* const format_str) {
+ m_month_format = format_str;
+ }
+ void weekday_format(const char_type* const format_str) {
+ m_weekday_format = format_str;
+ }
+ void year_format(const char_type* const format_str) {
+ m_year_format = format_str;
+ }
+
+ void period_parser(period_parser_type per_parser) {
+ m_period_parser = per_parser;
+ }
+ void short_weekday_names(const input_collection_type& weekday_names)
+ {
+ m_parser.short_weekday_names(weekday_names);
+ }
+ void long_weekday_names(const input_collection_type& weekday_names)
+ {
+ m_parser.long_weekday_names(weekday_names);
+ }
+
+ void short_month_names(const input_collection_type& month_names)
+ {
+ m_parser.short_month_names(month_names);
+ }
+
+ void long_month_names(const input_collection_type& month_names)
+ {
+ m_parser.long_month_names(month_names);
+ }
+
+ void date_gen_element_strings(const input_collection_type& col)
+ {
+ m_date_gen_parser.element_strings(col);
+ }
+ void date_gen_element_strings(const string_type& first,
+ const string_type& second,
+ const string_type& third,
+ const string_type& fourth,
+ const string_type& fifth,
+ const string_type& last,
+ const string_type& before,
+ const string_type& after,
+ const string_type& of)
+
+ {
+ m_date_gen_parser.element_strings(first,second,third,fourth,fifth,last,before,after,of);
+ }
+
+ void special_values_parser(special_values_parser_type sv_parser)
+ {
+ m_sv_parser = sv_parser;
+ }
+
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& /*a_ios*/,
+ date_type& d) const
+ {
+ d = m_parser.parse_date(from, to, m_format, m_sv_parser);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& /*a_ios*/,
+ month_type& m) const
+ {
+ m = m_parser.parse_month(from, to, m_month_format);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& /*a_ios*/,
+ day_of_week_type& wd) const
+ {
+ wd = m_parser.parse_weekday(from, to, m_weekday_format);
+ return from;
+ }
+ //! Expects 1 or 2 digit day range: 1-31
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& /*a_ios*/,
+ day_type& d) const
+ {
+ d = m_parser.parse_var_day_of_month(from, to);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& /*a_ios*/,
+ year_type& y) const
+ {
+ y = m_parser.parse_year(from, to, m_year_format);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ duration_type& dd) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*from) && from != to) { ++from; }
+
+ /* num_get.get() will always consume the first character if it
+ * is a sign indicator (+/-). Special value strings may begin
+ * with one of these signs so we'll need a copy of it
+ * in case num_get.get() fails. */
+ char_type c = '\0';
+ // TODO Are these characters somewhere in the locale?
+ if(*from == '-' || *from == '+') {
+ c = *from;
+ }
+ typedef std::num_get<CharT, InItrT> num_get;
+ typename duration_type::duration_rep_type val = 0;
+ std::ios_base::iostate err = std::ios_base::goodbit;
+
+ if (std::has_facet<num_get>(a_ios.getloc())) {
+ from = std::use_facet<num_get>(a_ios.getloc()).get(from, to, a_ios, err, val);
+ }
+ else {
+ num_get* ng = new num_get();
+ std::locale l = std::locale(a_ios.getloc(), ng);
+ a_ios.imbue(l);
+ from = ng->get(from, to, a_ios, err, val);
+ }
+ if(err & std::ios_base::failbit){
+ typedef typename special_values_parser_type::match_results match_results;
+ match_results mr;
+ if(c == '-' || c == '+') { // was the first character consumed?
+ mr.cache += c;
+ }
+ m_sv_parser.match(from, to, mr);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ boost::throw_exception(std::ios_base::failure("Parse failed. No match found for '" + mr.cache + "'"));
+ BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(return from); // should never reach
+ }
+ dd = duration_type(static_cast<special_values>(mr.current_match));
+ }
+ else {
+ dd = duration_type(val);
+ }
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ period_type& p) const
+ {
+ p = m_period_parser.get_period(from, to, a_ios, p, duration_type::unit(), *this);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ nth_kday_type& nkd) const
+ {
+ nkd = m_date_gen_parser.get_nth_kday_type(from, to, a_ios, *this);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ partial_date_type& pd) const
+ {
+
+ pd = m_date_gen_parser.get_partial_date_type(from, to, a_ios, *this);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ first_kday_type& fkd) const
+ {
+ fkd = m_date_gen_parser.get_first_kday_type(from, to, a_ios, *this);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ last_kday_type& lkd) const
+ {
+ lkd = m_date_gen_parser.get_last_kday_type(from, to, a_ios, *this);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ kday_before_type& fkb) const
+ {
+ fkb = m_date_gen_parser.get_kday_before_type(from, to, a_ios, *this);
+ return from;
+ }
+ InItrT get(InItrT& from,
+ InItrT& to,
+ std::ios_base& a_ios,
+ kday_after_type& fka) const
+ {
+ fka = m_date_gen_parser.get_kday_after_type(from, to, a_ios, *this);
+ return from;
+ }
+
+ protected:
+ string_type m_format;
+ string_type m_month_format;
+ string_type m_weekday_format;
+ string_type m_year_format;
+ format_date_parser_type m_parser;
+ date_gen_parser_type m_date_gen_parser;
+ period_parser_type m_period_parser;
+ special_values_parser_type m_sv_parser;
+ private:
+ };
+
+
+ template <class date_type, class CharT, class OutItrT>
+ std::locale::id date_input_facet<date_type, CharT, OutItrT>::id;
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::long_weekday_format[3] = {'%','A'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::short_weekday_format[3] = {'%','a'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::long_month_format[3] = {'%','B'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::short_month_format[3] = {'%','b'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::four_digit_year_format[3] = {'%','Y'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::two_digit_year_format[3] = {'%','y'};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::default_period_separator[4] = { ' ', '/', ' '};
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::standard_format_specifier[3] =
+ {'%', 'x' };
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::iso_format_specifier[7] =
+ {'%', 'Y', '%', 'm', '%', 'd' };
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::iso_format_extended_specifier[9] =
+ {'%', 'Y', '-', '%', 'm', '-', '%', 'd' };
+
+ template <class date_type, class CharT, class OutItrT>
+ const typename date_input_facet<date_type, CharT, OutItrT>::char_type
+ date_input_facet<date_type, CharT, OutItrT>::default_date_format[9] =
+ {'%','Y','-','%','b','-','%','d'};
+
+} } // namespaces
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_format_simple.hpp b/3rdParty/Boost/boost/date_time/date_format_simple.hpp
new file mode 100644
index 0000000..be21ce4
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_format_simple.hpp
@@ -0,0 +1,159 @@
+#ifndef DATE_TIME_SIMPLE_FORMAT_HPP___
+#define DATE_TIME_SIMPLE_FORMAT_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/parse_format_base.hpp"
+
+namespace boost {
+namespace date_time {
+
+//! Class to provide simple basic formatting rules
+template<class charT>
+class simple_format {
+public:
+
+ //! String used printed is date is invalid
+ static const charT* not_a_date()
+ {
+ return "not-a-date-time";
+ }
+ //! String used to for positive infinity value
+ static const charT* pos_infinity()
+ {
+ return "+infinity";
+ }
+ //! String used to for positive infinity value
+ static const charT* neg_infinity()
+ {
+ return "-infinity";
+ }
+ //! Describe month format
+ static month_format_spec month_format()
+ {
+ return month_as_short_string;
+ }
+ static ymd_order_spec date_order()
+ {
+ return ymd_order_iso; //YYYY-MM-DD
+ }
+ //! This format uses '-' to separate date elements
+ static bool has_date_sep_chars()
+ {
+ return true;
+ }
+ //! Char to sep?
+ static charT year_sep_char()
+ {
+ return '-';
+ }
+ //! char between year-month
+ static charT month_sep_char()
+ {
+ return '-';
+ }
+ //! Char to separate month-day
+ static charT day_sep_char()
+ {
+ return '-';
+ }
+ //! char between date-hours
+ static charT hour_sep_char()
+ {
+ return ' ';
+ }
+ //! char between hour and minute
+ static charT minute_sep_char()
+ {
+ return ':';
+ }
+ //! char for second
+ static charT second_sep_char()
+ {
+ return ':';
+ }
+
+};
+
+#ifndef BOOST_NO_STD_WSTRING
+
+//! Specialization of formmating rules for wchar_t
+template<>
+class simple_format<wchar_t> {
+public:
+
+ //! String used printed is date is invalid
+ static const wchar_t* not_a_date()
+ {
+ return L"not-a-date-time";
+ }
+ //! String used to for positive infinity value
+ static const wchar_t* pos_infinity()
+ {
+ return L"+infinity";
+ }
+ //! String used to for positive infinity value
+ static const wchar_t* neg_infinity()
+ {
+ return L"-infinity";
+ }
+ //! Describe month format
+ static month_format_spec month_format()
+ {
+ return month_as_short_string;
+ }
+ static ymd_order_spec date_order()
+ {
+ return ymd_order_iso; //YYYY-MM-DD
+ }
+ //! This format uses '-' to separate date elements
+ static bool has_date_sep_chars()
+ {
+ return true;
+ }
+ //! Char to sep?
+ static wchar_t year_sep_char()
+ {
+ return '-';
+ }
+ //! char between year-month
+ static wchar_t month_sep_char()
+ {
+ return '-';
+ }
+ //! Char to separate month-day
+ static wchar_t day_sep_char()
+ {
+ return '-';
+ }
+ //! char between date-hours
+ static wchar_t hour_sep_char()
+ {
+ return ' ';
+ }
+ //! char between hour and minute
+ static wchar_t minute_sep_char()
+ {
+ return ':';
+ }
+ //! char for second
+ static wchar_t second_sep_char()
+ {
+ return ':';
+ }
+
+};
+
+#endif // BOOST_NO_STD_WSTRING
+} } //namespace date_time
+
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_formatting.hpp b/3rdParty/Boost/boost/date_time/date_formatting.hpp
new file mode 100644
index 0000000..abe547a
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_formatting.hpp
@@ -0,0 +1,127 @@
+#ifndef DATE_TIME_DATE_FORMATTING_HPP___
+#define DATE_TIME_DATE_FORMATTING_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include <string>
+#include <sstream>
+#include <iomanip>
+
+/* NOTE: "formatter" code for older compilers, ones that define
+ * BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS, is located in
+ * date_formatting_limited.hpp
+ */
+
+namespace boost {
+namespace date_time {
+
+ //! Formats a month as as string into an ostream
+ template<class month_type, class format_type, class charT=char>
+ class month_formatter
+ {
+ typedef std::basic_ostream<charT> ostream_type;
+ public:
+ //! Formats a month as as string into an ostream
+ /*! This function demands that month_type provide
+ * functions for converting to short and long strings
+ * if that capability is used.
+ */
+ static ostream_type& format_month(const month_type& month,
+ ostream_type &os)
+ {
+ switch (format_type::month_format())
+ {
+ case month_as_short_string:
+ {
+ os << month.as_short_string();
+ break;
+ }
+ case month_as_long_string:
+ {
+ os << month.as_long_string();
+ break;
+ }
+ case month_as_integer:
+ {
+ os << std::setw(2) << std::setfill(os.widen('0')) << month.as_number();
+ break;
+ }
+
+ }
+ return os;
+ } // format_month
+ };
+
+
+ //! Convert ymd to a standard string formatting policies
+ template<class ymd_type, class format_type, class charT=char>
+ class ymd_formatter
+ {
+ public:
+ //! Convert ymd to a standard string formatting policies
+ /*! This is standard code for handling date formatting with
+ * year-month-day based date information. This function
+ * uses the format_type to control whether the string will
+ * contain separator characters, and if so what the character
+ * will be. In addtion, it can format the month as either
+ * an integer or a string as controled by the formatting
+ * policy
+ */
+ static std::basic_string<charT> ymd_to_string(ymd_type ymd)
+ {
+ typedef typename ymd_type::month_type month_type;
+ std::basic_ostringstream<charT> ss;
+ ss << ymd.year;
+ if (format_type::has_date_sep_chars()) {
+ ss << format_type::month_sep_char();
+ }
+ //this name is a bit ugly, oh well....
+ month_formatter<month_type,format_type,charT>::format_month(ymd.month, ss);
+ if (format_type::has_date_sep_chars()) {
+ ss << format_type::day_sep_char();
+ }
+ ss << std::setw(2) << std::setfill(ss.widen('0'))
+ << ymd.day;
+ return ss.str();
+ }
+ };
+
+
+ //! Convert a date to string using format policies
+ template<class date_type, class format_type, class charT=char>
+ class date_formatter
+ {
+ public:
+ typedef std::basic_string<charT> string_type;
+ //! Convert to a date to standard string using format policies
+ static string_type date_to_string(date_type d)
+ {
+ typedef typename date_type::ymd_type ymd_type;
+ if (d.is_not_a_date()) {
+ return string_type(format_type::not_a_date());
+ }
+ if (d.is_neg_infinity()) {
+ return string_type(format_type::neg_infinity());
+ }
+ if (d.is_pos_infinity()) {
+ return string_type(format_type::pos_infinity());
+ }
+ ymd_type ymd = d.year_month_day();
+ return ymd_formatter<ymd_type, format_type, charT>::ymd_to_string(ymd);
+ }
+ };
+
+
+} } //namespace date_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/date_formatting_limited.hpp b/3rdParty/Boost/boost/date_time/date_formatting_limited.hpp
new file mode 100644
index 0000000..38fee07
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_formatting_limited.hpp
@@ -0,0 +1,121 @@
+#ifndef DATE_TIME_DATE_FORMATTING_LIMITED_HPP___
+#define DATE_TIME_DATE_FORMATTING_LIMITED_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include <string>
+#include <sstream>
+#include <iomanip>
+
+
+namespace boost {
+namespace date_time {
+
+ //! Formats a month as as string into an ostream
+ template<class month_type, class format_type>
+ class month_formatter
+ {
+ public:
+ //! Formats a month as as string into an ostream
+ /*! This function demands that month_type provide
+ * functions for converting to short and long strings
+ * if that capability is used.
+ */
+ static std::ostream& format_month(const month_type& month,
+ std::ostream& os)
+ {
+ switch (format_type::month_format())
+ {
+ case month_as_short_string:
+ {
+ os << month.as_short_string();
+ break;
+ }
+ case month_as_long_string:
+ {
+ os << month.as_long_string();
+ break;
+ }
+ case month_as_integer:
+ {
+ os << std::setw(2) << std::setfill('0') << month.as_number();
+ break;
+ }
+
+ }
+ return os;
+ } // format_month
+ };
+
+
+ //! Convert ymd to a standard string formatting policies
+ template<class ymd_type, class format_type>
+ class ymd_formatter
+ {
+ public:
+ //! Convert ymd to a standard string formatting policies
+ /*! This is standard code for handling date formatting with
+ * year-month-day based date information. This function
+ * uses the format_type to control whether the string will
+ * contain separator characters, and if so what the character
+ * will be. In addtion, it can format the month as either
+ * an integer or a string as controled by the formatting
+ * policy
+ */
+ static std::string ymd_to_string(ymd_type ymd)
+ {
+ typedef typename ymd_type::month_type month_type;
+ std::ostringstream ss;
+ ss << ymd.year;
+ if (format_type::has_date_sep_chars()) {
+ ss << format_type::month_sep_char();
+ }
+ //this name is a bit ugly, oh well....
+ month_formatter<month_type,format_type>::format_month(ymd.month, ss);
+ if (format_type::has_date_sep_chars()) {
+ ss << format_type::day_sep_char();
+ }
+ ss << std::setw(2) << std::setfill('0')
+ << ymd.day;
+ return ss.str();
+ }
+ };
+
+
+ //! Convert a date to string using format policies
+ template<class date_type, class format_type>
+ class date_formatter
+ {
+ public:
+ //! Convert to a date to standard string using format policies
+ static std::string date_to_string(date_type d)
+ {
+ typedef typename date_type::ymd_type ymd_type;
+ if (d.is_not_a_date()) {
+ return format_type::not_a_date();
+ }
+ if (d.is_neg_infinity()) {
+ return format_type::neg_infinity();
+ }
+ if (d.is_pos_infinity()) {
+ return format_type::pos_infinity();
+ }
+ ymd_type ymd = d.year_month_day();
+ return ymd_formatter<ymd_type, format_type>::ymd_to_string(ymd);
+ }
+ };
+
+
+} } //namespace date_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/date_formatting_locales.hpp b/3rdParty/Boost/boost/date_time/date_formatting_locales.hpp
new file mode 100644
index 0000000..4ac9c4e
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_formatting_locales.hpp
@@ -0,0 +1,233 @@
+#ifndef DATE_TIME_DATE_FORMATTING_LOCALES_HPP___
+#define DATE_TIME_DATE_FORMATTING_LOCALES_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+#include "boost/date_time/locale_config.hpp" // set BOOST_DATE_TIME_NO_LOCALE
+
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/date_names_put.hpp"
+#include "boost/date_time/parse_format_base.hpp"
+//#include <string>
+#include <sstream>
+#include <iomanip>
+
+
+namespace boost {
+namespace date_time {
+
+ //! Formats a month as as string into an ostream
+ template<class facet_type,
+ class charT = char>
+ class ostream_month_formatter
+ {
+ public:
+ typedef typename facet_type::month_type month_type;
+ typedef std::basic_ostream<charT> ostream_type;
+
+ //! Formats a month as as string into an output iterator
+ static void format_month(const month_type& month,
+ ostream_type& os,
+ const facet_type& f)
+ {
+
+ switch (f.month_format())
+ {
+ case month_as_short_string:
+ {
+ std::ostreambuf_iterator<charT> oitr(os);
+ f.put_month_short(oitr, month.as_enum());
+ break;
+ }
+ case month_as_long_string:
+ {
+ std::ostreambuf_iterator<charT> oitr(os);
+ f.put_month_long(oitr, month.as_enum());
+ break;
+ }
+ case month_as_integer:
+ {
+ charT fill_char = '0';
+ os << std::setw(2) << std::setfill(fill_char) << month.as_number();
+ break;
+ }
+
+ }
+ } // format_month
+
+ };
+
+
+ //! Formats a weekday
+ template<class weekday_type,
+ class facet_type,
+ class charT = char>
+ class ostream_weekday_formatter
+ {
+ public:
+ typedef typename facet_type::month_type month_type;
+ typedef std::basic_ostream<charT> ostream_type;
+
+ //! Formats a month as as string into an output iterator
+ static void format_weekday(const weekday_type& wd,
+ ostream_type& os,
+ const facet_type& f,
+ bool as_long_string)
+ {
+
+ std::ostreambuf_iterator<charT> oitr(os);
+ if (as_long_string) {
+ f.put_weekday_long(oitr, wd.as_enum());
+ }
+ else {
+ f.put_weekday_short(oitr, wd.as_enum());
+ }
+
+ } // format_weekday
+
+ };
+
+
+ //! Convert ymd to a standard string formatting policies
+ template<class ymd_type,
+ class facet_type,
+ class charT = char>
+ class ostream_ymd_formatter
+ {
+ public:
+ typedef typename ymd_type::month_type month_type;
+ typedef ostream_month_formatter<facet_type, charT> month_formatter_type;
+ typedef std::basic_ostream<charT> ostream_type;
+ typedef std::basic_string<charT> foo_type;
+
+ //! Convert ymd to a standard string formatting policies
+ /*! This is standard code for handling date formatting with
+ * year-month-day based date information. This function
+ * uses the format_type to control whether the string will
+ * contain separator characters, and if so what the character
+ * will be. In addtion, it can format the month as either
+ * an integer or a string as controled by the formatting
+ * policy
+ */
+ // static string_type ymd_to_string(ymd_type ymd)
+// {
+// std::ostringstream ss;
+// facet_type dnp;
+// ymd_put(ymd, ss, dnp);
+// return ss.str();
+// }
+
+
+ // Put ymd to ostream -- part of ostream refactor
+ static void ymd_put(ymd_type ymd,
+ ostream_type& os,
+ const facet_type& f)
+ {
+ std::ostreambuf_iterator<charT> oitr(os);
+ charT fill_char = '0';
+ switch (f.date_order()) {
+ case ymd_order_iso: {
+ os << ymd.year;
+ if (f.has_date_sep_chars()) {
+ f.month_sep_char(oitr);
+ }
+ month_formatter_type::format_month(ymd.month, os, f);
+ if (f.has_date_sep_chars()) {
+ f.day_sep_char(oitr);
+ }
+ os << std::setw(2) << std::setfill(fill_char)
+ << ymd.day;
+ break;
+ }
+ case ymd_order_us: {
+ month_formatter_type::format_month(ymd.month, os, f);
+ if (f.has_date_sep_chars()) {
+ f.day_sep_char(oitr);
+ }
+ os << std::setw(2) << std::setfill(fill_char)
+ << ymd.day;
+ if (f.has_date_sep_chars()) {
+ f.month_sep_char(oitr);
+ }
+ os << ymd.year;
+ break;
+ }
+ case ymd_order_dmy: {
+ os << std::setw(2) << std::setfill(fill_char)
+ << ymd.day;
+ if (f.has_date_sep_chars()) {
+ f.day_sep_char(oitr);
+ }
+ month_formatter_type::format_month(ymd.month, os, f);
+ if (f.has_date_sep_chars()) {
+ f.month_sep_char(oitr);
+ }
+ os << ymd.year;
+ break;
+ }
+ }
+ }
+ };
+
+
+ //! Convert a date to string using format policies
+ template<class date_type,
+ class facet_type,
+ class charT = char>
+ class ostream_date_formatter
+ {
+ public:
+ typedef std::basic_ostream<charT> ostream_type;
+ typedef typename date_type::ymd_type ymd_type;
+
+ //! Put date into an ostream
+ static void date_put(const date_type& d,
+ ostream_type& os,
+ const facet_type& f)
+ {
+ special_values sv = d.as_special();
+ if (sv == not_special) {
+ ymd_type ymd = d.year_month_day();
+ ostream_ymd_formatter<ymd_type, facet_type, charT>::ymd_put(ymd, os, f);
+ }
+ else { // output a special value
+ std::ostreambuf_iterator<charT> coi(os);
+ f.put_special_value(coi, sv);
+ }
+ }
+
+
+ //! Put date into an ostream
+ static void date_put(const date_type& d,
+ ostream_type& os)
+ {
+ //retrieve the local from the ostream
+ std::locale locale = os.getloc();
+ if (std::has_facet<facet_type>(locale)) {
+ const facet_type& f = std::use_facet<facet_type>(locale);
+ date_put(d, os, f);
+ }
+ else {
+ //default to something sensible if no facet installed
+ facet_type default_facet;
+ date_put(d, os, default_facet);
+ }
+ } // date_to_ostream
+ }; //class date_formatter
+
+
+} } //namespace date_time
+
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/date_generator_formatter.hpp b/3rdParty/Boost/boost/date_time/date_generator_formatter.hpp
new file mode 100644
index 0000000..88cd7e1
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_generator_formatter.hpp
@@ -0,0 +1,265 @@
+#ifndef _DATE_TIME_DATE_GENERATOR_FORMATTER__HPP___
+#define _DATE_TIME_DATE_GENERATOR_FORMATTER__HPP___
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-13 14:05:31 -0500 (Thu, 13 Nov 2008) $
+ */
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <algorithm>
+#include "boost/date_time/date_generators.hpp"
+
+namespace boost {
+namespace date_time {
+
+ //! Formats date_generators for output
+ /*! Formatting of date_generators follows specific orders for the
+ * various types of date_generators.
+ * - partial_date => "dd Month"
+ * - nth_day_of_the_week_in_month => "nth weekday of month"
+ * - first_day_of_the_week_in_month => "first weekday of month"
+ * - last_day_of_the_week_in_month => "last weekday of month"
+ * - first_day_of_the_week_after => "weekday after"
+ * - first_day_of_the_week_before => "weekday before"
+ * While the order of the elements in these phrases cannot be changed,
+ * the elements themselves can be. Weekday and Month get their formats
+ * and names from the date_facet. The remaining elements are stored in
+ * the date_generator_formatter and can be customized upon construction
+ * or via a member function. The default elements are those shown in the
+ * examples above.
+ */
+ template <class date_type, class CharT, class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class date_generator_formatter {
+ public:
+ typedef partial_date<date_type> partial_date_type;
+ typedef nth_kday_of_month<date_type> nth_kday_type;
+ typedef first_kday_of_month<date_type> first_kday_type;
+ typedef last_kday_of_month<date_type> last_kday_type;
+ typedef first_kday_after<date_type> kday_after_type;
+ typedef first_kday_before<date_type> kday_before_type;
+
+ typedef CharT char_type;
+ typedef std::basic_string<char_type> string_type;
+ typedef std::vector<string_type> collection_type;
+ static const char_type first_string[6];
+ static const char_type second_string[7];
+ static const char_type third_string[6];
+ static const char_type fourth_string[7];
+ static const char_type fifth_string[6];
+ static const char_type last_string[5];
+ static const char_type before_string[8];
+ static const char_type after_string[6];
+ static const char_type of_string[3];
+
+ enum phrase_elements {first=0, second, third, fourth, fifth, last,
+ before, after, of, number_of_phrase_elements};
+
+ //! Default format elements used
+ date_generator_formatter()
+ {
+ phrase_strings.reserve(number_of_phrase_elements);
+ phrase_strings.push_back(string_type(first_string));
+ phrase_strings.push_back(string_type(second_string));
+ phrase_strings.push_back(string_type(third_string));
+ phrase_strings.push_back(string_type(fourth_string));
+ phrase_strings.push_back(string_type(fifth_string));
+ phrase_strings.push_back(string_type(last_string));
+ phrase_strings.push_back(string_type(before_string));
+ phrase_strings.push_back(string_type(after_string));
+ phrase_strings.push_back(string_type(of_string));
+ }
+
+ //! Constructor that allows for a custom set of phrase elements
+ date_generator_formatter(const string_type& first_str,
+ const string_type& second_str,
+ const string_type& third_str,
+ const string_type& fourth_str,
+ const string_type& fifth_str,
+ const string_type& last_str,
+ const string_type& before_str,
+ const string_type& after_str,
+ const string_type& of_str)
+ {
+ phrase_strings.reserve(number_of_phrase_elements);
+ phrase_strings.push_back(first_str);
+ phrase_strings.push_back(second_str);
+ phrase_strings.push_back(third_str);
+ phrase_strings.push_back(fourth_str);
+ phrase_strings.push_back(fifth_str);
+ phrase_strings.push_back(last_str);
+ phrase_strings.push_back(before_str);
+ phrase_strings.push_back(after_str);
+ phrase_strings.push_back(of_str);
+ }
+
+ //! Replace the set of phrase elements with those contained in new_strings
+ /*! The order of the strings in the given collection is important.
+ * They must follow:
+ * - first, second, third, fourth, fifth, last, before, after, of.
+ *
+ * It is not necessary to send in a complete set if only a few
+ * elements are to be replaced as long as the correct beg_pos is used.
+ *
+ * Ex: To keep the default first through fifth elements, but replace
+ * the rest with a collection of:
+ * - "final", "prior", "following", "in".
+ * The beg_pos of date_generator_formatter::last would be used.
+ */
+ void elements(const collection_type& new_strings,
+ phrase_elements beg_pos=first)
+ {
+ if(beg_pos < number_of_phrase_elements) {
+ typename collection_type::iterator itr = phrase_strings.begin();
+ itr += beg_pos;
+ std::copy(new_strings.begin(), new_strings.end(),
+ itr);
+ //phrase_strings.begin());
+ }
+ }
+
+ //!Put a partial_date => "dd Month"
+ template<class facet_type>
+ OutItrT put_partial_date(OutItrT next, std::ios_base& a_ios,
+ CharT a_fill, const partial_date_type& pd,
+ const facet_type& facet) const
+ {
+ facet.put(next, a_ios, a_fill, pd.day());
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, pd.month());
+ return next;
+ }
+
+ //! Put an nth_day_of_the_week_in_month => "nth weekday of month"
+ template<class facet_type>
+ OutItrT put_nth_kday(OutItrT next, std::ios_base& a_ios,
+ CharT a_fill, const nth_kday_type& nkd,
+ const facet_type& facet) const
+ {
+ put_string(next, phrase_strings[nkd.nth_week() -1]);
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, nkd.day_of_week());
+ next = a_fill; //TODO change this ???
+ put_string(next, string_type(of_string));
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, nkd.month());
+ return next;
+ }
+
+ //! Put a first_day_of_the_week_in_month => "first weekday of month"
+ template<class facet_type>
+ OutItrT put_first_kday(OutItrT next, std::ios_base& a_ios,
+ CharT a_fill, const first_kday_type& fkd,
+ const facet_type& facet) const
+ {
+ put_string(next, phrase_strings[first]);
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, fkd.day_of_week());
+ next = a_fill; //TODO change this ???
+ put_string(next, string_type(of_string));
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, fkd.month());
+ return next;
+ }
+
+ //! Put a last_day_of_the_week_in_month => "last weekday of month"
+ template<class facet_type>
+ OutItrT put_last_kday(OutItrT next, std::ios_base& a_ios,
+ CharT a_fill, const last_kday_type& lkd,
+ const facet_type& facet) const
+ {
+ put_string(next, phrase_strings[last]);
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, lkd.day_of_week());
+ next = a_fill; //TODO change this ???
+ put_string(next, string_type(of_string));
+ next = a_fill; //TODO change this ???
+ facet.put(next, a_ios, a_fill, lkd.month());
+ return next;
+ }
+
+ //! Put a first_day_of_the_week_before => "weekday before"
+ template<class facet_type>
+ OutItrT put_kday_before(OutItrT next, std::ios_base& a_ios,
+ CharT a_fill, const kday_before_type& fkb,
+ const facet_type& facet) const
+ {
+ facet.put(next, a_ios, a_fill, fkb.day_of_week());
+ next = a_fill; //TODO change this ???
+ put_string(next, phrase_strings[before]);
+ return next;
+ }
+
+ //! Put a first_day_of_the_week_after => "weekday after"
+ template<class facet_type>
+ OutItrT put_kday_after(OutItrT next, std::ios_base& a_ios,
+ CharT a_fill, const kday_after_type& fka,
+ const facet_type& facet) const
+ {
+ facet.put(next, a_ios, a_fill, fka.day_of_week());
+ next = a_fill; //TODO change this ???
+ put_string(next, phrase_strings[after]);
+ return next;
+ }
+
+
+ private:
+ collection_type phrase_strings;
+
+ //! helper function to put the various member string into stream
+ OutItrT put_string(OutItrT next, const string_type& str) const
+ {
+ typename string_type::const_iterator itr = str.begin();
+ while(itr != str.end()) {
+ *next = *itr;
+ ++itr;
+ ++next;
+ }
+ return next;
+ }
+ };
+
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::first_string[6] =
+ {'f','i','r','s','t'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::second_string[7] =
+ {'s','e','c','o','n','d'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::third_string[6] =
+ {'t','h','i','r','d'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::fourth_string[7] =
+ {'f','o','u','r','t','h'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::fifth_string[6] =
+ {'f','i','f','t','h'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::last_string[5] =
+ {'l','a','s','t'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::before_string[8] =
+ {'b','e','f','o','r','e'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::after_string[6] =
+ {'a','f','t','e','r'};
+ template<class date_type, class CharT, class OutItrT>
+ const typename date_generator_formatter<date_type, CharT, OutItrT>::char_type
+ date_generator_formatter<date_type, CharT, OutItrT>::of_string[3] =
+ {'o','f'};
+} } // namespaces
+
+#endif // _DATE_TIME_DATE_GENERATOR_FORMATTER__HPP___
diff --git a/3rdParty/Boost/boost/date_time/date_generator_parser.hpp b/3rdParty/Boost/boost/date_time/date_generator_parser.hpp
new file mode 100644
index 0000000..f11eb42
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_generator_parser.hpp
@@ -0,0 +1,330 @@
+
+#ifndef DATE_TIME_DATE_GENERATOR_PARSER_HPP__
+#define DATE_TIME_DATE_GENERATOR_PARSER_HPP__
+
+/* Copyright (c) 2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <string>
+#include <vector>
+#include <iterator> // istreambuf_iterator
+#include <boost/throw_exception.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/string_parse_tree.hpp>
+#include <boost/date_time/date_generators.hpp>
+#include <boost/date_time/format_date_parser.hpp>
+
+namespace boost { namespace date_time {
+
+ //! Class for date_generator parsing
+ /*! The elements of a date_generator "phrase" are parsed from the input stream in a
+ * particular order. All elements are required and the order in which they appear
+ * cannot change, however, the elements themselves can be changed. The default
+ * elements and their order are as follows:
+ *
+ * - partial_date => "dd Month"
+ * - nth_day_of_the_week_in_month => "nth weekday of month"
+ * - first_day_of_the_week_in_month => "first weekday of month"
+ * - last_day_of_the_week_in_month => "last weekday of month"
+ * - first_day_of_the_week_after => "weekday after"
+ * - first_day_of_the_week_before => "weekday before"
+ *
+ * Weekday and Month names and formats are handled via the date_input_facet.
+ *
+ */
+ template<class date_type, typename charT>
+ class date_generator_parser
+ {
+ public:
+ typedef std::basic_string<charT> string_type;
+ typedef std::istreambuf_iterator<charT> stream_itr_type;
+
+ typedef typename date_type::month_type month_type;
+ typedef typename date_type::day_of_week_type day_of_week_type;
+ typedef typename date_type::day_type day_type;
+
+ typedef string_parse_tree<charT> parse_tree_type;
+ typedef typename parse_tree_type::parse_match_result_type match_results;
+ typedef std::vector<std::basic_string<charT> > collection_type;
+
+ typedef partial_date<date_type> partial_date_type;
+ typedef nth_kday_of_month<date_type> nth_kday_type;
+ typedef first_kday_of_month<date_type> first_kday_type;
+ typedef last_kday_of_month<date_type> last_kday_type;
+ typedef first_kday_after<date_type> kday_after_type;
+ typedef first_kday_before<date_type> kday_before_type;
+
+ typedef charT char_type;
+ static const char_type first_string[6];
+ static const char_type second_string[7];
+ static const char_type third_string[6];
+ static const char_type fourth_string[7];
+ static const char_type fifth_string[6];
+ static const char_type last_string[5];
+ static const char_type before_string[8];
+ static const char_type after_string[6];
+ static const char_type of_string[3];
+
+ enum phrase_elements {first=0, second, third, fourth, fifth, last,
+ before, after, of, number_of_phrase_elements};
+
+ //! Creates a date_generator_parser with the default set of "element_strings"
+ date_generator_parser()
+ {
+ element_strings(string_type(first_string),
+ string_type(second_string),
+ string_type(third_string),
+ string_type(fourth_string),
+ string_type(fifth_string),
+ string_type(last_string),
+ string_type(before_string),
+ string_type(after_string),
+ string_type(of_string));
+ }
+
+ //! Creates a date_generator_parser using a user defined set of element strings
+ date_generator_parser(const string_type& first_str,
+ const string_type& second_str,
+ const string_type& third_str,
+ const string_type& fourth_str,
+ const string_type& fifth_str,
+ const string_type& last_str,
+ const string_type& before_str,
+ const string_type& after_str,
+ const string_type& of_str)
+ {
+ element_strings(first_str, second_str, third_str, fourth_str, fifth_str,
+ last_str, before_str, after_str, of_str);
+ }
+
+ //! Replace strings that determine nth week for generator
+ void element_strings(const string_type& first_str,
+ const string_type& second_str,
+ const string_type& third_str,
+ const string_type& fourth_str,
+ const string_type& fifth_str,
+ const string_type& last_str,
+ const string_type& before_str,
+ const string_type& after_str,
+ const string_type& of_str)
+ {
+ collection_type phrases;
+ phrases.push_back(first_str);
+ phrases.push_back(second_str);
+ phrases.push_back(third_str);
+ phrases.push_back(fourth_str);
+ phrases.push_back(fifth_str);
+ phrases.push_back(last_str);
+ phrases.push_back(before_str);
+ phrases.push_back(after_str);
+ phrases.push_back(of_str);
+ m_element_strings = parse_tree_type(phrases, this->first); // enum first
+ }
+
+ void element_strings(const collection_type& col)
+ {
+ m_element_strings = parse_tree_type(col, this->first); // enum first
+ }
+
+ //! returns partial_date parsed from stream
+ template<class facet_type>
+ partial_date_type
+ get_partial_date_type(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ day_type d(1);
+ month_type m(1);
+ facet.get(sitr, stream_end, a_ios, d);
+ facet.get(sitr, stream_end, a_ios, m);
+
+ return partial_date_type(d,m);
+ }
+
+ //! returns nth_kday_of_week parsed from stream
+ template<class facet_type>
+ nth_kday_type
+ get_nth_kday_type(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ typename nth_kday_type::week_num wn;
+ day_of_week_type wd(0); // no default constructor
+ month_type m(1); // no default constructor
+
+ match_results mr = m_element_strings.match(sitr, stream_end);
+ switch(mr.current_match) {
+ case first : { wn = nth_kday_type::first; break; }
+ case second : { wn = nth_kday_type::second; break; }
+ case third : { wn = nth_kday_type::third; break; }
+ case fourth : { wn = nth_kday_type::fourth; break; }
+ case fifth : { wn = nth_kday_type::fifth; break; }
+ default:
+ {
+ boost::throw_exception(std::ios_base::failure("Parse failed. No match found for '" + mr.cache + "'"));
+ BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(wn = nth_kday_type::first);
+ }
+ } // week num
+ facet.get(sitr, stream_end, a_ios, wd); // day_of_week
+ extract_element(sitr, stream_end, of); // "of" element
+ facet.get(sitr, stream_end, a_ios, m); // month
+
+ return nth_kday_type(wn, wd, m);
+ }
+
+ //! returns first_kday_of_week parsed from stream
+ template<class facet_type>
+ first_kday_type
+ get_first_kday_type(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ day_of_week_type wd(0); // no default constructor
+ month_type m(1); // no default constructor
+
+ extract_element(sitr, stream_end, first); // "first" element
+ facet.get(sitr, stream_end, a_ios, wd); // day_of_week
+ extract_element(sitr, stream_end, of); // "of" element
+ facet.get(sitr, stream_end, a_ios, m); // month
+
+
+ return first_kday_type(wd, m);
+ }
+
+ //! returns last_kday_of_week parsed from stream
+ template<class facet_type>
+ last_kday_type
+ get_last_kday_type(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ day_of_week_type wd(0); // no default constructor
+ month_type m(1); // no default constructor
+
+ extract_element(sitr, stream_end, last); // "last" element
+ facet.get(sitr, stream_end, a_ios, wd); // day_of_week
+ extract_element(sitr, stream_end, of); // "of" element
+ facet.get(sitr, stream_end, a_ios, m); // month
+
+
+ return last_kday_type(wd, m);
+ }
+
+ //! returns first_kday_of_week parsed from stream
+ template<class facet_type>
+ kday_before_type
+ get_kday_before_type(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ day_of_week_type wd(0); // no default constructor
+
+ facet.get(sitr, stream_end, a_ios, wd); // day_of_week
+ extract_element(sitr, stream_end, before);// "before" element
+
+ return kday_before_type(wd);
+ }
+
+ //! returns first_kday_of_week parsed from stream
+ template<class facet_type>
+ kday_after_type
+ get_kday_after_type(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ day_of_week_type wd(0); // no default constructor
+
+ facet.get(sitr, stream_end, a_ios, wd); // day_of_week
+ extract_element(sitr, stream_end, after); // "after" element
+
+ return kday_after_type(wd);
+ }
+
+ private:
+ parse_tree_type m_element_strings;
+
+ //! Extracts phrase element from input. Throws ios_base::failure on error.
+ void extract_element(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ typename date_generator_parser::phrase_elements ele) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+ match_results mr = m_element_strings.match(sitr, stream_end);
+ if(mr.current_match != ele) {
+ boost::throw_exception(std::ios_base::failure("Parse failed. No match found for '" + mr.cache + "'"));
+ }
+ }
+
+ };
+
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::first_string[6] =
+ {'f','i','r','s','t'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::second_string[7] =
+ {'s','e','c','o','n','d'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::third_string[6] =
+ {'t','h','i','r','d'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::fourth_string[7] =
+ {'f','o','u','r','t','h'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::fifth_string[6] =
+ {'f','i','f','t','h'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::last_string[5] =
+ {'l','a','s','t'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::before_string[8] =
+ {'b','e','f','o','r','e'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::after_string[6] =
+ {'a','f','t','e','r'};
+ template<class date_type, class CharT>
+ const typename date_generator_parser<date_type, CharT>::char_type
+ date_generator_parser<date_type, CharT>::of_string[3] =
+ {'o','f'};
+
+} } //namespace
+
+#endif // DATE_TIME_DATE_GENERATOR_PARSER_HPP__
+
diff --git a/3rdParty/Boost/boost/date_time/date_generators.hpp b/3rdParty/Boost/boost/date_time/date_generators.hpp
new file mode 100644
index 0000000..1f1a34a
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_generators.hpp
@@ -0,0 +1,509 @@
+#ifndef DATE_TIME_DATE_GENERATORS_HPP__
+#define DATE_TIME_DATE_GENERATORS_HPP__
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+/*! @file date_generators.hpp
+ Definition and implementation of date algorithm templates
+*/
+
+#include <stdexcept>
+#include <sstream>
+#include <boost/throw_exception.hpp>
+#include <boost/date_time/date.hpp>
+#include <boost/date_time/compiler_config.hpp>
+
+namespace boost {
+namespace date_time {
+
+ //! Base class for all generators that take a year and produce a date.
+ /*! This class is a base class for polymorphic function objects that take
+ a year and produce a concrete date.
+ @param date_type The type representing a date. This type must
+ export a calender_type which defines a year_type.
+ */
+ template<class date_type>
+ class year_based_generator
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::year_type year_type;
+ year_based_generator() {};
+ virtual ~year_based_generator() {};
+ virtual date_type get_date(year_type y) const = 0;
+ //! Returns a string for use in a POSIX time_zone string
+ virtual std::string to_string() const =0;
+ };
+
+ //! Generates a date by applying the year to the given month and day.
+ /*!
+ Example usage:
+ @code
+ partial_date pd(1, Jan);
+ partial_date pd2(70);
+ date d = pd.get_date(2002); //2002-Jan-01
+ date d2 = pd2.get_date(2002); //2002-Mar-10
+ @endcode
+ \ingroup date_alg
+ */
+ template<class date_type>
+ class partial_date : public year_based_generator<date_type>
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::day_type day_type;
+ typedef typename calendar_type::month_type month_type;
+ typedef typename calendar_type::year_type year_type;
+ typedef typename date_type::duration_type duration_type;
+ typedef typename duration_type::duration_rep duration_rep;
+ partial_date(day_type d, month_type m) :
+ day_(d),
+ month_(m)
+ {}
+ //! Partial date created from number of days into year. Range 1-366
+ /*! Allowable values range from 1 to 366. 1=Jan1, 366=Dec31. If argument
+ * exceeds range, partial_date will be created with closest in-range value.
+ * 60 will always be Feb29, if get_date() is called with a non-leap year
+ * an exception will be thrown */
+ partial_date(duration_rep days) :
+ day_(1), // default values
+ month_(1)
+ {
+ date_type d1(2000,1,1);
+ if(days > 1) {
+ if(days > 366) // prevents wrapping
+ {
+ days = 366;
+ }
+ days = days - 1;
+ duration_type dd(days);
+ d1 = d1 + dd;
+ }
+ day_ = d1.day();
+ month_ = d1.month();
+ }
+ //! Return a concrete date when provided with a year specific year.
+ /*! Will throw an 'invalid_argument' exception if a partial_date object,
+ * instantiated with Feb-29, has get_date called with a non-leap year.
+ * Example:
+ * @code
+ * partial_date pd(29, Feb);
+ * pd.get_date(2003); // throws invalid_argument exception
+ * pg.get_date(2000); // returns 2000-2-29
+ * @endcode
+ */
+ date_type get_date(year_type y) const
+ {
+ if((day_ == 29) && (month_ == 2) && !(calendar_type::is_leap_year(y))) {
+ std::ostringstream ss;
+ ss << "No Feb 29th in given year of " << y << ".";
+ boost::throw_exception(std::invalid_argument(ss.str()));
+ }
+ return date_type(y, month_, day_);
+ }
+ date_type operator()(year_type y) const
+ {
+ return get_date(y);
+ //return date_type(y, month_, day_);
+ }
+ bool operator==(const partial_date& rhs) const
+ {
+ return (month_ == rhs.month_) && (day_ == rhs.day_);
+ }
+ bool operator<(const partial_date& rhs) const
+ {
+ if (month_ < rhs.month_) return true;
+ if (month_ > rhs.month_) return false;
+ //months are equal
+ return (day_ < rhs.day_);
+ }
+
+ // added for streaming purposes
+ month_type month() const
+ {
+ return month_;
+ }
+ day_type day() const
+ {
+ return day_;
+ }
+
+ //! Returns string suitable for use in POSIX time zone string
+ /*! Returns string formatted with up to 3 digits:
+ * Jan-01 == "0"
+ * Feb-29 == "58"
+ * Dec-31 == "365" */
+ virtual std::string to_string() const
+ {
+ std::ostringstream ss;
+ date_type d(2004, month_, day_);
+ unsigned short c = d.day_of_year();
+ c--; // numbered 0-365 while day_of_year is 1 based...
+ ss << c;
+ return ss.str();
+ }
+ private:
+ day_type day_;
+ month_type month_;
+ };
+
+
+ //! Returns nth arg as string. 1 -> "first", 2 -> "second", max is 5.
+ BOOST_DATE_TIME_DECL const char* nth_as_str(int n);
+
+ //! Useful generator functor for finding holidays
+ /*! Based on the idea in Cal. Calc. for finding holidays that are
+ * the 'first Monday of September'. When instantiated with
+ * 'fifth' kday of month, the result will be the last kday of month
+ * which can be the fourth or fifth depending on the structure of
+ * the month.
+ *
+ * The algorithm here basically guesses for the first
+ * day of the month. Then finds the first day of the correct
+ * type. That is, if the first of the month is a Tuesday
+ * and it needs Wenesday then we simply increment by a day
+ * and then we can add the length of a week until we get
+ * to the 'nth kday'. There are probably more efficient
+ * algorithms based on using a mod 7, but this one works
+ * reasonably well for basic applications.
+ * \ingroup date_alg
+ */
+ template<class date_type>
+ class nth_kday_of_month : public year_based_generator<date_type>
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::day_of_week_type day_of_week_type;
+ typedef typename calendar_type::month_type month_type;
+ typedef typename calendar_type::year_type year_type;
+ typedef typename date_type::duration_type duration_type;
+ enum week_num {first=1, second, third, fourth, fifth};
+ nth_kday_of_month(week_num week_no,
+ day_of_week_type dow,
+ month_type m) :
+ month_(m),
+ wn_(week_no),
+ dow_(dow)
+ {}
+ //! Return a concrete date when provided with a year specific year.
+ date_type get_date(year_type y) const
+ {
+ date_type d(y, month_, 1); //first day of month
+ duration_type one_day(1);
+ duration_type one_week(7);
+ while (dow_ != d.day_of_week()) {
+ d = d + one_day;
+ }
+ int week = 1;
+ while (week < wn_) {
+ d = d + one_week;
+ week++;
+ }
+ // remove wrapping to next month behavior
+ if(d.month() != month_) {
+ d = d - one_week;
+ }
+ return d;
+ }
+ // added for streaming
+ month_type month() const
+ {
+ return month_;
+ }
+ week_num nth_week() const
+ {
+ return wn_;
+ }
+ day_of_week_type day_of_week() const
+ {
+ return dow_;
+ }
+ const char* nth_week_as_str() const
+ {
+ return nth_as_str(wn_);
+ }
+ //! Returns string suitable for use in POSIX time zone string
+ /*! Returns a string formatted as "M4.3.0" ==> 3rd Sunday in April. */
+ virtual std::string to_string() const
+ {
+ std::ostringstream ss;
+ ss << 'M'
+ << static_cast<int>(month_) << '.'
+ << static_cast<int>(wn_) << '.'
+ << static_cast<int>(dow_);
+ return ss.str();
+ }
+ private:
+ month_type month_;
+ week_num wn_;
+ day_of_week_type dow_;
+ };
+
+ //! Useful generator functor for finding holidays and daylight savings
+ /*! Similar to nth_kday_of_month, but requires less paramters
+ * \ingroup date_alg
+ */
+ template<class date_type>
+ class first_kday_of_month : public year_based_generator<date_type>
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::day_of_week_type day_of_week_type;
+ typedef typename calendar_type::month_type month_type;
+ typedef typename calendar_type::year_type year_type;
+ typedef typename date_type::duration_type duration_type;
+ //!Specify the first 'Sunday' in 'April' spec
+ /*!@param dow The day of week, eg: Sunday, Monday, etc
+ * @param m The month of the year, eg: Jan, Feb, Mar, etc
+ */
+ first_kday_of_month(day_of_week_type dow, month_type m) :
+ month_(m),
+ dow_(dow)
+ {}
+ //! Return a concrete date when provided with a year specific year.
+ date_type get_date(year_type year) const
+ {
+ date_type d(year, month_,1);
+ duration_type one_day(1);
+ while (dow_ != d.day_of_week()) {
+ d = d + one_day;
+ }
+ return d;
+ }
+ // added for streaming
+ month_type month() const
+ {
+ return month_;
+ }
+ day_of_week_type day_of_week() const
+ {
+ return dow_;
+ }
+ //! Returns string suitable for use in POSIX time zone string
+ /*! Returns a string formatted as "M4.1.0" ==> 1st Sunday in April. */
+ virtual std::string to_string() const
+ {
+ std::ostringstream ss;
+ ss << 'M'
+ << static_cast<int>(month_) << '.'
+ << 1 << '.'
+ << static_cast<int>(dow_);
+ return ss.str();
+ }
+ private:
+ month_type month_;
+ day_of_week_type dow_;
+ };
+
+
+
+ //! Calculate something like Last Sunday of January
+ /*! Useful generator functor for finding holidays and daylight savings
+ * Get the last day of the month and then calculate the difference
+ * to the last previous day.
+ * @param date_type A date class that exports day_of_week, month_type, etc.
+ * \ingroup date_alg
+ */
+ template<class date_type>
+ class last_kday_of_month : public year_based_generator<date_type>
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::day_of_week_type day_of_week_type;
+ typedef typename calendar_type::month_type month_type;
+ typedef typename calendar_type::year_type year_type;
+ typedef typename date_type::duration_type duration_type;
+ //!Specify the date spec like last 'Sunday' in 'April' spec
+ /*!@param dow The day of week, eg: Sunday, Monday, etc
+ * @param m The month of the year, eg: Jan, Feb, Mar, etc
+ */
+ last_kday_of_month(day_of_week_type dow, month_type m) :
+ month_(m),
+ dow_(dow)
+ {}
+ //! Return a concrete date when provided with a year specific year.
+ date_type get_date(year_type year) const
+ {
+ date_type d(year, month_, calendar_type::end_of_month_day(year,month_));
+ duration_type one_day(1);
+ while (dow_ != d.day_of_week()) {
+ d = d - one_day;
+ }
+ return d;
+ }
+ // added for streaming
+ month_type month() const
+ {
+ return month_;
+ }
+ day_of_week_type day_of_week() const
+ {
+ return dow_;
+ }
+ //! Returns string suitable for use in POSIX time zone string
+ /*! Returns a string formatted as "M4.5.0" ==> last Sunday in April. */
+ virtual std::string to_string() const
+ {
+ std::ostringstream ss;
+ ss << 'M'
+ << static_cast<int>(month_) << '.'
+ << 5 << '.'
+ << static_cast<int>(dow_);
+ return ss.str();
+ }
+ private:
+ month_type month_;
+ day_of_week_type dow_;
+ };
+
+
+ //! Calculate something like "First Sunday after Jan 1,2002
+ /*! Date generator that takes a date and finds kday after
+ *@code
+ typedef boost::date_time::first_kday_after<date> firstkdayafter;
+ firstkdayafter fkaf(Monday);
+ fkaf.get_date(date(2002,Feb,1));
+ @endcode
+ * \ingroup date_alg
+ */
+ template<class date_type>
+ class first_kday_after
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::day_of_week_type day_of_week_type;
+ typedef typename date_type::duration_type duration_type;
+ first_kday_after(day_of_week_type dow) :
+ dow_(dow)
+ {}
+ //! Return next kday given.
+ date_type get_date(date_type start_day) const
+ {
+ duration_type one_day(1);
+ date_type d = start_day + one_day;
+ while (dow_ != d.day_of_week()) {
+ d = d + one_day;
+ }
+ return d;
+ }
+ // added for streaming
+ day_of_week_type day_of_week() const
+ {
+ return dow_;
+ }
+ private:
+ day_of_week_type dow_;
+ };
+
+ //! Calculate something like "First Sunday before Jan 1,2002
+ /*! Date generator that takes a date and finds kday after
+ *@code
+ typedef boost::date_time::first_kday_before<date> firstkdaybefore;
+ firstkdaybefore fkbf(Monday);
+ fkbf.get_date(date(2002,Feb,1));
+ @endcode
+ * \ingroup date_alg
+ */
+ template<class date_type>
+ class first_kday_before
+ {
+ public:
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename calendar_type::day_of_week_type day_of_week_type;
+ typedef typename date_type::duration_type duration_type;
+ first_kday_before(day_of_week_type dow) :
+ dow_(dow)
+ {}
+ //! Return next kday given.
+ date_type get_date(date_type start_day) const
+ {
+ duration_type one_day(1);
+ date_type d = start_day - one_day;
+ while (dow_ != d.day_of_week()) {
+ d = d - one_day;
+ }
+ return d;
+ }
+ // added for streaming
+ day_of_week_type day_of_week() const
+ {
+ return dow_;
+ }
+ private:
+ day_of_week_type dow_;
+ };
+
+ //! Calculates the number of days until the next weekday
+ /*! Calculates the number of days until the next weekday.
+ * If the date given falls on a Sunday and the given weekday
+ * is Tuesday the result will be 2 days */
+ template<typename date_type, class weekday_type>
+ inline
+ typename date_type::duration_type days_until_weekday(const date_type& d, const weekday_type& wd)
+ {
+ typedef typename date_type::duration_type duration_type;
+ duration_type wks(0);
+ duration_type dd(wd.as_number() - d.day_of_week().as_number());
+ if(dd.is_negative()){
+ wks = duration_type(7);
+ }
+ return dd + wks;
+ }
+
+ //! Calculates the number of days since the previous weekday
+ /*! Calculates the number of days since the previous weekday
+ * If the date given falls on a Sunday and the given weekday
+ * is Tuesday the result will be 5 days. The answer will be a positive
+ * number because Tuesday is 5 days before Sunday, not -5 days before. */
+ template<typename date_type, class weekday_type>
+ inline
+ typename date_type::duration_type days_before_weekday(const date_type& d, const weekday_type& wd)
+ {
+ typedef typename date_type::duration_type duration_type;
+ duration_type wks(0);
+ duration_type dd(wd.as_number() - d.day_of_week().as_number());
+ if(dd.days() > 0){
+ wks = duration_type(7);
+ }
+ // we want a number of days, not an offset. The value returned must
+ // be zero or larger.
+ return (-dd + wks);
+ }
+
+ //! Generates a date object representing the date of the following weekday from the given date
+ /*! Generates a date object representing the date of the following
+ * weekday from the given date. If the date given is 2004-May-9
+ * (a Sunday) and the given weekday is Tuesday then the resulting date
+ * will be 2004-May-11. */
+ template<class date_type, class weekday_type>
+ inline
+ date_type next_weekday(const date_type& d, const weekday_type& wd)
+ {
+ return d + days_until_weekday(d, wd);
+ }
+
+ //! Generates a date object representing the date of the previous weekday from the given date
+ /*! Generates a date object representing the date of the previous
+ * weekday from the given date. If the date given is 2004-May-9
+ * (a Sunday) and the given weekday is Tuesday then the resulting date
+ * will be 2004-May-4. */
+ template<class date_type, class weekday_type>
+ inline
+ date_type previous_weekday(const date_type& d, const weekday_type& wd)
+ {
+ return d - days_before_weekday(d, wd);
+ }
+
+} } //namespace date_time
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/date_iterator.hpp b/3rdParty/Boost/boost/date_time/date_iterator.hpp
new file mode 100644
index 0000000..284dc74
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_iterator.hpp
@@ -0,0 +1,101 @@
+#ifndef DATE_ITERATOR_HPP___
+#define DATE_ITERATOR_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include <iterator>
+
+namespace boost {
+namespace date_time {
+ //! An iterator over dates with varying resolution (day, week, month, year, etc)
+ enum date_resolutions {day, week, months, year, decade, century, NumDateResolutions};
+
+ //! Base date iterator type
+ /*! This class provides the skeleton for the creation of iterators.
+ * New and interesting interators can be created by plugging in a new
+ * function that derives the next value from the current state.
+ * generation of various types of -based information.
+ *
+ * <b>Template Parameters</b>
+ *
+ * <b>date_type</b>
+ *
+ * The date_type is a concrete date_type. The date_type must
+ * define a duration_type and a calendar_type.
+ */
+ template<class date_type>
+ class date_itr_base {
+ // works, but benefit unclear at the moment
+ // class date_itr_base : public std::iterator<std::input_iterator_tag,
+ // date_type, void, void, void>{
+ public:
+ typedef typename date_type::duration_type duration_type;
+ typedef date_type value_type;
+ typedef std::input_iterator_tag iterator_category;
+
+ date_itr_base(date_type d) : current_(d) {}
+ virtual ~date_itr_base() {};
+ date_itr_base& operator++()
+ {
+ current_ = current_ + get_offset(current_);
+ return *this;
+ }
+ date_itr_base& operator--()
+ {
+ current_ = current_ + get_neg_offset(current_);
+ return *this;
+ }
+ virtual duration_type get_offset(const date_type& current) const=0;
+ virtual duration_type get_neg_offset(const date_type& current) const=0;
+ date_type operator*() {return current_;};
+ date_type* operator->() {return &current_;};
+ bool operator< (const date_type& d) {return current_ < d;}
+ bool operator<= (const date_type& d) {return current_ <= d;}
+ bool operator> (const date_type& d) {return current_ > d;}
+ bool operator>= (const date_type& d) {return current_ >= d;}
+ bool operator== (const date_type& d) {return current_ == d;}
+ bool operator!= (const date_type& d) {return current_ != d;}
+ private:
+ date_type current_;
+ };
+
+ //! Overrides the base date iterator providing hook for functors
+ /*
+ * <b>offset_functor</b>
+ *
+ * The offset functor must define a get_offset function that takes the
+ * current point in time and calculates and offset.
+ *
+ */
+ template<class offset_functor, class date_type>
+ class date_itr : public date_itr_base<date_type> {
+ public:
+ typedef typename date_type::duration_type duration_type;
+ date_itr(date_type d, int factor=1) :
+ date_itr_base<date_type>(d),
+ of_(factor)
+ {}
+ private:
+ virtual duration_type get_offset(const date_type& current) const
+ {
+ return of_.get_offset(current);
+ }
+ virtual duration_type get_neg_offset(const date_type& current) const
+ {
+ return of_.get_neg_offset(current);
+ }
+ offset_functor of_;
+ };
+
+
+
+} } //namespace date_time
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_names_put.hpp b/3rdParty/Boost/boost/date_time/date_names_put.hpp
new file mode 100644
index 0000000..c6f0ce2
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_names_put.hpp
@@ -0,0 +1,320 @@
+#ifndef DATE_TIME_DATE_NAMES_PUT_HPP___
+#define DATE_TIME_DATE_NAMES_PUT_HPP___
+
+/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+#include "boost/date_time/locale_config.hpp" // set BOOST_DATE_TIME_NO_LOCALE
+
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+
+#include "boost/date_time/special_defs.hpp"
+#include "boost/date_time/date_defs.hpp"
+#include "boost/date_time/parse_format_base.hpp"
+#include "boost/lexical_cast.hpp"
+#include <locale>
+
+
+namespace boost {
+namespace date_time {
+
+ //! Output facet base class for gregorian dates.
+ /*! This class is a base class for date facets used to localize the
+ * names of months and the names of days in the week.
+ *
+ * Requirements of Config
+ * - define an enumeration month_enum that enumerates the months.
+ * The enumeration should be '1' based eg: Jan==1
+ * - define as_short_string and as_long_string
+ *
+ * (see langer & kreft p334).
+ *
+ */
+ template<class Config,
+ class charT = char,
+ class OutputIterator = std::ostreambuf_iterator<charT> >
+ class date_names_put : public std::locale::facet
+ {
+ public:
+ date_names_put() {};
+ typedef OutputIterator iter_type;
+ typedef typename Config::month_type month_type;
+ typedef typename Config::month_enum month_enum;
+ typedef typename Config::weekday_enum weekday_enum;
+ typedef typename Config::special_value_enum special_value_enum;
+ //typedef typename Config::format_type format_type;
+ typedef std::basic_string<charT> string_type;
+ typedef charT char_type;
+ static const char_type default_special_value_names[3][17];
+ static const char_type separator[2];
+
+ static std::locale::id id;
+
+#if defined (__SUNPRO_CC) && defined (_RWSTD_VER)
+ std::locale::id& __get_id (void) const { return id; }
+#endif
+
+ void put_special_value(iter_type& oitr, special_value_enum sv) const
+ {
+ do_put_special_value(oitr, sv);
+ }
+ void put_month_short(iter_type& oitr, month_enum moy) const
+ {
+ do_put_month_short(oitr, moy);
+ }
+ void put_month_long(iter_type& oitr, month_enum moy) const
+ {
+ do_put_month_long(oitr, moy);
+ }
+ void put_weekday_short(iter_type& oitr, weekday_enum wd) const
+ {
+ do_put_weekday_short(oitr, wd);
+ }
+ void put_weekday_long(iter_type& oitr, weekday_enum wd) const
+ {
+ do_put_weekday_long(oitr, wd);
+ }
+ bool has_date_sep_chars() const
+ {
+ return do_has_date_sep_chars();
+ }
+ void year_sep_char(iter_type& oitr) const
+ {
+ do_year_sep_char(oitr);
+ }
+ //! char between year-month
+ void month_sep_char(iter_type& oitr) const
+ {
+ do_month_sep_char(oitr);
+ }
+ //! Char to separate month-day
+ void day_sep_char(iter_type& oitr) const
+ {
+ do_day_sep_char(oitr);
+ }
+ //! Determines the order to put the date elements
+ ymd_order_spec date_order() const
+ {
+ return do_date_order();
+ }
+ //! Determines if month is displayed as integer, short or long string
+ month_format_spec month_format() const
+ {
+ return do_month_format();
+ }
+
+ protected:
+ //! Default facet implementation uses month_type defaults
+ virtual void do_put_month_short(iter_type& oitr, month_enum moy) const
+ {
+ month_type gm(moy);
+ charT c = '\0';
+ put_string(oitr, gm.as_short_string(c));
+ }
+ //! Default facet implementation uses month_type defaults
+ virtual void do_put_month_long(iter_type& oitr,
+ month_enum moy) const
+ {
+ month_type gm(moy);
+ charT c = '\0';
+ put_string(oitr, gm.as_long_string(c));
+ }
+ //! Default facet implementation for special value types
+ virtual void do_put_special_value(iter_type& oitr, special_value_enum sv) const
+ {
+ if(sv <= 2) { // only output not_a_date_time, neg_infin, or pos_infin
+ string_type s(default_special_value_names[sv]);
+ put_string(oitr, s);
+ }
+ }
+ virtual void do_put_weekday_short(iter_type&, weekday_enum) const
+ {
+ }
+ virtual void do_put_weekday_long(iter_type&, weekday_enum) const
+ {
+ }
+ virtual bool do_has_date_sep_chars() const
+ {
+ return true;
+ }
+ virtual void do_year_sep_char(iter_type& oitr) const
+ {
+ string_type s(separator);
+ put_string(oitr, s);
+ }
+ //! char between year-month
+ virtual void do_month_sep_char(iter_type& oitr) const
+ {
+ string_type s(separator);
+ put_string(oitr, s);
+ }
+ //! Char to separate month-day
+ virtual void do_day_sep_char(iter_type& oitr) const
+ {
+ string_type s(separator); //put in '-'
+ put_string(oitr, s);
+ }
+ //! Default for date order
+ virtual ymd_order_spec do_date_order() const
+ {
+ return ymd_order_iso;
+ }
+ //! Default month format
+ virtual month_format_spec do_month_format() const
+ {
+ return month_as_short_string;
+ }
+ void put_string(iter_type& oi, const charT* const s) const
+ {
+ string_type s1(boost::lexical_cast<string_type>(s));
+ typename string_type::iterator si,end;
+ for (si=s1.begin(), end=s1.end(); si!=end; si++, oi++) {
+ *oi = *si;
+ }
+ }
+ void put_string(iter_type& oi, const string_type& s1) const
+ {
+ typename string_type::const_iterator si,end;
+ for (si=s1.begin(), end=s1.end(); si!=end; si++, oi++) {
+ *oi = *si;
+ }
+ }
+ };
+
+ template<class Config, class charT, class OutputIterator>
+ const typename date_names_put<Config, charT, OutputIterator>::char_type
+ date_names_put<Config, charT, OutputIterator>::default_special_value_names[3][17] = {
+ {'n','o','t','-','a','-','d','a','t','e','-','t','i','m','e'},
+ {'-','i','n','f','i','n','i','t','y'},
+ {'+','i','n','f','i','n','i','t','y'} };
+
+ template<class Config, class charT, class OutputIterator>
+ const typename date_names_put<Config, charT, OutputIterator>::char_type
+ date_names_put<Config, charT, OutputIterator>::separator[2] =
+ {'-', '\0'} ;
+
+
+ //! Generate storage location for a std::locale::id
+ template<class Config, class charT, class OutputIterator>
+ std::locale::id date_names_put<Config, charT, OutputIterator>::id;
+
+ //! A date name output facet that takes an array of char* to define strings
+ template<class Config,
+ class charT = char,
+ class OutputIterator = std::ostreambuf_iterator<charT> >
+ class all_date_names_put : public date_names_put<Config, charT, OutputIterator>
+ {
+ public:
+ all_date_names_put(const charT* const month_short_names[],
+ const charT* const month_long_names[],
+ const charT* const special_value_names[],
+ const charT* const weekday_short_names[],
+ const charT* const weekday_long_names[],
+ charT separator_char = '-',
+ ymd_order_spec order_spec = ymd_order_iso,
+ month_format_spec month_format = month_as_short_string) :
+ month_short_names_(month_short_names),
+ month_long_names_(month_long_names),
+ special_value_names_(special_value_names),
+ weekday_short_names_(weekday_short_names),
+ weekday_long_names_(weekday_long_names),
+ order_spec_(order_spec),
+ month_format_spec_(month_format)
+ {
+ separator_char_[0] = separator_char;
+ separator_char_[1] = '\0';
+
+ };
+ typedef OutputIterator iter_type;
+ typedef typename Config::month_enum month_enum;
+ typedef typename Config::weekday_enum weekday_enum;
+ typedef typename Config::special_value_enum special_value_enum;
+
+ const charT* const* get_short_month_names() const
+ {
+ return month_short_names_;
+ }
+ const charT* const* get_long_month_names() const
+ {
+ return month_long_names_;
+ }
+ const charT* const* get_special_value_names() const
+ {
+ return special_value_names_;
+ }
+ const charT* const* get_short_weekday_names()const
+ {
+ return weekday_short_names_;
+ }
+ const charT* const* get_long_weekday_names()const
+ {
+ return weekday_long_names_;
+ }
+
+ protected:
+ //! Generic facet that takes array of chars
+ virtual void do_put_month_short(iter_type& oitr, month_enum moy) const
+ {
+ this->put_string(oitr, month_short_names_[moy-1]);
+ }
+ //! Long month names
+ virtual void do_put_month_long(iter_type& oitr, month_enum moy) const
+ {
+ this->put_string(oitr, month_long_names_[moy-1]);
+ }
+ //! Special values names
+ virtual void do_put_special_value(iter_type& oitr, special_value_enum sv) const
+ {
+ this->put_string(oitr, special_value_names_[sv]);
+ }
+ virtual void do_put_weekday_short(iter_type& oitr, weekday_enum wd) const
+ {
+ this->put_string(oitr, weekday_short_names_[wd]);
+ }
+ virtual void do_put_weekday_long(iter_type& oitr, weekday_enum wd) const
+ {
+ this->put_string(oitr, weekday_long_names_[wd]);
+ }
+ //! char between year-month
+ virtual void do_month_sep_char(iter_type& oitr) const
+ {
+ this->put_string(oitr, separator_char_);
+ }
+ //! Char to separate month-day
+ virtual void do_day_sep_char(iter_type& oitr) const
+ {
+ this->put_string(oitr, separator_char_);
+ }
+ //! Set the date ordering
+ virtual ymd_order_spec do_date_order() const
+ {
+ return order_spec_;
+ }
+ //! Set the date ordering
+ virtual month_format_spec do_month_format() const
+ {
+ return month_format_spec_;
+ }
+
+ private:
+ const charT* const* month_short_names_;
+ const charT* const* month_long_names_;
+ const charT* const* special_value_names_;
+ const charT* const* weekday_short_names_;
+ const charT* const* weekday_long_names_;
+ charT separator_char_[2];
+ ymd_order_spec order_spec_;
+ month_format_spec month_format_spec_;
+ };
+
+} } //namespace boost::date_time
+
+#endif //BOOST_NO_STD_LOCALE
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/date_parsing.hpp b/3rdParty/Boost/boost/date_time/date_parsing.hpp
new file mode 100644
index 0000000..41b6aef
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/date_parsing.hpp
@@ -0,0 +1,300 @@
+#ifndef _DATE_TIME_DATE_PARSING_HPP___
+#define _DATE_TIME_DATE_PARSING_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-23 06:13:35 -0500 (Sun, 23 Nov 2008) $
+ */
+
+#include <string>
+#include <iterator>
+#include <algorithm>
+#include <boost/tokenizer.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/parse_format_base.hpp>
+
+#if defined(BOOST_DATE_TIME_NO_LOCALE)
+#include <cctype> // ::tolower(int)
+#else
+#include <locale> // std::tolower(char, locale)
+#endif
+
+namespace boost {
+namespace date_time {
+
+ //! A function to replace the std::transform( , , ,tolower) construct
+ /*! This function simply takes a string, and changes all the characters
+ * in that string to lowercase (according to the default system locale).
+ * In the event that a compiler does not support locales, the old
+ * C style tolower() is used.
+ */
+ inline
+ std::string
+ convert_to_lower(std::string inp)
+ {
+#if !defined(BOOST_DATE_TIME_NO_LOCALE)
+ const std::locale loc(std::locale::classic());
+#endif
+ std::string::size_type i = 0, n = inp.length();
+ for (; i < n; ++i) {
+ inp[i] =
+#if defined(BOOST_DATE_TIME_NO_LOCALE)
+ static_cast<char>(std::tolower(inp[i]));
+#else
+ // tolower and others were brought in to std for borland >= v564
+ // in compiler_config.hpp
+ std::tolower(inp[i], loc);
+#endif
+ }
+ return inp;
+ }
+
+ //! Helper function for parse_date.
+ /* Used by-value parameter because we change the string and may
+ * want to preserve the original argument */
+ template<class month_type>
+ inline unsigned short
+ month_str_to_ushort(std::string const& s) {
+ if((s.at(0) >= '0') && (s.at(0) <= '9')) {
+ return boost::lexical_cast<unsigned short>(s);
+ }
+ else {
+ std::string str = convert_to_lower(s);
+ typename month_type::month_map_ptr_type ptr = month_type::get_month_map_ptr();
+ typename month_type::month_map_type::iterator iter = ptr->find(str);
+ if(iter != ptr->end()) { // required for STLport
+ return iter->second;
+ }
+ }
+ return 13; // intentionally out of range - name not found
+ }
+
+ //! Find index of a string in either of 2 arrays
+ /*! find_match searches both arrays for a match to 's'. Both arrays
+ * must contain 'size' elements. The index of the match is returned.
+ * If no match is found, 'size' is returned.
+ * Ex. "Jan" returns 0, "Dec" returns 11, "Tue" returns 2.
+ * 'size' can be sent in with: greg_month::max() (which 12),
+ * greg_weekday::max() + 1 (which is 7) or date_time::NumSpecialValues */
+ template<class charT>
+ short find_match(const charT* const* short_names,
+ const charT* const* long_names,
+ short size,
+ const std::basic_string<charT>& s) {
+ for(short i = 0; i < size; ++i){
+ if(short_names[i] == s || long_names[i] == s){
+ return i;
+ }
+ }
+ return size; // not-found, return a value out of range
+ }
+
+ //! Generic function to parse a delimited date (eg: 2002-02-10)
+ /*! Accepted formats are: "2003-02-10" or " 2003-Feb-10" or
+ * "2003-Feburary-10"
+ * The order in which the Month, Day, & Year appear in the argument
+ * string can be accomodated by passing in the appropriate ymd_order_spec
+ */
+ template<class date_type>
+ date_type
+ parse_date(const std::string& s, int order_spec = ymd_order_iso) {
+ std::string spec_str;
+ if(order_spec == ymd_order_iso) {
+ spec_str = "ymd";
+ }
+ else if(order_spec == ymd_order_dmy) {
+ spec_str = "dmy";
+ }
+ else { // (order_spec == ymd_order_us)
+ spec_str = "mdy";
+ }
+
+ typedef typename date_type::year_type year_type;
+ typedef typename date_type::month_type month_type;
+ unsigned pos = 0;
+ unsigned short year(0), month(0), day(0);
+ typedef typename std::basic_string<char>::traits_type traits_type;
+ typedef boost::char_separator<char, traits_type> char_separator_type;
+ typedef boost::tokenizer<char_separator_type,
+ std::basic_string<char>::const_iterator,
+ std::basic_string<char> > tokenizer;
+ typedef boost::tokenizer<char_separator_type,
+ std::basic_string<char>::const_iterator,
+ std::basic_string<char> >::iterator tokenizer_iterator;
+ // may need more delimiters, these work for the regression tests
+ const char sep_char[] = {',','-','.',' ','/','\0'};
+ char_separator_type sep(sep_char);
+ tokenizer tok(s,sep);
+ for(tokenizer_iterator beg=tok.begin();
+ beg!=tok.end() && pos < spec_str.size();
+ ++beg, ++pos) {
+ switch(spec_str.at(pos)) {
+ case 'y':
+ {
+ year = boost::lexical_cast<unsigned short>(*beg);
+ break;
+ }
+ case 'm':
+ {
+ month = month_str_to_ushort<month_type>(*beg);
+ break;
+ }
+ case 'd':
+ {
+ day = boost::lexical_cast<unsigned short>(*beg);
+ break;
+ }
+ } //switch
+ }
+ return date_type(year, month, day);
+ }
+
+ //! Generic function to parse undelimited date (eg: 20020201)
+ template<class date_type>
+ date_type
+ parse_undelimited_date(const std::string& s) {
+ int offsets[] = {4,2,2};
+ int pos = 0;
+ typedef typename date_type::year_type year_type;
+ //typename date_type::ymd_type ymd((year_type::min)(),1,1);
+ unsigned short y = 0, m = 0, d = 0;
+
+ /* The two bool arguments state that parsing will not wrap
+ * (only the first 8 characters will be parsed) and partial
+ * strings will not be parsed.
+ * Ex:
+ * "2005121" will parse 2005 & 12, but not the "1" */
+ boost::offset_separator osf(offsets, offsets+3, false, false);
+
+ typedef typename boost::tokenizer<boost::offset_separator,
+ std::basic_string<char>::const_iterator,
+ std::basic_string<char> > tokenizer_type;
+ tokenizer_type tok(s, osf);
+ for(typename tokenizer_type::iterator ti=tok.begin(); ti!=tok.end();++ti) {
+ unsigned short i = boost::lexical_cast<unsigned short>(*ti);
+ switch(pos) {
+ case 0: y = i; break;
+ case 1: m = i; break;
+ case 2: d = i; break;
+ }
+ pos++;
+ }
+ return date_type(y,m,d);
+ }
+
+ //! Helper function for 'date gregorian::from_stream()'
+ /*! Creates a string from the iterators that reference the
+ * begining & end of a char[] or string. All elements are
+ * used in output string */
+ template<class date_type, class iterator_type>
+ inline
+ date_type
+ from_stream_type(iterator_type& beg,
+ iterator_type& end,
+ char)
+ {
+ std::ostringstream ss;
+ while(beg != end) {
+ ss << *beg++;
+ }
+ return parse_date<date_type>(ss.str());
+ }
+
+ //! Helper function for 'date gregorian::from_stream()'
+ /*! Returns the first string found in the stream referenced by the
+ * begining & end iterators */
+ template<class date_type, class iterator_type>
+ inline
+ date_type
+ from_stream_type(iterator_type& beg,
+ iterator_type& /* end */,
+ std::string)
+ {
+ return parse_date<date_type>(*beg);
+ }
+
+ /* I believe the wchar stuff would be best elsewhere, perhaps in
+ * parse_date<>()? In the mean time this gets us started... */
+ //! Helper function for 'date gregorian::from_stream()'
+ /*! Creates a string from the iterators that reference the
+ * begining & end of a wstring. All elements are
+ * used in output string */
+ template<class date_type, class iterator_type>
+ inline
+ date_type from_stream_type(iterator_type& beg,
+ iterator_type& end,
+ wchar_t)
+ {
+ std::ostringstream ss;
+ while(beg != end) {
+#if !defined(BOOST_DATE_TIME_NO_LOCALE)
+ ss << std::use_facet<std::ctype<wchar_t> >(std::locale()).narrow(*beg++, 'X'); // 'X' will cause exception to be thrown
+#else
+ ss << ss.narrow(*beg++, 'X');
+#endif
+ }
+ return parse_date<date_type>(ss.str());
+ }
+#ifndef BOOST_NO_STD_WSTRING
+ //! Helper function for 'date gregorian::from_stream()'
+ /*! Creates a string from the first wstring found in the stream
+ * referenced by the begining & end iterators */
+ template<class date_type, class iterator_type>
+ inline
+ date_type
+ from_stream_type(iterator_type& beg,
+ iterator_type& /* end */,
+ std::wstring) {
+ std::wstring ws = *beg;
+ std::ostringstream ss;
+ std::wstring::iterator wsb = ws.begin(), wse = ws.end();
+ while(wsb != wse) {
+#if !defined(BOOST_DATE_TIME_NO_LOCALE)
+ ss << std::use_facet<std::ctype<wchar_t> >(std::locale()).narrow(*wsb++, 'X'); // 'X' will cause exception to be thrown
+#else
+ ss << ss.narrow(*wsb++, 'X'); // 'X' will cause exception to be thrown
+#endif
+ }
+ return parse_date<date_type>(ss.str());
+ }
+#endif // BOOST_NO_STD_WSTRING
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ // This function cannot be compiled with MSVC 6.0 due to internal compiler shorcomings
+#else
+ //! function called by wrapper functions: date_period_from_(w)string()
+ template<class date_type, class charT>
+ period<date_type, typename date_type::duration_type>
+ from_simple_string_type(const std::basic_string<charT>& s){
+ typedef typename std::basic_string<charT>::traits_type traits_type;
+ typedef typename boost::char_separator<charT, traits_type> char_separator;
+ typedef typename boost::tokenizer<char_separator,
+ typename std::basic_string<charT>::const_iterator,
+ std::basic_string<charT> > tokenizer;
+ const charT sep_list[4] = {'[','/',']','\0'};
+ char_separator sep(sep_list);
+ tokenizer tokens(s, sep);
+ typename tokenizer::iterator tok_it = tokens.begin();
+ std::basic_string<charT> date_string = *tok_it;
+ // get 2 string iterators and generate a date from them
+ typename std::basic_string<charT>::iterator date_string_start = date_string.begin(),
+ date_string_end = date_string.end();
+ typedef typename std::iterator_traits<typename std::basic_string<charT>::iterator>::value_type value_type;
+ date_type d1 = from_stream_type<date_type>(date_string_start, date_string_end, value_type());
+ date_string = *(++tok_it); // next token
+ date_string_start = date_string.begin(), date_string_end = date_string.end();
+ date_type d2 = from_stream_type<date_type>(date_string_start, date_string_end, value_type());
+ return period<date_type, typename date_type::duration_type>(d1, d2);
+ }
+#endif
+
+} } //namespace date_time
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/dst_rules.hpp b/3rdParty/Boost/boost/date_time/dst_rules.hpp
new file mode 100644
index 0000000..20cb40b
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/dst_rules.hpp
@@ -0,0 +1,391 @@
+#ifndef DATE_TIME_DST_RULES_HPP__
+#define DATE_TIME_DST_RULES_HPP__
+
+/* Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+/*! @file dst_rules.hpp
+ Contains template class to provide static dst rule calculations
+*/
+
+#include "boost/date_time/date_generators.hpp"
+#include "boost/date_time/period.hpp"
+#include "boost/date_time/date_defs.hpp"
+#include <stdexcept>
+
+namespace boost {
+ namespace date_time {
+
+ enum time_is_dst_result {is_not_in_dst, is_in_dst,
+ ambiguous, invalid_time_label};
+
+
+ //! Dynamic class used to caluclate dst transition information
+ template<class date_type_,
+ class time_duration_type_>
+ class dst_calculator
+ {
+ public:
+ typedef time_duration_type_ time_duration_type;
+ typedef date_type_ date_type;
+
+ //! Check the local time offset when on dst start day
+ /*! On this dst transition, the time label between
+ * the transition boundary and the boudary + the offset
+ * are invalid times. If before the boundary then still
+ * not in dst.
+ *@param time_of_day Time offset in the day for the local time
+ *@param dst_start_offset_minutes Local day offset for start of dst
+ *@param dst_length_minutes Number of minutes to adjust clock forward
+ *@retval status of time label w.r.t. dst
+ */
+ static time_is_dst_result
+ process_local_dst_start_day(const time_duration_type& time_of_day,
+ unsigned int dst_start_offset_minutes,
+ long dst_length_minutes)
+ {
+ //std::cout << "here" << std::endl;
+ if (time_of_day < time_duration_type(0,dst_start_offset_minutes,0)) {
+ return is_not_in_dst;
+ }
+ long offset = dst_start_offset_minutes + dst_length_minutes;
+ if (time_of_day >= time_duration_type(0,offset,0)) {
+ return is_in_dst;
+ }
+ return invalid_time_label;
+ }
+
+ //! Check the local time offset when on the last day of dst
+ /*! This is the calculation for the DST end day. On that day times
+ * prior to the conversion time - dst_length (1 am in US) are still
+ * in dst. Times between the above and the switch time are
+ * ambiguous. Times after the start_offset are not in dst.
+ *@param time_of_day Time offset in the day for the local time
+ *@param dst_end_offset_minutes Local time of day for end of dst
+ *@retval status of time label w.r.t. dst
+ */
+ static time_is_dst_result
+ process_local_dst_end_day(const time_duration_type& time_of_day,
+ unsigned int dst_end_offset_minutes,
+ long dst_length_minutes)
+ {
+ //in US this will be 60 so offset in day is 1,0,0
+ int offset = dst_end_offset_minutes-dst_length_minutes;
+ if (time_of_day < time_duration_type(0,offset,0)) {
+ return is_in_dst;
+ }
+ if (time_of_day >= time_duration_type(0,dst_end_offset_minutes,0)) {
+ return is_not_in_dst;
+ }
+ return ambiguous;
+ }
+
+ //! Calculates if the given local time is dst or not
+ /*! Determines if the time is really in DST or not. Also checks for
+ * invalid and ambiguous.
+ * @param current_day The day to check for dst
+ * @param time_of_day Time offset within the day to check
+ * @param dst_start_day Starting day of dst for the given locality
+ * @param dst_start_offset Time offset within day for dst boundary
+ * @param dst_end_day Ending day of dst for the given locality
+ * @param dst_end_offset Time offset within day given in dst for dst boundary
+ * @param dst_length lenght of dst adjusment
+ * @retval The time is either ambiguous, invalid, in dst, or not in dst
+ */
+ static time_is_dst_result
+ local_is_dst(const date_type& current_day,
+ const time_duration_type& time_of_day,
+ const date_type& dst_start_day,
+ const time_duration_type& dst_start_offset,
+ const date_type& dst_end_day,
+ const time_duration_type& dst_end_offset,
+ const time_duration_type& dst_length_minutes)
+ {
+ unsigned int start_minutes =
+ dst_start_offset.hours() * 60 + dst_start_offset.minutes();
+ unsigned int end_minutes =
+ dst_end_offset.hours() * 60 + dst_end_offset.minutes();
+ long length_minutes =
+ dst_length_minutes.hours() * 60 + dst_length_minutes.minutes();
+
+ return local_is_dst(current_day, time_of_day,
+ dst_start_day, start_minutes,
+ dst_end_day, end_minutes,
+ length_minutes);
+ }
+
+ //! Calculates if the given local time is dst or not
+ /*! Determines if the time is really in DST or not. Also checks for
+ * invalid and ambiguous.
+ * @param current_day The day to check for dst
+ * @param time_of_day Time offset within the day to check
+ * @param dst_start_day Starting day of dst for the given locality
+ * @param dst_start_offset_minutes Offset within day for dst
+ * boundary (eg 120 for US which is 02:00:00)
+ * @param dst_end_day Ending day of dst for the given locality
+ * @param dst_end_offset_minutes Offset within day given in dst for dst
+ * boundary (eg 120 for US which is 02:00:00)
+ * @param dst_length_minutes Length of dst adjusment (eg: 60 for US)
+ * @retval The time is either ambiguous, invalid, in dst, or not in dst
+ */
+ static time_is_dst_result
+ local_is_dst(const date_type& current_day,
+ const time_duration_type& time_of_day,
+ const date_type& dst_start_day,
+ unsigned int dst_start_offset_minutes,
+ const date_type& dst_end_day,
+ unsigned int dst_end_offset_minutes,
+ long dst_length_minutes)
+ {
+ //in northern hemisphere dst is in the middle of the year
+ if (dst_start_day < dst_end_day) {
+ if ((current_day > dst_start_day) && (current_day < dst_end_day)) {
+ return is_in_dst;
+ }
+ if ((current_day < dst_start_day) || (current_day > dst_end_day)) {
+ return is_not_in_dst;
+ }
+ }
+ else {//southern hemisphere dst is at begining /end of year
+ if ((current_day < dst_start_day) && (current_day > dst_end_day)) {
+ return is_not_in_dst;
+ }
+ if ((current_day > dst_start_day) || (current_day < dst_end_day)) {
+ return is_in_dst;
+ }
+ }
+
+ if (current_day == dst_start_day) {
+ return process_local_dst_start_day(time_of_day,
+ dst_start_offset_minutes,
+ dst_length_minutes);
+ }
+
+ if (current_day == dst_end_day) {
+ return process_local_dst_end_day(time_of_day,
+ dst_end_offset_minutes,
+ dst_length_minutes);
+ }
+ //you should never reach this statement
+ return invalid_time_label;
+ }
+
+ };
+
+
+ //! Compile-time configurable daylight savings time calculation engine
+ /* This template provides the ability to configure a daylight savings
+ * calculation at compile time covering all the cases. Unfortunately
+ * because of the number of dimensions related to daylight savings
+ * calculation the number of parameters is high. In addition, the
+ * start and end transition rules are complex types that specify
+ * an algorithm for calculation of the starting day and ending
+ * day of daylight savings time including the month and day
+ * specifications (eg: last sunday in October).
+ *
+ * @param date_type A type that represents dates, typically gregorian::date
+ * @param time_duration_type Used for the offset in the day calculations
+ * @param dst_traits A set of traits that define the rules of dst
+ * calculation. The dst_trait must include the following:
+ * start_rule_functor - Rule to calculate the starting date of a
+ * dst transition (eg: last_kday_of_month).
+ * start_day - static function that returns month of dst start for
+ * start_rule_functor
+ * start_month -static function that returns day or day of week for
+ * dst start of dst
+ * end_rule_functor - Rule to calculate the end of dst day.
+ * end_day - static fucntion that returns end day for end_rule_functor
+ * end_month - static function that returns end month for end_rule_functor
+ * dst_start_offset_minutes - number of minutes from start of day to transition to dst -- 120 (or 2:00 am) is typical for the U.S. and E.U.
+ * dst_start_offset_minutes - number of minutes from start of day to transition off of dst -- 180 (or 3:00 am) is typical for E.U.
+ * dst_length_minutes - number of minutes that dst shifts clock
+ */
+ template<class date_type,
+ class time_duration_type,
+ class dst_traits>
+ class dst_calc_engine
+ {
+ public:
+ typedef typename date_type::year_type year_type;
+ typedef typename date_type::calendar_type calendar_type;
+ typedef dst_calculator<date_type, time_duration_type> dstcalc;
+
+ //! Calculates if the given local time is dst or not
+ /*! Determines if the time is really in DST or not. Also checks for
+ * invalid and ambiguous.
+ * @retval The time is either ambiguous, invalid, in dst, or not in dst
+ */
+ static time_is_dst_result local_is_dst(const date_type& d,
+ const time_duration_type& td)
+ {
+
+ year_type y = d.year();
+ date_type dst_start = local_dst_start_day(y);
+ date_type dst_end = local_dst_end_day(y);
+ return dstcalc::local_is_dst(d,td,
+ dst_start,
+ dst_traits::dst_start_offset_minutes(),
+ dst_end,
+ dst_traits::dst_end_offset_minutes(),
+ dst_traits::dst_shift_length_minutes());
+
+ }
+
+ static bool is_dst_boundary_day(date_type d)
+ {
+ year_type y = d.year();
+ return ((d == local_dst_start_day(y)) ||
+ (d == local_dst_end_day(y)));
+ }
+
+ //! The time of day for the dst transition (eg: typically 01:00:00 or 02:00:00)
+ static time_duration_type dst_offset()
+ {
+ return time_duration_type(0,dst_traits::dst_shift_length_minutes(),0);
+ }
+
+ static date_type local_dst_start_day(year_type year)
+ {
+ return dst_traits::local_dst_start_day(year);
+ }
+
+ static date_type local_dst_end_day(year_type year)
+ {
+ return dst_traits::local_dst_end_day(year);
+ }
+
+
+ };
+
+ //! Depricated: Class to calculate dst boundaries for US time zones
+ /* Use dst_calc_engine instead.
+ * In 2007 US/Canada DST rules changed
+ * (http://en.wikipedia.org/wiki/Energy_Policy_Act_of_2005#Change_to_daylight_saving_time).
+ */
+ template<class date_type_,
+ class time_duration_type_,
+ unsigned int dst_start_offset_minutes=120, //from start of day
+ short dst_length_minutes=60> //1 hour == 60 min in US
+ class us_dst_rules
+ {
+ public:
+ typedef time_duration_type_ time_duration_type;
+ typedef date_type_ date_type;
+ typedef typename date_type::year_type year_type;
+ typedef typename date_type::calendar_type calendar_type;
+ typedef date_time::last_kday_of_month<date_type> lkday;
+ typedef date_time::first_kday_of_month<date_type> fkday;
+ typedef date_time::nth_kday_of_month<date_type> nkday;
+ typedef dst_calculator<date_type, time_duration_type> dstcalc;
+
+ //! Calculates if the given local time is dst or not
+ /*! Determines if the time is really in DST or not. Also checks for
+ * invalid and ambiguous.
+ * @retval The time is either ambiguous, invalid, in dst, or not in dst
+ */
+ static time_is_dst_result local_is_dst(const date_type& d,
+ const time_duration_type& td)
+ {
+
+ year_type y = d.year();
+ date_type dst_start = local_dst_start_day(y);
+ date_type dst_end = local_dst_end_day(y);
+ return dstcalc::local_is_dst(d,td,
+ dst_start,dst_start_offset_minutes,
+ dst_end, dst_start_offset_minutes,
+ dst_length_minutes);
+
+ }
+
+
+ static bool is_dst_boundary_day(date_type d)
+ {
+ year_type y = d.year();
+ return ((d == local_dst_start_day(y)) ||
+ (d == local_dst_end_day(y)));
+ }
+
+ static date_type local_dst_start_day(year_type year)
+ {
+ if (year >= year_type(2007)) {
+ //second sunday in march
+ nkday ssim(nkday::second, Sunday, gregorian::Mar);
+ return ssim.get_date(year);
+ } else {
+ //first sunday in april
+ fkday fsia(Sunday, gregorian::Apr);
+ return fsia.get_date(year);
+ }
+ }
+
+ static date_type local_dst_end_day(year_type year)
+ {
+ if (year >= year_type(2007)) {
+ //first sunday in november
+ fkday fsin(Sunday, gregorian::Nov);
+ return fsin.get_date(year);
+ } else {
+ //last sunday in october
+ lkday lsio(Sunday, gregorian::Oct);
+ return lsio.get_date(year);
+ }
+ }
+
+ static time_duration_type dst_offset()
+ {
+ return time_duration_type(0,dst_length_minutes,0);
+ }
+
+ private:
+
+
+ };
+
+ //! Used for local time adjustments in places that don't use dst
+ template<class date_type_, class time_duration_type_>
+ class null_dst_rules
+ {
+ public:
+ typedef time_duration_type_ time_duration_type;
+ typedef date_type_ date_type;
+
+
+ //! Calculates if the given local time is dst or not
+ /*! @retval Always is_not_in_dst since this is for zones without dst
+ */
+ static time_is_dst_result local_is_dst(const date_type&,
+ const time_duration_type&)
+ {
+ return is_not_in_dst;
+ }
+
+ //! Calculates if the given utc time is in dst
+ static time_is_dst_result utc_is_dst(const date_type&,
+ const time_duration_type&)
+ {
+ return is_not_in_dst;
+ }
+
+ static bool is_dst_boundary_day(date_type d)
+ {
+ return false;
+ }
+
+ static time_duration_type dst_offset()
+ {
+ return time_duration_type(0,0,0);
+ }
+
+ };
+
+
+ } } //namespace date_time
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/filetime_functions.hpp b/3rdParty/Boost/boost/date_time/filetime_functions.hpp
new file mode 100644
index 0000000..79a3d4c
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/filetime_functions.hpp
@@ -0,0 +1,172 @@
+#ifndef DATE_TIME_FILETIME_FUNCTIONS_HPP__
+#define DATE_TIME_FILETIME_FUNCTIONS_HPP__
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2009-02-01 06:29:43 -0500 (Sun, 01 Feb 2009) $
+ */
+
+/*! @file filetime_functions.hpp
+ * Function(s) for converting between a FILETIME structure and a
+ * time object. This file is only available on systems that have
+ * BOOST_HAS_FTIME defined.
+ */
+
+#include <boost/date_time/compiler_config.hpp>
+
+#if defined(BOOST_HAS_FTIME) // skip this file if no FILETIME
+
+#if defined(BOOST_USE_WINDOWS_H)
+# include <windows.h>
+#endif
+
+#include <boost/cstdint.hpp>
+#include <boost/date_time/time.hpp>
+#include <boost/date_time/date_defs.hpp>
+
+namespace boost {
+
+namespace date_time {
+
+namespace winapi {
+
+#if !defined(BOOST_USE_WINDOWS_H)
+
+ extern "C" {
+
+ struct FILETIME
+ {
+ boost::uint32_t dwLowDateTime;
+ boost::uint32_t dwHighDateTime;
+ };
+ struct SYSTEMTIME
+ {
+ boost::uint16_t wYear;
+ boost::uint16_t wMonth;
+ boost::uint16_t wDayOfWeek;
+ boost::uint16_t wDay;
+ boost::uint16_t wHour;
+ boost::uint16_t wMinute;
+ boost::uint16_t wSecond;
+ boost::uint16_t wMilliseconds;
+ };
+
+ __declspec(dllimport) void __stdcall GetSystemTimeAsFileTime(FILETIME* lpFileTime);
+ __declspec(dllimport) int __stdcall FileTimeToLocalFileTime(const FILETIME* lpFileTime, FILETIME* lpLocalFileTime);
+ __declspec(dllimport) void __stdcall GetSystemTime(SYSTEMTIME* lpSystemTime);
+ __declspec(dllimport) int __stdcall SystemTimeToFileTime(const SYSTEMTIME* lpSystemTime, FILETIME* lpFileTime);
+
+ } // extern "C"
+
+#endif // defined(BOOST_USE_WINDOWS_H)
+
+ typedef FILETIME file_time;
+ typedef SYSTEMTIME system_time;
+
+ inline void get_system_time_as_file_time(file_time& ft)
+ {
+#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205))
+ // Some runtime library implementations expect local times as the norm for ctime.
+ file_time ft_utc;
+ GetSystemTimeAsFileTime(&ft_utc);
+ FileTimeToLocalFileTime(&ft_utc, &ft);
+#elif defined(BOOST_NO_GETSYSTEMTIMEASFILETIME)
+ system_time st;
+ GetSystemTime(&st);
+ SystemTimeToFileTime(&st, &ft);
+#else
+ GetSystemTimeAsFileTime(&ft);
+#endif
+ }
+
+ /*!
+ * The function converts file_time into number of microseconds elapsed since 1970-Jan-01
+ *
+ * \note Only dates after 1970-Jan-01 are supported. Dates before will be wrapped.
+ *
+ * \note The function is templated on the FILETIME type, so that
+ * it can be used with both native FILETIME and the ad-hoc
+ * boost::date_time::winapi::file_time type.
+ */
+ template< typename FileTimeT >
+ inline boost::uint64_t file_time_to_microseconds(FileTimeT const& ft)
+ {
+ /* shift is difference between 1970-Jan-01 & 1601-Jan-01
+ * in 100-nanosecond intervals */
+ const uint64_t c1 = 27111902UL;
+ const uint64_t c2 = 3577643008UL; // issues warning without 'UL'
+ const uint64_t shift = (c1 << 32) + c2;
+
+ union {
+ FileTimeT as_file_time;
+ uint64_t as_integer; // 100-nanos since 1601-Jan-01
+ } caster;
+ caster.as_file_time = ft;
+
+ caster.as_integer -= shift; // filetime is now 100-nanos since 1970-Jan-01
+ return (caster.as_integer / 10); // truncate to microseconds
+ }
+
+} // namespace winapi
+
+//! Create a time object from an initialized FILETIME struct.
+/*!
+ * Create a time object from an initialized FILETIME struct.
+ * A FILETIME struct holds 100-nanosecond units (0.0000001). When
+ * built with microsecond resolution the file_time's sub second value
+ * will be truncated. Nanosecond resolution has no truncation.
+ *
+ * \note The function is templated on the FILETIME type, so that
+ * it can be used with both native FILETIME and the ad-hoc
+ * boost::date_time::winapi::file_time type.
+ */
+template< typename TimeT, typename FileTimeT >
+inline
+TimeT time_from_ftime(const FileTimeT& ft)
+{
+ typedef typename TimeT::date_type date_type;
+ typedef typename TimeT::date_duration_type date_duration_type;
+ typedef typename TimeT::time_duration_type time_duration_type;
+
+ // https://svn.boost.org/trac/boost/ticket/2523
+ // Since this function can be called with arbitrary times, including ones that
+ // are before 1970-Jan-01, we'll have to cast the time a bit differently,
+ // than it is done in the file_time_to_microseconds function. This allows to
+ // avoid integer wrapping for dates before 1970-Jan-01.
+ union {
+ FileTimeT as_file_time;
+ uint64_t as_integer; // 100-nanos since 1601-Jan-01
+ } caster;
+ caster.as_file_time = ft;
+
+ uint64_t sec = caster.as_integer / 10000000UL;
+ uint32_t sub_sec = (caster.as_integer % 10000000UL) // 100-nanoseconds since the last second
+#if !defined(BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG)
+ / 10; // microseconds since the last second
+#else
+ * 100; // nanoseconds since the last second
+#endif
+
+ // split sec into usable chunks: days, hours, minutes, & seconds
+ const uint32_t sec_per_day = 86400; // seconds per day
+ uint32_t days = static_cast< uint32_t >(sec / sec_per_day);
+ uint32_t tmp = static_cast< uint32_t >(sec % sec_per_day);
+ uint32_t hours = tmp / 3600; // sec_per_hour
+ tmp %= 3600;
+ uint32_t minutes = tmp / 60; // sec_per_min
+ tmp %= 60;
+ uint32_t seconds = tmp; // seconds
+
+ date_duration_type dd(days);
+ date_type d = date_type(1601, Jan, 01) + dd;
+ return TimeT(d, time_duration_type(hours, minutes, seconds, sub_sec));
+}
+
+}} // boost::date_time
+
+#endif // BOOST_HAS_FTIME
+
+#endif // DATE_TIME_FILETIME_FUNCTIONS_HPP__
diff --git a/3rdParty/Boost/boost/date_time/format_date_parser.hpp b/3rdParty/Boost/boost/date_time/format_date_parser.hpp
new file mode 100644
index 0000000..21e4a49
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/format_date_parser.hpp
@@ -0,0 +1,743 @@
+
+#ifndef DATE_TIME_FORMAT_DATE_PARSER_HPP__
+#define DATE_TIME_FORMAT_DATE_PARSER_HPP__
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+#include "boost/lexical_cast.hpp"
+#include "boost/date_time/string_parse_tree.hpp"
+#include "boost/date_time/strings_from_facet.hpp"
+#include "boost/date_time/special_values_parser.hpp"
+#include <string>
+#include <vector>
+#include <sstream>
+#include <iterator>
+#ifndef BOOST_NO_STDC_NAMESPACE
+# include <cctype>
+#else
+# include <ctype.h>
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std {
+ using ::isspace;
+ using ::isdigit;
+}
+#endif
+namespace boost { namespace date_time {
+
+//! Helper function for parsing fixed length strings into integers
+/*! Will consume 'length' number of characters from stream. Consumed
+ * character are transfered to parse_match_result struct.
+ * Returns '-1' if no number can be parsed or incorrect number of
+ * digits in stream. */
+template<typename int_type, typename charT>
+inline
+int_type
+fixed_string_to_int(std::istreambuf_iterator<charT>& itr,
+ std::istreambuf_iterator<charT>& stream_end,
+ parse_match_result<charT>& mr,
+ unsigned int length,
+ const charT& fill_char)
+{
+ //typedef std::basic_string<charT> string_type;
+ unsigned int j = 0;
+ //string_type s;
+ while (j < length && itr != stream_end &&
+ (std::isdigit(*itr) || *itr == fill_char)) {
+ if(*itr == fill_char) {
+ /* Since a fill_char can be anything, we convert it to a zero.
+ * lexical_cast will behave predictably when zero is used as fill. */
+ mr.cache += ('0');
+ }
+ else {
+ mr.cache += (*itr);
+ }
+ itr++;
+ j++;
+ }
+ int_type i = -1;
+ // mr.cache will hold leading zeros. size() tells us when input is too short.
+ if(mr.cache.size() < length) {
+ return i;
+ }
+ try {
+ i = boost::lexical_cast<int_type>(mr.cache);
+ }catch(bad_lexical_cast&){
+ // we want to return -1 if the cast fails so nothing to do here
+ }
+ return i;
+}
+
+//! Helper function for parsing fixed length strings into integers
+/*! Will consume 'length' number of characters from stream. Consumed
+ * character are transfered to parse_match_result struct.
+ * Returns '-1' if no number can be parsed or incorrect number of
+ * digits in stream. */
+template<typename int_type, typename charT>
+inline
+int_type
+fixed_string_to_int(std::istreambuf_iterator<charT>& itr,
+ std::istreambuf_iterator<charT>& stream_end,
+ parse_match_result<charT>& mr,
+ unsigned int length)
+{
+ return fixed_string_to_int<int_type, charT>(itr, stream_end, mr, length, '0');
+}
+
+//! Helper function for parsing varied length strings into integers
+/*! Will consume 'max_length' characters from stream only if those
+ * characters are digits. Returns '-1' if no number can be parsed.
+ * Will not parse a number preceeded by a '+' or '-'. */
+template<typename int_type, typename charT>
+inline
+int_type
+var_string_to_int(std::istreambuf_iterator<charT>& itr,
+ std::istreambuf_iterator<charT>& /* stream_end */,
+ unsigned int max_length)
+{
+ typedef std::basic_string<charT> string_type;
+ unsigned int j = 0;
+ string_type s;
+ while ((j < max_length) && std::isdigit(*itr)) {
+ s += (*itr);
+ itr++;
+ j++;
+ }
+ int_type i = -1;
+ if(s.length() != 0) {
+ i = boost::lexical_cast<int_type>(s);
+ }
+ return i;
+}
+
+
+//! Class with generic date parsing using a format string
+/*! The following is the set of recognized format specifiers
+ - %a - Short weekday name
+ - %A - Long weekday name
+ - %b - Abbreviated month name
+ - %B - Full month name
+ - %d - Day of the month as decimal 01 to 31
+ - %j - Day of year as decimal from 001 to 366
+ - %m - Month name as a decimal 01 to 12
+ - %U - Week number 00 to 53 with first Sunday as the first day of week 1?
+ - %w - Weekday as decimal number 0 to 6 where Sunday == 0
+ - %W - Week number 00 to 53 where Monday is first day of week 1
+ - %x - facet default date representation
+ - %y - Year without the century - eg: 04 for 2004
+ - %Y - Year with century
+
+ The weekday specifiers (%a and %A) do not add to the date construction,
+ but they provide a way to skip over the weekday names for formats that
+ provide them.
+
+ todo -- Another interesting feature that this approach could provide is
+ an option to fill in any missing fields with the current values
+ from the clock. So if you have %m-%d the parser would detect
+ the missing year value and fill it in using the clock.
+
+ todo -- What to do with the %x. %x in the classic facet is just bad...
+
+ */
+template<class date_type, typename charT>
+class format_date_parser
+{
+ public:
+ typedef std::basic_string<charT> string_type;
+ typedef std::basic_istringstream<charT> stringstream_type;
+ typedef std::istreambuf_iterator<charT> stream_itr_type;
+ typedef typename string_type::const_iterator const_itr;
+ typedef typename date_type::year_type year_type;
+ typedef typename date_type::month_type month_type;
+ typedef typename date_type::day_type day_type;
+ typedef typename date_type::duration_type duration_type;
+ typedef typename date_type::day_of_week_type day_of_week_type;
+ typedef typename date_type::day_of_year_type day_of_year_type;
+ typedef string_parse_tree<charT> parse_tree_type;
+ typedef typename parse_tree_type::parse_match_result_type match_results;
+ typedef std::vector<std::basic_string<charT> > input_collection_type;
+
+ // TODO sv_parser uses its default constructor - write the others
+
+ format_date_parser(const string_type& format_str,
+ const input_collection_type& month_short_names,
+ const input_collection_type& month_long_names,
+ const input_collection_type& weekday_short_names,
+ const input_collection_type& weekday_long_names) :
+ m_format(format_str),
+ m_month_short_names(month_short_names, 1),
+ m_month_long_names(month_long_names, 1),
+ m_weekday_short_names(weekday_short_names),
+ m_weekday_long_names(weekday_long_names)
+ {}
+
+ format_date_parser(const string_type& format_str,
+ const std::locale& locale) :
+ m_format(format_str),
+ m_month_short_names(gather_month_strings<charT>(locale), 1),
+ m_month_long_names(gather_month_strings<charT>(locale, false), 1),
+ m_weekday_short_names(gather_weekday_strings<charT>(locale)),
+ m_weekday_long_names(gather_weekday_strings<charT>(locale, false))
+ {}
+
+ format_date_parser(const format_date_parser<date_type,charT>& fdp)
+ {
+ this->m_format = fdp.m_format;
+ this->m_month_short_names = fdp.m_month_short_names;
+ this->m_month_long_names = fdp.m_month_long_names;
+ this->m_weekday_short_names = fdp.m_weekday_short_names;
+ this->m_weekday_long_names = fdp.m_weekday_long_names;
+ }
+
+ string_type format() const
+ {
+ return m_format;
+ }
+
+ void format(string_type format_str)
+ {
+ m_format = format_str;
+ }
+
+ void short_month_names(const input_collection_type& month_names)
+ {
+ m_month_short_names = parse_tree_type(month_names, 1);
+ }
+ void long_month_names(const input_collection_type& month_names)
+ {
+ m_month_long_names = parse_tree_type(month_names, 1);
+ }
+ void short_weekday_names(const input_collection_type& weekday_names)
+ {
+ m_weekday_short_names = parse_tree_type(weekday_names);
+ }
+ void long_weekday_names(const input_collection_type& weekday_names)
+ {
+ m_weekday_long_names = parse_tree_type(weekday_names);
+ }
+
+ date_type
+ parse_date(const string_type& value,
+ const string_type& format_str,
+ const special_values_parser<date_type,charT>& sv_parser) const
+ {
+ stringstream_type ss(value);
+ stream_itr_type sitr(ss);
+ stream_itr_type stream_end;
+ return parse_date(sitr, stream_end, format_str, sv_parser);
+ }
+
+ date_type
+ parse_date(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ const special_values_parser<date_type,charT>& sv_parser) const
+ {
+ return parse_date(sitr, stream_end, m_format, sv_parser);
+ }
+
+ /*! Of all the objects that the format_date_parser can parse, only a
+ * date can be a special value. Therefore, only parse_date checks
+ * for special_values. */
+ date_type
+ parse_date(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str,
+ const special_values_parser<date_type,charT>& sv_parser) const
+ {
+ bool use_current_char = false;
+
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+ charT current_char = *sitr;
+
+ short year(0), month(0), day(0), day_of_year(0);// wkday(0);
+ /* Initialized the following to their minimum values. These intermediate
+ * objects are used so we get specific exceptions when part of the input
+ * is unparsable.
+ * Ex: "205-Jan-15" will throw a bad_year, "2005-Jsn-15"- bad_month, etc.*/
+ year_type t_year(1400);
+ month_type t_month(1);
+ day_type t_day(1);
+ day_of_week_type wkday(0);
+
+
+ const_itr itr(format_str.begin());
+ while (itr != format_str.end() && (sitr != stream_end)) {
+ if (*itr == '%') {
+ itr++;
+ if (*itr != '%') {
+ switch(*itr) {
+ case 'a':
+ {
+ //this value is just throw away. It could be used for
+ //error checking potentially, but it isn't helpful in
+ //actually constructing the date - we just need to get it
+ //out of the stream
+ match_results mr = m_weekday_short_names.match(sitr, stream_end);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ // check special_values
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ wkday = mr.current_match;
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'A':
+ {
+ //this value is just throw away. It could be used for
+ //error checking potentially, but it isn't helpful in
+ //actually constructing the date - we just need to get it
+ //out of the stream
+ match_results mr = m_weekday_long_names.match(sitr, stream_end);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ // check special_values
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ wkday = mr.current_match;
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'b':
+ {
+ match_results mr = m_month_short_names.match(sitr, stream_end);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ // check special_values
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ t_month = month_type(mr.current_match);
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'B':
+ {
+ match_results mr = m_month_long_names.match(sitr, stream_end);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ // check special_values
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ t_month = month_type(mr.current_match);
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'd':
+ {
+ match_results mr;
+ day = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 2);
+ if(day == -1) {
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ t_day = day_type(day);
+ break;
+ }
+ case 'e':
+ {
+ match_results mr;
+ day = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 2, ' ');
+ if(day == -1) {
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ t_day = day_type(day);
+ break;
+ }
+ case 'j':
+ {
+ match_results mr;
+ day_of_year = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 3);
+ if(day_of_year == -1) {
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ // these next two lines are so we get an exception with bad input
+ day_of_year_type t_day_of_year(1);
+ t_day_of_year = day_of_year_type(day_of_year);
+ break;
+ }
+ case 'm':
+ {
+ match_results mr;
+ month = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 2);
+ if(month == -1) {
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ t_month = month_type(month);
+ break;
+ }
+ case 'Y':
+ {
+ match_results mr;
+ year = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 4);
+ if(year == -1) {
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ t_year = year_type(year);
+ break;
+ }
+ case 'y':
+ {
+ match_results mr;
+ year = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 2);
+ if(year == -1) {
+ if(sv_parser.match(sitr, stream_end, mr)) {
+ return date_type(static_cast<special_values>(mr.current_match));
+ }
+ }
+ year += 2000; //make 2 digit years in this century
+ t_year = year_type(year);
+ break;
+ }
+ default:
+ {} //ignore those we don't understand
+
+ }//switch
+
+ }
+ else { // itr == '%', second consecutive
+ sitr++;
+ }
+
+ itr++; //advance past format specifier
+ }
+ else { //skip past chars in format and in buffer
+ itr++;
+ if (use_current_char) {
+ use_current_char = false;
+ current_char = *sitr;
+ }
+ else {
+ sitr++;
+ }
+ }
+ }
+
+ if (day_of_year > 0) {
+ date_type d(static_cast<unsigned short>(year-1),12,31); //end of prior year
+ return d + duration_type(day_of_year);
+ }
+
+ return date_type(t_year, t_month, t_day); // exceptions were thrown earlier
+ // if input was no good
+ }
+
+ //! Throws bad_month if unable to parse
+ month_type
+ parse_month(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str) const
+ {
+ match_results mr;
+ return parse_month(sitr, stream_end, format_str, mr);
+ }
+
+ //! Throws bad_month if unable to parse
+ month_type
+ parse_month(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str,
+ match_results& mr) const
+ {
+ bool use_current_char = false;
+
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+ charT current_char = *sitr;
+
+ short month(0);
+
+ const_itr itr(format_str.begin());
+ while (itr != format_str.end() && (sitr != stream_end)) {
+ if (*itr == '%') {
+ itr++;
+ if (*itr != '%') {
+ switch(*itr) {
+ case 'b':
+ {
+ mr = m_month_short_names.match(sitr, stream_end);
+ month = mr.current_match;
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'B':
+ {
+ mr = m_month_long_names.match(sitr, stream_end);
+ month = mr.current_match;
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'm':
+ {
+ month = var_string_to_int<short, charT>(sitr, stream_end, 2);
+ // var_string_to_int returns -1 if parse failed. That will
+ // cause a bad_month exception to be thrown so we do nothing here
+ break;
+ }
+ default:
+ {} //ignore those we don't understand
+
+ }//switch
+
+ }
+ else { // itr == '%', second consecutive
+ sitr++;
+ }
+
+ itr++; //advance past format specifier
+ }
+ else { //skip past chars in format and in buffer
+ itr++;
+ if (use_current_char) {
+ use_current_char = false;
+ current_char = *sitr;
+ }
+ else {
+ sitr++;
+ }
+ }
+ }
+
+ return month_type(month); // throws bad_month exception when values are zero
+ }
+
+ //! Expects 1 or 2 digits 1-31. Throws bad_day_of_month if unable to parse
+ day_type
+ parse_var_day_of_month(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ return day_type(var_string_to_int<short, charT>(sitr, stream_end, 2));
+ }
+ //! Expects 2 digits 01-31. Throws bad_day_of_month if unable to parse
+ day_type
+ parse_day_of_month(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ //return day_type(var_string_to_int<short, charT>(sitr, stream_end, 2));
+ match_results mr;
+ return day_type(fixed_string_to_int<short, charT>(sitr, stream_end, mr, 2));
+ }
+
+ day_of_week_type
+ parse_weekday(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str) const
+ {
+ match_results mr;
+ return parse_weekday(sitr, stream_end, format_str, mr);
+ }
+ day_of_week_type
+ parse_weekday(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str,
+ match_results& mr) const
+ {
+ bool use_current_char = false;
+
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+ charT current_char = *sitr;
+
+ short wkday(0);
+
+ const_itr itr(format_str.begin());
+ while (itr != format_str.end() && (sitr != stream_end)) {
+ if (*itr == '%') {
+ itr++;
+ if (*itr != '%') {
+ switch(*itr) {
+ case 'a':
+ {
+ //this value is just throw away. It could be used for
+ //error checking potentially, but it isn't helpful in
+ //actually constructing the date - we just need to get it
+ //out of the stream
+ mr = m_weekday_short_names.match(sitr, stream_end);
+ wkday = mr.current_match;
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'A':
+ {
+ //this value is just throw away. It could be used for
+ //error checking potentially, but it isn't helpful in
+ //actually constructing the date - we just need to get it
+ //out of the stream
+ mr = m_weekday_long_names.match(sitr, stream_end);
+ wkday = mr.current_match;
+ if (mr.has_remaining()) {
+ current_char = mr.last_char();
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'w':
+ {
+ // weekday as number 0-6, Sunday == 0
+ wkday = var_string_to_int<short, charT>(sitr, stream_end, 2);
+ break;
+ }
+ default:
+ {} //ignore those we don't understand
+
+ }//switch
+
+ }
+ else { // itr == '%', second consecutive
+ sitr++;
+ }
+
+ itr++; //advance past format specifier
+ }
+ else { //skip past chars in format and in buffer
+ itr++;
+ if (use_current_char) {
+ use_current_char = false;
+ current_char = *sitr;
+ }
+ else {
+ sitr++;
+ }
+ }
+ }
+
+ return day_of_week_type(wkday); // throws bad_day_of_month exception
+ // when values are zero
+ }
+
+ //! throws bad_year if unable to parse
+ year_type
+ parse_year(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str) const
+ {
+ match_results mr;
+ return parse_year(sitr, stream_end, format_str, mr);
+ }
+
+ //! throws bad_year if unable to parse
+ year_type
+ parse_year(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ string_type format_str,
+ match_results& mr) const
+ {
+ bool use_current_char = false;
+
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+ charT current_char = *sitr;
+
+ unsigned short year(0);
+
+ const_itr itr(format_str.begin());
+ while (itr != format_str.end() && (sitr != stream_end)) {
+ if (*itr == '%') {
+ itr++;
+ if (*itr != '%') {
+ //match_results mr;
+ switch(*itr) {
+ case 'Y':
+ {
+ // year from 4 digit string
+ year = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 4);
+ break;
+ }
+ case 'y':
+ {
+ // year from 2 digit string (no century)
+ year = fixed_string_to_int<short, charT>(sitr, stream_end, mr, 2);
+ year += 2000; //make 2 digit years in this century
+ break;
+ }
+ default:
+ {} //ignore those we don't understand
+
+ }//switch
+
+ }
+ else { // itr == '%', second consecutive
+ sitr++;
+ }
+
+ itr++; //advance past format specifier
+ }
+ else { //skip past chars in format and in buffer
+ itr++;
+ if (use_current_char) {
+ use_current_char = false;
+ current_char = *sitr;
+ }
+ else {
+ sitr++;
+ }
+ }
+ }
+
+ return year_type(year); // throws bad_year exception when values are zero
+ }
+
+
+ private:
+ string_type m_format;
+ parse_tree_type m_month_short_names;
+ parse_tree_type m_month_long_names;
+ parse_tree_type m_weekday_short_names;
+ parse_tree_type m_weekday_long_names;
+
+};
+
+} } //namespace
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/conversion.hpp b/3rdParty/Boost/boost/date_time/gregorian/conversion.hpp
new file mode 100644
index 0000000..4428c05
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/conversion.hpp
@@ -0,0 +1,76 @@
+#ifndef _GREGORIAN__CONVERSION_HPP___
+#define _GREGORIAN__CONVERSION_HPP___
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <string>
+#include <stdexcept>
+#include <boost/throw_exception.hpp>
+#include <boost/date_time/gregorian/gregorian_types.hpp>
+#include <boost/date_time/c_time.hpp>
+#if defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+# if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
+# include <boost/date_time/gregorian/formatters_limited.hpp>
+# else
+# include <boost/date_time/gregorian/formatters.hpp>
+# endif // BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS
+#else
+# include <sstream>
+# include <boost/date_time/gregorian/gregorian_io.hpp>
+#endif // USE_DATE_TIME_PRE_1_33_FACET_IO
+
+namespace boost {
+
+namespace gregorian {
+
+
+ //! Converts a date to a tm struct. Throws out_of_range exception if date is a special value
+ inline
+ std::tm to_tm(const date& d)
+ {
+ if(d.is_pos_infinity() || d.is_neg_infinity() || d.is_not_a_date()){
+ std::string s = "tm unable to handle date value of ";
+#if defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+ s += to_simple_string(d);
+#else
+ std::ostringstream ss;
+ ss << d;
+ s += ss.str();
+#endif // USE_DATE_TIME_PRE_1_33_FACET_IO
+ boost::throw_exception(std::out_of_range(s));
+ }
+ std::tm datetm;
+ boost::gregorian::date::ymd_type ymd = d.year_month_day();
+ datetm.tm_year = ymd.year-1900;
+ datetm.tm_mon = ymd.month-1;
+ datetm.tm_mday = ymd.day;
+ datetm.tm_wday = d.day_of_week();
+ datetm.tm_yday = d.day_of_year()-1;
+ datetm.tm_hour = datetm.tm_min = datetm.tm_sec = 0;
+ datetm.tm_isdst = -1; // negative because not enough info to set tm_isdst
+ return datetm;
+ }
+
+ //! Converts a tm structure into a date dropping the any time values.
+ inline
+ date date_from_tm(const std::tm& datetm)
+ {
+ return date(static_cast<unsigned short>(datetm.tm_year+1900),
+ static_cast<unsigned short>(datetm.tm_mon+1),
+ static_cast<unsigned short>(datetm.tm_mday));
+ }
+
+
+} } //namespace boost::gregorian
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/formatters.hpp b/3rdParty/Boost/boost/date_time/gregorian/formatters.hpp
new file mode 100644
index 0000000..786e79f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/formatters.hpp
@@ -0,0 +1,162 @@
+#ifndef GREGORIAN_FORMATTERS_HPP___
+#define GREGORIAN_FORMATTERS_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/gregorian/gregorian_types.hpp"
+#if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
+#include "boost/date_time/date_formatting_limited.hpp"
+#else
+#include "boost/date_time/date_formatting.hpp"
+#endif
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/date_format_simple.hpp"
+
+/* NOTE: "to_*_string" code for older compilers, ones that define
+ * BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS, is located in
+ * formatters_limited.hpp
+ */
+
+namespace boost {
+namespace gregorian {
+
+ // wrapper function for to_simple_(w)string(date)
+ template<class charT>
+ inline
+ std::basic_string<charT> to_simple_string_type(const date& d) {
+ return date_time::date_formatter<date,date_time::simple_format<charT>,charT>::date_to_string(d);
+ }
+ //! To YYYY-mmm-DD string where mmm 3 char month name. Example: 2002-Jan-01
+ /*!\ingroup date_format
+ */
+ inline std::string to_simple_string(const date& d) {
+ return to_simple_string_type<char>(d);
+ }
+
+
+ // wrapper function for to_simple_(w)string(date_period)
+ template<class charT>
+ inline std::basic_string<charT> to_simple_string_type(const date_period& d) {
+ typedef std::basic_string<charT> string_type;
+ charT b = '[', m = '/', e=']';
+
+ string_type d1(date_time::date_formatter<date,date_time::simple_format<charT>,charT>::date_to_string(d.begin()));
+ string_type d2(date_time::date_formatter<date,date_time::simple_format<charT>,charT>::date_to_string(d.last()));
+ return string_type(b + d1 + m + d2 + e);
+ }
+ //! Convert date period to simple string. Example: [2002-Jan-01/2002-Jan-02]
+ /*!\ingroup date_format
+ */
+ inline std::string to_simple_string(const date_period& d) {
+ return to_simple_string_type<char>(d);
+ }
+
+ // wrapper function for to_iso_(w)string(date_period)
+ template<class charT>
+ inline std::basic_string<charT> to_iso_string_type(const date_period& d) {
+ charT sep = '/';
+ std::basic_string<charT> s(date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d.begin()));
+ return s + sep + date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d.last());
+ }
+ //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
+ /*!\ingroup date_format
+ */
+ inline std::string to_iso_string(const date_period& d) {
+ return to_iso_string_type<char>(d);
+ }
+
+
+ // wrapper function for to_iso_extended_(w)string(date)
+ template<class charT>
+ inline std::basic_string<charT> to_iso_extended_string_type(const date& d) {
+ return date_time::date_formatter<date,date_time::iso_extended_format<charT>,charT>::date_to_string(d);
+ }
+ //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
+ /*!\ingroup date_format
+ */
+ inline std::string to_iso_extended_string(const date& d) {
+ return to_iso_extended_string_type<char>(d);
+ }
+
+ // wrapper function for to_iso_(w)string(date)
+ template<class charT>
+ inline std::basic_string<charT> to_iso_string_type(const date& d) {
+ return date_time::date_formatter<date,date_time::iso_format<charT>,charT>::date_to_string(d);
+ }
+ //! Convert to iso standard string YYYYMMDD. Example: 20021231
+ /*!\ingroup date_format
+ */
+ inline std::string to_iso_string(const date& d) {
+ return to_iso_string_type<char>(d);
+ }
+
+
+
+
+ // wrapper function for to_sql_(w)string(date)
+ template<class charT>
+ inline std::basic_string<charT> to_sql_string_type(const date& d)
+ {
+ date::ymd_type ymd = d.year_month_day();
+ std::basic_ostringstream<charT> ss;
+ ss << ymd.year << "-"
+ << std::setw(2) << std::setfill(ss.widen('0'))
+ << ymd.month.as_number() //solves problem with gcc 3.1 hanging
+ << "-"
+ << std::setw(2) << std::setfill(ss.widen('0'))
+ << ymd.day;
+ return ss.str();
+ }
+ inline std::string to_sql_string(const date& d) {
+ return to_sql_string_type<char>(d);
+ }
+
+
+#if !defined(BOOST_NO_STD_WSTRING)
+ //! Convert date period to simple string. Example: [2002-Jan-01/2002-Jan-02]
+ /*!\ingroup date_format
+ */
+ inline std::wstring to_simple_wstring(const date_period& d) {
+ return to_simple_string_type<wchar_t>(d);
+ }
+ //! To YYYY-mmm-DD string where mmm 3 char month name. Example: 2002-Jan-01
+ /*!\ingroup date_format
+ */
+ inline std::wstring to_simple_wstring(const date& d) {
+ return to_simple_string_type<wchar_t>(d);
+ }
+ //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
+ /*!\ingroup date_format
+ */
+ inline std::wstring to_iso_wstring(const date_period& d) {
+ return to_iso_string_type<wchar_t>(d);
+ }
+ //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
+ /*!\ingroup date_format
+ */
+ inline std::wstring to_iso_extended_wstring(const date& d) {
+ return to_iso_extended_string_type<wchar_t>(d);
+ }
+ //! Convert to iso standard string YYYYMMDD. Example: 20021231
+ /*!\ingroup date_format
+ */
+ inline std::wstring to_iso_wstring(const date& d) {
+ return to_iso_string_type<wchar_t>(d);
+ }
+ inline std::wstring to_sql_wstring(const date& d) {
+ return to_sql_string_type<wchar_t>(d);
+ }
+#endif // BOOST_NO_STD_WSTRING
+
+} } //namespace gregorian
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/formatters_limited.hpp b/3rdParty/Boost/boost/date_time/gregorian/formatters_limited.hpp
new file mode 100644
index 0000000..4531ebe
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/formatters_limited.hpp
@@ -0,0 +1,81 @@
+#ifndef GREGORIAN_FORMATTERS_LIMITED_HPP___
+#define GREGORIAN_FORMATTERS_LIMITED_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/gregorian_types.hpp"
+#include "boost/date_time/date_formatting_limited.hpp"
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/date_format_simple.hpp"
+#include "boost/date_time/compiler_config.hpp"
+
+namespace boost {
+namespace gregorian {
+
+ //! To YYYY-mmm-DD string where mmm 3 char month name. Example: 2002-Jan-01
+ /*!\ingroup date_format
+ */
+ inline std::string to_simple_string(const date& d) {
+ return date_time::date_formatter<date,date_time::simple_format<char> >::date_to_string(d);
+ }
+
+ //! Convert date period to simple string. Example: [2002-Jan-01/2002-Jan-02]
+ /*!\ingroup date_format
+ */
+ inline std::string to_simple_string(const date_period& d) {
+ std::string s("[");
+ std::string d1(date_time::date_formatter<date,date_time::simple_format<char> >::date_to_string(d.begin()));
+ std::string d2(date_time::date_formatter<date,date_time::simple_format<char> >::date_to_string(d.last()));
+ return std::string("[" + d1 + "/" + d2 + "]");
+ }
+
+ //! Date period to iso standard format CCYYMMDD/CCYYMMDD. Example: 20021225/20021231
+ /*!\ingroup date_format
+ */
+ inline std::string to_iso_string(const date_period& d) {
+ std::string s(date_time::date_formatter<date,date_time::iso_format<char> >::date_to_string(d.begin()));
+ return s + "/" + date_time::date_formatter<date,date_time::iso_format<char> >::date_to_string(d.last());
+ }
+
+
+ //! Convert to iso extended format string CCYY-MM-DD. Example 2002-12-31
+ /*!\ingroup date_format
+ */
+ inline std::string to_iso_extended_string(const date& d) {
+ return date_time::date_formatter<date,date_time::iso_extended_format<char> >::date_to_string(d);
+ }
+
+ //! Convert to iso standard string YYYYMMDD. Example: 20021231
+ /*!\ingroup date_format
+ */
+ inline std::string to_iso_string(const date& d) {
+ return date_time::date_formatter<date,date_time::iso_format<char> >::date_to_string(d);
+ }
+
+
+
+ inline std::string to_sql_string(const date& d)
+ {
+ date::ymd_type ymd = d.year_month_day();
+ std::ostringstream ss;
+ ss << ymd.year << "-"
+ << std::setw(2) << std::setfill('0')
+ << ymd.month.as_number() //solves problem with gcc 3.1 hanging
+ << "-"
+ << std::setw(2) << std::setfill('0')
+ << ymd.day;
+ return ss.str();
+ }
+
+
+} } //namespace gregorian
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_calendar.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_calendar.hpp
new file mode 100644
index 0000000..b8b1f5a
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_calendar.hpp
@@ -0,0 +1,47 @@
+#ifndef GREGORIAN_GREGORIAN_CALENDAR_HPP__
+#define GREGORIAN_GREGORIAN_CALENDAR_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/greg_weekday.hpp"
+#include "boost/date_time/gregorian/greg_day_of_year.hpp"
+#include "boost/date_time/gregorian_calendar.hpp"
+#include "boost/date_time/gregorian/greg_ymd.hpp"
+#include "boost/date_time/int_adapter.hpp"
+
+namespace boost {
+namespace gregorian {
+
+ //!An internal date representation that includes infinities, not a date
+ typedef date_time::int_adapter<unsigned long> fancy_date_rep;
+
+ //! Gregorian calendar for this implementation, hard work in the base
+ class gregorian_calendar :
+ public date_time::gregorian_calendar_base<greg_year_month_day, fancy_date_rep::int_type> {
+ public:
+ //! Type to hold a weekday (eg: Sunday, Monday,...)
+ typedef greg_weekday day_of_week_type;
+ //! Counter type from 1 to 366 for gregorian dates.
+ typedef greg_day_of_year_rep day_of_year_type;
+ //! Internal date representation that handles infinity, not a date
+ typedef fancy_date_rep date_rep_type;
+ //! Date rep implements the traits stuff as well
+ typedef fancy_date_rep date_traits_type;
+
+
+ private:
+ };
+
+} } //namespace gregorian
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_date.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_date.hpp
new file mode 100644
index 0000000..56d576f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_date.hpp
@@ -0,0 +1,136 @@
+#ifndef GREG_DATE_HPP___
+#define GREG_DATE_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <boost/throw_exception.hpp>
+#include <boost/date_time/date.hpp>
+#include <boost/date_time/special_defs.hpp>
+#include <boost/date_time/gregorian/greg_calendar.hpp>
+#include <boost/date_time/gregorian/greg_duration.hpp>
+
+namespace boost {
+namespace gregorian {
+
+ //bring special enum values into the namespace
+ using date_time::special_values;
+ using date_time::not_special;
+ using date_time::neg_infin;
+ using date_time::pos_infin;
+ using date_time::not_a_date_time;
+ using date_time::max_date_time;
+ using date_time::min_date_time;
+
+ //! A date type based on gregorian_calendar
+ /*! This class is the primary interface for programming with
+ greogorian dates. The is a lightweight type that can be
+ freely passed by value. All comparison operators are
+ supported.
+ \ingroup date_basics
+ */
+ class date : public date_time::date<date, gregorian_calendar, date_duration>
+ {
+ public:
+ typedef gregorian_calendar::year_type year_type;
+ typedef gregorian_calendar::month_type month_type;
+ typedef gregorian_calendar::day_type day_type;
+ typedef gregorian_calendar::day_of_year_type day_of_year_type;
+ typedef gregorian_calendar::ymd_type ymd_type;
+ typedef gregorian_calendar::date_rep_type date_rep_type;
+ typedef gregorian_calendar::date_int_type date_int_type;
+ typedef date_duration duration_type;
+#if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR)
+ //! Default constructor constructs with not_a_date_time
+ date():
+ date_time::date<date, gregorian_calendar, date_duration>(date_rep_type::from_special(not_a_date_time))
+ {}
+#endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR
+ //! Main constructor with year, month, day
+ date(year_type y, month_type m, day_type d)
+ : date_time::date<date, gregorian_calendar, date_duration>(y, m, d)
+ {
+ if (gregorian_calendar::end_of_month_day(y, m) < d) {
+ boost::throw_exception(bad_day_of_month(std::string("Day of month is not valid for year")));
+ }
+ }
+ //! Constructor from a ymd_type structure
+ explicit date(const ymd_type& ymd)
+ : date_time::date<date, gregorian_calendar, date_duration>(ymd)
+ {}
+ //! Needed copy constructor
+ explicit date(const date_int_type& rhs):
+ date_time::date<date,gregorian_calendar, date_duration>(rhs)
+ {}
+ //! Needed copy constructor
+ explicit date(date_rep_type rhs):
+ date_time::date<date,gregorian_calendar, date_duration>(rhs)
+ {}
+ //! Constructor for infinities, not a date, max and min date
+ explicit date(special_values sv):
+ date_time::date<date, gregorian_calendar, date_duration>(date_rep_type::from_special(sv))
+ {
+ if (sv == min_date_time)
+ {
+ *this = date(1400, 1, 1);
+ }
+ if (sv == max_date_time)
+ {
+ *this = date(9999, 12, 31);
+ }
+
+ }
+ //!Return the Julian Day number for the date.
+ date_int_type julian_day() const
+ {
+ ymd_type ymd = year_month_day();
+ return gregorian_calendar::julian_day_number(ymd);
+ }
+ //!Return the day of year 1..365 or 1..366 (for leap year)
+ day_of_year_type day_of_year() const
+ {
+ date start_of_year(year(), 1, 1);
+ unsigned short doy = static_cast<unsigned short>((*this-start_of_year).days() + 1);
+ return day_of_year_type(doy);
+ }
+ //!Return the Modified Julian Day number for the date.
+ long modjulian_day() const
+ {
+ ymd_type ymd = year_month_day();
+ return gregorian_calendar::modjulian_day_number(ymd);
+ }
+ //!Return the iso 8601 week number 1..53
+ int week_number() const
+ {
+ ymd_type ymd = year_month_day();
+ return gregorian_calendar::week_number(ymd);
+ }
+ //! Return the day number from the calendar
+ date_int_type day_number() const
+ {
+ return days_;
+ }
+ //! Return the last day of the current month
+ date end_of_month() const
+ {
+ ymd_type ymd = year_month_day();
+ short eom_day = gregorian_calendar::end_of_month_day(ymd.year, ymd.month);
+ return date(ymd.year, ymd.month, eom_day);
+ }
+
+ private:
+
+ };
+
+
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_day.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_day.hpp
new file mode 100644
index 0000000..92ea6ab
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_day.hpp
@@ -0,0 +1,57 @@
+#ifndef GREG_DAY_HPP___
+#define GREG_DAY_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/constrained_value.hpp"
+#include <stdexcept>
+#include <string>
+
+namespace boost {
+namespace gregorian {
+
+ //! Exception type for gregorian day of month (1..31)
+ struct bad_day_of_month : public std::out_of_range
+ {
+ bad_day_of_month() :
+ std::out_of_range(std::string("Day of month value is out of range 1..31"))
+ {}
+ //! Allow other classes to throw with unique string for bad day like Feb 29
+ bad_day_of_month(const std::string& s) :
+ std::out_of_range(s)
+ {}
+ };
+ //! Policy class that declares error handling and day of month ranges
+ typedef CV::simple_exception_policy<unsigned short, 1, 31, bad_day_of_month> greg_day_policies;
+
+ //! Generated represetation for gregorian day of month
+ typedef CV::constrained_value<greg_day_policies> greg_day_rep;
+
+ //! Represent a day of the month (range 1 - 31)
+ /*! This small class allows for simple conversion an integer value into
+ a day of the month for a standard gregorian calendar. The type
+ is automatically range checked so values outside of the range 1-31
+ will cause a bad_day_of_month exception
+ */
+ class greg_day : public greg_day_rep {
+ public:
+ greg_day(unsigned short day_of_month) : greg_day_rep(day_of_month) {}
+ unsigned short as_number() const {return value_;}
+ operator unsigned short() const {return value_;}
+ private:
+
+ };
+
+
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_day_of_year.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_day_of_year.hpp
new file mode 100644
index 0000000..36b22c2
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_day_of_year.hpp
@@ -0,0 +1,38 @@
+#ifndef GREG_DAY_OF_YEAR_HPP___
+#define GREG_DAY_OF_YEAR_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/constrained_value.hpp"
+#include <stdexcept>
+#include <string>
+
+namespace boost {
+namespace gregorian {
+
+ //! Exception type for day of year (1..366)
+ struct bad_day_of_year : public std::out_of_range
+ {
+ bad_day_of_year() :
+ std::out_of_range(std::string("Day of year value is out of range 1..366"))
+ {}
+ };
+
+ //! A day of the year range (1..366)
+ typedef CV::simple_exception_policy<unsigned short,1,366,bad_day_of_year> greg_day_of_year_policies;
+
+ //! Define a range representation type for the day of the year 1..366
+ typedef CV::constrained_value<greg_day_of_year_policies> greg_day_of_year_rep;
+
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_duration.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_duration.hpp
new file mode 100644
index 0000000..fd75542
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_duration.hpp
@@ -0,0 +1,134 @@
+#ifndef GREG_DURATION_HPP___
+#define GREG_DURATION_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <boost/date_time/date_duration.hpp>
+#include <boost/date_time/int_adapter.hpp>
+#include <boost/date_time/special_defs.hpp>
+
+namespace boost {
+namespace gregorian {
+
+ //!An internal date representation that includes infinities, not a date
+ typedef boost::date_time::duration_traits_adapted date_duration_rep;
+
+ //! Durations in days for gregorian system
+ /*! \ingroup date_basics
+ */
+ class date_duration :
+ public boost::date_time::date_duration< date_duration_rep >
+ {
+ typedef boost::date_time::date_duration< date_duration_rep > base_type;
+
+ public:
+ typedef base_type::duration_rep duration_rep;
+
+ //! Construct from a day count
+ explicit date_duration(duration_rep day_count = 0) : base_type(day_count) {}
+
+ //! construct from special_values
+ date_duration(date_time::special_values sv) : base_type(sv) {}
+
+ //! Copy constructor
+ date_duration(const date_duration& other) : base_type(static_cast< base_type const& >(other))
+ {}
+
+ //! Construct from another date_duration
+ date_duration(const base_type& other) : base_type(other)
+ {}
+
+ // Relational operators
+ // NOTE: Because of date_time::date_duration< T > design choice we don't use Boost.Operators here,
+ // because we need the class to be a direct base. Either lose EBO, or define operators by hand.
+ // The latter is more effecient.
+ bool operator== (const date_duration& rhs) const
+ {
+ return base_type::operator== (rhs);
+ }
+ bool operator!= (const date_duration& rhs) const
+ {
+ return !operator== (rhs);
+ }
+ bool operator< (const date_duration& rhs) const
+ {
+ return base_type::operator< (rhs);
+ }
+ bool operator> (const date_duration& rhs) const
+ {
+ return !(base_type::operator< (rhs) || base_type::operator== (rhs));
+ }
+ bool operator<= (const date_duration& rhs) const
+ {
+ return (base_type::operator< (rhs) || base_type::operator== (rhs));
+ }
+ bool operator>= (const date_duration& rhs) const
+ {
+ return !base_type::operator< (rhs);
+ }
+
+ //! Subtract another duration -- result is signed
+ date_duration& operator-= (const date_duration& rhs)
+ {
+ base_type::operator-= (rhs);
+ return *this;
+ }
+ friend date_duration operator- (date_duration rhs, date_duration const& lhs)
+ {
+ rhs -= lhs;
+ return rhs;
+ }
+
+ //! Add a duration -- result is signed
+ date_duration& operator+= (const date_duration& rhs)
+ {
+ base_type::operator+= (rhs);
+ return *this;
+ }
+ friend date_duration operator+ (date_duration rhs, date_duration const& lhs)
+ {
+ rhs += lhs;
+ return rhs;
+ }
+
+ //! unary- Allows for dd = -date_duration(2); -> dd == -2
+ date_duration operator- ()const
+ {
+ return date_duration(get_rep() * (-1));
+ }
+
+ //! Division operations on a duration with an integer.
+ date_duration& operator/= (int divisor)
+ {
+ base_type::operator/= (divisor);
+ return *this;
+ }
+ friend date_duration operator/ (date_duration rhs, int lhs)
+ {
+ rhs /= lhs;
+ return rhs;
+ }
+
+ //! Returns the smallest duration -- used by to calculate 'end'
+ static date_duration unit()
+ {
+ return date_duration(base_type::unit().get_rep());
+ }
+ };
+
+ //! Shorthand for date_duration
+ typedef date_duration days;
+
+} } //namespace gregorian
+
+#if defined(BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES)
+#include <boost/date_time/date_duration_types.hpp>
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_duration_types.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_duration_types.hpp
new file mode 100644
index 0000000..3d1ce62
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_duration_types.hpp
@@ -0,0 +1,43 @@
+#ifndef GREG_DURATION_TYPES_HPP___
+#define GREG_DURATION_TYPES_HPP___
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Subject to Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+#include <boost/date_time/gregorian/greg_date.hpp>
+#include <boost/date_time/int_adapter.hpp>
+#include <boost/date_time/adjust_functors.hpp>
+#include <boost/date_time/date_duration_types.hpp>
+#include <boost/date_time/gregorian/greg_duration.hpp>
+
+namespace boost {
+namespace gregorian {
+
+ //! config struct for additional duration types (ie months_duration<> & years_duration<>)
+ struct greg_durations_config {
+ typedef date date_type;
+ typedef date_time::int_adapter<int> int_rep;
+ typedef date_time::month_functor<date_type> month_adjustor_type;
+ };
+
+ typedef date_time::months_duration<greg_durations_config> months;
+ typedef date_time::years_duration<greg_durations_config> years;
+
+ class weeks_duration : public date_duration {
+ public:
+ weeks_duration(duration_rep w)
+ : date_duration(w * 7) {}
+ weeks_duration(date_time::special_values sv)
+ : date_duration(sv) {}
+ };
+
+ typedef weeks_duration weeks;
+
+}} // namespace boost::gregorian
+
+#endif // GREG_DURATION_TYPES_HPP___
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_facet.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_facet.hpp
new file mode 100644
index 0000000..9c3877e
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_facet.hpp
@@ -0,0 +1,354 @@
+#ifndef GREGORIAN_FACET_HPP___
+#define GREGORIAN_FACET_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-23 06:13:35 -0500 (Sun, 23 Nov 2008) $
+ */
+
+#include "boost/date_time/gregorian/gregorian_types.hpp"
+#include "boost/date_time/date_formatting_locales.hpp" // sets BOOST_DATE_TIME_NO_LOCALE
+#include "boost/date_time/gregorian/parsers.hpp"
+
+//This file is basically commented out if locales are not supported
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+
+#include <string>
+#include <memory>
+#include <locale>
+#include <iostream>
+#include <exception>
+
+namespace boost {
+namespace gregorian {
+
+ //! Configuration of the output facet template
+ struct greg_facet_config
+ {
+ typedef boost::gregorian::greg_month month_type;
+ typedef boost::date_time::special_values special_value_enum;
+ typedef boost::gregorian::months_of_year month_enum;
+ typedef boost::date_time::weekdays weekday_enum;
+ };
+
+#if defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+ //! Create the base facet type for gregorian::date
+ typedef boost::date_time::date_names_put<greg_facet_config> greg_base_facet;
+
+ //! ostream operator for gregorian::date
+ /*! Uses the date facet to determine various output parameters including:
+ * - string values for the month (eg: Jan, Feb, Mar) (default: English)
+ * - string values for special values (eg: not-a-date-time) (default: English)
+ * - selection of long, short strings, or numerical month representation (default: short string)
+ * - month day year order (default yyyy-mmm-dd)
+ */
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const date& d)
+ {
+ typedef boost::date_time::date_names_put<greg_facet_config, charT> facet_def;
+ typedef boost::date_time::ostream_date_formatter<date, facet_def, charT> greg_ostream_formatter;
+ greg_ostream_formatter::date_put(d, os);
+ return os;
+ }
+
+ //! operator<< for gregorian::greg_month typically streaming: Jan, Feb, Mar...
+ /*! Uses the date facet to determine output string as well as selection of long or short strings.
+ * Default if no facet is installed is to output a 2 wide numeric value for the month
+ * eg: 01 == Jan, 02 == Feb, ... 12 == Dec.
+ */
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const greg_month& m)
+ {
+ typedef boost::date_time::date_names_put<greg_facet_config, charT> facet_def;
+ typedef boost::date_time::ostream_month_formatter<facet_def, charT> greg_month_formatter;
+ std::locale locale = os.getloc();
+ if (std::has_facet<facet_def>(locale)) {
+ const facet_def& f = std::use_facet<facet_def>(locale);
+ greg_month_formatter::format_month(m, os, f);
+
+ }
+ else { //default to numeric
+ charT fill_char = '0';
+ os << std::setw(2) << std::setfill(fill_char) << m.as_number();
+ }
+
+ return os;
+ }
+
+ //! operator<< for gregorian::greg_weekday typically streaming: Sun, Mon, Tue, ...
+ /*! Uses the date facet to determine output string as well as selection of long or short string.
+ * Default if no facet is installed is to output a 3 char english string for the
+ * day of the week.
+ */
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const greg_weekday& wd)
+ {
+ typedef boost::date_time::date_names_put<greg_facet_config, charT> facet_def;
+ typedef boost::date_time::ostream_weekday_formatter<greg_weekday, facet_def, charT> greg_weekday_formatter;
+ std::locale locale = os.getloc();
+ if (std::has_facet<facet_def>(locale)) {
+ const facet_def& f = std::use_facet<facet_def>(locale);
+ greg_weekday_formatter::format_weekday(wd.as_enum(), os, f, true);
+ }
+ else { //default to short English string eg: Sun, Mon, Tue, Wed...
+ os << wd.as_short_string();
+ }
+
+ return os;
+ }
+
+ //! operator<< for gregorian::date_period typical output: [2002-Jan-01/2002-Jan-31]
+ /*! Uses the date facet to determine output string as well as selection of long
+ * or short string fr dates.
+ * Default if no facet is installed is to output a 3 char english string for the
+ * day of the week.
+ */
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const date_period& dp)
+ {
+ os << '['; //TODO: facet or manipulator for periods?
+ os << dp.begin();
+ os << '/'; //TODO: facet or manipulator for periods?
+ os << dp.last();
+ os << ']';
+ return os;
+ }
+
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const date_duration& dd)
+ {
+ //os << dd.days();
+ os << dd.get_rep();
+ return os;
+ }
+
+ //! operator<< for gregorian::partial_date. Output: "Jan 1"
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const partial_date& pd)
+ {
+ os << std::setw(2) << std::setfill('0') << pd.day() << ' '
+ << pd.month().as_short_string() ;
+ return os;
+ }
+
+ //! operator<< for gregorian::nth_kday_of_month. Output: "first Mon of Jun"
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os,
+ const nth_kday_of_month& nkd)
+ {
+ os << nkd.nth_week_as_str() << ' '
+ << nkd.day_of_week() << " of "
+ << nkd.month().as_short_string() ;
+ return os;
+ }
+
+ //! operator<< for gregorian::first_kday_of_month. Output: "first Mon of Jun"
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os,
+ const first_kday_of_month& fkd)
+ {
+ os << "first " << fkd.day_of_week() << " of "
+ << fkd.month().as_short_string() ;
+ return os;
+ }
+
+ //! operator<< for gregorian::last_kday_of_month. Output: "last Mon of Jun"
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os,
+ const last_kday_of_month& lkd)
+ {
+ os << "last " << lkd.day_of_week() << " of "
+ << lkd.month().as_short_string() ;
+ return os;
+ }
+
+ //! operator<< for gregorian::first_kday_after. Output: "first Mon after"
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os,
+ const first_kday_after& fka)
+ {
+ os << fka.day_of_week() << " after";
+ return os;
+ }
+
+ //! operator<< for gregorian::first_kday_before. Output: "first Mon before"
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os,
+ const first_kday_before& fkb)
+ {
+ os << fkb.day_of_week() << " before";
+ return os;
+ }
+#endif // USE_DATE_TIME_PRE_1_33_FACET_IO
+ /**************** Input Streaming ******************/
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS)
+ //! operator>> for gregorian::date
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is, date& d)
+ {
+ std::istream_iterator<std::basic_string<charT>, charT> beg(is), eos;
+
+ typedef boost::date_time::all_date_names_put<greg_facet_config, charT> facet_def;
+ d = from_stream(beg, eos);
+ return is;
+ }
+#endif // BOOST_NO_STD_ITERATOR_TRAITS
+
+ //! operator>> for gregorian::date_duration
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is,
+ date_duration& dd)
+ {
+ long v;
+ is >> v;
+ dd = date_duration(v);
+ return is;
+ }
+
+ //! operator>> for gregorian::date_period
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is,
+ date_period& dp)
+ {
+ std::basic_string<charT> s;
+ is >> s;
+ dp = date_time::from_simple_string_type<date>(s);
+ return is;
+ }
+
+ //! generates a locale with the set of gregorian name-strings of type char*
+ BOOST_DATE_TIME_DECL std::locale generate_locale(std::locale& loc, char type);
+
+ //! Returns a pointer to a facet with a default set of names (English)
+ /* Necessary in the event an exception is thrown from op>> for
+ * weekday or month. See comments in those functions for more info */
+ BOOST_DATE_TIME_DECL boost::date_time::all_date_names_put<greg_facet_config, char>* create_facet_def(char type);
+
+#ifndef BOOST_NO_STD_WSTRING
+ //! generates a locale with the set of gregorian name-strings of type wchar_t*
+ BOOST_DATE_TIME_DECL std::locale generate_locale(std::locale& loc, wchar_t type);
+ //! Returns a pointer to a facet with a default set of names (English)
+ /* Necessary in the event an exception is thrown from op>> for
+ * weekday or month. See comments in those functions for more info */
+ BOOST_DATE_TIME_DECL boost::date_time::all_date_names_put<greg_facet_config, wchar_t>* create_facet_def(wchar_t type);
+#endif // BOOST_NO_STD_WSTRING
+
+ //! operator>> for gregorian::greg_month - throws exception if invalid month given
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is,greg_month& m)
+ {
+ typedef boost::date_time::all_date_names_put<greg_facet_config, charT> facet_def;
+
+ std::basic_string<charT> s;
+ is >> s;
+
+ if(!std::has_facet<facet_def>(is.getloc())) {
+ std::locale loc = is.getloc();
+ charT a = '\0';
+ is.imbue(generate_locale(loc, a));
+ }
+
+ short num = 0;
+
+ try{
+ const facet_def& f = std::use_facet<facet_def>(is.getloc());
+ num = date_time::find_match(f.get_short_month_names(),
+ f.get_long_month_names(),
+ (greg_month::max)(), s); // greg_month spans 1..12, so max returns the array size,
+ // which is needed by find_match
+ }
+ /* bad_cast will be thrown if the desired facet is not accessible
+ * so we can generate the facet. This has the drawback of using english
+ * names as a default. */
+ catch(std::bad_cast&){
+ charT a = '\0';
+ std::auto_ptr< const facet_def > f(create_facet_def(a));
+ num = date_time::find_match(f->get_short_month_names(),
+ f->get_long_month_names(),
+ (greg_month::max)(), s); // greg_month spans 1..12, so max returns the array size,
+ // which is needed by find_match
+ }
+
+ ++num; // months numbered 1-12
+ m = greg_month(num);
+
+ return is;
+ }
+
+ //! operator>> for gregorian::greg_weekday - throws exception if invalid weekday given
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is,greg_weekday& wd)
+ {
+ typedef boost::date_time::all_date_names_put<greg_facet_config, charT> facet_def;
+
+ std::basic_string<charT> s;
+ is >> s;
+
+ if(!std::has_facet<facet_def>(is.getloc())) {
+ std::locale loc = is.getloc();
+ charT a = '\0';
+ is.imbue(generate_locale(loc, a));
+ }
+
+ short num = 0;
+ try{
+ const facet_def& f = std::use_facet<facet_def>(is.getloc());
+ num = date_time::find_match(f.get_short_weekday_names(),
+ f.get_long_weekday_names(),
+ (greg_weekday::max)() + 1, s); // greg_weekday spans 0..6, so increment is needed
+ // to form the array size which is needed by find_match
+ }
+ /* bad_cast will be thrown if the desired facet is not accessible
+ * so we can generate the facet. This has the drawback of using english
+ * names as a default. */
+ catch(std::bad_cast&){
+ charT a = '\0';
+ std::auto_ptr< const facet_def > f(create_facet_def(a));
+ num = date_time::find_match(f->get_short_weekday_names(),
+ f->get_long_weekday_names(),
+ (greg_weekday::max)() + 1, s); // greg_weekday spans 0..6, so increment is needed
+ // to form the array size which is needed by find_match
+ }
+
+ wd = greg_weekday(num); // weekdays numbered 0-6
+ return is;
+ }
+
+} } //namespace gregorian
+
+#endif
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_month.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_month.hpp
new file mode 100644
index 0000000..fc9c861
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_month.hpp
@@ -0,0 +1,105 @@
+#ifndef GREG_MONTH_HPP___
+#define GREG_MONTH_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/constrained_value.hpp"
+#include "boost/date_time/date_defs.hpp"
+#include "boost/shared_ptr.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include <stdexcept>
+#include <string>
+#include <map>
+#include <algorithm>
+#include <cctype>
+
+namespace boost {
+namespace gregorian {
+
+ typedef date_time::months_of_year months_of_year;
+
+ //bring enum values into the namespace
+ using date_time::Jan;
+ using date_time::Feb;
+ using date_time::Mar;
+ using date_time::Apr;
+ using date_time::May;
+ using date_time::Jun;
+ using date_time::Jul;
+ using date_time::Aug;
+ using date_time::Sep;
+ using date_time::Oct;
+ using date_time::Nov;
+ using date_time::Dec;
+ using date_time::NotAMonth;
+ using date_time::NumMonths;
+
+ //! Exception thrown if a greg_month is constructed with a value out of range
+ struct bad_month : public std::out_of_range
+ {
+ bad_month() : std::out_of_range(std::string("Month number is out of range 1..12")) {}
+ };
+ //! Build a policy class for the greg_month_rep
+ typedef CV::simple_exception_policy<unsigned short, 1, 12, bad_month> greg_month_policies;
+ //! A constrained range that implements the gregorian_month rules
+ typedef CV::constrained_value<greg_month_policies> greg_month_rep;
+
+
+ //! Wrapper class to represent months in gregorian based calendar
+ class BOOST_DATE_TIME_DECL greg_month : public greg_month_rep {
+ public:
+ typedef date_time::months_of_year month_enum;
+ typedef std::map<std::string, unsigned short> month_map_type;
+ typedef boost::shared_ptr<month_map_type> month_map_ptr_type;
+ //! Construct a month from the months_of_year enumeration
+ greg_month(month_enum theMonth) :
+ greg_month_rep(static_cast<greg_month_rep::value_type>(theMonth)) {}
+ //! Construct from a short value
+ greg_month(unsigned short theMonth) : greg_month_rep(theMonth) {}
+ //! Convert the value back to a short
+ operator unsigned short() const {return value_;}
+ //! Returns month as number from 1 to 12
+ unsigned short as_number() const {return value_;}
+ month_enum as_enum() const {return static_cast<month_enum>(value_);}
+ const char* as_short_string() const;
+ const char* as_long_string() const;
+#ifndef BOOST_NO_STD_WSTRING
+ const wchar_t* as_short_wstring() const;
+ const wchar_t* as_long_wstring() const;
+#endif // BOOST_NO_STD_WSTRING
+ //! Shared pointer to a map of Month strings (Names & Abbrev) & numbers
+ static month_map_ptr_type get_month_map_ptr();
+
+ /* parameterized as_*_string functions are intended to be called
+ * from a template function: "... as_short_string(charT c='\0');" */
+ const char* as_short_string(char) const
+ {
+ return as_short_string();
+ }
+ const char* as_long_string(char) const
+ {
+ return as_long_string();
+ }
+#ifndef BOOST_NO_STD_WSTRING
+ const wchar_t* as_short_string(wchar_t) const
+ {
+ return as_short_wstring();
+ }
+ const wchar_t* as_long_string(wchar_t) const
+ {
+ return as_long_wstring();
+ }
+#endif // BOOST_NO_STD_WSTRING
+ };
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_weekday.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_weekday.hpp
new file mode 100644
index 0000000..9b566c4
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_weekday.hpp
@@ -0,0 +1,66 @@
+#ifndef GREG_WEEKDAY_HPP___
+#define GREG_WEEKDAY_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include "boost/date_time/constrained_value.hpp"
+#include "boost/date_time/date_defs.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include <stdexcept>
+#include <string>
+
+namespace boost {
+namespace gregorian {
+
+ //bring enum values into the namespace
+ using date_time::Sunday;
+ using date_time::Monday;
+ using date_time::Tuesday;
+ using date_time::Wednesday;
+ using date_time::Thursday;
+ using date_time::Friday;
+ using date_time::Saturday;
+
+
+ //! Exception that flags that a weekday number is incorrect
+ struct bad_weekday : public std::out_of_range
+ {
+ bad_weekday() : std::out_of_range(std::string("Weekday is out of range 0..6")) {}
+ };
+ typedef CV::simple_exception_policy<unsigned short, 0, 6, bad_weekday> greg_weekday_policies;
+ typedef CV::constrained_value<greg_weekday_policies> greg_weekday_rep;
+
+
+ //! Represent a day within a week (range 0==Sun to 6==Sat)
+ class BOOST_DATE_TIME_DECL greg_weekday : public greg_weekday_rep {
+ public:
+ typedef boost::date_time::weekdays weekday_enum;
+ greg_weekday(unsigned short day_of_week_num) :
+ greg_weekday_rep(day_of_week_num)
+ {}
+
+ unsigned short as_number() const {return value_;}
+ const char* as_short_string() const;
+ const char* as_long_string() const;
+#ifndef BOOST_NO_STD_WSTRING
+ const wchar_t* as_short_wstring() const;
+ const wchar_t* as_long_wstring() const;
+#endif // BOOST_NO_STD_WSTRING
+ weekday_enum as_enum() const {return static_cast<weekday_enum>(value_);}
+
+
+ };
+
+
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_year.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_year.hpp
new file mode 100644
index 0000000..ef1735f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_year.hpp
@@ -0,0 +1,53 @@
+#ifndef GREG_YEAR_HPP___
+#define GREG_YEAR_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/constrained_value.hpp"
+#include <stdexcept>
+#include <string>
+
+namespace boost {
+namespace gregorian {
+
+ //! Exception type for gregorian year
+ struct bad_year : public std::out_of_range
+ {
+ bad_year() :
+ std::out_of_range(std::string("Year is out of valid range: 1400..10000"))
+ {}
+ };
+ //! Policy class that declares error handling gregorian year type
+ typedef CV::simple_exception_policy<unsigned short, 1400, 10000, bad_year> greg_year_policies;
+
+ //! Generated representation for gregorian year
+ typedef CV::constrained_value<greg_year_policies> greg_year_rep;
+
+ //! Represent a day of the month (range 1900 - 10000)
+ /*! This small class allows for simple conversion an integer value into
+ a year for the gregorian calendar. This currently only allows a
+ range of 1900 to 10000. Both ends of the range are a bit arbitrary
+ at the moment, but they are the limits of current testing of the
+ library. As such they may be increased in the future.
+ */
+ class greg_year : public greg_year_rep {
+ public:
+ greg_year(unsigned short year) : greg_year_rep(year) {}
+ operator unsigned short() const {return value_;}
+ private:
+
+ };
+
+
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/greg_ymd.hpp b/3rdParty/Boost/boost/date_time/gregorian/greg_ymd.hpp
new file mode 100644
index 0000000..086e73d
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/greg_ymd.hpp
@@ -0,0 +1,33 @@
+#ifndef DATE_TIME_GREG_YMD_HPP__
+#define DATE_TIME_GREG_YMD_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/year_month_day.hpp"
+#include "boost/date_time/special_defs.hpp"
+#include "boost/date_time/gregorian/greg_day.hpp"
+#include "boost/date_time/gregorian/greg_year.hpp"
+#include "boost/date_time/gregorian/greg_month.hpp"
+
+namespace boost {
+namespace gregorian {
+
+ typedef date_time::year_month_day_base<greg_year,
+ greg_month,
+ greg_day> greg_year_month_day;
+
+
+
+} } //namespace gregorian
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian/gregorian.hpp b/3rdParty/Boost/boost/date_time/gregorian/gregorian.hpp
new file mode 100644
index 0000000..bfafa1b
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/gregorian.hpp
@@ -0,0 +1,38 @@
+#ifndef GREGORIAN_HPP__
+#define GREGORIAN_HPP__
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+/*! @file gregorian.hpp
+ Single file header that provides overall include for all elements of
+ the gregorian date-time system. This includes the various types
+ defined, but also other functions for formatting and parsing.
+*/
+
+
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/gregorian/gregorian_types.hpp"
+#include "boost/date_time/gregorian/conversion.hpp"
+#if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
+#include "boost/date_time/gregorian/formatters_limited.hpp"
+#else
+#include "boost/date_time/gregorian/formatters.hpp"
+#endif
+
+#if defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+#include "boost/date_time/gregorian/greg_facet.hpp"
+#else
+#include "boost/date_time/gregorian/gregorian_io.hpp"
+#endif // USE_DATE_TIME_PRE_1_33_FACET_IO
+
+#include "boost/date_time/gregorian/parsers.hpp"
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/gregorian_io.hpp b/3rdParty/Boost/boost/date_time/gregorian/gregorian_io.hpp
new file mode 100644
index 0000000..62a759f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/gregorian_io.hpp
@@ -0,0 +1,784 @@
+#ifndef DATE_TIME_GREGORIAN_IO_HPP__
+#define DATE_TIME_GREGORIAN_IO_HPP__
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <locale>
+#include <iostream>
+#include <iterator> // i/ostreambuf_iterator
+#include <boost/io/ios_state.hpp>
+#include <boost/date_time/date_facet.hpp>
+#include <boost/date_time/period_parser.hpp>
+#include <boost/date_time/period_formatter.hpp>
+#include <boost/date_time/special_values_parser.hpp>
+#include <boost/date_time/special_values_formatter.hpp>
+#include <boost/date_time/gregorian/gregorian_types.hpp>
+#include <boost/date_time/gregorian/conversion.hpp> // to_tm will be needed in the facets
+
+namespace boost {
+namespace gregorian {
+
+
+ typedef boost::date_time::period_formatter<wchar_t> wperiod_formatter;
+ typedef boost::date_time::period_formatter<char> period_formatter;
+
+ typedef boost::date_time::date_facet<date,wchar_t> wdate_facet;
+ typedef boost::date_time::date_facet<date,char> date_facet;
+
+ typedef boost::date_time::period_parser<date,char> period_parser;
+ typedef boost::date_time::period_parser<date,wchar_t> wperiod_parser;
+
+ typedef boost::date_time::special_values_formatter<char> special_values_formatter;
+ typedef boost::date_time::special_values_formatter<wchar_t> wspecial_values_formatter;
+
+ typedef boost::date_time::special_values_parser<date,char> special_values_parser;
+ typedef boost::date_time::special_values_parser<date,wchar_t> wspecial_values_parser;
+
+ typedef boost::date_time::date_input_facet<date,char> date_input_facet;
+ typedef boost::date_time::date_input_facet<date,wchar_t> wdate_input_facet;
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::date& d) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), d);
+ else {
+ //instantiate a custom facet for dealing with dates since the user
+ //has not put one in the stream so far. This is for efficiency
+ //since we would always need to reconstruct for every date
+ //if the locale did not already exist. Of course this will be overridden
+ //if the user imbues at some later point. With the default settings
+ //for the facet the resulting format will be the same as the
+ //std::time_facet settings.
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), d);
+ }
+ return os;
+ }
+
+ //! input operator for date
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, date& d)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, d);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, d);
+ }
+ }
+ catch(...) {
+ // mask tells us what exceptions are turned on
+ std::ios_base::iostate exception_mask = is.exceptions();
+ // if the user wants exceptions on failbit, we'll rethrow our
+ // date_time exception & set the failbit
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {} // ignore this one
+ throw; // rethrow original exception
+ }
+ else {
+ // if the user want's to fail quietly, we simply set the failbit
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::date_duration& dd) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), dd);
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), dd);
+
+ }
+ return os;
+ }
+
+ //! input operator for date_duration
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, date_duration& dd)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, dd);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, dd);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::date_period& dp) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), dp);
+ else {
+ //instantiate a custom facet for dealing with date periods since the user
+ //has not put one in the stream so far. This is for efficiency
+ //since we would always need to reconstruct for every time period
+ //if the local did not already exist. Of course this will be overridden
+ //if the user imbues at some later point. With the default settings
+ //for the facet the resulting format will be the same as the
+ //std::time_facet settings.
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), dp);
+
+ }
+ return os;
+ }
+
+ //! input operator for date_period
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, date_period& dp)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, dp);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, dp);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ /********** small gregorian types **********/
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::greg_month& gm) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), gm);
+ else {
+ custom_date_facet* f = new custom_date_facet();//-> 10/1074199752/32 because year & day not initialized in put(...)
+ //custom_date_facet* f = new custom_date_facet("%B");
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), gm);
+ }
+ return os;
+ }
+
+ //! input operator for greg_month
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, greg_month& m)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, m);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, m);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::greg_weekday& gw) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), gw);
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), gw);
+ }
+ return os;
+ }
+
+ //! input operator for greg_weekday
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, greg_weekday& wd)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, wd);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, wd);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ //NOTE: output operator for greg_day was not necessary
+
+ //! input operator for greg_day
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, greg_day& gd)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, gd);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, gd);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ //NOTE: output operator for greg_year was not necessary
+
+ //! input operator for greg_year
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, greg_year& gy)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, gy);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, gy);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ /********** date generator types **********/
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::partial_date& pd) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), pd);
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), pd);
+ }
+ return os;
+ }
+
+ //! input operator for partial_date
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, partial_date& pd)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, pd);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, pd);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::nth_day_of_the_week_in_month& nkd) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), nkd);
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), nkd);
+ }
+ return os;
+ }
+
+ //! input operator for nth_day_of_the_week_in_month
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is,
+ nth_day_of_the_week_in_month& nday)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, nday);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, nday);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::first_day_of_the_week_in_month& fkd) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), fkd);
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), fkd);
+ }
+ return os;
+ }
+
+ //! input operator for first_day_of_the_week_in_month
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is,
+ first_day_of_the_week_in_month& fkd)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, fkd);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, fkd);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::last_day_of_the_week_in_month& lkd) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc()))
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), lkd);
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), lkd);
+ }
+ return os;
+ }
+
+ //! input operator for last_day_of_the_week_in_month
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is,
+ last_day_of_the_week_in_month& lkd)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, lkd);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, lkd);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::first_day_of_the_week_after& fda) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc())) {
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), fda);
+ }
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), fda);
+ }
+ return os;
+ }
+
+ //! input operator for first_day_of_the_week_after
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is,
+ first_day_of_the_week_after& fka)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, fka);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, fka);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+
+ template <class CharT, class TraitsT>
+ inline std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os, const boost::gregorian::first_day_of_the_week_before& fdb) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::date_facet<date, CharT> custom_date_facet;
+ std::ostreambuf_iterator<CharT> output_itr(os);
+ if (std::has_facet<custom_date_facet>(os.getloc())) {
+ std::use_facet<custom_date_facet>(os.getloc()).put(output_itr, os, os.fill(), fdb);
+ }
+ else {
+ custom_date_facet* f = new custom_date_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(output_itr, os, os.fill(), fdb);
+ }
+ return os;
+ }
+
+ //! input operator for first_day_of_the_week_before
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is,
+ first_day_of_the_week_before& fkb)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::date_input_facet<date, CharT> date_input_facet;
+
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<date_input_facet>(is.getloc())) {
+ std::use_facet<date_input_facet>(is.getloc()).get(sit, str_end, is, fkb);
+ }
+ else {
+ date_input_facet* f = new date_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, fkb);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+
+ }
+ }
+ return is;
+ }
+
+
+} } // namespaces
+
+#endif // DATE_TIME_GREGORIAN_IO_HPP__
diff --git a/3rdParty/Boost/boost/date_time/gregorian/gregorian_types.hpp b/3rdParty/Boost/boost/date_time/gregorian/gregorian_types.hpp
new file mode 100644
index 0000000..0c74857
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/gregorian_types.hpp
@@ -0,0 +1,109 @@
+#ifndef _GREGORIAN_TYPES_HPP__
+#define _GREGORIAN_TYPES_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+/*! @file gregorian_types.hpp
+ Single file header that defines most of the types for the gregorian
+ date-time system.
+*/
+
+#include "boost/date_time/date.hpp"
+#include "boost/date_time/period.hpp"
+#include "boost/date_time/gregorian/greg_calendar.hpp"
+#include "boost/date_time/gregorian/greg_duration.hpp"
+#if defined(BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES)
+#include "boost/date_time/gregorian/greg_duration_types.hpp"
+#endif
+#include "boost/date_time/gregorian/greg_date.hpp"
+#include "boost/date_time/date_generators.hpp"
+#include "boost/date_time/date_clock_device.hpp"
+#include "boost/date_time/date_iterator.hpp"
+#include "boost/date_time/adjust_functors.hpp"
+
+namespace boost {
+
+//! Gregorian date system based on date_time components
+/*! This date system defines a full complement of types including
+ * a date, date_duration, date_period, day_clock, and a
+ * day_iterator.
+ */
+namespace gregorian {
+ //! Date periods for the gregorian system
+ /*!\ingroup date_basics
+ */
+ typedef date_time::period<date, date_duration> date_period;
+
+ //! A unifying date_generator base type
+ /*! A unifying date_generator base type for:
+ * partial_date, nth_day_of_the_week_in_month,
+ * first_day_of_the_week_in_month, and last_day_of_the_week_in_month
+ */
+ typedef date_time::year_based_generator<date> year_based_generator;
+
+ //! A date generation object type
+ typedef date_time::partial_date<date> partial_date;
+
+ typedef date_time::nth_kday_of_month<date> nth_kday_of_month;
+ typedef nth_kday_of_month nth_day_of_the_week_in_month;
+
+ typedef date_time::first_kday_of_month<date> first_kday_of_month;
+ typedef first_kday_of_month first_day_of_the_week_in_month;
+
+ typedef date_time::last_kday_of_month<date> last_kday_of_month;
+ typedef last_kday_of_month last_day_of_the_week_in_month;
+
+ typedef date_time::first_kday_after<date> first_kday_after;
+ typedef first_kday_after first_day_of_the_week_after;
+
+ typedef date_time::first_kday_before<date> first_kday_before;
+ typedef first_kday_before first_day_of_the_week_before;
+
+ //! A clock to get the current day from the local computer
+ /*!\ingroup date_basics
+ */
+ typedef date_time::day_clock<date> day_clock;
+
+ //! Base date_iterator type for gregorian types.
+ /*!\ingroup date_basics
+ */
+ typedef date_time::date_itr_base<date> date_iterator;
+
+ //! A day level iterator
+ /*!\ingroup date_basics
+ */
+ typedef date_time::date_itr<date_time::day_functor<date>,
+ date> day_iterator;
+ //! A week level iterator
+ /*!\ingroup date_basics
+ */
+ typedef date_time::date_itr<date_time::week_functor<date>,
+ date> week_iterator;
+ //! A month level iterator
+ /*!\ingroup date_basics
+ */
+ typedef date_time::date_itr<date_time::month_functor<date>,
+ date> month_iterator;
+ //! A year level iterator
+ /*!\ingroup date_basics
+ */
+ typedef date_time::date_itr<date_time::year_functor<date>,
+ date> year_iterator;
+
+ // bring in these date_generator functions from date_time namespace
+ using date_time::days_until_weekday;
+ using date_time::days_before_weekday;
+ using date_time::next_weekday;
+ using date_time::previous_weekday;
+
+} } //namespace gregorian
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian/parsers.hpp b/3rdParty/Boost/boost/date_time/gregorian/parsers.hpp
new file mode 100644
index 0000000..95d4f23
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian/parsers.hpp
@@ -0,0 +1,91 @@
+#ifndef GREGORIAN_PARSERS_HPP___
+#define GREGORIAN_PARSERS_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/gregorian_types.hpp"
+#include "boost/date_time/date_parsing.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/parse_format_base.hpp"
+#include <string>
+#include <sstream>
+
+namespace boost {
+namespace gregorian {
+
+ //! Return special_value from string argument
+ /*! Return special_value from string argument. If argument is
+ * not one of the special value names (defined in src/gregorian/names.hpp),
+ * return 'not_special' */
+ BOOST_DATE_TIME_DECL special_values special_value_from_string(const std::string& s);
+
+ //! Deprecated: Use from_simple_string
+ inline date from_string(std::string s) {
+ return date_time::parse_date<date>(s);
+ }
+
+ //! From delimited date string where with order year-month-day eg: 2002-1-25 or 2003-Jan-25 (full month name is also accepted)
+ inline date from_simple_string(std::string s) {
+ return date_time::parse_date<date>(s, date_time::ymd_order_iso);
+ }
+
+ //! From delimited date string where with order year-month-day eg: 1-25-2003 or Jan-25-2003 (full month name is also accepted)
+ inline date from_us_string(std::string s) {
+ return date_time::parse_date<date>(s, date_time::ymd_order_us);
+ }
+
+ //! From delimited date string where with order day-month-year eg: 25-1-2002 or 25-Jan-2003 (full month name is also accepted)
+ inline date from_uk_string(std::string s) {
+ return date_time::parse_date<date>(s, date_time::ymd_order_dmy);
+ }
+
+ //! From iso type date string where with order year-month-day eg: 20020125
+ inline date from_undelimited_string(std::string s) {
+ return date_time::parse_undelimited_date<date>(s);
+ }
+
+ //! From iso type date string where with order year-month-day eg: 20020125
+ inline date date_from_iso_string(const std::string& s) {
+ return date_time::parse_undelimited_date<date>(s);
+ }
+
+#if !(defined(BOOST_NO_STD_ITERATOR_TRAITS))
+ //! Stream should hold a date in the form of: 2002-1-25. Month number, abbrev, or name are accepted
+ /* Arguments passed in by-value for convertability of char[]
+ * to iterator_type. Calls to from_stream_type are by-reference
+ * since conversion is already done */
+ template<class iterator_type>
+ inline date from_stream(iterator_type beg, iterator_type end) {
+ if(beg == end)
+ {
+ return date(not_a_date_time);
+ }
+ typedef typename std::iterator_traits<iterator_type>::value_type value_type;
+ return date_time::from_stream_type<date>(beg, end, value_type());
+ }
+#endif //BOOST_NO_STD_ITERATOR_TRAITS
+
+#if (defined(_MSC_VER) && (_MSC_VER < 1300))
+ // This function cannot be compiled with MSVC 6.0 due to internal compiler shorcomings
+#else
+ //! Function to parse a date_period from a string (eg: [2003-Oct-31/2003-Dec-25])
+ inline date_period date_period_from_string(const std::string& s){
+ return date_time::from_simple_string_type<date,char>(s);
+ }
+# if !defined(BOOST_NO_STD_WSTRING)
+ //! Function to parse a date_period from a wstring (eg: [2003-Oct-31/2003-Dec-25])
+ inline date_period date_period_from_wstring(const std::wstring& s){
+ return date_time::from_simple_string_type<date,wchar_t>(s);
+ }
+# endif // BOOST_NO_STD_WSTRING
+#endif
+
+} } //namespace gregorian
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/gregorian_calendar.hpp b/3rdParty/Boost/boost/date_time/gregorian_calendar.hpp
new file mode 100644
index 0000000..6386008
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian_calendar.hpp
@@ -0,0 +1,70 @@
+#ifndef DATE_TIME_GREGORIAN_CALENDAR_HPP__
+#define DATE_TIME_GREGORIAN_CALENDAR_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+namespace boost {
+namespace date_time {
+
+
+ //! An implementation of the Gregorian calendar
+ /*! This is a parameterized implementation of a proleptic Gregorian Calendar that
+ can be used in the creation of date systems or just to perform calculations.
+ All the methods of this class are static functions, so the intent is to
+ never create instances of this class.
+ @param ymd_type_ Struct type representing the year, month, day. The ymd_type must
+ define a of types for the year, month, and day. These types need to be
+ arithmetic types.
+ @param date_int_type_ Underlying type for the date count. Must be an arithmetic type.
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ class gregorian_calendar_base {
+ public:
+ //! define a type a date split into components
+ typedef ymd_type_ ymd_type;
+ //! define a type for representing months
+ typedef typename ymd_type::month_type month_type;
+ //! define a type for representing days
+ typedef typename ymd_type::day_type day_type;
+ //! Type to hold a stand alone year value (eg: 2002)
+ typedef typename ymd_type::year_type year_type;
+ //! Define the integer type to use for internal calculations
+ typedef date_int_type_ date_int_type;
+
+
+ static unsigned short day_of_week(const ymd_type& ymd);
+ static int week_number(const ymd_type&ymd);
+ //static unsigned short day_of_year(date_int_type);
+ static date_int_type day_number(const ymd_type& ymd);
+ static date_int_type julian_day_number(const ymd_type& ymd);
+ static long modjulian_day_number(const ymd_type& ymd);
+ static ymd_type from_day_number(date_int_type);
+ static ymd_type from_julian_day_number(date_int_type);
+ static ymd_type from_modjulian_day_number(long);
+ static bool is_leap_year(year_type);
+ static unsigned short end_of_month_day(year_type y, month_type m);
+ static ymd_type epoch();
+ static unsigned short days_in_week();
+
+ };
+
+
+
+} } //namespace
+
+#ifndef NO_BOOST_DATE_TIME_INLINE
+#include "boost/date_time/gregorian_calendar.ipp"
+#endif
+
+
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/date_time/gregorian_calendar.ipp b/3rdParty/Boost/boost/date_time/gregorian_calendar.ipp
new file mode 100644
index 0000000..b7628fc
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/gregorian_calendar.ipp
@@ -0,0 +1,219 @@
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#ifndef NO_BOOST_DATE_TIME_INLINE
+ #undef BOOST_DATE_TIME_INLINE
+ #define BOOST_DATE_TIME_INLINE inline
+#endif
+
+namespace boost {
+namespace date_time {
+ //! Return the day of the week (0==Sunday, 1==Monday, etc)
+ /*! Converts a year-month-day into a day of the week number
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ unsigned short
+ gregorian_calendar_base<ymd_type_,date_int_type_>::day_of_week(const ymd_type& ymd) {
+ unsigned short a = static_cast<unsigned short>((14-ymd.month)/12);
+ unsigned short y = static_cast<unsigned short>(ymd.year - a);
+ unsigned short m = static_cast<unsigned short>(ymd.month + 12*a - 2);
+ unsigned short d = static_cast<unsigned short>((ymd.day + y + (y/4) - (y/100) + (y/400) + (31*m)/12) % 7);
+ //std::cout << year << "-" << month << "-" << day << " is day: " << d << "\n";
+ return d;
+ }
+
+ //!Return the iso week number for the date
+ /*!Implements the rules associated with the iso 8601 week number.
+ Basically the rule is that Week 1 of the year is the week that contains
+ January 4th or the week that contains the first Thursday in January.
+ Reference for this algorithm is the Calendar FAQ by Claus Tondering, April 2000.
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ int
+ gregorian_calendar_base<ymd_type_,date_int_type_>::week_number(const ymd_type& ymd) {
+ unsigned long julianbegin = julian_day_number(ymd_type(ymd.year,1,1));
+ unsigned long juliantoday = julian_day_number(ymd);
+ unsigned long day = (julianbegin + 3) % 7;
+ unsigned long week = (juliantoday + day - julianbegin + 4)/7;
+
+ if ((week >= 1) && (week <= 52)) {
+ return week;
+ }
+
+ if ((week == 53)) {
+ if((day==6) ||(day == 5 && is_leap_year(ymd.year))) {
+ return week; //under these circumstances week == 53.
+ } else {
+ return 1; //monday - wednesday is in week 1 of next year
+ }
+ }
+ //if the week is not in current year recalculate using the previous year as the beginning year
+ else if (week == 0) {
+ julianbegin = julian_day_number(ymd_type(static_cast<unsigned short>(ymd.year-1),1,1));
+ juliantoday = julian_day_number(ymd);
+ day = (julianbegin + 3) % 7;
+ week = (juliantoday + day - julianbegin + 4)/7;
+ return week;
+ }
+
+ return week; //not reachable -- well except if day == 5 and is_leap_year != true
+
+ }
+
+ //! Convert a ymd_type into a day number
+ /*! The day number is an absolute number of days since the start of count
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ date_int_type_
+ gregorian_calendar_base<ymd_type_,date_int_type_>::day_number(const ymd_type& ymd)
+ {
+ unsigned short a = static_cast<unsigned short>((14-ymd.month)/12);
+ unsigned short y = static_cast<unsigned short>(ymd.year + 4800 - a);
+ unsigned short m = static_cast<unsigned short>(ymd.month + 12*a - 3);
+ unsigned long d = ymd.day + ((153*m + 2)/5) + 365*y + (y/4) - (y/100) + (y/400) - 32045;
+ return d;
+ }
+
+ //! Convert a year-month-day into the julian day number
+ /*! Since this implementation uses julian day internally, this is the same as the day_number.
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ date_int_type_
+ gregorian_calendar_base<ymd_type_,date_int_type_>::julian_day_number(const ymd_type& ymd)
+ {
+ return day_number(ymd);
+ }
+
+ //! Convert year-month-day into a modified julian day number
+ /*! The day number is an absolute number of days.
+ * MJD 0 thus started on 17 Nov 1858(Gregorian) at 00:00:00 UTC
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ long
+ gregorian_calendar_base<ymd_type_,date_int_type_>::modjulian_day_number(const ymd_type& ymd)
+ {
+ return julian_day_number(ymd)-2400001; //prerounded
+ }
+
+ //! Change a day number into a year-month-day
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ ymd_type_
+ gregorian_calendar_base<ymd_type_,date_int_type_>::from_day_number(date_int_type dayNumber)
+ {
+ date_int_type a = dayNumber + 32044;
+ date_int_type b = (4*a + 3)/146097;
+ date_int_type c = a-((146097*b)/4);
+ date_int_type d = (4*c + 3)/1461;
+ date_int_type e = c - (1461*d)/4;
+ date_int_type m = (5*e + 2)/153;
+ unsigned short day = static_cast<unsigned short>(e - ((153*m + 2)/5) + 1);
+ unsigned short month = static_cast<unsigned short>(m + 3 - 12 * (m/10));
+ year_type year = static_cast<unsigned short>(100*b + d - 4800 + (m/10));
+ //std::cout << year << "-" << month << "-" << day << "\n";
+
+ return ymd_type(static_cast<unsigned short>(year),month,day);
+ }
+
+ //! Change a day number into a year-month-day
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ ymd_type_
+ gregorian_calendar_base<ymd_type_,date_int_type_>::from_julian_day_number(date_int_type dayNumber)
+ {
+ date_int_type a = dayNumber + 32044;
+ date_int_type b = (4*a+3)/146097;
+ date_int_type c = a - ((146097*b)/4);
+ date_int_type d = (4*c + 3)/1461;
+ date_int_type e = c - ((1461*d)/4);
+ date_int_type m = (5*e + 2)/153;
+ unsigned short day = static_cast<unsigned short>(e - ((153*m + 2)/5) + 1);
+ unsigned short month = static_cast<unsigned short>(m + 3 - 12 * (m/10));
+ year_type year = static_cast<year_type>(100*b + d - 4800 + (m/10));
+ //std::cout << year << "-" << month << "-" << day << "\n";
+
+ return ymd_type(year,month,day);
+ }
+
+ //! Change a modified julian day number into a year-month-day
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ ymd_type_
+ gregorian_calendar_base<ymd_type_,date_int_type_>::from_modjulian_day_number(long dayNumber) {
+ date_int_type jd = dayNumber + 2400001; //is 2400000.5 prerounded
+ return from_julian_day_number(jd);
+ }
+
+ //! Determine if the provided year is a leap year
+ /*!
+ *@return true if year is a leap year, false otherwise
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ bool
+ gregorian_calendar_base<ymd_type_,date_int_type_>::is_leap_year(year_type year)
+ {
+ //divisible by 4, not if divisible by 100, but true if divisible by 400
+ return (!(year % 4)) && ((year % 100) || (!(year % 400)));
+ }
+
+ //! Calculate the last day of the month
+ /*! Find the day which is the end of the month given year and month
+ * No error checking is performed.
+ */
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ unsigned short
+ gregorian_calendar_base<ymd_type_,date_int_type_>::end_of_month_day(year_type year,
+ month_type month)
+ {
+ switch (month) {
+ case 2:
+ if (is_leap_year(year)) {
+ return 29;
+ } else {
+ return 28;
+ };
+ case 4:
+ case 6:
+ case 9:
+ case 11:
+ return 30;
+ default:
+ return 31;
+ };
+
+ }
+
+ //! Provide the ymd_type specification for the calandar start
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ ymd_type_
+ gregorian_calendar_base<ymd_type_,date_int_type_>::epoch()
+ {
+ return ymd_type(1400,1,1);
+ }
+
+ //! Defines length of a week for week calculations
+ template<typename ymd_type_, typename date_int_type_>
+ BOOST_DATE_TIME_INLINE
+ unsigned short
+ gregorian_calendar_base<ymd_type_,date_int_type_>::days_in_week()
+ {
+ return 7;
+ }
+
+
+} } //namespace gregorian
+
+
diff --git a/3rdParty/Boost/boost/date_time/int_adapter.hpp b/3rdParty/Boost/boost/date_time/int_adapter.hpp
new file mode 100644
index 0000000..fc98fc1
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/int_adapter.hpp
@@ -0,0 +1,509 @@
+#ifndef _DATE_TIME_INT_ADAPTER_HPP__
+#define _DATE_TIME_INT_ADAPTER_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp" //work around compilers without limits
+#include "boost/date_time/special_defs.hpp"
+#include "boost/date_time/locale_config.hpp"
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+# include <ostream>
+#endif
+
+namespace boost {
+namespace date_time {
+
+
+//! Adapter to create integer types with +-infinity, and not a value
+/*! This class is used internally in counted date/time representations.
+ * It adds the floating point like features of infinities and
+ * not a number. It also provides mathmatical operations with
+ * consideration to special values following these rules:
+ *@code
+ * +infinity - infinity == Not A Number (NAN)
+ * infinity * non-zero == infinity
+ * infinity * zero == NAN
+ * +infinity * -integer == -infinity
+ * infinity / infinity == NAN
+ * infinity * infinity == infinity
+ *@endcode
+ */
+template<typename int_type_>
+class int_adapter {
+public:
+ typedef int_type_ int_type;
+ int_adapter(int_type v) :
+ value_(v)
+ {}
+ static bool has_infinity()
+ {
+ return true;
+ }
+ static const int_adapter pos_infinity()
+ {
+ return (::std::numeric_limits<int_type>::max)();
+ }
+ static const int_adapter neg_infinity()
+ {
+ return (::std::numeric_limits<int_type>::min)();
+ }
+ static const int_adapter not_a_number()
+ {
+ return (::std::numeric_limits<int_type>::max)()-1;
+ }
+ static int_adapter max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ return (::std::numeric_limits<int_type>::max)()-2;
+ }
+ static int_adapter min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ return (::std::numeric_limits<int_type>::min)()+1;
+ }
+ static int_adapter from_special(special_values sv)
+ {
+ switch (sv) {
+ case not_a_date_time: return not_a_number();
+ case neg_infin: return neg_infinity();
+ case pos_infin: return pos_infinity();
+ case max_date_time: return (max)();
+ case min_date_time: return (min)();
+ default: return not_a_number();
+ }
+ }
+ static bool is_inf(int_type v)
+ {
+ return (v == neg_infinity().as_number() ||
+ v == pos_infinity().as_number());
+ }
+ static bool is_neg_inf(int_type v)
+ {
+ return (v == neg_infinity().as_number());
+ }
+ static bool is_pos_inf(int_type v)
+ {
+ return (v == pos_infinity().as_number());
+ }
+ static bool is_not_a_number(int_type v)
+ {
+ return (v == not_a_number().as_number());
+ }
+ //! Returns either special value type or is_not_special
+ static special_values to_special(int_type v)
+ {
+ if (is_not_a_number(v)) return not_a_date_time;
+ if (is_neg_inf(v)) return neg_infin;
+ if (is_pos_inf(v)) return pos_infin;
+ return not_special;
+ }
+
+ //-3 leaves room for representations of infinity and not a date
+ static int_type maxcount()
+ {
+ return (::std::numeric_limits<int_type>::max)()-3;
+ }
+ bool is_infinity() const
+ {
+ return (value_ == neg_infinity().as_number() ||
+ value_ == pos_infinity().as_number());
+ }
+ bool is_pos_infinity()const
+ {
+ return(value_ == pos_infinity().as_number());
+ }
+ bool is_neg_infinity()const
+ {
+ return(value_ == neg_infinity().as_number());
+ }
+ bool is_nan() const
+ {
+ return (value_ == not_a_number().as_number());
+ }
+ bool is_special() const
+ {
+ return(is_infinity() || is_nan());
+ }
+ bool operator==(const int_adapter& rhs) const
+ {
+ return (compare(rhs) == 0);
+ }
+ bool operator==(const int& rhs) const
+ {
+ // quiets compiler warnings
+ bool is_signed = std::numeric_limits<int_type>::is_signed;
+ if(!is_signed)
+ {
+ if(is_neg_inf(value_) && rhs == 0)
+ {
+ return false;
+ }
+ }
+ return (compare(rhs) == 0);
+ }
+ bool operator!=(const int_adapter& rhs) const
+ {
+ return (compare(rhs) != 0);
+ }
+ bool operator!=(const int& rhs) const
+ {
+ // quiets compiler warnings
+ bool is_signed = std::numeric_limits<int_type>::is_signed;
+ if(!is_signed)
+ {
+ if(is_neg_inf(value_) && rhs == 0)
+ {
+ return true;
+ }
+ }
+ return (compare(rhs) != 0);
+ }
+ bool operator<(const int_adapter& rhs) const
+ {
+ return (compare(rhs) == -1);
+ }
+ bool operator<(const int& rhs) const
+ {
+ // quiets compiler warnings
+ bool is_signed = std::numeric_limits<int_type>::is_signed;
+ if(!is_signed)
+ {
+ if(is_neg_inf(value_) && rhs == 0)
+ {
+ return true;
+ }
+ }
+ return (compare(rhs) == -1);
+ }
+ bool operator>(const int_adapter& rhs) const
+ {
+ return (compare(rhs) == 1);
+ }
+ int_type as_number() const
+ {
+ return value_;
+ }
+ //! Returns either special value type or is_not_special
+ special_values as_special() const
+ {
+ return int_adapter::to_special(value_);
+ }
+ //creates nasty ambiguities
+// operator int_type() const
+// {
+// return value_;
+// }
+
+ /*! Operator allows for adding dissimilar int_adapter types.
+ * The return type will match that of the the calling object's type */
+ template<class rhs_type>
+ inline
+ int_adapter operator+(const int_adapter<rhs_type>& rhs) const
+ {
+ if(is_special() || rhs.is_special())
+ {
+ if (is_nan() || rhs.is_nan())
+ {
+ return int_adapter::not_a_number();
+ }
+ if((is_pos_inf(value_) && rhs.is_neg_inf(rhs.as_number())) ||
+ (is_neg_inf(value_) && rhs.is_pos_inf(rhs.as_number())) )
+ {
+ return int_adapter::not_a_number();
+ }
+ if (is_infinity())
+ {
+ return *this;
+ }
+ if (rhs.is_pos_inf(rhs.as_number()))
+ {
+ return int_adapter::pos_infinity();
+ }
+ if (rhs.is_neg_inf(rhs.as_number()))
+ {
+ return int_adapter::neg_infinity();
+ }
+ }
+ return int_adapter<int_type>(value_ + rhs.as_number());
+ }
+
+ int_adapter operator+(const int_type rhs) const
+ {
+ if(is_special())
+ {
+ if (is_nan())
+ {
+ return int_adapter<int_type>(not_a_number());
+ }
+ if (is_infinity())
+ {
+ return *this;
+ }
+ }
+ return int_adapter<int_type>(value_ + rhs);
+ }
+
+ /*! Operator allows for subtracting dissimilar int_adapter types.
+ * The return type will match that of the the calling object's type */
+ template<class rhs_type>
+ inline
+ int_adapter operator-(const int_adapter<rhs_type>& rhs)const
+ {
+ if(is_special() || rhs.is_special())
+ {
+ if (is_nan() || rhs.is_nan())
+ {
+ return int_adapter::not_a_number();
+ }
+ if((is_pos_inf(value_) && rhs.is_pos_inf(rhs.as_number())) ||
+ (is_neg_inf(value_) && rhs.is_neg_inf(rhs.as_number())) )
+ {
+ return int_adapter::not_a_number();
+ }
+ if (is_infinity())
+ {
+ return *this;
+ }
+ if (rhs.is_pos_inf(rhs.as_number()))
+ {
+ return int_adapter::neg_infinity();
+ }
+ if (rhs.is_neg_inf(rhs.as_number()))
+ {
+ return int_adapter::pos_infinity();
+ }
+ }
+ return int_adapter<int_type>(value_ - rhs.as_number());
+ }
+ int_adapter operator-(const int_type rhs) const
+ {
+ if(is_special())
+ {
+ if (is_nan())
+ {
+ return int_adapter<int_type>(not_a_number());
+ }
+ if (is_infinity())
+ {
+ return *this;
+ }
+ }
+ return int_adapter<int_type>(value_ - rhs);
+ }
+
+ // should templatize this to be consistant with op +-
+ int_adapter operator*(const int_adapter& rhs)const
+ {
+ if(this->is_special() || rhs.is_special())
+ {
+ return mult_div_specials(rhs);
+ }
+ return int_adapter<int_type>(value_ * rhs.value_);
+ }
+ /*! Provided for cases when automatic conversion from
+ * 'int' to 'int_adapter' causes incorrect results. */
+ int_adapter operator*(const int rhs) const
+ {
+ if(is_special())
+ {
+ return mult_div_specials(rhs);
+ }
+ return int_adapter<int_type>(value_ * rhs);
+ }
+
+ // should templatize this to be consistant with op +-
+ int_adapter operator/(const int_adapter& rhs)const
+ {
+ if(this->is_special() || rhs.is_special())
+ {
+ if(is_infinity() && rhs.is_infinity())
+ {
+ return int_adapter<int_type>(not_a_number());
+ }
+ if(rhs != 0)
+ {
+ return mult_div_specials(rhs);
+ }
+ else { // let divide by zero blow itself up
+ return int_adapter<int_type>(value_ / rhs.value_);
+ }
+ }
+ return int_adapter<int_type>(value_ / rhs.value_);
+ }
+ /*! Provided for cases when automatic conversion from
+ * 'int' to 'int_adapter' causes incorrect results. */
+ int_adapter operator/(const int rhs) const
+ {
+ if(is_special() && rhs != 0)
+ {
+ return mult_div_specials(rhs);
+ }
+ return int_adapter<int_type>(value_ / rhs);
+ }
+
+ // should templatize this to be consistant with op +-
+ int_adapter operator%(const int_adapter& rhs)const
+ {
+ if(this->is_special() || rhs.is_special())
+ {
+ if(is_infinity() && rhs.is_infinity())
+ {
+ return int_adapter<int_type>(not_a_number());
+ }
+ if(rhs != 0)
+ {
+ return mult_div_specials(rhs);
+ }
+ else { // let divide by zero blow itself up
+ return int_adapter<int_type>(value_ % rhs.value_);
+ }
+ }
+ return int_adapter<int_type>(value_ % rhs.value_);
+ }
+ /*! Provided for cases when automatic conversion from
+ * 'int' to 'int_adapter' causes incorrect results. */
+ int_adapter operator%(const int rhs) const
+ {
+ if(is_special() && rhs != 0)
+ {
+ return mult_div_specials(rhs);
+ }
+ return int_adapter<int_type>(value_ % rhs);
+ }
+private:
+ int_type value_;
+
+ //! returns -1, 0, 1, or 2 if 'this' is <, ==, >, or 'nan comparison' rhs
+ int compare(const int_adapter& rhs)const
+ {
+ if(this->is_special() || rhs.is_special())
+ {
+ if(this->is_nan() || rhs.is_nan()) {
+ if(this->is_nan() && rhs.is_nan()) {
+ return 0; // equal
+ }
+ else {
+ return 2; // nan
+ }
+ }
+ if((is_neg_inf(value_) && !is_neg_inf(rhs.value_)) ||
+ (is_pos_inf(rhs.value_) && !is_pos_inf(value_)) )
+ {
+ return -1; // less than
+ }
+ if((is_pos_inf(value_) && !is_pos_inf(rhs.value_)) ||
+ (is_neg_inf(rhs.value_) && !is_neg_inf(value_)) ) {
+ return 1; // greater than
+ }
+ }
+ if(value_ < rhs.value_) return -1;
+ if(value_ > rhs.value_) return 1;
+ // implied-> if(value_ == rhs.value_)
+ return 0;
+ }
+ /* When multiplying and dividing with at least 1 special value
+ * very simmilar rules apply. In those cases where the rules
+ * are different, they are handled in the respective operator
+ * function. */
+ //! Assumes at least 'this' or 'rhs' is a special value
+ int_adapter mult_div_specials(const int_adapter& rhs)const
+ {
+ int min_value;
+ // quiets compiler warnings
+ bool is_signed = std::numeric_limits<int_type>::is_signed;
+ if(is_signed) {
+ min_value = 0;
+ }
+ else {
+ min_value = 1;// there is no zero with unsigned
+ }
+ if(this->is_nan() || rhs.is_nan()) {
+ return int_adapter<int_type>(not_a_number());
+ }
+ if((*this > 0 && rhs > 0) || (*this < min_value && rhs < min_value)) {
+ return int_adapter<int_type>(pos_infinity());
+ }
+ if((*this > 0 && rhs < min_value) || (*this < min_value && rhs > 0)) {
+ return int_adapter<int_type>(neg_infinity());
+ }
+ //implied -> if(this->value_ == 0 || rhs.value_ == 0)
+ return int_adapter<int_type>(not_a_number());
+ }
+ /* Overloaded function necessary because of special
+ * situation where int_adapter is instantiated with
+ * 'unsigned' and func is called with negative int.
+ * It would produce incorrect results since 'unsigned'
+ * wraps around when initialized with a negative value */
+ //! Assumes 'this' is a special value
+ int_adapter mult_div_specials(const int& rhs) const
+ {
+ int min_value;
+ // quiets compiler warnings
+ bool is_signed = std::numeric_limits<int_type>::is_signed;
+ if(is_signed) {
+ min_value = 0;
+ }
+ else {
+ min_value = 1;// there is no zero with unsigned
+ }
+ if(this->is_nan()) {
+ return int_adapter<int_type>(not_a_number());
+ }
+ if((*this > 0 && rhs > 0) || (*this < min_value && rhs < 0)) {
+ return int_adapter<int_type>(pos_infinity());
+ }
+ if((*this > 0 && rhs < 0) || (*this < min_value && rhs > 0)) {
+ return int_adapter<int_type>(neg_infinity());
+ }
+ //implied -> if(this->value_ == 0 || rhs.value_ == 0)
+ return int_adapter<int_type>(not_a_number());
+ }
+
+};
+
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+ /*! Expected output is either a numeric representation
+ * or a special values representation.<BR>
+ * Ex. "12", "+infinity", "not-a-number", etc. */
+ //template<class charT = char, class traits = std::traits<charT>, typename int_type>
+ template<class charT, class traits, typename int_type>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const int_adapter<int_type>& ia)
+ {
+ if(ia.is_special()) {
+ // switch copied from date_names_put.hpp
+ switch(ia.as_special())
+ {
+ case not_a_date_time:
+ os << "not-a-number";
+ break;
+ case pos_infin:
+ os << "+infinity";
+ break;
+ case neg_infin:
+ os << "-infinity";
+ break;
+ default:
+ os << "";
+ }
+ }
+ else {
+ os << ia.as_number();
+ }
+ return os;
+ }
+#endif
+
+
+} } //namespace date_time
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/iso_format.hpp b/3rdParty/Boost/boost/date_time/iso_format.hpp
new file mode 100644
index 0000000..8262fa2
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/iso_format.hpp
@@ -0,0 +1,303 @@
+#ifndef ISO_FORMAT_HPP___
+#define ISO_FORMAT_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/parse_format_base.hpp"
+
+namespace boost {
+namespace date_time {
+
+//! Class to provide common iso formatting spec
+template<class charT>
+class iso_format_base {
+public:
+ //! Describe month format -- its an integer in iso format
+ static month_format_spec month_format()
+ {
+ return month_as_integer;
+ }
+
+ //! String used printed is date is invalid
+ static const charT* not_a_date()
+ {
+ return "not-a-date-time";
+ }
+ //! String used to for positive infinity value
+ static const charT* pos_infinity()
+ {
+ return "+infinity";
+ }
+ //! String used to for positive infinity value
+ static const charT* neg_infinity()
+ {
+ return "-infinity";
+ }
+
+ //! ISO char for a year -- used in durations
+ static charT year_sep_char()
+ {
+ return 'Y';
+ }
+ //! ISO char for a month
+ static charT month_sep_char()
+ {
+ return '-';
+ }
+ //! ISO char for a day
+ static charT day_sep_char()
+ {
+ return '-';
+ }
+ //! char for minute
+ static charT hour_sep_char()
+ {
+ return ':';
+ }
+ //! char for minute
+ static charT minute_sep_char()
+ {
+ return ':';
+ }
+ //! char for second
+ static charT second_sep_char()
+ {
+ return ':';
+ }
+ //! ISO char for a period
+ static charT period_start_char()
+ {
+ return 'P';
+ }
+ //! Used in time in mixed strings to set start of time
+ static charT time_start_char()
+ {
+ return 'T';
+ }
+
+ //! Used in mixed strings to identify start of a week number
+ static charT week_start_char()
+ {
+ return 'W';
+ }
+
+ //! Separators for periods
+ static charT period_sep_char()
+ {
+ return '/';
+ }
+ //! Separator for hh:mm:ss
+ static charT time_sep_char()
+ {
+ return ':';
+ }
+ //! Preferred Separator for hh:mm:ss,decimal_fraction
+ static charT fractional_time_sep_char()
+ {
+ return ',';
+ }
+
+ static bool is_component_sep(charT sep)
+ {
+ switch(sep) {
+ case 'H':
+ case 'M':
+ case 'S':
+ case 'W':
+ case 'T':
+ case 'Y':
+ case 'D':return true;
+ default:
+ return false;
+ }
+ }
+
+ static bool is_fractional_time_sep(charT sep)
+ {
+ switch(sep) {
+ case ',':
+ case '.': return true;
+ default: return false;
+ }
+ }
+ static bool is_timezone_sep(charT sep)
+ {
+ switch(sep) {
+ case '+':
+ case '-': return true;
+ default: return false;
+ }
+ }
+ static charT element_sep_char()
+ {
+ return '-';
+ }
+
+};
+
+#ifndef BOOST_NO_STD_WSTRING
+
+//! Class to provide common iso formatting spec
+template<>
+class iso_format_base<wchar_t> {
+public:
+ //! Describe month format -- its an integer in iso format
+ static month_format_spec month_format()
+ {
+ return month_as_integer;
+ }
+
+ //! String used printed is date is invalid
+ static const wchar_t* not_a_date()
+ {
+ return L"not-a-date-time";
+ }
+ //! String used to for positive infinity value
+ static const wchar_t* pos_infinity()
+ {
+ return L"+infinity";
+ }
+ //! String used to for positive infinity value
+ static const wchar_t* neg_infinity()
+ {
+ return L"-infinity";
+ }
+
+ //! ISO char for a year -- used in durations
+ static wchar_t year_sep_char()
+ {
+ return 'Y';
+ }
+ //! ISO char for a month
+ static wchar_t month_sep_char()
+ {
+ return '-';
+ }
+ //! ISO char for a day
+ static wchar_t day_sep_char()
+ {
+ return '-';
+ }
+ //! char for minute
+ static wchar_t hour_sep_char()
+ {
+ return ':';
+ }
+ //! char for minute
+ static wchar_t minute_sep_char()
+ {
+ return ':';
+ }
+ //! char for second
+ static wchar_t second_sep_char()
+ {
+ return ':';
+ }
+ //! ISO char for a period
+ static wchar_t period_start_char()
+ {
+ return 'P';
+ }
+ //! Used in time in mixed strings to set start of time
+ static wchar_t time_start_char()
+ {
+ return 'T';
+ }
+
+ //! Used in mixed strings to identify start of a week number
+ static wchar_t week_start_char()
+ {
+ return 'W';
+ }
+
+ //! Separators for periods
+ static wchar_t period_sep_char()
+ {
+ return '/';
+ }
+ //! Separator for hh:mm:ss
+ static wchar_t time_sep_char()
+ {
+ return ':';
+ }
+ //! Preferred Separator for hh:mm:ss,decimal_fraction
+ static wchar_t fractional_time_sep_char()
+ {
+ return ',';
+ }
+
+ static bool is_component_sep(wchar_t sep)
+ {
+ switch(sep) {
+ case 'H':
+ case 'M':
+ case 'S':
+ case 'W':
+ case 'T':
+ case 'Y':
+ case 'D':return true;
+ default:
+ return false;
+ }
+ }
+
+ static bool is_fractional_time_sep(wchar_t sep)
+ {
+ switch(sep) {
+ case ',':
+ case '.': return true;
+ default: return false;
+ }
+ }
+ static bool is_timezone_sep(wchar_t sep)
+ {
+ switch(sep) {
+ case '+':
+ case '-': return true;
+ default: return false;
+ }
+ }
+ static wchar_t element_sep_char()
+ {
+ return '-';
+ }
+
+};
+
+#endif // BOOST_NO_STD_WSTRING
+
+//! Format description for iso normal YYYYMMDD
+template<class charT>
+class iso_format : public iso_format_base<charT> {
+public:
+ //! The ios standard format doesn't use char separators
+ static bool has_date_sep_chars()
+ {
+ return false;
+ }
+};
+
+//! Extended format uses seperators YYYY-MM-DD
+template<class charT>
+class iso_extended_format : public iso_format_base<charT> {
+public:
+ //! Extended format needs char separators
+ static bool has_date_sep_chars()
+ {
+ return true;
+ }
+
+};
+
+} } //namespace date_time
+
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/locale_config.hpp b/3rdParty/Boost/boost/date_time/locale_config.hpp
new file mode 100644
index 0000000..d01e008
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/locale_config.hpp
@@ -0,0 +1,31 @@
+#ifndef DATE_TIME_LOCALE_CONFIG_HPP___
+#define DATE_TIME_LOCALE_CONFIG_HPP___
+
+/* Copyright (c) 2002-2006 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+// This file configures whether the library will support locales and hence
+// iostream based i/o. Even if a compiler has some support for locales,
+// any failure to be compatible gets the compiler on the exclusion list.
+//
+// At the moment this is defined for MSVC 6 and any compiler that
+// defines BOOST_NO_STD_LOCALE (gcc 2.95.x)
+
+#include "boost/config.hpp" //sets BOOST_NO_STD_LOCALE
+#include "boost/detail/workaround.hpp"
+
+//This file basically becomes a noop if locales are not properly supported
+#if (defined(BOOST_NO_STD_LOCALE) \
+ || (BOOST_WORKAROUND( BOOST_MSVC, < 1300)) \
+ || (BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x581 )) ) )
+#define BOOST_DATE_TIME_NO_LOCALE
+#endif
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/microsec_time_clock.hpp b/3rdParty/Boost/boost/date_time/microsec_time_clock.hpp
new file mode 100644
index 0000000..363af5e
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/microsec_time_clock.hpp
@@ -0,0 +1,127 @@
+#ifndef DATE_TIME_HIGHRES_TIME_CLOCK_HPP___
+#define DATE_TIME_HIGHRES_TIME_CLOCK_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-23 06:13:35 -0500 (Sun, 23 Nov 2008) $
+ */
+
+
+/*! @file microsec_time_clock.hpp
+ This file contains a high resolution time clock implementation.
+*/
+
+#include <boost/cstdint.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/c_time.hpp>
+#include <boost/date_time/time_clock.hpp>
+#include <boost/date_time/filetime_functions.hpp>
+
+#ifdef BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
+
+namespace boost {
+namespace date_time {
+
+ //! A clock providing microsecond level resolution
+ /*! A high precision clock that measures the local time
+ * at a resolution up to microseconds and adjusts to the
+ * resolution of the time system. For example, for the
+ * a library configuration with nano second resolution,
+ * the last 3 places of the fractional seconds will always
+ * be 000 since there are 1000 nano-seconds in a micro second.
+ */
+ template<class time_type>
+ class microsec_clock
+ {
+ private:
+ //! Type for the function used to convert time_t to tm
+ typedef std::tm* (*time_converter)(const std::time_t*, std::tm*);
+
+ public:
+ typedef typename time_type::date_type date_type;
+ typedef typename time_type::time_duration_type time_duration_type;
+ typedef typename time_duration_type::rep_type resolution_traits_type;
+
+ //! return a local time object for the given zone, based on computer clock
+ //JKG -- looks like we could rewrite this against universal_time
+ template<class time_zone_type>
+ static time_type local_time(shared_ptr<time_zone_type> tz_ptr)
+ {
+ typedef typename time_type::utc_time_type utc_time_type;
+ typedef second_clock<utc_time_type> second_clock;
+ // we'll need to know the utc_offset this machine has
+ // in order to get a utc_time_type set to utc
+ utc_time_type utc_time = second_clock::universal_time();
+ time_duration_type utc_offset = second_clock::local_time() - utc_time;
+ // use micro clock to get a local time with sub seconds
+ // and adjust it to get a true utc time reading with sub seconds
+ utc_time = microsec_clock<utc_time_type>::local_time() - utc_offset;
+ return time_type(utc_time, tz_ptr);
+ }
+
+ //! Returns the local time based on computer clock settings
+ static time_type local_time()
+ {
+ return create_time(&c_time::localtime);
+ }
+
+ //! Returns the UTC time based on computer settings
+ static time_type universal_time()
+ {
+ return create_time(&c_time::gmtime);
+ }
+
+ private:
+ static time_type create_time(time_converter converter)
+ {
+#ifdef BOOST_HAS_GETTIMEOFDAY
+ timeval tv;
+ gettimeofday(&tv, 0); //gettimeofday does not support TZ adjust on Linux.
+ std::time_t t = tv.tv_sec;
+ boost::uint32_t sub_sec = tv.tv_usec;
+#elif defined(BOOST_HAS_FTIME)
+ winapi::file_time ft;
+ winapi::get_system_time_as_file_time(ft);
+ uint64_t micros = winapi::file_time_to_microseconds(ft); // it will not wrap, since ft is the current time
+ // and cannot be before 1970-Jan-01
+ std::time_t t = static_cast<time_t>(micros / 1000000UL); // seconds since epoch
+ // microseconds -- static casts supress warnings
+ boost::uint32_t sub_sec = static_cast<boost::uint32_t>(micros % 1000000UL);
+#else
+#error Internal Boost.DateTime error: BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK is defined, however neither gettimeofday nor FILETIME support is detected.
+#endif
+
+ std::tm curr;
+ std::tm* curr_ptr = converter(&t, &curr);
+ date_type d(curr_ptr->tm_year + 1900,
+ curr_ptr->tm_mon + 1,
+ curr_ptr->tm_mday);
+
+ //The following line will adjust the fractional second tick in terms
+ //of the current time system. For example, if the time system
+ //doesn't support fractional seconds then res_adjust returns 0
+ //and all the fractional seconds return 0.
+ int adjust = static_cast< int >(resolution_traits_type::res_adjust() / 1000000);
+
+ time_duration_type td(curr_ptr->tm_hour,
+ curr_ptr->tm_min,
+ curr_ptr->tm_sec,
+ sub_sec * adjust);
+
+ return time_type(d,td);
+ }
+ };
+
+
+} } //namespace date_time
+
+#endif //BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/parse_format_base.hpp b/3rdParty/Boost/boost/date_time/parse_format_base.hpp
new file mode 100644
index 0000000..b17a5c8
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/parse_format_base.hpp
@@ -0,0 +1,29 @@
+#ifndef DATE_TIME_PARSE_FORMAT_BASE__
+#define DATE_TIME_PARSE_FORMAT_BASE__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+namespace boost {
+namespace date_time {
+
+ //! Enum for distinguishing parsing and formatting options
+ enum month_format_spec {month_as_integer, month_as_short_string,
+ month_as_long_string};
+
+ //! Enum for distinguishing the order of Month, Day, & Year.
+ /*! Enum for distinguishing the order in which Month, Day, & Year
+ * will appear in a date string */
+ enum ymd_order_spec {ymd_order_iso, //order is year-month-day
+ ymd_order_dmy, //day-month-year
+ ymd_order_us}; //order is month-day-year
+
+
+} }//namespace date_time
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/period.hpp b/3rdParty/Boost/boost/date_time/period.hpp
new file mode 100644
index 0000000..c67bc36
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/period.hpp
@@ -0,0 +1,377 @@
+#ifndef DATE_TIME_PERIOD_HPP___
+#define DATE_TIME_PERIOD_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+/*! \file period.hpp
+ This file contain the implementation of the period abstraction. This is
+ basically the same idea as a range. Although this class is intended for
+ use in the time library, it is pretty close to general enough for other
+ numeric uses.
+
+*/
+
+#include "boost/operators.hpp"
+
+
+namespace boost {
+namespace date_time {
+ //!Provides generalized period type useful in date-time systems
+ /*!This template uses a class to represent a time point within the period
+ and another class to represent a duration. As a result, this class is
+ not appropriate for use when the number and duration representation
+ are the same (eg: in the regular number domain).
+
+ A period can be specified by providing either the begining point and
+ a duration or the begining point and the end point( end is NOT part
+ of the period but 1 unit past it. A period will be "invalid" if either
+ end_point <= begin_point or the given duration is <= 0. Any valid period
+ will return false for is_null().
+
+ Zero length periods are also considered invalid. Zero length periods are
+ periods where the begining and end points are the same, or, the given
+ duration is zero. For a zero length period, the last point will be one
+ unit less than the begining point.
+
+ In the case that the begin and last are the same, the period has a
+ length of one unit.
+
+ The best way to handle periods is usually to provide a begining point and
+ a duration. So, day1 + 7 days is a week period which includes all of the
+ first day and 6 more days (eg: Sun to Sat).
+
+ */
+ template<class point_rep, class duration_rep>
+ class period : private
+ boost::less_than_comparable<period<point_rep, duration_rep>
+ , boost::equality_comparable< period<point_rep, duration_rep>
+ > >
+ {
+ public:
+ typedef point_rep point_type;
+ typedef duration_rep duration_type;
+
+ period(point_rep first_point, point_rep end_point);
+ period(point_rep first_point, duration_rep len);
+ point_rep begin() const;
+ point_rep end() const;
+ point_rep last() const;
+ duration_rep length() const;
+ bool is_null() const;
+ bool operator==(const period& rhs) const;
+ bool operator<(const period& rhs) const;
+ void shift(const duration_rep& d);
+ void expand(const duration_rep& d);
+ bool contains(const point_rep& point) const;
+ bool contains(const period& other) const;
+ bool intersects(const period& other) const;
+ bool is_adjacent(const period& other) const;
+ bool is_before(const point_rep& point) const;
+ bool is_after(const point_rep& point) const;
+ period intersection(const period& other) const;
+ period merge(const period& other) const;
+ period span(const period& other) const;
+ private:
+ point_rep begin_;
+ point_rep last_;
+ };
+
+ //! create a period from begin to last eg: [begin,end)
+ /*! If end <= begin then the period will be invalid
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ period<point_rep,duration_rep>::period(point_rep first_point,
+ point_rep end_point) :
+ begin_(first_point),
+ last_(end_point - duration_rep::unit())
+ {}
+
+ //! create a period as [begin, begin+len)
+ /*! If len is <= 0 then the period will be invalid
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ period<point_rep,duration_rep>::period(point_rep first_point, duration_rep len) :
+ begin_(first_point),
+ last_(first_point + len-duration_rep::unit())
+ { }
+
+
+ //! Return the first element in the period
+ template<class point_rep, class duration_rep>
+ inline
+ point_rep period<point_rep,duration_rep>::begin() const
+ {
+ return begin_;
+ }
+
+ //! Return one past the last element
+ template<class point_rep, class duration_rep>
+ inline
+ point_rep period<point_rep,duration_rep>::end() const
+ {
+ return last_ + duration_rep::unit();
+ }
+
+ //! Return the last item in the period
+ template<class point_rep, class duration_rep>
+ inline
+ point_rep period<point_rep,duration_rep>::last() const
+ {
+ return last_;
+ }
+
+ //! True if period is ill formed (length is zero or less)
+ template<class point_rep, class duration_rep>
+ inline
+ bool period<point_rep,duration_rep>::is_null() const
+ {
+ return end() <= begin_;
+ }
+
+ //! Return the length of the period
+ template<class point_rep, class duration_rep>
+ inline
+ duration_rep period<point_rep,duration_rep>::length() const
+ {
+ if(last_ < begin_){ // invalid period
+ return last_+duration_rep::unit() - begin_;
+ }
+ else{
+ return end() - begin_; // normal case
+ }
+ }
+
+ //! Equality operator
+ template<class point_rep, class duration_rep>
+ inline
+ bool period<point_rep,duration_rep>::operator==(const period& rhs) const
+ {
+ return ((begin_ == rhs.begin_) &&
+ (last_ == rhs.last_));
+ }
+
+ //! Strict as defined by rhs.last <= lhs.last
+ template<class point_rep, class duration_rep>
+ inline
+ bool period<point_rep,duration_rep>::operator<(const period& rhs) const
+ {
+ return (last_ < rhs.begin_);
+ }
+
+
+ //! Shift the start and end by the specified amount
+ template<class point_rep, class duration_rep>
+ inline
+ void period<point_rep,duration_rep>::shift(const duration_rep& d)
+ {
+ begin_ = begin_ + d;
+ last_ = last_ + d;
+ }
+
+ /** Expands the size of the period by the duration on both ends.
+ *
+ *So before expand
+ *@code
+ *
+ * [-------]
+ * ^ ^ ^ ^ ^ ^ ^
+ * 1 2 3 4 5 6 7
+ *
+ *@endcode
+ * After expand(2)
+ *@code
+ *
+ * [----------------------]
+ * ^ ^ ^ ^ ^ ^ ^
+ * 1 2 3 4 5 6 7
+ *
+ *@endcode
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ void period<point_rep,duration_rep>::expand(const duration_rep& d)
+ {
+ begin_ = begin_ - d;
+ last_ = last_ + d;
+ }
+
+ //! True if the point is inside the period, zero length periods contain no points
+ template<class point_rep, class duration_rep>
+ inline
+ bool period<point_rep,duration_rep>::contains(const point_rep& point) const
+ {
+ return ((point >= begin_) &&
+ (point <= last_));
+ }
+
+
+ //! True if this period fully contains (or equals) the other period
+ template<class point_rep, class duration_rep>
+ inline
+ bool period<point_rep,duration_rep>::contains(const period<point_rep,duration_rep>& other) const
+ {
+ return ((begin_ <= other.begin_) && (last_ >= other.last_));
+ }
+
+
+ //! True if periods are next to each other without a gap.
+ /* In the example below, p1 and p2 are adjacent, but p3 is not adjacent
+ * with either of p1 or p2.
+ *@code
+ * [-p1-)
+ * [-p2-)
+ * [-p3-)
+ *@endcode
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ bool
+ period<point_rep,duration_rep>::is_adjacent(const period<point_rep,duration_rep>& other) const
+ {
+ return (other.begin() == end() ||
+ begin_ == other.end());
+ }
+
+
+ //! True if all of the period is prior or t < start
+ /* In the example below only point 1 would evaluate to true.
+ *@code
+ * [---------])
+ * ^ ^ ^ ^ ^
+ * 1 2 3 4 5
+ *
+ *@endcode
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ bool
+ period<point_rep,duration_rep>::is_after(const point_rep& t) const
+ {
+ if (is_null())
+ {
+ return false; //null period isn't after
+ }
+
+ return t < begin_;
+ }
+
+ //! True if all of the period is prior to the passed point or end <= t
+ /* In the example below points 4 and 5 return true.
+ *@code
+ * [---------])
+ * ^ ^ ^ ^ ^
+ * 1 2 3 4 5
+ *
+ *@endcode
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ bool
+ period<point_rep,duration_rep>::is_before(const point_rep& t) const
+ {
+ if (is_null())
+ {
+ return false; //null period isn't before anything
+ }
+
+ return last_ < t;
+ }
+
+
+ //! True if the periods overlap in any way
+ /* In the example below p1 intersects with p2, p4, and p6.
+ *@code
+ * [---p1---)
+ * [---p2---)
+ * [---p3---)
+ * [---p4---)
+ * [-p5-)
+ * [-p6-)
+ *@endcode
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ bool period<point_rep,duration_rep>::intersects(const period<point_rep,duration_rep>& other) const
+ {
+ return ( contains(other.begin_) ||
+ other.contains(begin_) ||
+ ((other.begin_ < begin_) && (other.last_ >= begin_)));
+ }
+
+ //! Returns the period of intersection or invalid range no intersection
+ template<class point_rep, class duration_rep>
+ inline
+ period<point_rep,duration_rep>
+ period<point_rep,duration_rep>::intersection(const period<point_rep,duration_rep>& other) const
+ {
+ if (begin_ > other.begin_) {
+ if (last_ <= other.last_) { //case2
+ return *this;
+ }
+ //case 1
+ return period<point_rep,duration_rep>(begin_, other.end());
+ }
+ else {
+ if (last_ <= other.last_) { //case3
+ return period<point_rep,duration_rep>(other.begin_, this->end());
+ }
+ //case4
+ return other;
+ }
+ //unreachable
+ }
+
+ //! Returns the union of intersecting periods -- or null period
+ /*!
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ period<point_rep,duration_rep>
+ period<point_rep,duration_rep>::merge(const period<point_rep,duration_rep>& other) const
+ {
+ if (this->intersects(other)) {
+ if (begin_ < other.begin_) {
+ return period<point_rep,duration_rep>(begin_, last_ > other.last_ ? this->end() : other.end());
+ }
+
+ return period<point_rep,duration_rep>(other.begin_, last_ > other.last_ ? this->end() : other.end());
+
+ }
+ return period<point_rep,duration_rep>(begin_,begin_); // no intersect return null
+ }
+
+ //! Combine two periods with earliest start and latest end.
+ /*! Combines two periods and any gap between them such that
+ * start = min(p1.start, p2.start)
+ * end = max(p1.end , p2.end)
+ *@code
+ * [---p1---)
+ * [---p2---)
+ * result:
+ * [-----------p3----------)
+ *@endcode
+ */
+ template<class point_rep, class duration_rep>
+ inline
+ period<point_rep,duration_rep>
+ period<point_rep,duration_rep>::span(const period<point_rep,duration_rep>& other) const
+ {
+ point_rep start((begin_ < other.begin_) ? begin() : other.begin());
+ point_rep newend((last_ < other.last_) ? other.end() : this->end());
+ return period<point_rep,duration_rep>(start, newend);
+ }
+
+
+} } //namespace date_time
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/period_formatter.hpp b/3rdParty/Boost/boost/date_time/period_formatter.hpp
new file mode 100644
index 0000000..08082e1
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/period_formatter.hpp
@@ -0,0 +1,196 @@
+
+#ifndef DATETIME_PERIOD_FORMATTER_HPP___
+#define DATETIME_PERIOD_FORMATTER_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+
+namespace boost { namespace date_time {
+
+
+ //! Not a facet, but a class used to specify and control period formats
+ /*! Provides settings for the following:
+ * - period_separator -- default '/'
+ * - period_open_start_delimeter -- default '['
+ * - period_open_range_end_delimeter -- default ')'
+ * - period_closed_range_end_delimeter -- default ']'
+ * - display_as_open_range, display_as_closed_range -- default closed_range
+ *
+ * Thus the default formatting for a period is as follows:
+ *@code
+ * [period.start()/period.last()]
+ *@endcode
+ * So for a typical date_period this would be
+ *@code
+ * [2004-Jan-04/2004-Feb-01]
+ *@endcode
+ * where the date formatting is controlled by the date facet
+ */
+ template <class CharT, class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class period_formatter {
+ public:
+ typedef std::basic_string<CharT> string_type;
+ typedef CharT char_type;
+ typedef typename std::basic_string<char_type>::const_iterator const_itr_type;
+ typedef std::vector<std::basic_string<CharT> > collection_type;
+
+ static const char_type default_period_separator[2];
+ static const char_type default_period_start_delimeter[2];
+ static const char_type default_period_open_range_end_delimeter[2];
+ static const char_type default_period_closed_range_end_delimeter[2];
+
+ enum range_display_options { AS_OPEN_RANGE, AS_CLOSED_RANGE };
+
+ //! Constructor that sets up period formatter options -- default should suffice most cases.
+ period_formatter(range_display_options range_option_in = AS_CLOSED_RANGE,
+ const char_type* const period_separator = default_period_separator,
+ const char_type* const period_start_delimeter = default_period_start_delimeter,
+ const char_type* const period_open_range_end_delimeter = default_period_open_range_end_delimeter,
+ const char_type* const period_closed_range_end_delimeter = default_period_closed_range_end_delimeter) :
+ m_range_option(range_option_in),
+ m_period_separator(period_separator),
+ m_period_start_delimeter(period_start_delimeter),
+ m_open_range_end_delimeter(period_open_range_end_delimeter),
+ m_closed_range_end_delimeter(period_closed_range_end_delimeter)
+ {}
+
+ //! Puts the characters between period elements into stream -- default is /
+ OutItrT put_period_separator(OutItrT& oitr) const
+ {
+ const_itr_type ci = m_period_separator.begin();
+ while (ci != m_period_separator.end()) {
+ *oitr = *ci;
+ ci++;
+ }
+ return oitr;
+ }
+
+ //! Puts the period start characters into stream -- default is [
+ OutItrT put_period_start_delimeter(OutItrT& oitr) const
+ {
+ const_itr_type ci = m_period_start_delimeter.begin();
+ while (ci != m_period_start_delimeter.end()) {
+ *oitr = *ci;
+ ci++;
+ }
+ return oitr;
+ }
+
+ //! Puts the period end characters into stream as controled by open/closed range setting.
+ OutItrT put_period_end_delimeter(OutItrT& oitr) const
+ {
+
+ const_itr_type ci, end;
+ if (m_range_option == AS_OPEN_RANGE) {
+ ci = m_open_range_end_delimeter.begin();
+ end = m_open_range_end_delimeter.end();
+ }
+ else {
+ ci = m_closed_range_end_delimeter.begin();
+ end = m_closed_range_end_delimeter.end();
+ }
+ while (ci != end) {
+ *oitr = *ci;
+ ci++;
+ }
+ return oitr;
+ }
+
+ range_display_options range_option() const
+ {
+ return m_range_option;
+ }
+
+ //! Reset the range_option control
+ void
+ range_option(range_display_options option) const
+ {
+ m_range_option = option;
+ }
+ void delimiter_strings(const string_type& separator,
+ const string_type& start_delim,
+ const string_type& open_end_delim,
+ const string_type& closed_end_delim)
+ {
+ m_period_separator;
+ m_period_start_delimeter;
+ m_open_range_end_delimeter;
+ m_closed_range_end_delimeter;
+ }
+
+
+ //! Generic code to output a period -- no matter the period type.
+ /*! This generic code will output any period using a facet to
+ * to output the 'elements'. For example, in the case of a date_period
+ * the elements will be instances of a date which will be formatted
+ * according the to setup in the passed facet parameter.
+ *
+ * The steps for formatting a period are always the same:
+ * - put the start delimiter
+ * - put start element
+ * - put the separator
+ * - put either last or end element depending on range settings
+ * - put end delimeter depending on range settings
+ *
+ * Thus for a typical date period the result might look like this:
+ *@code
+ *
+ * [March 01, 2004/June 07, 2004] <-- closed range
+ * [March 01, 2004/June 08, 2004) <-- open range
+ *
+ *@endcode
+ */
+ template<class period_type, class facet_type>
+ OutItrT put_period(OutItrT next,
+ std::ios_base& a_ios,
+ char_type a_fill,
+ const period_type& p,
+ const facet_type& facet) const {
+ put_period_start_delimeter(next);
+ next = facet.put(next, a_ios, a_fill, p.begin());
+ put_period_separator(next);
+ if (m_range_option == AS_CLOSED_RANGE) {
+ facet.put(next, a_ios, a_fill, p.last());
+ }
+ else {
+ facet.put(next, a_ios, a_fill, p.end());
+ }
+ put_period_end_delimeter(next);
+ return next;
+ }
+
+
+ private:
+ range_display_options m_range_option;
+ string_type m_period_separator;
+ string_type m_period_start_delimeter;
+ string_type m_open_range_end_delimeter;
+ string_type m_closed_range_end_delimeter;
+ };
+
+ template <class CharT, class OutItrT>
+ const typename period_formatter<CharT, OutItrT>::char_type
+ period_formatter<CharT, OutItrT>::default_period_separator[2] = {'/'};
+
+ template <class CharT, class OutItrT>
+ const typename period_formatter<CharT, OutItrT>::char_type
+ period_formatter<CharT, OutItrT>::default_period_start_delimeter[2] = {'['};
+
+ template <class CharT, class OutItrT>
+ const typename period_formatter<CharT, OutItrT>::char_type
+ period_formatter<CharT, OutItrT>::default_period_open_range_end_delimeter[2] = {')'};
+
+ template <class CharT, class OutItrT>
+ const typename period_formatter<CharT, OutItrT>::char_type
+ period_formatter<CharT, OutItrT>::default_period_closed_range_end_delimeter[2] = {']'};
+
+ } } //namespace boost::date_time
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/period_parser.hpp b/3rdParty/Boost/boost/date_time/period_parser.hpp
new file mode 100644
index 0000000..9cd57e1
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/period_parser.hpp
@@ -0,0 +1,198 @@
+
+#ifndef DATETIME_PERIOD_PARSER_HPP___
+#define DATETIME_PERIOD_PARSER_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-13 15:10:23 -0500 (Thu, 13 Nov 2008) $
+ */
+
+#include <boost/throw_exception.hpp>
+#include <boost/date_time/string_parse_tree.hpp>
+#include <boost/date_time/string_convert.hpp>
+
+
+namespace boost { namespace date_time {
+
+
+ //! Not a facet, but a class used to specify and control period parsing
+ /*! Provides settings for the following:
+ * - period_separator -- default '/'
+ * - period_open_start_delimeter -- default '['
+ * - period_open_range_end_delimeter -- default ')'
+ * - period_closed_range_end_delimeter -- default ']'
+ * - display_as_open_range, display_as_closed_range -- default closed_range
+ *
+ * For a typical date_period, the contents of the input stream would be
+ *@code
+ * [2004-Jan-04/2004-Feb-01]
+ *@endcode
+ * where the date format is controlled by the date facet
+ */
+ template<class date_type, typename CharT>
+ class period_parser {
+ public:
+ typedef std::basic_string<CharT> string_type;
+ typedef CharT char_type;
+ //typedef typename std::basic_string<char_type>::const_iterator const_itr_type;
+ typedef std::istreambuf_iterator<CharT> stream_itr_type;
+ typedef string_parse_tree<CharT> parse_tree_type;
+ typedef typename parse_tree_type::parse_match_result_type match_results;
+ typedef std::vector<std::basic_string<CharT> > collection_type;
+
+ static const char_type default_period_separator[2];
+ static const char_type default_period_start_delimeter[2];
+ static const char_type default_period_open_range_end_delimeter[2];
+ static const char_type default_period_closed_range_end_delimeter[2];
+
+ enum period_range_option { AS_OPEN_RANGE, AS_CLOSED_RANGE };
+
+ //! Constructor that sets up period parser options
+ period_parser(period_range_option range_opt = AS_CLOSED_RANGE,
+ const char_type* const period_separator = default_period_separator,
+ const char_type* const period_start_delimeter = default_period_start_delimeter,
+ const char_type* const period_open_range_end_delimeter = default_period_open_range_end_delimeter,
+ const char_type* const period_closed_range_end_delimeter = default_period_closed_range_end_delimeter)
+ : m_range_option(range_opt)
+ {
+ delimiters.push_back(string_type(period_separator));
+ delimiters.push_back(string_type(period_start_delimeter));
+ delimiters.push_back(string_type(period_open_range_end_delimeter));
+ delimiters.push_back(string_type(period_closed_range_end_delimeter));
+ }
+
+ period_parser(const period_parser<date_type,CharT>& p_parser)
+ {
+ this->delimiters = p_parser.delimiters;
+ this->m_range_option = p_parser.m_range_option;
+ }
+
+ period_range_option range_option() const
+ {
+ return m_range_option;
+ }
+ void range_option(period_range_option option)
+ {
+ m_range_option = option;
+ }
+ collection_type delimiter_strings() const
+ {
+ return delimiters;
+ }
+ void delimiter_strings(const string_type& separator,
+ const string_type& start_delim,
+ const string_type& open_end_delim,
+ const string_type& closed_end_delim)
+ {
+ delimiters.clear();
+ delimiters.push_back(separator);
+ delimiters.push_back(start_delim);
+ delimiters.push_back(open_end_delim);
+ delimiters.push_back(closed_end_delim);
+ }
+
+ //! Generic code to parse a period -- no matter the period type.
+ /*! This generic code will parse any period using a facet to
+ * to get the 'elements'. For example, in the case of a date_period
+ * the elements will be instances of a date which will be parsed
+ * according the to setup in the passed facet parameter.
+ *
+ * The steps for parsing a period are always the same:
+ * - consume the start delimiter
+ * - get start element
+ * - consume the separator
+ * - get either last or end element depending on range settings
+ * - consume the end delimeter depending on range settings
+ *
+ * Thus for a typical date period the contents of the input stream
+ * might look like this:
+ *@code
+ *
+ * [March 01, 2004/June 07, 2004] <-- closed range
+ * [March 01, 2004/June 08, 2004) <-- open range
+ *
+ *@endcode
+ */
+ template<class period_type, class duration_type, class facet_type>
+ period_type get_period(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ std::ios_base& a_ios,
+ const period_type& /* p */,
+ const duration_type& dur_unit,
+ const facet_type& facet) const
+ {
+ // skip leading whitespace
+ while(std::isspace(*sitr) && sitr != stream_end) { ++sitr; }
+
+ typedef typename period_type::point_type point_type;
+ point_type p1(not_a_date_time), p2(not_a_date_time);
+
+
+ consume_delim(sitr, stream_end, delimiters[START]); // start delim
+ facet.get(sitr, stream_end, a_ios, p1); // first point
+ consume_delim(sitr, stream_end, delimiters[SEPARATOR]); // separator
+ facet.get(sitr, stream_end, a_ios, p2); // second point
+
+ // period construction parameters are always open range [begin, end)
+ if (m_range_option == AS_CLOSED_RANGE) {
+ consume_delim(sitr, stream_end, delimiters[CLOSED_END]);// end delim
+ // add 1 duration unit to p2 to make range open
+ p2 += dur_unit;
+ }
+ else {
+ consume_delim(sitr, stream_end, delimiters[OPEN_END]); // end delim
+ }
+
+ return period_type(p1, p2);
+ }
+
+ private:
+ collection_type delimiters;
+ period_range_option m_range_option;
+
+ enum delim_ids { SEPARATOR, START, OPEN_END, CLOSED_END };
+
+ //! throws ios_base::failure if delimiter and parsed data do not match
+ void consume_delim(stream_itr_type& sitr,
+ stream_itr_type& stream_end,
+ const string_type& delim) const
+ {
+ /* string_parse_tree will not parse a string of punctuation characters
+ * without knowing exactly how many characters to process
+ * Ex [2000. Will not parse out the '[' string without knowing
+ * to process only one character. By using length of the delimiter
+ * string we can safely iterate past it. */
+ string_type s;
+ for(unsigned int i = 0; i < delim.length() && sitr != stream_end; ++i) {
+ s += *sitr;
+ ++sitr;
+ }
+ if(s != delim) {
+ boost::throw_exception(std::ios_base::failure("Parse failed. Expected '"
+ + convert_string_type<char_type,char>(delim) + "' but found '" + convert_string_type<char_type,char>(s) + "'"));
+ }
+ }
+ };
+
+ template <class date_type, class char_type>
+ const typename period_parser<date_type, char_type>::char_type
+ period_parser<date_type, char_type>::default_period_separator[2] = {'/'};
+
+ template <class date_type, class char_type>
+ const typename period_parser<date_type, char_type>::char_type
+ period_parser<date_type, char_type>::default_period_start_delimeter[2] = {'['};
+
+ template <class date_type, class char_type>
+ const typename period_parser<date_type, char_type>::char_type
+ period_parser<date_type, char_type>::default_period_open_range_end_delimeter[2] = {')'};
+
+ template <class date_type, class char_type>
+ const typename period_parser<date_type, char_type>::char_type
+ period_parser<date_type, char_type>::default_period_closed_range_end_delimeter[2] = {']'};
+
+ } } //namespace boost::date_time
+
+#endif // DATETIME_PERIOD_PARSER_HPP___
diff --git a/3rdParty/Boost/boost/date_time/posix_time/conversion.hpp b/3rdParty/Boost/boost/date_time/posix_time/conversion.hpp
new file mode 100644
index 0000000..82f8dca
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/conversion.hpp
@@ -0,0 +1,97 @@
+#ifndef POSIX_TIME_CONVERSION_HPP___
+#define POSIX_TIME_CONVERSION_HPP___
+
+/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include "boost/date_time/posix_time/ptime.hpp"
+#include "boost/date_time/posix_time/posix_time_duration.hpp"
+#include "boost/date_time/filetime_functions.hpp"
+#include "boost/date_time/c_time.hpp"
+#include "boost/date_time/gregorian/conversion.hpp"
+
+namespace boost {
+
+namespace posix_time {
+
+
+ //! Function that converts a time_t into a ptime.
+ inline
+ ptime from_time_t(std::time_t t)
+ {
+ ptime start(gregorian::date(1970,1,1));
+ return start + seconds(static_cast<long>(t));
+ }
+
+ //! Convert a time to a tm structure truncating any fractional seconds
+ inline
+ std::tm to_tm(const boost::posix_time::ptime& t) {
+ std::tm timetm = boost::gregorian::to_tm(t.date());
+ boost::posix_time::time_duration td = t.time_of_day();
+ timetm.tm_hour = td.hours();
+ timetm.tm_min = td.minutes();
+ timetm.tm_sec = td.seconds();
+ timetm.tm_isdst = -1; // -1 used when dst info is unknown
+ return timetm;
+ }
+ //! Convert a time_duration to a tm structure truncating any fractional seconds and zeroing fields for date components
+ inline
+ std::tm to_tm(const boost::posix_time::time_duration& td) {
+ std::tm timetm;
+ timetm.tm_year = 0;
+ timetm.tm_mon = 0;
+ timetm.tm_mday = 0;
+ timetm.tm_wday = 0;
+ timetm.tm_yday = 0;
+
+ timetm.tm_hour = date_time::absolute_value(td.hours());
+ timetm.tm_min = date_time::absolute_value(td.minutes());
+ timetm.tm_sec = date_time::absolute_value(td.seconds());
+ timetm.tm_isdst = -1; // -1 used when dst info is unknown
+ return timetm;
+ }
+
+ //! Convert a tm struct to a ptime ignoring is_dst flag
+ inline
+ ptime ptime_from_tm(const std::tm& timetm) {
+ boost::gregorian::date d = boost::gregorian::date_from_tm(timetm);
+ return ptime(d, time_duration(timetm.tm_hour, timetm.tm_min, timetm.tm_sec));
+ }
+
+
+#if defined(BOOST_HAS_FTIME)
+
+ //! Function to create a time object from an initialized FILETIME struct.
+ /*! Function to create a time object from an initialized FILETIME struct.
+ * A FILETIME struct holds 100-nanosecond units (0.0000001). When
+ * built with microsecond resolution the FILETIME's sub second value
+ * will be truncated. Nanosecond resolution has no truncation.
+ *
+ * \note FILETIME is part of the Win32 API, so it is not portable to non-windows
+ * platforms.
+ *
+ * \note The function is templated on the FILETIME type, so that
+ * it can be used with both native FILETIME and the ad-hoc
+ * boost::date_time::winapi::file_time type.
+ */
+ template< typename TimeT, typename FileTimeT >
+ inline
+ TimeT from_ftime(const FileTimeT& ft)
+ {
+ return boost::date_time::time_from_ftime<TimeT>(ft);
+ }
+
+#endif // BOOST_HAS_FTIME
+
+} } //namespace boost::posix_time
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/date_duration_operators.hpp b/3rdParty/Boost/boost/date_time/posix_time/date_duration_operators.hpp
new file mode 100644
index 0000000..e6899ba
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/date_duration_operators.hpp
@@ -0,0 +1,114 @@
+#ifndef DATE_DURATION_OPERATORS_HPP___
+#define DATE_DURATION_OPERATORS_HPP___
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or
+ * http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/greg_duration_types.hpp"
+#include "boost/date_time/posix_time/ptime.hpp"
+
+namespace boost {
+namespace posix_time {
+
+ /*!@file date_duration_operators.hpp Operators for ptime and
+ * optional gregorian types. Operators use snap-to-end-of-month behavior.
+ * Further details on this behavior can be found in reference for
+ * date_time/date_duration_types.hpp and documentation for
+ * month and year iterators.
+ */
+
+
+ /*! Adds a months object and a ptime. Result will be same
+ * day-of-month as ptime unless original day was the last day of month.
+ * see date_time::months_duration for more details */
+ inline
+ ptime
+ operator+(const ptime& t, const boost::gregorian::months& m)
+ {
+ return t + m.get_offset(t.date());
+ }
+
+ /*! Adds a months object to a ptime. Result will be same
+ * day-of-month as ptime unless original day was the last day of month.
+ * see date_time::months_duration for more details */
+ inline
+ ptime
+ operator+=(ptime& t, const boost::gregorian::months& m)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return t += m.get_offset(t.date());
+ }
+
+ /*! Subtracts a months object and a ptime. Result will be same
+ * day-of-month as ptime unless original day was the last day of month.
+ * see date_time::months_duration for more details */
+ inline
+ ptime
+ operator-(const ptime& t, const boost::gregorian::months& m)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return t + m.get_neg_offset(t.date());
+ }
+
+ /*! Subtracts a months object from a ptime. Result will be same
+ * day-of-month as ptime unless original day was the last day of month.
+ * see date_time::months_duration for more details */
+ inline
+ ptime
+ operator-=(ptime& t, const boost::gregorian::months& m)
+ {
+ return t += m.get_neg_offset(t.date());
+ }
+
+ // ptime & years
+
+ /*! Adds a years object and a ptime. Result will be same
+ * month and day-of-month as ptime unless original day was the
+ * last day of month. see date_time::years_duration for more details */
+ inline
+ ptime
+ operator+(const ptime& t, const boost::gregorian::years& y)
+ {
+ return t + y.get_offset(t.date());
+ }
+
+ /*! Adds a years object to a ptime. Result will be same
+ * month and day-of-month as ptime unless original day was the
+ * last day of month. see date_time::years_duration for more details */
+ inline
+ ptime
+ operator+=(ptime& t, const boost::gregorian::years& y)
+ {
+ return t += y.get_offset(t.date());
+ }
+
+ /*! Subtracts a years object and a ptime. Result will be same
+ * month and day-of-month as ptime unless original day was the
+ * last day of month. see date_time::years_duration for more details */
+ inline
+ ptime
+ operator-(const ptime& t, const boost::gregorian::years& y)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return t + y.get_neg_offset(t.date());
+ }
+
+ /*! Subtracts a years object from a ptime. Result will be same
+ * month and day-of-month as ptime unless original day was the
+ * last day of month. see date_time::years_duration for more details */
+ inline
+ ptime
+ operator-=(ptime& t, const boost::gregorian::years& y)
+ {
+ // get_neg_offset returns a negative duration, so we add
+ return t += y.get_neg_offset(t.date());
+ }
+
+}} // namespaces
+
+#endif // DATE_DURATION_OPERATORS_HPP___
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time.hpp
new file mode 100644
index 0000000..4e9294c
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time.hpp
@@ -0,0 +1,39 @@
+#ifndef POSIX_TIME_HPP___
+#define POSIX_TIME_HPP___
+
+/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+/*!@file posix_time.hpp Global header file to get all of posix time types
+ */
+
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/posix_time/ptime.hpp"
+#if defined(BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES)
+#include "boost/date_time/posix_time/date_duration_operators.hpp"
+#endif
+
+// output functions
+#if defined(BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS)
+#include "boost/date_time/posix_time/time_formatters_limited.hpp"
+#else
+#include "boost/date_time/posix_time/time_formatters.hpp"
+#endif // BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS
+
+// streaming operators
+#if defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+#include "boost/date_time/posix_time/posix_time_legacy_io.hpp"
+#else
+#include "boost/date_time/posix_time/posix_time_io.hpp"
+#endif // USE_DATE_TIME_PRE_1_33_FACET_IO
+
+#include "boost/date_time/posix_time/time_parsers.hpp"
+#include "boost/date_time/posix_time/conversion.hpp"
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time_config.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time_config.hpp
new file mode 100644
index 0000000..c40a15c
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time_config.hpp
@@ -0,0 +1,178 @@
+#ifndef POSIX_TIME_CONFIG_HPP___
+#define POSIX_TIME_CONFIG_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-10-13 05:00:03 -0400 (Mon, 13 Oct 2008) $
+ */
+
+#include "boost/date_time/time_duration.hpp"
+#include "boost/date_time/time_resolution_traits.hpp"
+#include "boost/date_time/gregorian/gregorian_types.hpp"
+#include "boost/date_time/wrapping_int.hpp"
+#include "boost/limits.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/cstdint.hpp"
+#include <boost/config/no_tr1/cmath.hpp>
+#include <cstdlib> //for MCW 7.2 std::abs(long long)
+
+namespace boost {
+namespace posix_time {
+
+//Remove the following line if you want 64 bit millisecond resolution time
+//#define BOOST_GDTL_POSIX_TIME_STD_CONFIG
+
+#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
+ // set up conditional test compilations
+#define BOOST_DATE_TIME_HAS_MILLISECONDS
+#define BOOST_DATE_TIME_HAS_MICROSECONDS
+#define BOOST_DATE_TIME_HAS_NANOSECONDS
+ typedef date_time::time_resolution_traits<boost::date_time::time_resolution_traits_adapted64_impl, boost::date_time::nano,
+ 1000000000, 9 > time_res_traits;
+#else
+ // set up conditional test compilations
+#define BOOST_DATE_TIME_HAS_MILLISECONDS
+#define BOOST_DATE_TIME_HAS_MICROSECONDS
+#undef BOOST_DATE_TIME_HAS_NANOSECONDS
+ typedef date_time::time_resolution_traits<
+ boost::date_time::time_resolution_traits_adapted64_impl, boost::date_time::micro,
+ 1000000, 6 > time_res_traits;
+
+
+// #undef BOOST_DATE_TIME_HAS_MILLISECONDS
+// #undef BOOST_DATE_TIME_HAS_MICROSECONDS
+// #undef BOOST_DATE_TIME_HAS_NANOSECONDS
+// typedef date_time::time_resolution_traits<boost::int64_t, boost::date_time::tenth,
+// 10, 0 > time_res_traits;
+
+#endif
+
+
+ //! Base time duration type
+ /*! \ingroup time_basics
+ */
+ class time_duration :
+ public date_time::time_duration<time_duration, time_res_traits>
+ {
+ public:
+ typedef time_res_traits rep_type;
+ typedef time_res_traits::day_type day_type;
+ typedef time_res_traits::hour_type hour_type;
+ typedef time_res_traits::min_type min_type;
+ typedef time_res_traits::sec_type sec_type;
+ typedef time_res_traits::fractional_seconds_type fractional_seconds_type;
+ typedef time_res_traits::tick_type tick_type;
+ typedef time_res_traits::impl_type impl_type;
+ time_duration(hour_type hour,
+ min_type min,
+ sec_type sec,
+ fractional_seconds_type fs=0) :
+ date_time::time_duration<time_duration, time_res_traits>(hour,min,sec,fs)
+ {}
+ time_duration() :
+ date_time::time_duration<time_duration, time_res_traits>(0,0,0)
+ {}
+ //! Construct from special_values
+ time_duration(boost::date_time::special_values sv) :
+ date_time::time_duration<time_duration, time_res_traits>(sv)
+ {}
+ //Give duration access to ticks constructor -- hide from users
+ friend class date_time::time_duration<time_duration, time_res_traits>;
+ private:
+ explicit time_duration(impl_type ticks) :
+ date_time::time_duration<time_duration, time_res_traits>(ticks)
+ {}
+ };
+
+#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
+
+ //! Simple implementation for the time rep
+ struct simple_time_rep
+ {
+ typedef gregorian::date date_type;
+ typedef time_duration time_duration_type;
+ simple_time_rep(date_type d, time_duration_type tod) :
+ day(d),
+ time_of_day(tod)
+ {
+ // make sure we have sane values for date & time
+ if(!day.is_special() && !time_of_day.is_special()){
+ if(time_of_day >= time_duration_type(24,0,0)) {
+ while(time_of_day >= time_duration_type(24,0,0)) {
+ day += date_type::duration_type(1);
+ time_of_day -= time_duration_type(24,0,0);
+ }
+ }
+ else if(time_of_day.is_negative()) {
+ while(time_of_day.is_negative()) {
+ day -= date_type::duration_type(1);
+ time_of_day += time_duration_type(24,0,0);
+ }
+ }
+ }
+ }
+ date_type day;
+ time_duration_type time_of_day;
+ bool is_special()const
+ {
+ return(is_pos_infinity() || is_neg_infinity() || is_not_a_date_time());
+ }
+ bool is_pos_infinity()const
+ {
+ return(day.is_pos_infinity() || time_of_day.is_pos_infinity());
+ }
+ bool is_neg_infinity()const
+ {
+ return(day.is_neg_infinity() || time_of_day.is_neg_infinity());
+ }
+ bool is_not_a_date_time()const
+ {
+ return(day.is_not_a_date() || time_of_day.is_not_a_date_time());
+ }
+ };
+
+ class posix_time_system_config
+ {
+ public:
+ typedef simple_time_rep time_rep_type;
+ typedef gregorian::date date_type;
+ typedef gregorian::date_duration date_duration_type;
+ typedef time_duration time_duration_type;
+ typedef time_res_traits::tick_type int_type;
+ typedef time_res_traits resolution_traits;
+#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) //help bad compilers
+#else
+ BOOST_STATIC_CONSTANT(boost::int64_t, tick_per_second = 1000000000);
+#endif
+ };
+
+#else
+
+ class millisec_posix_time_system_config
+ {
+ public:
+ typedef boost::int64_t time_rep_type;
+ //typedef time_res_traits::tick_type time_rep_type;
+ typedef gregorian::date date_type;
+ typedef gregorian::date_duration date_duration_type;
+ typedef time_duration time_duration_type;
+ typedef time_res_traits::tick_type int_type;
+ typedef time_res_traits::impl_type impl_type;
+ typedef time_res_traits resolution_traits;
+#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) //help bad compilers
+#else
+ BOOST_STATIC_CONSTANT(boost::int64_t, tick_per_second = 1000000);
+#endif
+ };
+
+#endif
+
+} }//namespace posix_time
+
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time_duration.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time_duration.hpp
new file mode 100644
index 0000000..db3b85f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time_duration.hpp
@@ -0,0 +1,82 @@
+#ifndef POSIX_TIME_DURATION_HPP___
+#define POSIX_TIME_DURATION_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/posix_time/posix_time_config.hpp"
+
+namespace boost {
+namespace posix_time {
+
+ //! Allows expression of durations as an hour count
+ /*! \ingroup time_basics
+ */
+ class hours : public time_duration
+ {
+ public:
+ explicit hours(long h) :
+ time_duration(h,0,0)
+ {}
+ };
+
+ //! Allows expression of durations as a minute count
+ /*! \ingroup time_basics
+ */
+ class minutes : public time_duration
+ {
+ public:
+ explicit minutes(long m) :
+ time_duration(0,m,0)
+ {}
+ };
+
+ //! Allows expression of durations as a seconds count
+ /*! \ingroup time_basics
+ */
+ class seconds : public time_duration
+ {
+ public:
+ explicit seconds(long s) :
+ time_duration(0,0,s)
+ {}
+ };
+
+
+ //! Allows expression of durations as milli seconds
+ /*! \ingroup time_basics
+ */
+ typedef date_time::subsecond_duration<time_duration,1000> millisec;
+ typedef date_time::subsecond_duration<time_duration,1000> milliseconds;
+
+ //! Allows expression of durations as micro seconds
+ /*! \ingroup time_basics
+ */
+ typedef date_time::subsecond_duration<time_duration,1000000> microsec;
+ typedef date_time::subsecond_duration<time_duration,1000000> microseconds;
+
+ //This is probably not needed anymore...
+#if defined(BOOST_DATE_TIME_HAS_NANOSECONDS)
+
+ //! Allows expression of durations as nano seconds
+ /*! \ingroup time_basics
+ */
+ typedef date_time::subsecond_duration<time_duration,1000000000> nanosec;
+ typedef date_time::subsecond_duration<time_duration,1000000000> nanoseconds;
+
+
+#endif
+
+
+
+
+} }//namespace posix_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time_io.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time_io.hpp
new file mode 100644
index 0000000..9a80737
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time_io.hpp
@@ -0,0 +1,239 @@
+#ifndef DATE_TIME_POSIX_TIME_IO_HPP__
+#define DATE_TIME_POSIX_TIME_IO_HPP__
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-13 14:05:31 -0500 (Thu, 13 Nov 2008) $
+ */
+
+#include <locale>
+#include <iostream>
+#include <iterator> // i/ostreambuf_iterator
+#include <boost/io/ios_state.hpp>
+#include <boost/date_time/time_facet.hpp>
+#include <boost/date_time/period_formatter.hpp>
+#include <boost/date_time/posix_time/ptime.hpp>
+#include <boost/date_time/posix_time/time_period.hpp>
+#include <boost/date_time/posix_time/posix_time_duration.hpp>
+#include <boost/date_time/posix_time/conversion.hpp> // to_tm will be needed in the facets
+
+namespace boost {
+namespace posix_time {
+
+
+ //! wptime_facet is depricated and will be phased out. use wtime_facet instead
+ //typedef boost::date_time::time_facet<ptime, wchar_t> wptime_facet;
+ //! ptime_facet is depricated and will be phased out. use time_facet instead
+ //typedef boost::date_time::time_facet<ptime, char> ptime_facet;
+
+ //! wptime_input_facet is depricated and will be phased out. use wtime_input_facet instead
+ //typedef boost::date_time::time_input_facet<ptime,wchar_t> wptime_input_facet;
+ //! ptime_input_facet is depricated and will be phased out. use time_input_facet instead
+ //typedef boost::date_time::time_input_facet<ptime,char> ptime_input_facet;
+
+ typedef boost::date_time::time_facet<ptime, wchar_t> wtime_facet;
+ typedef boost::date_time::time_facet<ptime, char> time_facet;
+
+ typedef boost::date_time::time_input_facet<ptime, wchar_t> wtime_input_facet;
+ typedef boost::date_time::time_input_facet<ptime, char> time_input_facet;
+
+ template <class CharT, class TraitsT>
+ inline
+ std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os,
+ const ptime& p) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::time_facet<ptime, CharT> custom_ptime_facet;
+ typedef std::time_put<CharT> std_ptime_facet;
+ std::ostreambuf_iterator<CharT> oitr(os);
+ if (std::has_facet<custom_ptime_facet>(os.getloc()))
+ std::use_facet<custom_ptime_facet>(os.getloc()).put(oitr, os, os.fill(), p);
+ else {
+ //instantiate a custom facet for dealing with times since the user
+ //has not put one in the stream so far. This is for efficiency
+ //since we would always need to reconstruct for every time period
+ //if the locale did not already exist. Of course this will be overridden
+ //if the user imbues as some later point.
+ custom_ptime_facet* f = new custom_ptime_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(oitr, os, os.fill(), p);
+ }
+ return os;
+ }
+
+ //! input operator for ptime
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, ptime& pt)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::time_input_facet<ptime, CharT> time_input_facet;
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<time_input_facet>(is.getloc())) {
+ std::use_facet<time_input_facet>(is.getloc()).get(sit, str_end, is, pt);
+ }
+ else {
+ time_input_facet* f = new time_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, pt);
+ }
+ }
+ catch(...) {
+ // mask tells us what exceptions are turned on
+ std::ios_base::iostate exception_mask = is.exceptions();
+ // if the user wants exceptions on failbit, we'll rethrow our
+ // date_time exception & set the failbit
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {} // ignore this one
+ throw; // rethrow original exception
+ }
+ else {
+ // if the user want's to fail quietly, we simply set the failbit
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ }
+ return is;
+ }
+
+
+ template <class CharT, class TraitsT>
+ inline
+ std::basic_ostream<CharT, TraitsT>&
+ operator<<(std::basic_ostream<CharT, TraitsT>& os,
+ const boost::posix_time::time_period& p) {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::time_facet<ptime, CharT> custom_ptime_facet;
+ typedef std::time_put<CharT> std_time_facet;
+ std::ostreambuf_iterator<CharT> oitr(os);
+ if (std::has_facet<custom_ptime_facet>(os.getloc())) {
+ std::use_facet<custom_ptime_facet>(os.getloc()).put(oitr, os, os.fill(), p);
+ }
+ else {
+ //instantiate a custom facet for dealing with periods since the user
+ //has not put one in the stream so far. This is for efficiency
+ //since we would always need to reconstruct for every time period
+ //if the local did not already exist. Of course this will be overridden
+ //if the user imbues as some later point.
+ custom_ptime_facet* f = new custom_ptime_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(oitr, os, os.fill(), p);
+ }
+ return os;
+ }
+
+ //! input operator for time_period
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, time_period& tp)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::time_input_facet<ptime, CharT> time_input_facet;
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<time_input_facet>(is.getloc())) {
+ std::use_facet<time_input_facet>(is.getloc()).get(sit, str_end, is, tp);
+ }
+ else {
+ time_input_facet* f = new time_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, tp);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ }
+ return is;
+ }
+
+
+ //! ostream operator for posix_time::time_duration
+ // todo fix to use facet -- place holder for now...
+ template <class CharT, class Traits>
+ inline
+ std::basic_ostream<CharT, Traits>&
+ operator<<(std::basic_ostream<CharT, Traits>& os, const time_duration& td)
+ {
+ boost::io::ios_flags_saver iflags(os);
+ typedef boost::date_time::time_facet<ptime, CharT> custom_ptime_facet;
+ typedef std::time_put<CharT> std_ptime_facet;
+ std::ostreambuf_iterator<CharT> oitr(os);
+ if (std::has_facet<custom_ptime_facet>(os.getloc()))
+ std::use_facet<custom_ptime_facet>(os.getloc()).put(oitr, os, os.fill(), td);
+ else {
+ //instantiate a custom facet for dealing with times since the user
+ //has not put one in the stream so far. This is for efficiency
+ //since we would always need to reconstruct for every time period
+ //if the locale did not already exist. Of course this will be overridden
+ //if the user imbues as some later point.
+ custom_ptime_facet* f = new custom_ptime_facet();
+ std::locale l = std::locale(os.getloc(), f);
+ os.imbue(l);
+ f->put(oitr, os, os.fill(), td);
+ }
+ return os;
+ }
+
+ //! input operator for time_duration
+ template <class CharT, class Traits>
+ inline
+ std::basic_istream<CharT, Traits>&
+ operator>>(std::basic_istream<CharT, Traits>& is, time_duration& td)
+ {
+ boost::io::ios_flags_saver iflags(is);
+ typename std::basic_istream<CharT, Traits>::sentry strm_sentry(is, false);
+ if (strm_sentry) {
+ try {
+ typedef typename date_time::time_input_facet<ptime, CharT> time_input_facet;
+ std::istreambuf_iterator<CharT,Traits> sit(is), str_end;
+ if(std::has_facet<time_input_facet>(is.getloc())) {
+ std::use_facet<time_input_facet>(is.getloc()).get(sit, str_end, is, td);
+ }
+ else {
+ time_input_facet* f = new time_input_facet();
+ std::locale l = std::locale(is.getloc(), f);
+ is.imbue(l);
+ f->get(sit, str_end, is, td);
+ }
+ }
+ catch(...) {
+ std::ios_base::iostate exception_mask = is.exceptions();
+ if(std::ios_base::failbit & exception_mask) {
+ try { is.setstate(std::ios_base::failbit); }
+ catch(std::ios_base::failure&) {}
+ throw; // rethrow original exception
+ }
+ else {
+ is.setstate(std::ios_base::failbit);
+ }
+ }
+ }
+ return is;
+ }
+
+} } // namespaces
+#endif // DATE_TIME_POSIX_TIME_IO_HPP__
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time_legacy_io.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time_legacy_io.hpp
new file mode 100644
index 0000000..f5b20a8
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time_legacy_io.hpp
@@ -0,0 +1,153 @@
+#ifndef POSIX_TIME_PRE133_OPERATORS_HPP___
+#define POSIX_TIME_PRE133_OPERATORS_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+/*! @file posix_time_pre133_operators.hpp
+ * These input and output operators are for use with the
+ * pre 1.33 version of the date_time libraries io facet code.
+ * The operators used in version 1.33 and later can be found
+ * in posix_time_io.hpp */
+
+#include <iostream>
+#include <string>
+#include <sstream>
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/gregorian/gregorian.hpp"
+#include "boost/date_time/posix_time/posix_time_duration.hpp"
+#include "boost/date_time/posix_time/ptime.hpp"
+#include "boost/date_time/posix_time/time_period.hpp"
+#include "boost/date_time/time_parsing.hpp"
+
+namespace boost {
+namespace posix_time {
+
+
+//The following code is removed for configurations with poor std::locale support (eg: MSVC6, gcc 2.9x)
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+#if defined(USE_DATE_TIME_PRE_1_33_FACET_IO)
+ //! ostream operator for posix_time::time_duration
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const time_duration& td)
+ {
+ typedef boost::date_time::ostream_time_duration_formatter<time_duration, charT> duration_formatter;
+ duration_formatter::duration_put(td, os);
+ return os;
+ }
+
+ //! ostream operator for posix_time::ptime
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const ptime& t)
+ {
+ typedef boost::date_time::ostream_time_formatter<ptime, charT> time_formatter;
+ time_formatter::time_put(t, os);
+ return os;
+ }
+
+ //! ostream operator for posix_time::time_period
+ template <class charT, class traits>
+ inline
+ std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const time_period& tp)
+ {
+ typedef boost::date_time::ostream_time_period_formatter<time_period, charT> period_formatter;
+ period_formatter::period_put(tp, os);
+ return os;
+ }
+#endif // USE_DATE_TIME_PRE_1_33_FACET_IO
+/******** input streaming ********/
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is, time_duration& td)
+ {
+ // need to create a std::string and parse it
+ std::basic_string<charT> inp_s;
+ std::stringstream out_ss;
+ is >> inp_s;
+ typename std::basic_string<charT>::iterator b = inp_s.begin();
+ // need to use both iterators because there is no requirement
+ // for the data held by a std::basic_string<> be terminated with
+ // any marker (such as '\0').
+ typename std::basic_string<charT>::iterator e = inp_s.end();
+ while(b != e){
+ out_ss << out_ss.narrow(*b, 0);
+ ++b;
+ }
+
+ td = date_time::parse_delimited_time_duration<time_duration>(out_ss.str());
+ return is;
+ }
+
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is, ptime& pt)
+ {
+ gregorian::date d(not_a_date_time);
+ time_duration td(0,0,0);
+ is >> d >> td;
+ pt = ptime(d, td);
+
+ return is;
+ }
+
+ /** operator>> for time_period. time_period must be in
+ * "[date time_duration/date time_duration]" format. */
+ template<class charT>
+ inline
+ std::basic_istream<charT>& operator>>(std::basic_istream<charT>& is, time_period& tp)
+ {
+ gregorian::date d(not_a_date_time);
+ time_duration td(0,0,0);
+ ptime beg(d, td);
+ ptime end(beg);
+ std::basic_string<charT> s;
+ // get first date string and remove leading '['
+ is >> s;
+ {
+ std::basic_stringstream<charT> ss;
+ ss << s.substr(s.find('[')+1);
+ ss >> d;
+ }
+ // get first time_duration & second date string, remove the '/'
+ // and split into 2 strings
+ is >> s;
+ {
+ std::basic_stringstream<charT> ss;
+ ss << s.substr(0, s.find('/'));
+ ss >> td;
+ }
+ beg = ptime(d, td);
+ {
+ std::basic_stringstream<charT> ss;
+ ss << s.substr(s.find('/')+1);
+ ss >> d;
+ }
+ // get last time_duration and remove the trailing ']'
+ is >> s;
+ {
+ std::basic_stringstream<charT> ss;
+ ss << s.substr(0, s.find(']'));
+ ss >> td;
+ }
+ end = ptime(d, td);
+
+ tp = time_period(beg,end);
+ return is;
+ }
+
+
+#endif //BOOST_DATE_TIME_NO_LOCALE
+
+} } // namespaces
+
+#endif // POSIX_TIME_PRE133_OPERATORS_HPP___
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time_system.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time_system.hpp
new file mode 100644
index 0000000..3d44e0f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time_system.hpp
@@ -0,0 +1,68 @@
+#ifndef POSIX_TIME_SYSTEM_HPP___
+#define POSIX_TIME_SYSTEM_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+#include "boost/date_time/posix_time/posix_time_config.hpp"
+#include "boost/date_time/time_system_split.hpp"
+#include "boost/date_time/time_system_counted.hpp"
+#include "boost/date_time/compiler_config.hpp"
+
+
+namespace boost {
+namespace posix_time {
+
+#ifdef BOOST_DATE_TIME_POSIX_TIME_STD_CONFIG
+
+#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT)) //help bad compilers
+ typedef date_time::split_timedate_system<posix_time_system_config, 1000000000> posix_time_system;
+#else
+ typedef date_time::split_timedate_system<posix_time_system_config> posix_time_system;
+#endif
+
+#else
+
+ typedef date_time::counted_time_rep<millisec_posix_time_system_config> int64_time_rep;
+ typedef date_time::counted_time_system<int64_time_rep> posix_time_system;
+
+#endif
+
+} }//namespace posix_time
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/posix_time_types.hpp b/3rdParty/Boost/boost/date_time/posix_time/posix_time_types.hpp
new file mode 100644
index 0000000..f2488f8
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/posix_time_types.hpp
@@ -0,0 +1,55 @@
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ */
+#ifndef POSIX_TIME_TYPES_HPP___
+#define POSIX_TIME_TYPES_HPP___
+
+#include "boost/date_time/time_clock.hpp"
+#include "boost/date_time/microsec_time_clock.hpp"
+#include "boost/date_time/posix_time/ptime.hpp"
+#if defined(BOOST_DATE_TIME_OPTIONAL_GREGORIAN_TYPES)
+#include "boost/date_time/posix_time/date_duration_operators.hpp"
+#endif
+#include "boost/date_time/posix_time/posix_time_duration.hpp"
+#include "boost/date_time/posix_time/posix_time_system.hpp"
+#include "boost/date_time/posix_time/time_period.hpp"
+#include "boost/date_time/time_iterator.hpp"
+#include "boost/date_time/dst_rules.hpp"
+
+namespace boost {
+
+//!Defines a non-adjusted time system with nano-second resolution and stable calculation properties
+namespace posix_time {
+
+ //! Iterator over a defined time duration
+ /*! \ingroup time_basics
+ */
+ typedef date_time::time_itr<ptime> time_iterator;
+ //! A time clock that has a resolution of one second
+ /*! \ingroup time_basics
+ */
+ typedef date_time::second_clock<ptime> second_clock;
+
+#ifdef BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK
+ //! A time clock that has a resolution of one microsecond
+ /*! \ingroup time_basics
+ */
+ typedef date_time::microsec_clock<ptime> microsec_clock;
+#endif
+
+ //! Define a dst null dst rule for the posix_time system
+ typedef date_time::null_dst_rules<ptime::date_type, time_duration> no_dst;
+ //! Define US dst rule calculator for the posix_time system
+ typedef date_time::us_dst_rules<ptime::date_type, time_duration> us_dst;
+
+
+} } //namespace posix_time
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/ptime.hpp b/3rdParty/Boost/boost/date_time/posix_time/ptime.hpp
new file mode 100644
index 0000000..2abc02d
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/ptime.hpp
@@ -0,0 +1,65 @@
+#ifndef POSIX_PTIME_HPP___
+#define POSIX_PTIME_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/posix_time/posix_time_system.hpp"
+#include "boost/date_time/time.hpp"
+
+namespace boost {
+
+namespace posix_time {
+
+ //bring special enum values into the namespace
+ using date_time::special_values;
+ using date_time::not_special;
+ using date_time::neg_infin;
+ using date_time::pos_infin;
+ using date_time::not_a_date_time;
+ using date_time::max_date_time;
+ using date_time::min_date_time;
+
+ //! Time type with no timezone or other adjustments
+ /*! \ingroup time_basics
+ */
+ class ptime : public date_time::base_time<ptime, posix_time_system>
+ {
+ public:
+ typedef posix_time_system time_system_type;
+ typedef time_system_type::time_rep_type time_rep_type;
+ typedef time_system_type::time_duration_type time_duration_type;
+ typedef ptime time_type;
+ //! Construct with date and offset in day
+ ptime(gregorian::date d,time_duration_type td) : date_time::base_time<time_type,time_system_type>(d,td)
+ {}
+ //! Construct a time at start of the given day (midnight)
+ explicit ptime(gregorian::date d) : date_time::base_time<time_type,time_system_type>(d,time_duration_type(0,0,0))
+ {}
+ //! Copy from time_rep
+ ptime(const time_rep_type& rhs):
+ date_time::base_time<time_type,time_system_type>(rhs)
+ {}
+ //! Construct from special value
+ ptime(const special_values sv) : date_time::base_time<time_type,time_system_type>(sv)
+ {}
+#if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR)
+ // Default constructor constructs to not_a_date_time
+ ptime() : date_time::base_time<time_type,time_system_type>(gregorian::date(not_a_date_time), time_duration_type(not_a_date_time))
+ {}
+#endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR
+
+ };
+
+
+
+} }//namespace posix_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/time_formatters.hpp b/3rdParty/Boost/boost/date_time/posix_time/time_formatters.hpp
new file mode 100644
index 0000000..dc8facf
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/time_formatters.hpp
@@ -0,0 +1,289 @@
+#ifndef POSIXTIME_FORMATTERS_HPP___
+#define POSIXTIME_FORMATTERS_HPP___
+
+/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/gregorian.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/date_format_simple.hpp"
+#include "boost/date_time/posix_time/posix_time_types.hpp"
+#include "boost/date_time/time_formatting_streams.hpp"
+
+#include "boost/date_time/time_parsing.hpp"
+
+/* NOTE: The "to_*_string" code for older compilers, ones that define
+ * BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS, is located in
+ * formatters_limited.hpp
+ */
+
+namespace boost {
+
+namespace posix_time {
+
+ // template function called by wrapper functions:
+ // to_*_string(time_duration) & to_*_wstring(time_duration)
+ template<class charT>
+ inline std::basic_string<charT> to_simple_string_type(time_duration td) {
+ std::basic_ostringstream<charT> ss;
+ if(td.is_special()) {
+ /* simply using 'ss << td.get_rep()' won't work on compilers
+ * that don't support locales. This way does. */
+ // switch copied from date_names_put.hpp
+ switch(td.get_rep().as_special())
+ {
+ case not_a_date_time:
+ //ss << "not-a-number";
+ ss << "not-a-date-time";
+ break;
+ case pos_infin:
+ ss << "+infinity";
+ break;
+ case neg_infin:
+ ss << "-infinity";
+ break;
+ default:
+ ss << "";
+ }
+ }
+ else {
+ charT fill_char = '0';
+ if(td.is_negative()) {
+ ss << '-';
+ }
+ ss << std::setw(2) << std::setfill(fill_char)
+ << date_time::absolute_value(td.hours()) << ":";
+ ss << std::setw(2) << std::setfill(fill_char)
+ << date_time::absolute_value(td.minutes()) << ":";
+ ss << std::setw(2) << std::setfill(fill_char)
+ << date_time::absolute_value(td.seconds());
+ //TODO the following is totally non-generic, yelling FIXME
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ boost::int64_t frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+ // JDG [7/6/02 VC++ compatibility]
+ charT buff[32];
+ _i64toa(frac_sec, buff, 10);
+#else
+ time_duration::fractional_seconds_type frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+#endif
+ if (frac_sec != 0) {
+ ss << "." << std::setw(time_duration::num_fractional_digits())
+ << std::setfill(fill_char)
+
+ // JDG [7/6/02 VC++ compatibility]
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ << buff;
+#else
+ << frac_sec;
+#endif
+ }
+ }// else
+ return ss.str();
+ }
+ //! Time duration to string -hh::mm::ss.fffffff. Example: 10:09:03.0123456
+ /*!\ingroup time_format
+ */
+ inline std::string to_simple_string(time_duration td) {
+ return to_simple_string_type<char>(td);
+ }
+
+
+ // template function called by wrapper functions:
+ // to_*_string(time_duration) & to_*_wstring(time_duration)
+ template<class charT>
+ inline std::basic_string<charT> to_iso_string_type(time_duration td)
+ {
+ std::basic_ostringstream<charT> ss;
+ if(td.is_special()) {
+ /* simply using 'ss << td.get_rep()' won't work on compilers
+ * that don't support locales. This way does. */
+ // switch copied from date_names_put.hpp
+ switch(td.get_rep().as_special()) {
+ case not_a_date_time:
+ //ss << "not-a-number";
+ ss << "not-a-date-time";
+ break;
+ case pos_infin:
+ ss << "+infinity";
+ break;
+ case neg_infin:
+ ss << "-infinity";
+ break;
+ default:
+ ss << "";
+ }
+ }
+ else {
+ charT fill_char = '0';
+ if(td.is_negative()) {
+ ss << '-';
+ }
+ ss << std::setw(2) << std::setfill(fill_char)
+ << date_time::absolute_value(td.hours());
+ ss << std::setw(2) << std::setfill(fill_char)
+ << date_time::absolute_value(td.minutes());
+ ss << std::setw(2) << std::setfill(fill_char)
+ << date_time::absolute_value(td.seconds());
+ //TODO the following is totally non-generic, yelling FIXME
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ boost::int64_t frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+ // JDG [7/6/02 VC++ compatibility]
+ charT buff[32];
+ _i64toa(frac_sec, buff, 10);
+#else
+ time_duration::fractional_seconds_type frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+#endif
+ if (frac_sec != 0) {
+ ss << "." << std::setw(time_duration::num_fractional_digits())
+ << std::setfill(fill_char)
+
+ // JDG [7/6/02 VC++ compatibility]
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ << buff;
+#else
+ << frac_sec;
+#endif
+ }
+ }// else
+ return ss.str();
+ }
+ //! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456
+ /*!\ingroup time_format
+ */
+ inline std::string to_iso_string(time_duration td){
+ return to_iso_string_type<char>(td);
+ }
+
+ //! Time to simple format CCYY-mmm-dd hh:mm:ss.fffffff
+ /*!\ingroup time_format
+ */
+ template<class charT>
+ inline std::basic_string<charT> to_simple_string_type(ptime t)
+ {
+ // can't use this w/gcc295, no to_simple_string_type<>(td) available
+ std::basic_string<charT> ts = gregorian::to_simple_string_type<charT>(t.date());// + " ";
+ if(!t.time_of_day().is_special()) {
+ charT space = ' ';
+ return ts + space + to_simple_string_type<charT>(t.time_of_day());
+ }
+ else {
+ return ts;
+ }
+ }
+ inline std::string to_simple_string(ptime t){
+ return to_simple_string_type<char>(t);
+ }
+
+ // function called by wrapper functions to_*_string(time_period)
+ // & to_*_wstring(time_period)
+ template<class charT>
+ inline std::basic_string<charT> to_simple_string_type(time_period tp)
+ {
+ charT beg = '[', mid = '/', end = ']';
+ std::basic_string<charT> d1(to_simple_string_type<charT>(tp.begin()));
+ std::basic_string<charT> d2(to_simple_string_type<charT>(tp.last()));
+ return std::basic_string<charT>(beg + d1 + mid + d2 + end);
+ }
+ //! Convert to string of form [YYYY-mmm-DD HH:MM::SS.ffffff/YYYY-mmm-DD HH:MM::SS.fffffff]
+ /*!\ingroup time_format
+ */
+ inline std::string to_simple_string(time_period tp){
+ return to_simple_string_type<char>(tp);
+ }
+
+ // function called by wrapper functions to_*_string(time_period)
+ // & to_*_wstring(time_period)
+ template<class charT>
+ inline std::basic_string<charT> to_iso_string_type(ptime t)
+ {
+ std::basic_string<charT> ts = gregorian::to_iso_string_type<charT>(t.date());// + "T";
+ if(!t.time_of_day().is_special()) {
+ charT sep = 'T';
+ return ts + sep + to_iso_string_type<charT>(t.time_of_day());
+ }
+ else {
+ return ts;
+ }
+ }
+ //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator
+ /*!\ingroup time_format
+ */
+ inline std::string to_iso_string(ptime t){
+ return to_iso_string_type<char>(t);
+ }
+
+
+ // function called by wrapper functions to_*_string(time_period)
+ // & to_*_wstring(time_period)
+ template<class charT>
+ inline std::basic_string<charT> to_iso_extended_string_type(ptime t)
+ {
+ std::basic_string<charT> ts = gregorian::to_iso_extended_string_type<charT>(t.date());// + "T";
+ if(!t.time_of_day().is_special()) {
+ charT sep = 'T';
+ return ts + sep + to_simple_string_type<charT>(t.time_of_day());
+ }
+ else {
+ return ts;
+ }
+ }
+ //! Convert to form YYYY-MM-DDTHH:MM:SS where T is the date-time separator
+ /*!\ingroup time_format
+ */
+ inline std::string to_iso_extended_string(ptime t){
+ return to_iso_extended_string_type<char>(t);
+ }
+
+#if !defined(BOOST_NO_STD_WSTRING)
+ //! Time duration to wstring -hh::mm::ss.fffffff. Example: 10:09:03.0123456
+ /*!\ingroup time_format
+ */
+ inline std::wstring to_simple_wstring(time_duration td) {
+ return to_simple_string_type<wchar_t>(td);
+ }
+ //! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456
+ /*!\ingroup time_format
+ */
+ inline std::wstring to_iso_wstring(time_duration td){
+ return to_iso_string_type<wchar_t>(td);
+ }
+ inline std::wstring to_simple_wstring(ptime t){
+ return to_simple_string_type<wchar_t>(t);
+ }
+ //! Convert to wstring of form [YYYY-mmm-DD HH:MM::SS.ffffff/YYYY-mmm-DD HH:MM::SS.fffffff]
+ /*!\ingroup time_format
+ */
+ inline std::wstring to_simple_wstring(time_period tp){
+ return to_simple_string_type<wchar_t>(tp);
+ }
+ //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator
+ /*!\ingroup time_format
+ */
+ inline std::wstring to_iso_wstring(ptime t){
+ return to_iso_string_type<wchar_t>(t);
+ }
+ //! Convert to form YYYY-MM-DDTHH:MM:SS where T is the date-time separator
+ /*!\ingroup time_format
+ */
+ inline std::wstring to_iso_extended_wstring(ptime t){
+ return to_iso_extended_string_type<wchar_t>(t);
+ }
+
+#endif // BOOST_NO_STD_WSTRING
+
+
+} } //namespace posix_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/time_formatters_limited.hpp b/3rdParty/Boost/boost/date_time/posix_time/time_formatters_limited.hpp
new file mode 100644
index 0000000..def5169
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/time_formatters_limited.hpp
@@ -0,0 +1,211 @@
+#ifndef POSIXTIME_FORMATTERS_LIMITED_HPP___
+#define POSIXTIME_FORMATTERS_LIMITED_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/gregorian.hpp"
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/iso_format.hpp"
+#include "boost/date_time/date_format_simple.hpp"
+#include "boost/date_time/posix_time/posix_time_types.hpp"
+#include "boost/date_time/time_formatting_streams.hpp"
+
+namespace boost {
+
+namespace posix_time {
+
+ //! Time duration to string -hh::mm::ss.fffffff. Example: 10:09:03.0123456
+ /*!\ingroup time_format
+ */
+ inline std::string to_simple_string(time_duration td) {
+ std::ostringstream ss;
+ if(td.is_special()) {
+ /* simply using 'ss << td.get_rep()' won't work on compilers
+ * that don't support locales. This way does. */
+ // switch copied from date_names_put.hpp
+ switch(td.get_rep().as_special())
+ {
+ case not_a_date_time:
+ //ss << "not-a-number";
+ ss << "not-a-date-time";
+ break;
+ case pos_infin:
+ ss << "+infinity";
+ break;
+ case neg_infin:
+ ss << "-infinity";
+ break;
+ default:
+ ss << "";
+ }
+ }
+ else {
+ if(td.is_negative()) {
+ ss << '-';
+ }
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.hours()) << ":";
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.minutes()) << ":";
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.seconds());
+ //TODO the following is totally non-generic, yelling FIXME
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ boost::int64_t frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+ // JDG [7/6/02 VC++ compatibility]
+ char buff[32];
+ _i64toa(frac_sec, buff, 10);
+#else
+ time_duration::fractional_seconds_type frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+#endif
+ if (frac_sec != 0) {
+ ss << "." << std::setw(time_duration::num_fractional_digits())
+ << std::setfill('0')
+
+ // JDG [7/6/02 VC++ compatibility]
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ << buff;
+#else
+ << frac_sec;
+#endif
+ }
+ }// else
+ return ss.str();
+ }
+
+ //! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456
+ /*!\ingroup time_format
+ */
+ inline
+ std::string
+ to_iso_string(time_duration td)
+ {
+ std::ostringstream ss;
+ if(td.is_special()) {
+ /* simply using 'ss << td.get_rep()' won't work on compilers
+ * that don't support locales. This way does. */
+ // switch copied from date_names_put.hpp
+ switch(td.get_rep().as_special()) {
+ case not_a_date_time:
+ //ss << "not-a-number";
+ ss << "not-a-date-time";
+ break;
+ case pos_infin:
+ ss << "+infinity";
+ break;
+ case neg_infin:
+ ss << "-infinity";
+ break;
+ default:
+ ss << "";
+ }
+ }
+ else {
+ if(td.is_negative()) {
+ ss << '-';
+ }
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.hours());
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.minutes());
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.seconds());
+ //TODO the following is totally non-generic, yelling FIXME
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ boost::int64_t frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+ // JDG [7/6/02 VC++ compatibility]
+ char buff[32];
+ _i64toa(frac_sec, buff, 10);
+#else
+ time_duration::fractional_seconds_type frac_sec =
+ date_time::absolute_value(td.fractional_seconds());
+#endif
+ if (frac_sec != 0) {
+ ss << "." << std::setw(time_duration::num_fractional_digits())
+ << std::setfill('0')
+
+ // JDG [7/6/02 VC++ compatibility]
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ << buff;
+#else
+ << frac_sec;
+#endif
+ }
+ }// else
+ return ss.str();
+ }
+
+ //! Time to simple format CCYY-mmm-dd hh:mm:ss.fffffff
+ /*!\ingroup time_format
+ */
+ inline
+ std::string
+ to_simple_string(ptime t)
+ {
+ std::string ts = gregorian::to_simple_string(t.date());// + " ";
+ if(!t.time_of_day().is_special()) {
+ return ts + " " + to_simple_string(t.time_of_day());
+ }
+ else {
+ return ts;
+ }
+ }
+
+ //! Convert to string of form [YYYY-mmm-DD HH:MM::SS.ffffff/YYYY-mmm-DD HH:MM::SS.fffffff]
+ /*!\ingroup time_format
+ */
+ inline
+ std::string
+ to_simple_string(time_period tp)
+ {
+ std::string d1(to_simple_string(tp.begin()));
+ std::string d2(to_simple_string(tp.last()));
+ return std::string("[" + d1 + "/" + d2 +"]");
+ }
+
+ //! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator
+ /*!\ingroup time_format
+ */
+ inline
+ std::string to_iso_string(ptime t)
+ {
+ std::string ts = gregorian::to_iso_string(t.date());// + "T";
+ if(!t.time_of_day().is_special()) {
+ return ts + "T" + to_iso_string(t.time_of_day());
+ }
+ else {
+ return ts;
+ }
+ }
+
+ //! Convert to form YYYY-MM-DDTHH:MM:SS where T is the date-time separator
+ /*!\ingroup time_format
+ */
+ inline
+ std::string
+ to_iso_extended_string(ptime t)
+ {
+ std::string ts = gregorian::to_iso_extended_string(t.date());// + "T";
+ if(!t.time_of_day().is_special()) {
+ return ts + "T" + to_simple_string(t.time_of_day());
+ }
+ else {
+ return ts;
+ }
+ }
+
+
+} } //namespace posix_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/time_parsers.hpp b/3rdParty/Boost/boost/date_time/posix_time/time_parsers.hpp
new file mode 100644
index 0000000..8a352f6
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/time_parsers.hpp
@@ -0,0 +1,44 @@
+#ifndef POSIXTIME_PARSERS_HPP___
+#define POSIXTIME_PARSERS_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/gregorian/gregorian.hpp"
+#include "boost/date_time/time_parsing.hpp"
+#include "boost/date_time/posix_time/posix_time_types.hpp"
+
+
+namespace boost {
+
+namespace posix_time {
+
+ //! Creates a time_duration object from a delimited string
+ /*! Expected format for string is "[-]h[h][:mm][:ss][.fff]".
+ * A negative duration will be created if the first character in
+ * string is a '-', all other '-' will be treated as delimiters.
+ * Accepted delimiters are "-:,.". */
+ inline time_duration duration_from_string(const std::string& s) {
+ return date_time::parse_delimited_time_duration<time_duration>(s);
+ }
+
+ inline ptime time_from_string(const std::string& s) {
+ return date_time::parse_delimited_time<ptime>(s, ' ');
+ }
+
+ inline ptime from_iso_string(const std::string& s) {
+ return date_time::parse_iso_time<ptime>(s, 'T');
+ }
+
+
+
+} } //namespace posix_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/posix_time/time_period.hpp b/3rdParty/Boost/boost/date_time/posix_time/time_period.hpp
new file mode 100644
index 0000000..cb7bf07
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/posix_time/time_period.hpp
@@ -0,0 +1,29 @@
+#ifndef POSIX_TIME_PERIOD_HPP___
+#define POSIX_TIME_PERIOD_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/period.hpp"
+#include "boost/date_time/posix_time/posix_time_duration.hpp"
+#include "boost/date_time/posix_time/ptime.hpp"
+
+namespace boost {
+namespace posix_time {
+
+ //! Time period type
+ /*! \ingroup time_basics
+ */
+ typedef date_time::period<ptime, time_duration> time_period;
+
+
+} }//namespace posix_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/special_defs.hpp b/3rdParty/Boost/boost/date_time/special_defs.hpp
new file mode 100644
index 0000000..56eb6fe
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/special_defs.hpp
@@ -0,0 +1,25 @@
+#ifndef DATE_TIME_SPECIAL_DEFS_HPP__
+#define DATE_TIME_SPECIAL_DEFS_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+namespace boost {
+namespace date_time {
+
+ enum special_values {not_a_date_time,
+ neg_infin, pos_infin,
+ min_date_time, max_date_time,
+ not_special, NumSpecialValues};
+
+
+} } //namespace date_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/special_values_formatter.hpp b/3rdParty/Boost/boost/date_time/special_values_formatter.hpp
new file mode 100644
index 0000000..33542b6
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/special_values_formatter.hpp
@@ -0,0 +1,96 @@
+
+#ifndef DATETIME_SPECIAL_VALUE_FORMATTER_HPP___
+#define DATETIME_SPECIAL_VALUE_FORMATTER_HPP___
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include <vector>
+#include <string>
+#include "boost/date_time/special_defs.hpp"
+
+namespace boost { namespace date_time {
+
+
+ //! Class that provides generic formmatting ostream formatting for special values
+ /*! This class provides for the formmating of special values to an output stream.
+ * In particular, it produces strings for the values of negative and positive
+ * infinity as well as not_a_date_time.
+ *
+ * While not a facet, this class is used by the date and time facets for formatting
+ * special value types.
+ *
+ */
+ template <class CharT, class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class special_values_formatter
+ {
+ public:
+ typedef std::basic_string<CharT> string_type;
+ typedef CharT char_type;
+ typedef std::vector<string_type> collection_type;
+ static const char_type default_special_value_names[3][17];
+
+ //! Construct special values formatter using default strings.
+ /*! Default strings are not-a-date-time -infinity +infinity
+ */
+ special_values_formatter()
+ {
+ std::copy(&default_special_value_names[0],
+ &default_special_value_names[3],
+ std::back_inserter(m_special_value_names));
+ }
+
+ //! Construct special values formatter from array of strings
+ /*! This constructor will take pair of iterators from an array of strings
+ * that represent the special values and copy them for use in formatting
+ * special values.
+ *@code
+ * const char* const special_value_names[]={"nadt","-inf","+inf" };
+ *
+ * special_value_formatter svf(&special_value_names[0], &special_value_names[3]);
+ *@endcode
+ */
+ special_values_formatter(const char_type* const* begin, const char_type* const* end)
+ {
+ std::copy(begin, end, std::back_inserter(m_special_value_names));
+ }
+ special_values_formatter(typename collection_type::iterator beg, typename collection_type::iterator end)
+ {
+ std::copy(beg, end, std::back_inserter(m_special_value_names));
+ }
+
+ OutItrT put_special(OutItrT next,
+ const boost::date_time::special_values& value) const
+ {
+
+ unsigned int index = value;
+ if (index < m_special_value_names.size()) {
+ std::copy(m_special_value_names[index].begin(),
+ m_special_value_names[index].end(),
+ next);
+ }
+ return next;
+ }
+ protected:
+ collection_type m_special_value_names;
+ };
+
+ //! Storage for the strings used to indicate special values
+ /* using c_strings to initialize these worked fine in testing, however,
+ * a project that compiled its objects separately, then linked in a separate
+ * step wound up with redefinition errors for the values in this array.
+ * Initializing individual characters eliminated this problem */
+ template <class CharT, class OutItrT>
+ const typename special_values_formatter<CharT, OutItrT>::char_type special_values_formatter<CharT, OutItrT>::default_special_value_names[3][17] = {
+ {'n','o','t','-','a','-','d','a','t','e','-','t','i','m','e'},
+ {'-','i','n','f','i','n','i','t','y'},
+ {'+','i','n','f','i','n','i','t','y'} };
+
+ } } //namespace boost::date_time
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/special_values_parser.hpp b/3rdParty/Boost/boost/date_time/special_values_parser.hpp
new file mode 100644
index 0000000..e48ec5f
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/special_values_parser.hpp
@@ -0,0 +1,159 @@
+
+#ifndef DATE_TIME_SPECIAL_VALUES_PARSER_HPP__
+#define DATE_TIME_SPECIAL_VALUES_PARSER_HPP__
+
+/* Copyright (c) 2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date:
+ */
+
+
+#include "boost/date_time/string_parse_tree.hpp"
+#include "boost/date_time/special_defs.hpp"
+#include <string>
+#include <vector>
+
+namespace boost { namespace date_time {
+
+ //! Class for special_value parsing
+ /*!
+ * TODO: add doc-comments for which elements can be changed
+ * Parses input stream for strings representing special_values.
+ * Special values parsed are:
+ * - not_a_date_time
+ * - neg_infin
+ * - pod_infin
+ * - min_date_time
+ * - max_date_time
+ */
+ template<class date_type, typename charT>
+ class special_values_parser
+ {
+ public:
+ typedef std::basic_string<charT> string_type;
+ //typedef std::basic_stringstream<charT> stringstream_type;
+ typedef std::istreambuf_iterator<charT> stream_itr_type;
+ //typedef typename string_type::const_iterator const_itr;
+ //typedef typename date_type::year_type year_type;
+ //typedef typename date_type::month_type month_type;
+ typedef typename date_type::duration_type duration_type;
+ //typedef typename date_type::day_of_week_type day_of_week_type;
+ //typedef typename date_type::day_type day_type;
+ typedef string_parse_tree<charT> parse_tree_type;
+ typedef typename parse_tree_type::parse_match_result_type match_results;
+ typedef std::vector<std::basic_string<charT> > collection_type;
+
+ typedef charT char_type;
+ static const char_type nadt_string[16];
+ static const char_type neg_inf_string[10];
+ static const char_type pos_inf_string[10];
+ static const char_type min_date_time_string[18];
+ static const char_type max_date_time_string[18];
+
+ //! Creates a special_values_parser with the default set of "sv_strings"
+ special_values_parser()
+ {
+ sv_strings(string_type(nadt_string),
+ string_type(neg_inf_string),
+ string_type(pos_inf_string),
+ string_type(min_date_time_string),
+ string_type(max_date_time_string));
+ }
+
+ //! Creates a special_values_parser using a user defined set of element strings
+ special_values_parser(const string_type& nadt_str,
+ const string_type& neg_inf_str,
+ const string_type& pos_inf_str,
+ const string_type& min_dt_str,
+ const string_type& max_dt_str)
+ {
+ sv_strings(nadt_str, neg_inf_str, pos_inf_str, min_dt_str, max_dt_str);
+ }
+
+ special_values_parser(typename collection_type::iterator beg, typename collection_type::iterator end)
+ {
+ collection_type phrases;
+ std::copy(beg, end, std::back_inserter(phrases));
+ m_sv_strings = parse_tree_type(phrases, static_cast<int>(not_a_date_time));
+ }
+
+ special_values_parser(const special_values_parser<date_type,charT>& svp)
+ {
+ this->m_sv_strings = svp.m_sv_strings;
+ }
+
+ //! Replace special value strings
+ void sv_strings(const string_type& nadt_str,
+ const string_type& neg_inf_str,
+ const string_type& pos_inf_str,
+ const string_type& min_dt_str,
+ const string_type& max_dt_str)
+ {
+ collection_type phrases;
+ phrases.push_back(nadt_str);
+ phrases.push_back(neg_inf_str);
+ phrases.push_back(pos_inf_str);
+ phrases.push_back(min_dt_str);
+ phrases.push_back(max_dt_str);
+ m_sv_strings = parse_tree_type(phrases, static_cast<int>(not_a_date_time));
+ }
+
+ /* Does not return a special_value because if the parsing fails,
+ * the return value will always be not_a_date_time
+ * (mr.current_match retains its default value of -1 on a failed
+ * parse and that casts to not_a_date_time). */
+ //! Sets match_results.current_match to the corresponding special_value or -1
+ bool match(stream_itr_type& sitr,
+ stream_itr_type& str_end,
+ match_results& mr) const
+ {
+ unsigned int level = 0;
+ m_sv_strings.match(sitr, str_end, mr, level);
+ return (mr.current_match != match_results::PARSE_ERROR);
+ }
+ /*special_values match(stream_itr_type& sitr,
+ stream_itr_type& str_end,
+ match_results& mr) const
+ {
+ unsigned int level = 0;
+ m_sv_strings.match(sitr, str_end, mr, level);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ throw std::ios_base::failure("Parse failed. No match found for '" + mr.cache + "'");
+ }
+ return static_cast<special_values>(mr.current_match);
+ }*/
+
+
+ private:
+ parse_tree_type m_sv_strings;
+
+ };
+
+ template<class date_type, class CharT>
+ const typename special_values_parser<date_type, CharT>::char_type
+ special_values_parser<date_type, CharT>::nadt_string[16] =
+ {'n','o','t','-','a','-','d','a','t','e','-','t','i','m','e'};
+ template<class date_type, class CharT>
+ const typename special_values_parser<date_type, CharT>::char_type
+ special_values_parser<date_type, CharT>::neg_inf_string[10] =
+ {'-','i','n','f','i','n','i','t','y'};
+ template<class date_type, class CharT>
+ const typename special_values_parser<date_type, CharT>::char_type
+ special_values_parser<date_type, CharT>::pos_inf_string[10] =
+ {'+','i','n','f','i','n','i','t','y'};
+ template<class date_type, class CharT>
+ const typename special_values_parser<date_type, CharT>::char_type
+ special_values_parser<date_type, CharT>::min_date_time_string[18] =
+ {'m','i','n','i','m','u','m','-','d','a','t','e','-','t','i','m','e'};
+ template<class date_type, class CharT>
+ const typename special_values_parser<date_type, CharT>::char_type
+ special_values_parser<date_type, CharT>::max_date_time_string[18] =
+ {'m','a','x','i','m','u','m','-','d','a','t','e','-','t','i','m','e'};
+
+} } //namespace
+
+#endif // DATE_TIME_SPECIAL_VALUES_PARSER_HPP__
+
diff --git a/3rdParty/Boost/boost/date_time/string_convert.hpp b/3rdParty/Boost/boost/date_time/string_convert.hpp
new file mode 100644
index 0000000..54a979c
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/string_convert.hpp
@@ -0,0 +1,33 @@
+#ifndef _STRING_CONVERT_HPP___
+#define _STRING_CONVERT_HPP___
+
+/* Copyright (c) 2005 CrystalClear Software, Inc.
+ * Subject to the Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/date_time/compiler_config.hpp"
+#include <string>
+
+namespace boost {
+namespace date_time {
+
+ //! Converts a string from one value_type to another
+ /*! Converts a wstring to a string (or a string to wstring). If both template parameters
+ * are of same type, a copy of the input string is returned. */
+ template<class InputT, class OutputT>
+ inline
+ std::basic_string<OutputT> convert_string_type(const std::basic_string<InputT>& inp_str)
+ {
+ typedef std::basic_string<InputT> input_type;
+ typedef std::basic_string<OutputT> output_type;
+ output_type result;
+ result.insert(result.begin(), inp_str.begin(), inp_str.end());
+ return result;
+ }
+
+}} // namespace boost::date_time
+
+#endif // _STRING_CONVERT_HPP___
diff --git a/3rdParty/Boost/boost/date_time/string_parse_tree.hpp b/3rdParty/Boost/boost/date_time/string_parse_tree.hpp
new file mode 100644
index 0000000..0d515ff
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/string_parse_tree.hpp
@@ -0,0 +1,278 @@
+#ifndef BOOST_DATE_TIME_STRING_PARSE_TREE___HPP__
+#define BOOST_DATE_TIME_STRING_PARSE_TREE___HPP__
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+#include "boost/lexical_cast.hpp" //error without?
+#include "boost/algorithm/string/case_conv.hpp"
+#include <map>
+#include <string>
+#include <vector>
+#include <algorithm>
+
+namespace boost { namespace date_time {
+
+
+template<typename charT>
+struct parse_match_result
+{
+ parse_match_result() :
+ match_depth(0),
+ current_match(-1)// -1 is match_not-found value
+ {}
+ typedef std::basic_string<charT> string_type;
+ string_type remaining() const
+ {
+ if (match_depth == cache.size()) {
+ return string_type();
+ }
+ if (current_match == -1) {
+ return cache;
+ }
+ //some of the cache was used return the rest
+ return string_type(cache, match_depth);
+ }
+ charT last_char() const
+ {
+ return cache[cache.size()-1];
+ }
+ //! Returns true if more characters were parsed than was necessary
+ /*! Should be used in conjunction with last_char()
+ * to get the remaining character.
+ */
+ bool has_remaining() const
+ {
+ return (cache.size() > match_depth);
+ }
+
+ // cache will hold characters that have been read from the stream
+ string_type cache;
+ unsigned short match_depth;
+ short current_match;
+ enum PARSE_STATE { PARSE_ERROR= -1 };
+};
+
+ //for debug -- really only char streams...
+template<typename charT>
+std::basic_ostream<charT>&
+operator<<(std::basic_ostream<charT>& os, parse_match_result<charT>& mr)
+{
+ os << "cm: " << mr.current_match
+ << " C: '" << mr.cache
+ << "' md: " << mr.match_depth
+ << " R: " << mr.remaining();
+ return os;
+}
+
+
+
+//! Recursive data structure to allow efficient parsing of various strings
+/*! This class provides a quick lookup by building what amounts to a
+ * tree data structure. It also features a match function which can
+ * can handle nasty input interators by caching values as it recurses
+ * the tree so that it can backtrack as needed.
+ */
+template<typename charT>
+struct string_parse_tree
+{
+#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) )
+ typedef std::multimap<charT, string_parse_tree< charT> > ptree_coll;
+#else
+ typedef std::multimap<charT, string_parse_tree > ptree_coll;
+#endif
+ typedef typename ptree_coll::value_type value_type;
+ typedef typename ptree_coll::iterator iterator;
+ typedef typename ptree_coll::const_iterator const_iterator;
+ typedef std::basic_string<charT> string_type;
+ typedef std::vector<std::basic_string<charT> > collection_type;
+ typedef parse_match_result<charT> parse_match_result_type;
+
+ /*! Parameter "starting_point" designates where the numbering begins.
+ * A starting_point of zero will start the numbering at zero
+ * (Sun=0, Mon=1, ...) were a starting_point of one starts the
+ * numbering at one (Jan=1, Feb=2, ...). The default is zero,
+ * negative vaules are not allowed */
+ string_parse_tree(collection_type names, unsigned int starting_point=0)
+ {
+ // iterate thru all the elements and build the tree
+ unsigned short index = 0;
+ while (index != names.size() ) {
+ string_type s = boost::algorithm::to_lower_copy(names[index]);
+ insert(s, static_cast<unsigned short>(index + starting_point));
+ index++;
+ }
+ //set the last tree node = index+1 indicating a value
+ index++;
+ }
+
+
+ string_parse_tree(short value = -1) :
+ m_value(value)
+ {}
+ ptree_coll m_next_chars;
+ short m_value;
+
+ void insert(const string_type& s, unsigned short value)
+ {
+ unsigned int i = 0;
+ iterator ti;
+ while(i < s.size()) {
+ if (i==0) {
+ if (i == (s.size()-1)) {
+ ti = m_next_chars.insert(value_type(s[i],
+ string_parse_tree<charT>(value)));
+ }
+ else {
+ ti = m_next_chars.insert(value_type(s[i],
+ string_parse_tree<charT>()));
+ }
+ }
+ else {
+ if (i == (s.size()-1)) {
+ ti = ti->second.m_next_chars.insert(value_type(s[i],
+ string_parse_tree<charT>(value)));
+ }
+
+ else {
+ ti = ti->second.m_next_chars.insert(value_type(s[i],
+ string_parse_tree<charT>()));
+ }
+
+ }
+ i++;
+ }
+ }
+
+
+ //! Recursive function that finds a matching string in the tree.
+ /*! Must check match_results::has_remaining() after match() is
+ * called. This is required so the user can determine if
+ * stream iterator is already pointing to the expected
+ * character or not (match() might advance sitr to next char in stream).
+ *
+ * A parse_match_result that has been returned from a failed match
+ * attempt can be sent in to the match function of a different
+ * string_parse_tree to attempt a match there. Use the iterators
+ * for the partially consumed stream, the parse_match_result object,
+ * and '0' for the level parameter. */
+ short
+ match(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end,
+ parse_match_result_type& result,
+ unsigned int& level) const
+ {
+
+ level++;
+ charT c;
+ // if we conditionally advance sitr, we won't have
+ // to consume the next character past the input
+ bool adv_itr = true;
+ if (level > result.cache.size()) {
+ if (sitr == stream_end) return 0; //bail - input exhausted
+ c = static_cast<charT>(std::tolower(*sitr));
+ //result.cache += c;
+ //sitr++;
+ }
+ else {
+ // if we're looking for characters from the cache,
+ // we don't want to increment sitr
+ adv_itr = false;
+ c = static_cast<charT>(std::tolower(result.cache[level-1]));
+ }
+ const_iterator litr = m_next_chars.lower_bound(c);
+ const_iterator uitr = m_next_chars.upper_bound(c);
+ while (litr != uitr) { // equal if not found
+ if(adv_itr) {
+ sitr++;
+ result.cache += c;
+ }
+ if (litr->second.m_value != -1) { // -1 is default value
+ if (result.match_depth < level) {
+ result.current_match = litr->second.m_value;
+ result.match_depth = static_cast<unsigned short>(level);
+ }
+ litr->second.match(sitr, stream_end,
+ result, level);
+ level--;
+ }
+ else {
+ litr->second.match(sitr, stream_end,
+ result, level);
+ level--;
+ }
+
+ if(level <= result.cache.size()) {
+ adv_itr = false;
+ }
+
+ litr++;
+ }
+ return result.current_match;
+
+ }
+
+ /*! Must check match_results::has_remaining() after match() is
+ * called. This is required so the user can determine if
+ * stream iterator is already pointing to the expected
+ * character or not (match() might advance sitr to next char in stream).
+ */
+ parse_match_result_type
+ match(std::istreambuf_iterator<charT>& sitr,
+ std::istreambuf_iterator<charT>& stream_end) const
+ {
+ // lookup to_lower of char in tree.
+ unsigned int level = 0;
+ // string_type cache;
+ parse_match_result_type result;
+ match(sitr, stream_end, result, level);
+ return result;
+ }
+
+ void printme(std::ostream& os, int& level)
+ {
+ level++;
+ iterator itr = m_next_chars.begin();
+ iterator end = m_next_chars.end();
+ // os << "starting level: " << level << std::endl;
+ while (itr != end) {
+ os << "level: " << level
+ << " node: " << itr->first
+ << " value: " << itr->second.m_value
+ << std::endl;
+ itr->second.printme(os, level);
+ itr++;
+ }
+ level--;
+ }
+
+ void print(std::ostream& os)
+ {
+ int level = 0;
+ printme(os, level);
+ }
+
+ void printmatch(std::ostream& os, charT c)
+ {
+ iterator litr = m_next_chars.lower_bound(c);
+ iterator uitr = m_next_chars.upper_bound(c);
+ os << "matches for: " << c << std::endl;
+ while (litr != uitr) {
+ os << " node: " << litr->first
+ << " value: " << litr->second.m_value
+ << std::endl;
+ litr++;
+ }
+ }
+
+};
+
+
+} } //namespace
+#endif
diff --git a/3rdParty/Boost/boost/date_time/strings_from_facet.hpp b/3rdParty/Boost/boost/date_time/strings_from_facet.hpp
new file mode 100644
index 0000000..2bc26fb
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/strings_from_facet.hpp
@@ -0,0 +1,125 @@
+#ifndef DATE_TIME_STRINGS_FROM_FACET__HPP___
+#define DATE_TIME_STRINGS_FROM_FACET__HPP___
+
+/* Copyright (c) 2004 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2009-02-01 06:29:43 -0500 (Sun, 01 Feb 2009) $
+ */
+
+#include <sstream>
+#include <string>
+#include <vector>
+#include <locale>
+
+namespace boost { namespace date_time {
+
+//! This function gathers up all the month strings from a std::locale
+/*! Using the time_put facet, this function creates a collection of
+ * all the month strings from a locale. This is handy when building
+ * custom date parsers or formatters that need to be localized.
+ *
+ *@param charT The type of char to use when gathering typically char
+ * or wchar_t.
+ *@param locale The locale to use when gathering the strings
+ *@param short_strings True(default) to gather short strings,
+ * false for long strings.
+ *@return A vector of strings containing the strings in order. eg:
+ * Jan, Feb, Mar, etc.
+ */
+template<typename charT>
+std::vector<std::basic_string<charT> >
+gather_month_strings(const std::locale& locale, bool short_strings=true)
+{
+ typedef std::basic_string<charT> string_type;
+ typedef std::vector<string_type> collection_type;
+ typedef std::basic_ostringstream<charT> ostream_type;
+ typedef std::ostreambuf_iterator<charT> ostream_iter_type;
+ typedef std::basic_ostringstream<charT> stringstream_type;
+ typedef std::time_put<charT> time_put_facet_type;
+ charT short_fmt[3] = { '%', 'b' };
+ charT long_fmt[3] = { '%', 'B' };
+ collection_type months;
+ string_type outfmt(short_fmt);
+ if (!short_strings) {
+ outfmt = long_fmt;
+ }
+ {
+ //grab the needed strings by using the locale to
+ //output each month
+ const charT* p_outfmt = outfmt.c_str(), *p_outfmt_end = p_outfmt + outfmt.size();
+ for (int m=0; m < 12; m++) {
+ tm tm_value;
+ tm_value.tm_mon = m;
+ stringstream_type ss;
+ ostream_iter_type oitr(ss);
+ std::use_facet<time_put_facet_type>(locale).put(oitr, ss, ss.fill(),
+ &tm_value,
+ p_outfmt,
+ p_outfmt_end);
+ months.push_back(ss.str());
+ }
+ }
+ return months;
+}
+
+//! This function gathers up all the weekday strings from a std::locale
+/*! Using the time_put facet, this function creates a collection of
+ * all the weekday strings from a locale starting with the string for
+ * 'Sunday'. This is handy when building custom date parsers or
+ * formatters that need to be localized.
+ *
+ *@param charT The type of char to use when gathering typically char
+ * or wchar_t.
+ *@param locale The locale to use when gathering the strings
+ *@param short_strings True(default) to gather short strings,
+ * false for long strings.
+ *@return A vector of strings containing the weekdays in order. eg:
+ * Sun, Mon, Tue, Wed, Thu, Fri, Sat
+ */
+template<typename charT>
+std::vector<std::basic_string<charT> >
+gather_weekday_strings(const std::locale& locale, bool short_strings=true)
+{
+ typedef std::basic_string<charT> string_type;
+ typedef std::vector<string_type> collection_type;
+ typedef std::basic_ostringstream<charT> ostream_type;
+ typedef std::ostreambuf_iterator<charT> ostream_iter_type;
+ typedef std::basic_ostringstream<charT> stringstream_type;
+ typedef std::time_put<charT> time_put_facet_type;
+ charT short_fmt[3] = { '%', 'a' };
+ charT long_fmt[3] = { '%', 'A' };
+
+ collection_type weekdays;
+
+
+ string_type outfmt(short_fmt);
+ if (!short_strings) {
+ outfmt = long_fmt;
+ }
+ {
+ //grab the needed strings by using the locale to
+ //output each month / weekday
+ const charT* p_outfmt = outfmt.c_str(), *p_outfmt_end = p_outfmt + outfmt.size();
+ for (int i=0; i < 7; i++) {
+ tm tm_value;
+ tm_value.tm_wday = i;
+ stringstream_type ss;
+ ostream_iter_type oitr(ss);
+ std::use_facet<time_put_facet_type>(locale).put(oitr, ss, ss.fill(),
+ &tm_value,
+ p_outfmt,
+ p_outfmt_end);
+
+ weekdays.push_back(ss.str());
+ }
+ }
+ return weekdays;
+}
+
+} } //namespace
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time.hpp b/3rdParty/Boost/boost/date_time/time.hpp
new file mode 100644
index 0000000..6a6cbe1
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time.hpp
@@ -0,0 +1,191 @@
+#ifndef DATE_TIME_TIME_HPP___
+#define DATE_TIME_TIME_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+/*! @file time.hpp
+ This file contains the interface for the time associated classes.
+*/
+#include <string>
+#include <boost/operators.hpp>
+#include <boost/date_time/time_defs.hpp>
+#include <boost/date_time/special_defs.hpp>
+
+namespace boost {
+namespace date_time {
+
+ //! Representation of a precise moment in time, including the date.
+ /*!
+ This class is a skeleton for the interface of a temporal type
+ with a resolution that is higher than a day. It is intended that
+ this class be the base class and that the actual time
+ class be derived using the BN pattern. In this way, the derived
+ class can make decisions such as 'should there be a default constructor'
+ and what should it set its value to, should there be optional constructors
+ say allowing only an time_durations that generate a time from a clock,etc.
+ So, in fact multiple time types can be created for a time_system with
+ different construction policies, and all of them can perform basic
+ operations by only writing a copy constructor. Finally, compiler
+ errors are also shorter.
+
+ The real behavior of the time class is provided by the time_system
+ template parameter. This class must provide all the logic
+ for addition, subtraction, as well as define all the interface
+ types.
+
+ */
+
+ template <class T, class time_system>
+ class base_time : private
+ boost::less_than_comparable<T
+ , boost::equality_comparable<T
+ > >
+ {
+ public:
+ typedef T time_type;
+ typedef typename time_system::time_rep_type time_rep_type;
+ typedef typename time_system::date_type date_type;
+ typedef typename time_system::date_duration_type date_duration_type;
+ typedef typename time_system::time_duration_type time_duration_type;
+ //typedef typename time_system::hms_type hms_type;
+
+ base_time(const date_type& day,
+ const time_duration_type& td,
+ dst_flags dst=not_dst) :
+ time_(time_system::get_time_rep(day, td, dst))
+ {}
+ base_time(special_values sv) :
+ time_(time_system::get_time_rep(sv))
+ {}
+ base_time(const time_rep_type& rhs) :
+ time_(rhs)
+ {}
+ date_type date() const
+ {
+ return time_system::get_date(time_);
+ }
+ time_duration_type time_of_day() const
+ {
+ return time_system::get_time_of_day(time_);
+ }
+ /*! Optional bool parameter will return time zone as an offset
+ * (ie "+07:00"). Empty string is returned for classes that do
+ * not use a time_zone */
+ std::string zone_name(bool /*as_offset*/=false) const
+ {
+ return time_system::zone_name(time_);
+ }
+ /*! Optional bool parameter will return time zone as an offset
+ * (ie "+07:00"). Empty string is returned for classes that do
+ * not use a time_zone */
+ std::string zone_abbrev(bool /*as_offset*/=false) const
+ {
+ return time_system::zone_name(time_);
+ }
+ //! An empty string is returned for classes that do not use a time_zone
+ std::string zone_as_posix_string() const
+ {
+ return std::string();
+ }
+
+ //! check to see if date is not a value
+ bool is_not_a_date_time() const
+ {
+ return time_.is_not_a_date_time();
+ }
+ //! check to see if date is one of the infinity values
+ bool is_infinity() const
+ {
+ return (is_pos_infinity() || is_neg_infinity());
+ }
+ //! check to see if date is greater than all possible dates
+ bool is_pos_infinity() const
+ {
+ return time_.is_pos_infinity();
+ }
+ //! check to see if date is greater than all possible dates
+ bool is_neg_infinity() const
+ {
+ return time_.is_neg_infinity();
+ }
+ //! check to see if time is a special value
+ bool is_special() const
+ {
+ return(is_not_a_date_time() || is_infinity());
+ }
+ //!Equality operator -- others generated by boost::equality_comparable
+ bool operator==(const time_type& rhs) const
+ {
+ return time_system::is_equal(time_,rhs.time_);
+ }
+ //!Equality operator -- others generated by boost::less_than_comparable
+ bool operator<(const time_type& rhs) const
+ {
+ return time_system::is_less(time_,rhs.time_);
+ }
+ //! difference between two times
+ time_duration_type operator-(const time_type& rhs) const
+ {
+ return time_system::subtract_times(time_, rhs.time_);
+ }
+ //! add date durations
+ time_type operator+(const date_duration_type& dd) const
+ {
+ return time_system::add_days(time_, dd);
+ }
+ time_type operator+=(const date_duration_type& dd)
+ {
+ time_ = (time_system::get_time_rep(date() + dd, time_of_day()));
+ return time_type(time_);
+ }
+ //! subtract date durations
+ time_type operator-(const date_duration_type& dd) const
+ {
+ return time_system::subtract_days(time_, dd);
+ }
+ time_type operator-=(const date_duration_type& dd)
+ {
+ time_ = (time_system::get_time_rep(date() - dd, time_of_day()));
+ return time_type(time_);
+ }
+ //! add time durations
+ time_type operator+(const time_duration_type& td) const
+ {
+ return time_type(time_system::add_time_duration(time_, td));
+ }
+ time_type operator+=(const time_duration_type& td)
+ {
+ time_ = (time_system::get_time_rep(date(), time_of_day() + td));
+ return time_type(time_);
+ }
+ //! subtract time durations
+ time_type operator-(const time_duration_type& rhs) const
+ {
+ return time_system::subtract_time_duration(time_, rhs);
+ }
+ time_type operator-=(const time_duration_type& td)
+ {
+ time_ = (time_system::get_time_rep(date(), time_of_day() - td));
+ return time_type(time_);
+ }
+
+ protected:
+ time_rep_type time_;
+ };
+
+
+
+
+
+} } //namespace date_time::boost
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/time_clock.hpp b/3rdParty/Boost/boost/date_time/time_clock.hpp
new file mode 100644
index 0000000..1ea5d2e8
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_clock.hpp
@@ -0,0 +1,83 @@
+#ifndef DATE_TIME_TIME_CLOCK_HPP___
+#define DATE_TIME_TIME_CLOCK_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+/*! @file time_clock.hpp
+ This file contains the interface for clock devices.
+*/
+
+#include "boost/date_time/c_time.hpp"
+#include "boost/shared_ptr.hpp"
+
+namespace boost {
+namespace date_time {
+
+
+ //! A clock providing time level services based on C time_t capabilities
+ /*! This clock provides resolution to the 1 second level
+ */
+ template<class time_type>
+ class second_clock
+ {
+ public:
+ typedef typename time_type::date_type date_type;
+ typedef typename time_type::time_duration_type time_duration_type;
+
+ static time_type local_time()
+ {
+ ::std::time_t t;
+ ::std::time(&t);
+ ::std::tm curr, *curr_ptr;
+ //curr_ptr = ::std::localtime(&t);
+ curr_ptr = c_time::localtime(&t, &curr);
+ return create_time(curr_ptr);
+ }
+
+
+ //! Get the current day in universal date as a ymd_type
+ static time_type universal_time()
+ {
+
+ ::std::time_t t;
+ ::std::time(&t);
+ ::std::tm curr, *curr_ptr;
+ //curr_ptr = ::std::gmtime(&t);
+ curr_ptr = c_time::gmtime(&t, &curr);
+ return create_time(curr_ptr);
+ }
+
+ template<class time_zone_type>
+ static time_type local_time(boost::shared_ptr<time_zone_type> tz_ptr)
+ {
+ typedef typename time_type::utc_time_type utc_time_type;
+ utc_time_type utc_time = second_clock<utc_time_type>::universal_time();
+ return time_type(utc_time, tz_ptr);
+ }
+
+
+ private:
+ static time_type create_time(::std::tm* current)
+ {
+ date_type d(static_cast<unsigned short>(current->tm_year + 1900),
+ static_cast<unsigned short>(current->tm_mon + 1),
+ static_cast<unsigned short>(current->tm_mday));
+ time_duration_type td(current->tm_hour,
+ current->tm_min,
+ current->tm_sec);
+ return time_type(d,td);
+ }
+
+ };
+
+
+} } //namespace date_time
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time_defs.hpp b/3rdParty/Boost/boost/date_time/time_defs.hpp
new file mode 100644
index 0000000..55fe42a
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_defs.hpp
@@ -0,0 +1,43 @@
+#ifndef DATE_TIME_TIME_PRECISION_LIMITS_HPP
+#define DATE_TIME_TIME_PRECISION_LIMITS_HPP
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+
+/*! \file time_defs.hpp
+ This file contains nice definitions for handling the resoluion of various time
+ reprsentations.
+*/
+
+namespace boost {
+namespace date_time {
+
+ //!Defines some nice types for handling time level resolutions
+ enum time_resolutions {
+ sec,
+ tenth,
+ hundreth, // deprecated misspelled version of hundredth
+ hundredth = hundreth,
+ milli,
+ ten_thousandth,
+ micro,
+ nano,
+ NumResolutions
+ };
+
+ //! Flags for daylight savings or summer time
+ enum dst_flags {not_dst, is_dst, calculate};
+
+
+} } //namespace date_time
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time_duration.hpp b/3rdParty/Boost/boost/date_time/time_duration.hpp
new file mode 100644
index 0000000..4004125
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_duration.hpp
@@ -0,0 +1,281 @@
+#ifndef DATE_TIME_TIME_DURATION_HPP___
+#define DATE_TIME_TIME_DURATION_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/operators.hpp"
+#include "boost/date_time/time_defs.hpp"
+#include "boost/date_time/special_defs.hpp"
+#include "boost/date_time/compiler_config.hpp"
+
+namespace boost {
+namespace date_time {
+
+
+ //! Represents some amount of elapsed time measure to a given resolution
+ /*! This class represents a standard set of capabilities for all
+ counted time durations. Time duration implementations should derive
+ from this class passing their type as the first template parameter.
+ This design allows the subclass duration types to provide custom
+ construction policies or other custom features not provided here.
+
+ @param T The subclass type
+ @param rep_type The time resolution traits for this duration type.
+ */
+ template<class T, typename rep_type>
+ class time_duration : private
+ boost::less_than_comparable<T
+ , boost::equality_comparable<T
+ > >
+ /* dividable, addable, and subtractable operator templates
+ * won't work with this class (MSVC++ 6.0). return type
+ * from '+=' is different than expected return type
+ * from '+'. multipliable probably wont work
+ * either (haven't tried) */
+ {
+ public:
+ typedef T duration_type; //the subclass
+ typedef rep_type traits_type;
+ typedef typename rep_type::day_type day_type;
+ typedef typename rep_type::hour_type hour_type;
+ typedef typename rep_type::min_type min_type;
+ typedef typename rep_type::sec_type sec_type;
+ typedef typename rep_type::fractional_seconds_type fractional_seconds_type;
+ typedef typename rep_type::tick_type tick_type;
+ typedef typename rep_type::impl_type impl_type;
+
+ time_duration() : ticks_(0) {}
+ time_duration(hour_type hours_in,
+ min_type minutes_in,
+ sec_type seconds_in=0,
+ fractional_seconds_type frac_sec_in = 0) :
+ ticks_(rep_type::to_tick_count(hours_in,minutes_in,seconds_in,frac_sec_in))
+ {}
+ // copy constructor required for dividable<>
+ //! Construct from another time_duration (Copy constructor)
+ time_duration(const time_duration<T, rep_type>& other)
+ : ticks_(other.ticks_)
+ {}
+ //! Construct from special_values
+ time_duration(special_values sv) : ticks_(impl_type::from_special(sv))
+ {}
+ //! Returns smallest representable duration
+ static duration_type unit()
+ {
+ return duration_type(0,0,0,1);
+ }
+ //! Return the number of ticks in a second
+ static tick_type ticks_per_second()
+ {
+ return rep_type::res_adjust();
+ }
+ //! Provide the resolution of this duration type
+ static time_resolutions resolution()
+ {
+ return rep_type::resolution();
+ }
+ //! Returns number of hours in the duration
+ hour_type hours() const
+ {
+ return static_cast<hour_type>(ticks() / (3600*ticks_per_second()));
+ }
+ //! Returns normalized number of minutes
+ min_type minutes() const
+ {
+ return static_cast<min_type>((ticks() / (60*ticks_per_second())) % 60);
+ }
+ //! Returns normalized number of seconds (0..60)
+ sec_type seconds() const
+ {
+ return static_cast<sec_type>((ticks()/ticks_per_second()) % 60);
+ }
+ //! Returns total number of seconds truncating any fractional seconds
+ sec_type total_seconds() const
+ {
+ return static_cast<sec_type>(ticks() / ticks_per_second());
+ }
+ //! Returns total number of milliseconds truncating any fractional seconds
+ tick_type total_milliseconds() const
+ {
+ if (ticks_per_second() < 1000) {
+ return ticks() * (static_cast<tick_type>(1000) / ticks_per_second());
+ }
+ return ticks() / (ticks_per_second() / static_cast<tick_type>(1000)) ;
+ }
+ //! Returns total number of nanoseconds truncating any sub millisecond values
+ tick_type total_nanoseconds() const
+ {
+ if (ticks_per_second() < 1000000000) {
+ return ticks() * (static_cast<tick_type>(1000000000) / ticks_per_second());
+ }
+ return ticks() / (ticks_per_second() / static_cast<tick_type>(1000000000)) ;
+ }
+ //! Returns total number of microseconds truncating any sub microsecond values
+ tick_type total_microseconds() const
+ {
+ if (ticks_per_second() < 1000000) {
+ return ticks() * (static_cast<tick_type>(1000000) / ticks_per_second());
+ }
+ return ticks() / (ticks_per_second() / static_cast<tick_type>(1000000)) ;
+ }
+ //! Returns count of fractional seconds at given resolution
+ fractional_seconds_type fractional_seconds() const
+ {
+ return (ticks() % ticks_per_second());
+ }
+ //! Returns number of possible digits in fractional seconds
+ static unsigned short num_fractional_digits()
+ {
+ return rep_type::num_fractional_digits();
+ }
+ duration_type invert_sign() const
+ {
+ return duration_type(ticks_ * (-1));
+ }
+ bool is_negative() const
+ {
+ return ticks_ < 0;
+ }
+ bool operator<(const time_duration& rhs) const
+ {
+ return ticks_ < rhs.ticks_;
+ }
+ bool operator==(const time_duration& rhs) const
+ {
+ return ticks_ == rhs.ticks_;
+ }
+ //! unary- Allows for time_duration td = -td1
+ duration_type operator-()const
+ {
+ return duration_type(ticks_ * (-1));
+ }
+ duration_type operator-(const duration_type& d) const
+ {
+ return duration_type(ticks_ - d.ticks_);
+ }
+ duration_type operator+(const duration_type& d) const
+ {
+ return duration_type(ticks_ + d.ticks_);
+ }
+ duration_type operator/(int divisor) const
+ {
+ return duration_type(ticks_ / divisor);
+ }
+ duration_type operator-=(const duration_type& d)
+ {
+ ticks_ = ticks_ - d.ticks_;
+ return duration_type(ticks_);
+ }
+ duration_type operator+=(const duration_type& d)
+ {
+ ticks_ = ticks_ + d.ticks_;
+ return duration_type(ticks_);
+ }
+ //! Division operations on a duration with an integer.
+ duration_type operator/=(int divisor)
+ {
+ ticks_ = ticks_ / divisor;
+ return duration_type(ticks_);
+ }
+ //! Multiplication operations an a duration with an integer
+ duration_type operator*(int rhs) const
+ {
+ return duration_type(ticks_ * rhs);
+ }
+ duration_type operator*=(int divisor)
+ {
+ ticks_ = ticks_ * divisor;
+ return duration_type(ticks_);
+ }
+ tick_type ticks() const
+ {
+ return traits_type::as_number(ticks_);
+ }
+
+ //! Is ticks_ a special value?
+ bool is_special()const
+ {
+ if(traits_type::is_adapted())
+ {
+ return ticks_.is_special();
+ }
+ else{
+ return false;
+ }
+ }
+ //! Is duration pos-infinity
+ bool is_pos_infinity()const
+ {
+ if(traits_type::is_adapted())
+ {
+ return ticks_.is_pos_infinity();
+ }
+ else{
+ return false;
+ }
+ }
+ //! Is duration neg-infinity
+ bool is_neg_infinity()const
+ {
+ if(traits_type::is_adapted())
+ {
+ return ticks_.is_neg_infinity();
+ }
+ else{
+ return false;
+ }
+ }
+ //! Is duration not-a-date-time
+ bool is_not_a_date_time()const
+ {
+ if(traits_type::is_adapted())
+ {
+ return ticks_.is_nan();
+ }
+ else{
+ return false;
+ }
+ }
+
+ //! Used for special_values output
+ impl_type get_rep()const
+ {
+ return ticks_;
+ }
+
+ protected:
+ explicit time_duration(impl_type in) : ticks_(in) {};
+ impl_type ticks_;
+ };
+
+
+
+ //! Template for instantiating derived adjusting durations
+ /* These templates are designed to work with multiples of
+ * 10 for frac_of_second and resoultion adjustment
+ */
+ template<class base_duration, boost::int64_t frac_of_second>
+ class subsecond_duration : public base_duration
+ {
+ public:
+ typedef typename base_duration::traits_type traits_type;
+ explicit subsecond_duration(boost::int64_t ss) :
+ base_duration(0,0,0,ss*traits_type::res_adjust()/frac_of_second)
+ {}
+ };
+
+
+
+} } //namespace date_time
+
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/time_facet.hpp b/3rdParty/Boost/boost/date_time/time_facet.hpp
new file mode 100644
index 0000000..c1a2f8e
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_facet.hpp
@@ -0,0 +1,1327 @@
+
+#ifndef _DATE_TIME_FACET__HPP__
+#define _DATE_TIME_FACET__HPP__
+
+/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Martin Andrian, Jeff Garland, Bart Garst
+ * $Date: 2008-11-23 06:13:35 -0500 (Sun, 23 Nov 2008) $
+ */
+
+#include <cctype>
+#include <locale>
+#include <limits>
+#include <string>
+#include <sstream>
+#include <iomanip>
+#include <iterator> // i/ostreambuf_iterator
+#include <exception>
+#include <boost/assert.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/algorithm/string/erase.hpp>
+#include <boost/algorithm/string/replace.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/date_facet.hpp>
+#include <boost/date_time/string_convert.hpp>
+#include <boost/date_time/special_defs.hpp>
+
+namespace boost {
+namespace date_time {
+
+ template <class CharT>
+ struct time_formats {
+ public:
+ typedef CharT char_type;
+ static const char_type fractional_seconds_format[3]; // f
+ static const char_type fractional_seconds_or_none_format[3]; // F
+ static const char_type seconds_with_fractional_seconds_format[3]; // s
+ static const char_type seconds_format[3]; // S
+ static const char_type hours_format[3]; // H
+ static const char_type unrestricted_hours_format[3]; // O
+ static const char_type standard_format[9]; // x X
+ static const char_type zone_abbrev_format[3]; // z
+ static const char_type zone_name_format[3]; // Z
+ static const char_type zone_iso_format[3]; // q
+ static const char_type zone_iso_extended_format[3]; // Q
+ static const char_type posix_zone_string_format[4]; // ZP
+ static const char_type duration_sign_negative_only[3]; // -
+ static const char_type duration_sign_always[3]; // +
+ static const char_type duration_seperator[2];
+ static const char_type negative_sign[2]; //-
+ static const char_type positive_sign[2]; //+
+ static const char_type iso_time_format_specifier[18];
+ static const char_type iso_time_format_extended_specifier[22];
+ //default ptime format is YYYY-Mon-DD HH:MM:SS[.fff...][ zzz]
+ static const char_type default_time_format[23];
+ // default_time_input_format uses a posix_time_zone_string instead of a time zone abbrev
+ static const char_type default_time_input_format[24];
+ //default time_duration format is HH:MM:SS[.fff...]
+ static const char_type default_time_duration_format[11];
+ };
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::fractional_seconds_format[3] = {'%','f'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::fractional_seconds_or_none_format[3] = {'%','F'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::seconds_with_fractional_seconds_format[3] =
+ {'%','s'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::seconds_format[3] = {'%','S'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::hours_format[3] = {'%','H'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::unrestricted_hours_format[3] = {'%','O'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ //time_formats<CharT>::standard_format[5] = {'%','c',' ','%','z'};
+ time_formats<CharT>::standard_format[9] = {'%','x',' ','%','X',' ','%','z'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::zone_abbrev_format[3] = {'%','z'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::zone_name_format[3] = {'%','Z'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::zone_iso_format[3] = {'%','q'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::zone_iso_extended_format[3] ={'%','Q'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::posix_zone_string_format[4] ={'%','Z','P'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::duration_seperator[2] = {':'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::negative_sign[2] = {'-'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::positive_sign[2] = {'+'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::duration_sign_negative_only[3] ={'%','-'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::duration_sign_always[3] ={'%','+'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::iso_time_format_specifier[18] =
+ {'%', 'Y', '%', 'm', '%', 'd', 'T',
+ '%', 'H', '%', 'M', '%', 'S', '%', 'F', '%','q' };
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::iso_time_format_extended_specifier[22] =
+ {'%', 'Y', '-', '%', 'm', '-', '%', 'd', ' ',
+ '%', 'H', ':', '%', 'M', ':', '%', 'S', '%', 'F','%','Q'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::default_time_format[23] =
+ {'%','Y','-','%','b','-','%','d',' ',
+ '%','H',':','%','M',':','%','S','%','F',' ','%','z'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::default_time_input_format[24] =
+ {'%','Y','-','%','b','-','%','d',' ',
+ '%','H',':','%','M',':','%','S','%','F',' ','%','Z','P'};
+
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::default_time_duration_format[11] =
+ {'%','H',':','%','M',':','%','S','%','F'};
+
+
+
+ /*! Facet used for format-based output of time types
+ * This class provides for the use of format strings to output times. In addition
+ * to the flags for formatting date elements, the following are the allowed format flags:
+ * - %x %X => default format - enables addition of more flags to default (ie. "%x %X %z")
+ * - %f => fractional seconds ".123456"
+ * - %F => fractional seconds or none: like frac sec but empty if frac sec == 0
+ * - %s => seconds w/ fractional sec "02.123" (this is the same as "%S%f)
+ * - %S => seconds "02"
+ * - %z => abbreviated time zone "EDT"
+ * - %Z => full time zone name "Eastern Daylight Time"
+ */
+ template <class time_type,
+ class CharT,
+ class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class time_facet :
+ public boost::date_time::date_facet<typename time_type::date_type , CharT, OutItrT> {
+ public:
+ typedef typename time_type::date_type date_type;
+ typedef typename time_type::time_duration_type time_duration_type;
+ typedef boost::date_time::period<time_type,time_duration_type> period_type;
+ typedef boost::date_time::date_facet<typename time_type::date_type, CharT, OutItrT> base_type;
+ typedef typename base_type::string_type string_type;
+ typedef typename base_type::char_type char_type;
+ typedef typename base_type::period_formatter_type period_formatter_type;
+ typedef typename base_type::special_values_formatter_type special_values_formatter_type;
+ typedef typename base_type::date_gen_formatter_type date_gen_formatter_type;
+ static const char_type* fractional_seconds_format; // %f
+ static const char_type* fractional_seconds_or_none_format; // %F
+ static const char_type* seconds_with_fractional_seconds_format; // %s
+ static const char_type* seconds_format; // %S
+ static const char_type* hours_format; // %H
+ static const char_type* unrestricted_hours_format; // %O
+ static const char_type* standard_format; // %x X
+ static const char_type* zone_abbrev_format; // %z
+ static const char_type* zone_name_format; // %Z
+ static const char_type* zone_iso_format; // %q
+ static const char_type* zone_iso_extended_format; // %Q
+ static const char_type* posix_zone_string_format; // %ZP
+ static const char_type* duration_seperator;
+ static const char_type* duration_sign_always; // %+
+ static const char_type* duration_sign_negative_only; // %-
+ static const char_type* negative_sign; //-
+ static const char_type* positive_sign; //+
+ static const char_type* iso_time_format_specifier;
+ static const char_type* iso_time_format_extended_specifier;
+
+ //default ptime format is YYYY-Mon-DD HH:MM:SS[.fff...][ zzz]
+ static const char_type* default_time_format;
+ //default time_duration format is HH:MM:SS[.fff...]
+ static const char_type* default_time_duration_format;
+ static std::locale::id id;
+
+#if defined (__SUNPRO_CC) && defined (_RWSTD_VER)
+ std::locale::id& __get_id (void) const { return id; }
+#endif
+
+ //! sets default formats for ptime, local_date_time, and time_duration
+ explicit time_facet(::size_t a_ref = 0)
+ : base_type(default_time_format, period_formatter_type(), special_values_formatter_type(), date_gen_formatter_type(), a_ref),
+ m_time_duration_format(string_type(duration_sign_negative_only) + default_time_duration_format)
+ {}
+
+ //! Construct the facet with an explicitly specified format
+ explicit time_facet(const char_type* a_format,
+ period_formatter_type period_formatter = period_formatter_type(),
+ const special_values_formatter_type& special_value_formatter = special_values_formatter_type(),
+ date_gen_formatter_type dg_formatter = date_gen_formatter_type(),
+ ::size_t a_ref = 0)
+ : base_type(a_format,
+ period_formatter,
+ special_value_formatter,
+ dg_formatter,
+ a_ref),
+ m_time_duration_format(string_type(duration_sign_negative_only) + default_time_duration_format)
+ {}
+
+ //! Changes format for time_duration
+ void time_duration_format(const char_type* const format)
+ {
+ m_time_duration_format = format;
+ }
+
+ virtual void set_iso_format()
+ {
+ this->m_format = iso_time_format_specifier;
+ }
+ virtual void set_iso_extended_format()
+ {
+ this->m_format = iso_time_format_extended_specifier;
+ }
+
+ OutItrT put(OutItrT a_next,
+ std::ios_base& a_ios,
+ char_type a_fill,
+ const time_type& a_time) const
+ {
+ if (a_time.is_special()) {
+ return this->do_put_special(a_next, a_ios, a_fill,
+ a_time.date().as_special());
+ }
+ string_type format(this->m_format);
+
+ string_type frac_str;
+ if (format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
+ // replace %s with %S.nnn
+ frac_str =
+ fractional_seconds_as_string(a_time.time_of_day(), false);
+ char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
+
+ string_type replace_string(seconds_format);
+ replace_string += sep;
+ replace_string += frac_str;
+ boost::algorithm::replace_all(format,
+ seconds_with_fractional_seconds_format,
+ replace_string);
+ }
+ /* NOTE: replacing posix_zone_string_format must be done BEFORE
+ * zone_name_format: "%ZP" & "%Z", if Z is checked first it will
+ * incorrectly replace a zone_name where a posix_string should go */
+ if (format.find(posix_zone_string_format) != string_type::npos) {
+ if(a_time.zone_abbrev().empty()) {
+ // if zone_abbrev() returns an empty string, we want to
+ // erase posix_zone_string_format from format
+ boost::algorithm::erase_all(format, posix_zone_string_format);
+ }
+ else{
+ boost::algorithm::replace_all(format,
+ posix_zone_string_format,
+ a_time.zone_as_posix_string());
+ }
+ }
+ if (format.find(zone_name_format) != string_type::npos) {
+ if(a_time.zone_name().empty()) {
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
+ * code removes the flag from the default formats */
+
+ // if zone_name() returns an empty string, we want to
+ // erase zone_name_format & one preceeding space
+ std::basic_ostringstream<char_type> ss;
+ ss << ' ' << zone_name_format;
+ boost::algorithm::erase_all(format, ss.str());
+ }
+ else{
+ boost::algorithm::replace_all(format,
+ zone_name_format,
+ a_time.zone_name());
+ }
+ }
+ if (format.find(zone_abbrev_format) != string_type::npos) {
+ if(a_time.zone_abbrev(false).empty()) {
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
+ * code removes the flag from the default formats */
+
+ // if zone_abbrev() returns an empty string, we want to
+ // erase zone_abbrev_format & one preceeding space
+ std::basic_ostringstream<char_type> ss;
+ ss << ' ' << zone_abbrev_format;
+ boost::algorithm::erase_all(format, ss.str());
+ }
+ else{
+ boost::algorithm::replace_all(format,
+ zone_abbrev_format,
+ a_time.zone_abbrev(false));
+ }
+ }
+ if (format.find(zone_iso_extended_format) != string_type::npos) {
+ if(a_time.zone_name(true).empty()) {
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
+ * code removes the flag from the default formats */
+
+ // if zone_name() returns an empty string, we want to
+ // erase zone_iso_extended_format from format
+ boost::algorithm::erase_all(format, zone_iso_extended_format);
+ }
+ else{
+ boost::algorithm::replace_all(format,
+ zone_iso_extended_format,
+ a_time.zone_name(true));
+ }
+ }
+
+ if (format.find(zone_iso_format) != string_type::npos) {
+ if(a_time.zone_abbrev(true).empty()) {
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
+ * code removes the flag from the default formats */
+
+ // if zone_abbrev() returns an empty string, we want to
+ // erase zone_iso_format from format
+ boost::algorithm::erase_all(format, zone_iso_format);
+ }
+ else{
+ boost::algorithm::replace_all(format,
+ zone_iso_format,
+ a_time.zone_abbrev(true));
+ }
+ }
+ if (format.find(fractional_seconds_format) != string_type::npos) {
+ // replace %f with nnnnnnn
+ if (!frac_str.size()) {
+ frac_str = fractional_seconds_as_string(a_time.time_of_day(), false);
+ }
+ boost::algorithm::replace_all(format,
+ fractional_seconds_format,
+ frac_str);
+ }
+
+ if (format.find(fractional_seconds_or_none_format) != string_type::npos) {
+ // replace %F with nnnnnnn or nothing if fs == 0
+ frac_str =
+ fractional_seconds_as_string(a_time.time_of_day(), true);
+ if (frac_str.size()) {
+ char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
+ string_type replace_string;
+ replace_string += sep;
+ replace_string += frac_str;
+ boost::algorithm::replace_all(format,
+ fractional_seconds_or_none_format,
+ replace_string);
+ }
+ else {
+ boost::algorithm::erase_all(format,
+ fractional_seconds_or_none_format);
+ }
+ }
+
+ return this->do_put_tm(a_next, a_ios, a_fill,
+ to_tm(a_time), format);
+ }
+
+ //! put function for time_duration
+ OutItrT put(OutItrT a_next,
+ std::ios_base& a_ios,
+ char_type a_fill,
+ const time_duration_type& a_time_dur) const
+ {
+ if (a_time_dur.is_special()) {
+ return this->do_put_special(a_next, a_ios, a_fill,
+ a_time_dur.get_rep().as_special());
+ }
+
+ string_type format(m_time_duration_format);
+ if (a_time_dur.is_negative()) {
+ // replace %- with minus sign. Should we use the numpunct facet?
+ boost::algorithm::replace_all(format,
+ duration_sign_negative_only,
+ negative_sign);
+ // remove all the %+ in the string with '-'
+ boost::algorithm::replace_all(format,
+ duration_sign_always,
+ negative_sign);
+ }
+ else { //duration is positive
+ // remove all the %- combos from the string
+ boost::algorithm::erase_all(format, duration_sign_negative_only);
+ // remove all the %+ in the string with '+'
+ boost::algorithm::replace_all(format,
+ duration_sign_always,
+ positive_sign);
+ }
+
+ /*
+ * It is possible for a time duration to span more then 24 hours.
+ * Standard time_put::put is obliged to behave the same as strftime
+ * (See ISO 14882-2003 22.2.5.3.1 par. 1) and strftime's behavior is
+ * unspecified for the case when tm_hour field is outside 0-23 range
+ * (See ISO 9899-1999 7.23.3.5 par. 3). So we must output %H and %O
+ * here ourself.
+ */
+ string_type hours_str;
+ if (format.find(unrestricted_hours_format) != string_type::npos) {
+ hours_str = hours_as_string(a_time_dur);
+ boost::algorithm::replace_all(format, unrestricted_hours_format, hours_str);
+ }
+ // We still have to process restricted hours format specifier. In order to
+ // support parseability of durations in ISO format (%H%M%S), we'll have to
+ // restrict the stringified hours length to 2 characters.
+ if (format.find(hours_format) != string_type::npos) {
+ if (hours_str.empty())
+ hours_str = hours_as_string(a_time_dur);
+ BOOST_ASSERT(hours_str.length() <= 2);
+ boost::algorithm::replace_all(format, hours_format, hours_str);
+ }
+
+ string_type frac_str;
+ if (format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
+ // replace %s with %S.nnn
+ frac_str =
+ fractional_seconds_as_string(a_time_dur, false);
+ char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
+
+ string_type replace_string(seconds_format);
+ replace_string += sep;
+ replace_string += frac_str;
+ boost::algorithm::replace_all(format,
+ seconds_with_fractional_seconds_format,
+ replace_string);
+ }
+ if (format.find(fractional_seconds_format) != string_type::npos) {
+ // replace %f with nnnnnnn
+ if (!frac_str.size()) {
+ frac_str = fractional_seconds_as_string(a_time_dur, false);
+ }
+ boost::algorithm::replace_all(format,
+ fractional_seconds_format,
+ frac_str);
+ }
+
+ if (format.find(fractional_seconds_or_none_format) != string_type::npos) {
+ // replace %F with nnnnnnn or nothing if fs == 0
+ frac_str =
+ fractional_seconds_as_string(a_time_dur, true);
+ if (frac_str.size()) {
+ char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
+ string_type replace_string;
+ replace_string += sep;
+ replace_string += frac_str;
+ boost::algorithm::replace_all(format,
+ fractional_seconds_or_none_format,
+ replace_string);
+ }
+ else {
+ boost::algorithm::erase_all(format,
+ fractional_seconds_or_none_format);
+ }
+ }
+
+ return this->do_put_tm(a_next, a_ios, a_fill,
+ to_tm(a_time_dur), format);
+ }
+
+ OutItrT put(OutItrT next, std::ios_base& a_ios,
+ char_type fill, const period_type& p) const
+ {
+ return this->m_period_formatter.put_period(next, a_ios, fill,p,*this);
+ }
+
+
+ protected:
+
+ static
+ string_type
+ fractional_seconds_as_string(const time_duration_type& a_time,
+ bool null_when_zero)
+ {
+ typename time_duration_type::fractional_seconds_type frac_sec =
+ a_time.fractional_seconds();
+
+ if (null_when_zero && (frac_sec == 0)) {
+ return string_type();
+ }
+
+ //make sure there is no sign
+ return integral_as_string(
+ date_time::absolute_value(frac_sec),
+ time_duration_type::num_fractional_digits());
+ }
+
+ static
+ string_type
+ hours_as_string(const time_duration_type& a_time, int width = 2)
+ {
+ return integral_as_string(date_time::absolute_value(a_time.hours()), width);
+ }
+
+ template< typename IntT >
+ static
+ string_type
+ integral_as_string(IntT val, int width = 2)
+ {
+ std::basic_ostringstream<char_type> ss;
+ ss.imbue(std::locale::classic()); // don't want any formatting
+ ss << std::setw(width)
+ << std::setfill(static_cast<char_type>('0'));
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ // JDG [7/6/02 VC++ compatibility]
+ char_type buff[34];
+ ss << _i64toa(static_cast<boost::int64_t>(val), buff, 10);
+#else
+ ss << val;
+#endif
+ return ss.str();
+ }
+
+ private:
+ string_type m_time_duration_format;
+
+ };
+
+ template <class time_type, class CharT, class OutItrT>
+ std::locale::id time_facet<time_type, CharT, OutItrT>::id;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::fractional_seconds_format = time_formats<CharT>::fractional_seconds_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::fractional_seconds_or_none_format = time_formats<CharT>::fractional_seconds_or_none_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::seconds_with_fractional_seconds_format =
+ time_formats<CharT>::seconds_with_fractional_seconds_format;
+
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::zone_name_format = time_formats<CharT>::zone_name_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::zone_abbrev_format = time_formats<CharT>::zone_abbrev_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::zone_iso_extended_format =time_formats<CharT>::zone_iso_extended_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::posix_zone_string_format =time_formats<CharT>::posix_zone_string_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::zone_iso_format = time_formats<CharT>::zone_iso_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::seconds_format = time_formats<CharT>::seconds_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::hours_format = time_formats<CharT>::hours_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::unrestricted_hours_format = time_formats<CharT>::unrestricted_hours_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::standard_format = time_formats<CharT>::standard_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::duration_seperator = time_formats<CharT>::duration_seperator;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::negative_sign = time_formats<CharT>::negative_sign;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::positive_sign = time_formats<CharT>::positive_sign;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::duration_sign_negative_only = time_formats<CharT>::duration_sign_negative_only;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::duration_sign_always = time_formats<CharT>::duration_sign_always;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type,CharT, OutItrT>::char_type*
+ time_facet<time_type,CharT, OutItrT>::iso_time_format_specifier = time_formats<CharT>::iso_time_format_specifier;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::iso_time_format_extended_specifier = time_formats<CharT>::iso_time_format_extended_specifier;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::default_time_format =
+ time_formats<CharT>::default_time_format;
+
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::default_time_duration_format =
+ time_formats<CharT>::default_time_duration_format;
+
+
+ //! Facet for format-based input.
+ /*!
+ */
+ template <class time_type,
+ class CharT,
+ class InItrT = std::istreambuf_iterator<CharT, std::char_traits<CharT> > >
+ class time_input_facet :
+ public boost::date_time::date_input_facet<typename time_type::date_type , CharT, InItrT> {
+ public:
+ typedef typename time_type::date_type date_type;
+ typedef typename time_type::time_duration_type time_duration_type;
+ typedef typename time_duration_type::fractional_seconds_type fracional_seconds_type;
+ typedef boost::date_time::period<time_type,time_duration_type> period_type;
+ typedef boost::date_time::date_input_facet<typename time_type::date_type, CharT, InItrT> base_type;
+ typedef typename base_type::duration_type date_duration_type;
+ typedef typename base_type::year_type year_type;
+ typedef typename base_type::month_type month_type;
+ typedef typename base_type::day_type day_type;
+ typedef typename base_type::string_type string_type;
+ typedef typename string_type::const_iterator const_itr;
+ typedef typename base_type::char_type char_type;
+ typedef typename base_type::format_date_parser_type format_date_parser_type;
+ typedef typename base_type::period_parser_type period_parser_type;
+ typedef typename base_type::special_values_parser_type special_values_parser_type;
+ typedef typename base_type::date_gen_parser_type date_gen_parser_type;
+ typedef typename base_type::special_values_parser_type::match_results match_results;
+
+ static const char_type* fractional_seconds_format; // f
+ static const char_type* fractional_seconds_or_none_format; // F
+ static const char_type* seconds_with_fractional_seconds_format; // s
+ static const char_type* seconds_format; // S
+ static const char_type* standard_format; // x X
+ static const char_type* zone_abbrev_format; // z
+ static const char_type* zone_name_format; // Z
+ static const char_type* zone_iso_format; // q
+ static const char_type* zone_iso_extended_format; // Q
+ static const char_type* duration_seperator;
+ static const char_type* iso_time_format_specifier;
+ static const char_type* iso_time_format_extended_specifier;
+ static const char_type* default_time_input_format;
+ static const char_type* default_time_duration_format;
+ static std::locale::id id;
+
+ //! Constructor that takes a format string for a ptime
+ explicit time_input_facet(const string_type& format, ::size_t a_ref = 0)
+ : base_type(format, a_ref),
+ m_time_duration_format(default_time_duration_format)
+ { }
+
+ explicit time_input_facet(const string_type& format,
+ const format_date_parser_type& date_parser,
+ const special_values_parser_type& sv_parser,
+ const period_parser_type& per_parser,
+ const date_gen_parser_type& date_gen_parser,
+ ::size_t a_ref = 0)
+ : base_type(format,
+ date_parser,
+ sv_parser,
+ per_parser,
+ date_gen_parser,
+ a_ref),
+ m_time_duration_format(default_time_duration_format)
+ {}
+
+ //! sets default formats for ptime, local_date_time, and time_duration
+ explicit time_input_facet(::size_t a_ref = 0)
+ : base_type(default_time_input_format, a_ref),
+ m_time_duration_format(default_time_duration_format)
+ { }
+
+ //! Set the format for time_duration
+ void time_duration_format(const char_type* const format) {
+ m_time_duration_format = format;
+ }
+ virtual void set_iso_format()
+ {
+ this->m_format = iso_time_format_specifier;
+ }
+ virtual void set_iso_extended_format()
+ {
+ this->m_format = iso_time_format_extended_specifier;
+ }
+
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
+ period_type& p) const
+ {
+ p = this->m_period_parser.get_period(sitr,
+ stream_end,
+ a_ios,
+ p,
+ time_duration_type::unit(),
+ *this);
+ return sitr;
+ }
+
+ //default ptime format is YYYY-Mon-DD HH:MM:SS[.fff...][ zzz]
+ //default time_duration format is %H:%M:%S%F HH:MM:SS[.fff...]
+
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
+ time_duration_type& td) const
+ {
+ // skip leading whitespace
+ while((sitr != stream_end) && std::isspace(*sitr)) { ++sitr; }
+
+ bool use_current_char = false;
+
+ // num_get will consume the +/-, we may need a copy if special_value
+ char_type c = '\0';
+ if((sitr != stream_end) && (*sitr == '-' || *sitr == '+')) {
+ c = *sitr;
+ }
+
+ typedef typename time_duration_type::hour_type hour_type;
+ typedef typename time_duration_type::min_type min_type;
+ typedef typename time_duration_type::sec_type sec_type;
+
+ hour_type hour = 0;
+ min_type min = 0;
+ sec_type sec = 0;
+ typename time_duration_type::fractional_seconds_type frac(0);
+
+ typedef std::num_get<CharT, InItrT> num_get;
+ if(!std::has_facet<num_get>(a_ios.getloc())) {
+ num_get* ng = new num_get();
+ std::locale loc = std::locale(a_ios.getloc(), ng);
+ a_ios.imbue(loc);
+ }
+
+ const_itr itr(m_time_duration_format.begin());
+ while (itr != m_time_duration_format.end() && (sitr != stream_end)) {
+ if (*itr == '%') {
+ ++itr;
+ if (*itr != '%') {
+ switch(*itr) {
+ case 'O':
+ {
+ // A period may span more than 24 hours. In that case the format
+ // string should be composed with the unrestricted hours specifier.
+ hour = var_string_to_int<hour_type, CharT>(sitr, stream_end,
+ std::numeric_limits<hour_type>::digits10 + 1);
+ if(hour == -1){
+ return check_special_value(sitr, stream_end, td, c);
+ }
+ break;
+ }
+ case 'H':
+ {
+ match_results mr;
+ hour = fixed_string_to_int<hour_type, CharT>(sitr, stream_end, mr, 2);
+ if(hour == -1){
+ return check_special_value(sitr, stream_end, td, c);
+ }
+ break;
+ }
+ case 'M':
+ {
+ match_results mr;
+ min = fixed_string_to_int<min_type, CharT>(sitr, stream_end, mr, 2);
+ if(min == -1){
+ return check_special_value(sitr, stream_end, td, c);
+ }
+ break;
+ }
+ case 's':
+ case 'S':
+ {
+ match_results mr;
+ sec = fixed_string_to_int<sec_type, CharT>(sitr, stream_end, mr, 2);
+ if(sec == -1){
+ return check_special_value(sitr, stream_end, td, c);
+ }
+ if (*itr == 'S')
+ break;
+ // %s is the same as %S%f so we drop through into %f
+ }
+ case 'f':
+ {
+ // check for decimal, check special_values if missing
+ if(*sitr == '.') {
+ ++sitr;
+ parse_frac_type(sitr, stream_end, frac);
+ // sitr will point to next expected char after this parsing
+ // is complete so no need to advance it
+ use_current_char = true;
+ }
+ else {
+ return check_special_value(sitr, stream_end, td, c);
+ }
+ break;
+ }
+ case 'F':
+ {
+ // check for decimal, skip if missing
+ if(*sitr == '.') {
+ ++sitr;
+ parse_frac_type(sitr, stream_end, frac);
+ // sitr will point to next expected char after this parsing
+ // is complete so no need to advance it
+ use_current_char = true;
+ }
+ else {
+ // nothing was parsed so we don't want to advance sitr
+ use_current_char = true;
+ }
+ break;
+ }
+ default:
+ {} // ignore what we don't understand?
+ }// switch
+ }
+ else { // itr == '%', second consecutive
+ ++sitr;
+ }
+
+ ++itr; //advance past format specifier
+ }
+ else { //skip past chars in format and in buffer
+ ++itr;
+ // set use_current_char when sitr is already
+ // pointing at the next character to process
+ if (use_current_char) {
+ use_current_char = false;
+ }
+ else {
+ ++sitr;
+ }
+ }
+ }
+
+ td = time_duration_type(hour, min, sec, frac);
+ return sitr;
+ }
+
+
+ //! Parses a time object from the input stream
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
+ time_type& t) const
+ {
+ string_type tz_str;
+ return get(sitr, stream_end, a_ios, t, tz_str, false);
+ }
+ //! Expects a time_zone in the input stream
+ InItrT get_local_time(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
+ time_type& t,
+ string_type& tz_str) const
+ {
+ return get(sitr, stream_end, a_ios, t, tz_str, true);
+ }
+
+ protected:
+
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
+ time_type& t,
+ string_type& tz_str,
+ bool time_is_local) const
+ {
+ // skip leading whitespace
+ while((sitr != stream_end) && std::isspace(*sitr)) { ++sitr; }
+
+ bool use_current_char = false;
+ bool use_current_format_char = false; // used whith two character flags
+
+ // num_get will consume the +/-, we may need a copy if special_value
+ char_type c = '\0';
+ if((sitr != stream_end) && (*sitr == '-' || *sitr == '+')) {
+ c = *sitr;
+ }
+
+ typedef typename time_duration_type::hour_type hour_type;
+ typedef typename time_duration_type::min_type min_type;
+ typedef typename time_duration_type::sec_type sec_type;
+
+ // time elements
+ hour_type hour = 0;
+ min_type min = 0;
+ sec_type sec = 0;
+ typename time_duration_type::fractional_seconds_type frac(0);
+ // date elements
+ short day_of_year(0);
+ /* Initialized the following to their minimum values. These intermediate
+ * objects are used so we get specific exceptions when part of the input
+ * is unparsable.
+ * Ex: "205-Jan-15" will throw a bad_year, "2005-Jsn-15"- bad_month, etc.*/
+ year_type t_year(1400);
+ month_type t_month(1);
+ day_type t_day(1);
+
+ typedef std::num_get<CharT, InItrT> num_get;
+ if(!std::has_facet<num_get>(a_ios.getloc())) {
+ num_get* ng = new num_get();
+ std::locale loc = std::locale(a_ios.getloc(), ng);
+ a_ios.imbue(loc);
+ }
+
+ const_itr itr(this->m_format.begin());
+ while (itr != this->m_format.end() && (sitr != stream_end)) {
+ if (*itr == '%') {
+ ++itr;
+ if (*itr != '%') {
+ // the cases are grouped by date & time flags - not alphabetical order
+ switch(*itr) {
+ // date flags
+ case 'Y':
+ case 'y':
+ {
+ char_type cs[3] = { '%', *itr };
+ string_type s(cs);
+ match_results mr;
+ try {
+ t_year = this->m_parser.parse_year(sitr, stream_end, s, mr);
+ }
+ catch(std::out_of_range&) { // base class for bad_year exception
+ if(this->m_sv_parser.match(sitr, stream_end, mr)) {
+ t = time_type(static_cast<special_values>(mr.current_match));
+ return sitr;
+ }
+ else {
+ throw; // rethrow bad_year
+ }
+ }
+ break;
+ }
+ case 'B':
+ case 'b':
+ case 'm':
+ {
+ char_type cs[3] = { '%', *itr };
+ string_type s(cs);
+ match_results mr;
+ try {
+ t_month = this->m_parser.parse_month(sitr, stream_end, s, mr);
+ }
+ catch(std::out_of_range&) { // base class for bad_month exception
+ if(this->m_sv_parser.match(sitr, stream_end, mr)) {
+ t = time_type(static_cast<special_values>(mr.current_match));
+ return sitr;
+ }
+ else {
+ throw; // rethrow bad_month
+ }
+ }
+ // did m_parser already advance sitr to next char?
+ if(mr.has_remaining()) {
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'a':
+ case 'A':
+ case 'w':
+ {
+ // weekday is not used in construction but we need to get it out of the stream
+ char_type cs[3] = { '%', *itr };
+ string_type s(cs);
+ match_results mr;
+ typename date_type::day_of_week_type wd(0);
+ try {
+ wd = this->m_parser.parse_weekday(sitr, stream_end, s, mr);
+ }
+ catch(std::out_of_range&) { // base class for bad_weekday exception
+ if(this->m_sv_parser.match(sitr, stream_end, mr)) {
+ t = time_type(static_cast<special_values>(mr.current_match));
+ return sitr;
+ }
+ else {
+ throw; // rethrow bad_weekday
+ }
+ }
+ // did m_parser already advance sitr to next char?
+ if(mr.has_remaining()) {
+ use_current_char = true;
+ }
+ break;
+ }
+ case 'j':
+ {
+ // code that gets julian day (from format_date_parser)
+ match_results mr;
+ day_of_year = fixed_string_to_int<unsigned short, CharT>(sitr, stream_end, mr, 3);
+ if(day_of_year == -1) {
+ if(this->m_sv_parser.match(sitr, stream_end, mr)) {
+ t = time_type(static_cast<special_values>(mr.current_match));
+ return sitr;
+ }
+ }
+ // these next two lines are so we get an exception with bad input
+ typedef typename time_type::date_type::day_of_year_type day_of_year_type;
+ day_of_year_type t_day_of_year(day_of_year);
+ break;
+ }
+ case 'd':
+ {
+ try {
+ t_day = this->m_parser.parse_day_of_month(sitr, stream_end);
+ }
+ catch(std::out_of_range&) { // base class for exception bad_day_of_month
+ match_results mr;
+ if(this->m_sv_parser.match(sitr, stream_end, mr)) {
+ t = time_type(static_cast<special_values>(mr.current_match));
+ return sitr;
+ }
+ else {
+ throw; // rethrow bad_day_of_month
+ }
+ }
+ break;
+ }
+ // time flags
+ case 'H':
+ {
+ match_results mr;
+ hour = fixed_string_to_int<hour_type, CharT>(sitr, stream_end, mr, 2);
+ if(hour == -1){
+ return check_special_value(sitr, stream_end, t, c);
+ }
+ break;
+ }
+ case 'M':
+ {
+ match_results mr;
+ min = fixed_string_to_int<min_type, CharT>(sitr, stream_end, mr, 2);
+ if(min == -1){
+ return check_special_value(sitr, stream_end, t, c);
+ }
+ break;
+ }
+ case 's':
+ case 'S':
+ {
+ match_results mr;
+ sec = fixed_string_to_int<sec_type, CharT>(sitr, stream_end, mr, 2);
+ if(sec == -1){
+ return check_special_value(sitr, stream_end, t, c);
+ }
+ if (*itr == 'S')
+ break;
+ // %s is the same as %S%f so we drop through into %f
+ }
+ case 'f':
+ {
+ // check for decimal, check SV if missing
+ if(*sitr == '.') {
+ ++sitr;
+ parse_frac_type(sitr, stream_end, frac);
+ // sitr will point to next expected char after this parsing
+ // is complete so no need to advance it
+ use_current_char = true;
+ }
+ else {
+ return check_special_value(sitr, stream_end, t, c);
+ }
+ break;
+ }
+ case 'F':
+ {
+ // check for decimal, skip if missing
+ if(*sitr == '.') {
+ ++sitr;
+ parse_frac_type(sitr, stream_end, frac);
+ // sitr will point to next expected char after this parsing
+ // is complete so no need to advance it
+ use_current_char = true;
+ }
+ else {
+ // nothing was parsed so we don't want to advance sitr
+ use_current_char = true;
+ }
+ break;
+ }
+ // time_zone flags
+ //case 'q':
+ //case 'Q':
+ //case 'z':
+ case 'Z':
+ {
+ if(time_is_local) { // skip if 't' is a ptime
+ ++itr;
+ if(*itr == 'P') {
+ // skip leading whitespace
+ while((sitr != stream_end) && std::isspace(*sitr)) { ++sitr; }
+ // parse zone
+ while((sitr != stream_end) && (!std::isspace(*sitr))) {
+ tz_str += *sitr;
+ ++sitr;
+ }
+ }
+ else {
+ use_current_format_char = true;
+ }
+
+ }
+ else {
+ // nothing was parsed so we don't want to advance sitr
+ use_current_char = true;
+ }
+
+ break;
+ }
+ default:
+ {} // ignore what we don't understand?
+ }// switch
+ }
+ else { // itr == '%', second consecutive
+ ++sitr;
+ }
+
+ if(use_current_format_char) {
+ use_current_format_char = false;
+ }
+ else {
+ ++itr; //advance past format specifier
+ }
+
+ }
+ else { //skip past chars in format and in buffer
+ ++itr;
+ // set use_current_char when sitr is already
+ // pointing at the next character to process
+ if (use_current_char) {
+ use_current_char = false;
+ }
+ else {
+ ++sitr;
+ }
+ }
+ }
+
+ date_type d(not_a_date_time);
+ if (day_of_year > 0) {
+ d = date_type(static_cast<unsigned short>(t_year-1),12,31) + date_duration_type(day_of_year);
+ }
+ else {
+ d = date_type(t_year, t_month, t_day);
+ }
+
+ time_duration_type td(hour, min, sec, frac);
+ t = time_type(d, td);
+ return sitr;
+ }
+
+ //! Helper function to check for special_value
+ /*! First character may have been consumed during original parse
+ * attempt. Parameter 'c' should be a copy of that character.
+ * Throws ios_base::failure if parse fails. */
+ template<class temporal_type>
+ inline
+ InItrT check_special_value(InItrT& sitr,InItrT& stream_end, temporal_type& tt, char_type c='\0') const
+ {
+ match_results mr;
+ if((c == '-' || c == '+') && (*sitr != c)) { // was the first character consumed?
+ mr.cache += c;
+ }
+ this->m_sv_parser.match(sitr, stream_end, mr);
+ if(mr.current_match == match_results::PARSE_ERROR) {
+ std::string tmp = convert_string_type<char_type, char>(mr.cache);
+ boost::throw_exception(std::ios_base::failure("Parse failed. No match found for '" + tmp + "'"));
+ BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(return sitr); // should never reach
+ }
+ tt = temporal_type(static_cast<special_values>(mr.current_match));
+ return sitr;
+ }
+
+ //! Helper function for parsing a fractional second type from the stream
+ void parse_frac_type(InItrT& sitr,
+ InItrT& stream_end,
+ fracional_seconds_type& frac) const
+ {
+ string_type cache;
+ while((sitr != stream_end) && std::isdigit(*sitr)) {
+ cache += *sitr;
+ ++sitr;
+ }
+ if(cache.size() > 0) {
+ unsigned short precision = time_duration_type::num_fractional_digits();
+ // input may be only the first few decimal places
+ if(cache.size() < precision) {
+ frac = lexical_cast<fracional_seconds_type>(cache);
+ frac = decimal_adjust(frac, static_cast<unsigned short>(precision - cache.size()));
+ }
+ else {
+ // if input has too many decimal places, drop excess digits
+ frac = lexical_cast<fracional_seconds_type>(cache.substr(0, precision));
+ }
+ }
+ }
+
+ private:
+ string_type m_time_duration_format;
+
+ //! Helper function to adjust trailing zeros when parsing fractional digits
+ template<class int_type>
+ inline
+ int_type decimal_adjust(int_type val, const unsigned short places) const
+ {
+ unsigned long factor = 1;
+ for(int i = 0; i < places; ++i){
+ factor *= 10; // shift decimal to the right
+ }
+ return val * factor;
+ }
+
+ };
+
+template <class time_type, class CharT, class InItrT>
+ std::locale::id time_input_facet<time_type, CharT, InItrT>::id;
+
+template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::fractional_seconds_format = time_formats<CharT>::fractional_seconds_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::fractional_seconds_or_none_format = time_formats<CharT>::fractional_seconds_or_none_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::seconds_with_fractional_seconds_format = time_formats<CharT>::seconds_with_fractional_seconds_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::seconds_format = time_formats<CharT>::seconds_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::standard_format = time_formats<CharT>::standard_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::zone_abbrev_format = time_formats<CharT>::zone_abbrev_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::zone_name_format = time_formats<CharT>::zone_name_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::zone_iso_format = time_formats<CharT>::zone_iso_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::zone_iso_extended_format = time_formats<CharT>::zone_iso_extended_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::duration_seperator = time_formats<CharT>::duration_seperator;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::iso_time_format_specifier = time_formats<CharT>::iso_time_format_specifier;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::iso_time_format_extended_specifier = time_formats<CharT>::iso_time_format_extended_specifier;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::default_time_input_format = time_formats<CharT>::default_time_input_format;
+
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ time_input_facet<time_type, CharT, InItrT>::default_time_duration_format = time_formats<CharT>::default_time_duration_format;
+
+
+} } // namespaces
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/time_formatting_streams.hpp b/3rdParty/Boost/boost/date_time/time_formatting_streams.hpp
new file mode 100644
index 0000000..3537c10
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_formatting_streams.hpp
@@ -0,0 +1,122 @@
+#ifndef DATE_TIME_TIME_FORMATTING_STREAMS_HPP___
+#define DATE_TIME_TIME_FORMATTING_STREAMS_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+#include <boost/date_time/compiler_config.hpp>
+
+#ifndef BOOST_DATE_TIME_NO_LOCALE
+
+#include <locale>
+#include <iomanip>
+#include <iostream>
+#include <boost/date_time/date_formatting_locales.hpp>
+#include <boost/date_time/time_resolution_traits.hpp>
+
+namespace boost {
+namespace date_time {
+
+
+ //! Put a time type into a stream using appropriate facets
+ template<class time_duration_type,
+ class charT = char>
+ class ostream_time_duration_formatter
+ {
+ public:
+ typedef std::basic_ostream<charT> ostream_type;
+ typedef typename time_duration_type::fractional_seconds_type fractional_seconds_type;
+
+ //! Put time into an ostream
+ static void duration_put(const time_duration_type& td,
+ ostream_type& os)
+ {
+ if(td.is_special()) {
+ os << td.get_rep();
+ }
+ else {
+ charT fill_char = '0';
+ if(td.is_negative()) {
+ os << '-';
+ }
+ os << std::setw(2) << std::setfill(fill_char)
+ << absolute_value(td.hours()) << ":";
+ os << std::setw(2) << std::setfill(fill_char)
+ << absolute_value(td.minutes()) << ":";
+ os << std::setw(2) << std::setfill(fill_char)
+ << absolute_value(td.seconds());
+ fractional_seconds_type frac_sec =
+ absolute_value(td.fractional_seconds());
+ if (frac_sec != 0) {
+ os << "."
+ << std::setw(time_duration_type::num_fractional_digits())
+ << std::setfill(fill_char)
+ << frac_sec;
+ }
+ } // else
+ } // duration_put
+ }; //class ostream_time_duration_formatter
+
+ //! Put a time type into a stream using appropriate facets
+ template<class time_type,
+ class charT = char>
+ class ostream_time_formatter
+ {
+ public:
+ typedef std::basic_ostream<charT> ostream_type;
+ typedef typename time_type::date_type date_type;
+ typedef typename time_type::time_duration_type time_duration_type;
+ typedef ostream_time_duration_formatter<time_duration_type, charT> duration_formatter;
+
+ //! Put time into an ostream
+ static void time_put(const time_type& t,
+ ostream_type& os)
+ {
+ date_type d = t.date();
+ os << d;
+ if(!d.is_infinity() && !d.is_not_a_date())
+ {
+ os << " "; //TODO: fix the separator here.
+ duration_formatter::duration_put(t.time_of_day(), os);
+ }
+
+ } // time_to_ostream
+ }; //class ostream_time_formatter
+
+
+ //! Put a time period into a stream using appropriate facets
+ template<class time_period_type,
+ class charT = char>
+ class ostream_time_period_formatter
+ {
+ public:
+ typedef std::basic_ostream<charT> ostream_type;
+ typedef typename time_period_type::point_type time_type;
+ typedef ostream_time_formatter<time_type, charT> time_formatter;
+
+ //! Put time into an ostream
+ static void period_put(const time_period_type& tp,
+ ostream_type& os)
+ {
+ os << '['; //TODO: facet or manipulator for periods?
+ time_formatter::time_put(tp.begin(), os);
+ os << '/'; //TODO: facet or manipulator for periods?
+ time_formatter::time_put(tp.last(), os);
+ os << ']';
+
+ } // period_put
+
+ }; //class ostream_time_period_formatter
+
+
+
+} } //namespace date_time
+
+#endif //BOOST_DATE_TIME_NO_LOCALE
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time_iterator.hpp b/3rdParty/Boost/boost/date_time/time_iterator.hpp
new file mode 100644
index 0000000..2258a33
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_iterator.hpp
@@ -0,0 +1,52 @@
+#ifndef DATE_TIME_TIME_ITERATOR_HPP___
+#define DATE_TIME_TIME_ITERATOR_HPP___
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+namespace boost {
+namespace date_time {
+
+
+ //! Simple time iterator skeleton class
+ template<class time_type>
+ class time_itr {
+ public:
+ typedef typename time_type::time_duration_type time_duration_type;
+ time_itr(time_type t, time_duration_type d) : current_(t), offset_(d) {};
+ time_itr& operator++()
+ {
+ current_ = current_ + offset_;
+ return *this;
+ }
+ time_itr& operator--()
+ {
+ current_ = current_ - offset_;
+ return *this;
+ }
+ time_type operator*() {return current_;};
+ time_type* operator->() {return &current_;};
+ bool operator< (const time_type& t) {return current_ < t;};
+ bool operator<= (const time_type& t) {return current_ <= t;};
+ bool operator!= (const time_type& t) {return current_ != t;};
+ bool operator== (const time_type& t) {return current_ == t;};
+ bool operator> (const time_type& t) {return current_ > t;};
+ bool operator>= (const time_type& t) {return current_ >= t;};
+
+ private:
+ time_type current_;
+ time_duration_type offset_;
+ };
+
+
+
+} }//namespace date_time
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time_parsing.hpp b/3rdParty/Boost/boost/date_time/time_parsing.hpp
new file mode 100644
index 0000000..dfccf6a
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_parsing.hpp
@@ -0,0 +1,321 @@
+#ifndef _DATE_TIME_TIME_PARSING_HPP___
+#define _DATE_TIME_TIME_PARSING_HPP___
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+#include "boost/tokenizer.hpp"
+#include "boost/lexical_cast.hpp"
+#include "boost/date_time/date_parsing.hpp"
+#include "boost/cstdint.hpp"
+#include <iostream>
+
+namespace boost {
+namespace date_time {
+
+ //! computes exponential math like 2^8 => 256, only works with positive integers
+ //Not general purpose, but needed b/c std::pow is not available
+ //everywehere. Hasn't been tested with negatives and zeros
+ template<class int_type>
+ inline
+ int_type power(int_type base, int_type exponent)
+ {
+ int_type result = 1;
+ for(int i = 0; i < exponent; ++i){
+ result *= base;
+ }
+ return result;
+ }
+
+ //! Creates a time_duration object from a delimited string
+ /*! Expected format for string is "[-]h[h][:mm][:ss][.fff]".
+ * If the number of fractional digits provided is greater than the
+ * precision of the time duration type then the extra digits are
+ * truncated.
+ *
+ * A negative duration will be created if the first character in
+ * string is a '-', all other '-' will be treated as delimiters.
+ * Accepted delimiters are "-:,.".
+ */
+ template<class time_duration, class char_type>
+ inline
+ time_duration
+ str_from_delimited_time_duration(const std::basic_string<char_type>& s)
+ {
+ unsigned short min=0, sec =0;
+ int hour =0;
+ bool is_neg = (s.at(0) == '-');
+ boost::int64_t fs=0;
+ int pos = 0;
+
+ typedef typename std::basic_string<char_type>::traits_type traits_type;
+ typedef boost::char_separator<char_type, traits_type> char_separator_type;
+ typedef boost::tokenizer<char_separator_type,
+ typename std::basic_string<char_type>::const_iterator,
+ std::basic_string<char_type> > tokenizer;
+ typedef typename boost::tokenizer<char_separator_type,
+ typename std::basic_string<char_type>::const_iterator,
+ typename std::basic_string<char_type> >::iterator tokenizer_iterator;
+
+ char_type sep_chars[5] = {'-',':',',','.'};
+ char_separator_type sep(sep_chars);
+ tokenizer tok(s,sep);
+ for(tokenizer_iterator beg=tok.begin(); beg!=tok.end();++beg){
+ switch(pos) {
+ case 0: {
+ hour = boost::lexical_cast<int>(*beg);
+ break;
+ }
+ case 1: {
+ min = boost::lexical_cast<unsigned short>(*beg);
+ break;
+ }
+ case 2: {
+ sec = boost::lexical_cast<unsigned short>(*beg);
+ break;
+ };
+ case 3: {
+ int digits = static_cast<int>(beg->length());
+ //Works around a bug in MSVC 6 library that does not support
+ //operator>> thus meaning lexical_cast will fail to compile.
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ // msvc wouldn't compile 'time_duration::num_fractional_digits()'
+ // (required template argument list) as a workaround a temp
+ // time_duration object was used
+ time_duration td(hour,min,sec,fs);
+ int precision = td.num_fractional_digits();
+ // _atoi64 is an MS specific function
+ if(digits >= precision) {
+ // drop excess digits
+ fs = _atoi64(beg->substr(0, precision).c_str());
+ }
+ else {
+ fs = _atoi64(beg->c_str());
+ }
+#else
+ int precision = time_duration::num_fractional_digits();
+ if(digits >= precision) {
+ // drop excess digits
+ fs = boost::lexical_cast<boost::int64_t>(beg->substr(0, precision));
+ }
+ else {
+ fs = boost::lexical_cast<boost::int64_t>(*beg);
+ }
+#endif
+ if(digits < precision){
+ // trailing zeros get dropped from the string,
+ // "1:01:01.1" would yield .000001 instead of .100000
+ // the power() compensates for the missing decimal places
+ fs *= power(10, precision - digits);
+ }
+
+ break;
+ }
+ }//switch
+ pos++;
+ }
+ if(is_neg) {
+ return -time_duration(hour, min, sec, fs);
+ }
+ else {
+ return time_duration(hour, min, sec, fs);
+ }
+ }
+
+ //! Creates a time_duration object from a delimited string
+ /*! Expected format for string is "[-]h[h][:mm][:ss][.fff]".
+ * If the number of fractional digits provided is greater than the
+ * precision of the time duration type then the extra digits are
+ * truncated.
+ *
+ * A negative duration will be created if the first character in
+ * string is a '-', all other '-' will be treated as delimiters.
+ * Accepted delimiters are "-:,.".
+ */
+ template<class time_duration>
+ inline
+ time_duration
+ parse_delimited_time_duration(const std::string& s)
+ {
+ return str_from_delimited_time_duration<time_duration,char>(s);
+ }
+
+ //! Utility function to split appart string
+ inline
+ bool
+ split(const std::string& s,
+ char sep,
+ std::string& first,
+ std::string& second)
+ {
+ int sep_pos = static_cast<int>(s.find(sep));
+ first = s.substr(0,sep_pos);
+ second = s.substr(sep_pos+1);
+ return true;
+ }
+
+
+ template<class time_type>
+ inline
+ time_type
+ parse_delimited_time(const std::string& s, char sep)
+ {
+ typedef typename time_type::time_duration_type time_duration;
+ typedef typename time_type::date_type date_type;
+
+ //split date/time on a unique delimiter char such as ' ' or 'T'
+ std::string date_string, tod_string;
+ split(s, sep, date_string, tod_string);
+ //call parse_date with first string
+ date_type d = parse_date<date_type>(date_string);
+ //call parse_time_duration with remaining string
+ time_duration td = parse_delimited_time_duration<time_duration>(tod_string);
+ //construct a time
+ return time_type(d, td);
+
+ }
+
+ //! Parse time duration part of an iso time of form: [-]hhmmss[.fff...] (eg: 120259.123 is 12 hours, 2 min, 59 seconds, 123000 microseconds)
+ template<class time_duration>
+ inline
+ time_duration
+ parse_undelimited_time_duration(const std::string& s)
+ {
+ int precision = 0;
+ {
+ // msvc wouldn't compile 'time_duration::num_fractional_digits()'
+ // (required template argument list) as a workaround, a temp
+ // time_duration object was used
+ time_duration tmp(0,0,0,1);
+ precision = tmp.num_fractional_digits();
+ }
+ // 'precision+1' is so we grab all digits, plus the decimal
+ int offsets[] = {2,2,2, precision+1};
+ int pos = 0, sign = 0;
+ int hours = 0;
+ short min=0, sec=0;
+ boost::int64_t fs=0;
+ // increment one position if the string was "signed"
+ if(s.at(sign) == '-')
+ {
+ ++sign;
+ }
+ // stlport choked when passing s.substr() to tokenizer
+ // using a new string fixed the error
+ std::string remain = s.substr(sign);
+ /* We do not want the offset_separator to wrap the offsets, we
+ * will never want to process more than:
+ * 2 char, 2 char, 2 char, frac_sec length.
+ * We *do* want the offset_separator to give us a partial for the
+ * last characters if there were not enough provided in the input string. */
+ bool wrap_off = false;
+ bool ret_part = true;
+ boost::offset_separator osf(offsets, offsets+4, wrap_off, ret_part);
+ typedef boost::tokenizer<boost::offset_separator,
+ std::basic_string<char>::const_iterator,
+ std::basic_string<char> > tokenizer;
+ typedef boost::tokenizer<boost::offset_separator,
+ std::basic_string<char>::const_iterator,
+ std::basic_string<char> >::iterator tokenizer_iterator;
+ tokenizer tok(remain, osf);
+ for(tokenizer_iterator ti=tok.begin(); ti!=tok.end();++ti){
+ switch(pos) {
+ case 0:
+ {
+ hours = boost::lexical_cast<int>(*ti);
+ break;
+ }
+ case 1:
+ {
+ min = boost::lexical_cast<short>(*ti);
+ break;
+ }
+ case 2:
+ {
+ sec = boost::lexical_cast<short>(*ti);
+ break;
+ }
+ case 3:
+ {
+ std::string char_digits(ti->substr(1)); // digits w/no decimal
+ int digits = static_cast<int>(char_digits.length());
+
+ //Works around a bug in MSVC 6 library that does not support
+ //operator>> thus meaning lexical_cast will fail to compile.
+#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0
+ // _atoi64 is an MS specific function
+ if(digits >= precision) {
+ // drop excess digits
+ fs = _atoi64(char_digits.substr(0, precision).c_str());
+ }
+ else if(digits == 0) {
+ fs = 0; // just in case _atoi64 doesn't like an empty string
+ }
+ else {
+ fs = _atoi64(char_digits.c_str());
+ }
+#else
+ if(digits >= precision) {
+ // drop excess digits
+ fs = boost::lexical_cast<boost::int64_t>(char_digits.substr(0, precision));
+ }
+ else if(digits == 0) {
+ fs = 0; // lexical_cast doesn't like empty strings
+ }
+ else {
+ fs = boost::lexical_cast<boost::int64_t>(char_digits);
+ }
+#endif
+ if(digits < precision){
+ // trailing zeros get dropped from the string,
+ // "1:01:01.1" would yield .000001 instead of .100000
+ // the power() compensates for the missing decimal places
+ fs *= power(10, precision - digits);
+ }
+
+ break;
+ }
+ };
+ pos++;
+ }
+ if(sign) {
+ return -time_duration(hours, min, sec, fs);
+ }
+ else {
+ return time_duration(hours, min, sec, fs);
+ }
+ }
+
+ //! Parse time string of form YYYYMMDDThhmmss where T is delimeter between date and time
+ template<class time_type>
+ inline
+ time_type
+ parse_iso_time(const std::string& s, char sep)
+ {
+ typedef typename time_type::time_duration_type time_duration;
+ typedef typename time_type::date_type date_type;
+
+ //split date/time on a unique delimiter char such as ' ' or 'T'
+ std::string date_string, tod_string;
+ split(s, sep, date_string, tod_string);
+ //call parse_date with first string
+ date_type d = parse_undelimited_date<date_type>(date_string);
+ //call parse_time_duration with remaining string
+ time_duration td = parse_undelimited_time_duration<time_duration>(tod_string);
+ //construct a time
+ return time_type(d, td);
+ }
+
+
+
+} }//namespace date_time
+
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time_resolution_traits.hpp b/3rdParty/Boost/boost/date_time/time_resolution_traits.hpp
new file mode 100644
index 0000000..1487911
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_resolution_traits.hpp
@@ -0,0 +1,140 @@
+#ifndef DATE_TIME_TIME_RESOLUTION_TRAITS_HPP
+#define DATE_TIME_TIME_RESOLUTION_TRAITS_HPP
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+#include "boost/date_time/time_defs.hpp"
+#include "boost/date_time/int_adapter.hpp"
+#include "boost/cstdint.hpp"
+
+namespace boost {
+namespace date_time {
+
+ //! Simple function to calculate absolute value of a numeric type
+ template <typename T>
+ // JDG [7/6/02 made a template],
+ // moved here from time_duration.hpp 2003-Sept-4.
+ inline T absolute_value(T x)
+ {
+ return x < 0 ? -x : x;
+ }
+
+ //! traits struct for time_resolution_traits implementation type
+ struct time_resolution_traits_bi32_impl {
+ typedef boost::int32_t int_type;
+ typedef boost::int32_t impl_type;
+ static int_type as_number(impl_type i){ return i;}
+ //! Used to determine if implemented type is int_adapter or int
+ static bool is_adapted() { return false;}
+ };
+ //! traits struct for time_resolution_traits implementation type
+ struct time_resolution_traits_adapted32_impl {
+ typedef boost::int32_t int_type;
+ typedef boost::date_time::int_adapter<boost::int32_t> impl_type;
+ static int_type as_number(impl_type i){ return i.as_number();}
+ //! Used to determine if implemented type is int_adapter or int
+ static bool is_adapted() { return true;}
+ };
+ //! traits struct for time_resolution_traits implementation type
+ struct time_resolution_traits_bi64_impl {
+ typedef boost::int64_t int_type;
+ typedef boost::int64_t impl_type;
+ static int_type as_number(impl_type i){ return i;}
+ //! Used to determine if implemented type is int_adapter or int
+ static bool is_adapted() { return false;}
+ };
+ //! traits struct for time_resolution_traits implementation type
+ struct time_resolution_traits_adapted64_impl {
+ typedef boost::int64_t int_type;
+ typedef boost::date_time::int_adapter<boost::int64_t> impl_type;
+ static int_type as_number(impl_type i){ return i.as_number();}
+ //! Used to determine if implemented type is int_adapter or int
+ static bool is_adapted() { return true;}
+ };
+
+ template<typename frac_sec_type,
+ time_resolutions res,
+#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
+ boost::int64_t resolution_adjust,
+#else
+ typename frac_sec_type::int_type resolution_adjust,
+#endif
+ unsigned short frac_digits,
+ typename v_type = boost::int32_t >
+ class time_resolution_traits {
+ public:
+ typedef typename frac_sec_type::int_type fractional_seconds_type;
+ typedef typename frac_sec_type::int_type tick_type;
+ typedef typename frac_sec_type::impl_type impl_type;
+ typedef v_type day_type;
+ typedef v_type hour_type;
+ typedef v_type min_type;
+ typedef v_type sec_type;
+
+ // bring in function from frac_sec_type traits structs
+ static typename frac_sec_type::int_type as_number(typename frac_sec_type::impl_type i)
+ {
+ return frac_sec_type::as_number(i);
+ }
+ static bool is_adapted()
+ {
+ return frac_sec_type::is_adapted();
+ }
+
+ //Would like this to be frac_sec_type, but some compilers complain
+ BOOST_STATIC_CONSTANT(int, ticks_per_second = resolution_adjust);
+ // static const boost::int32_t ticks_per_second = resolution_adjust;
+
+ static time_resolutions resolution()
+ {
+ return res;
+ }
+ static unsigned short num_fractional_digits()
+ {
+ return frac_digits;
+ }
+ static fractional_seconds_type res_adjust()
+ {
+ return resolution_adjust;
+ }
+ //! Any negative argument results in a negative tick_count
+ static tick_type to_tick_count(hour_type hours,
+ min_type minutes,
+ sec_type seconds,
+ fractional_seconds_type fs)
+ {
+ if(hours < 0 || minutes < 0 || seconds < 0 || fs < 0)
+ {
+ hours = absolute_value(hours);
+ minutes = absolute_value(minutes);
+ seconds = absolute_value(seconds);
+ fs = absolute_value(fs);
+ return (((((fractional_seconds_type(hours)*3600)
+ + (fractional_seconds_type(minutes)*60)
+ + seconds)*res_adjust()) + fs) * -1);
+ }
+
+ return (((fractional_seconds_type(hours)*3600)
+ + (fractional_seconds_type(minutes)*60)
+ + seconds)*res_adjust()) + fs;
+ }
+
+ };
+
+ typedef time_resolution_traits<time_resolution_traits_adapted32_impl, milli, 1000, 3 > milli_res;
+ typedef time_resolution_traits<time_resolution_traits_adapted64_impl, micro, 1000000, 6 > micro_res;
+ typedef time_resolution_traits<time_resolution_traits_adapted64_impl, nano, 1000000000, 9 > nano_res;
+
+
+} } //namespace date_time
+
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/time_system_counted.hpp b/3rdParty/Boost/boost/date_time/time_system_counted.hpp
new file mode 100644
index 0000000..fa88390
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_system_counted.hpp
@@ -0,0 +1,254 @@
+#ifndef DATE_TIME_TIME_SYSTEM_COUNTED_HPP
+#define DATE_TIME_TIME_SYSTEM_COUNTED_HPP
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+
+
+#include "boost/date_time/time_defs.hpp"
+#include <string>
+
+
+namespace boost {
+namespace date_time {
+
+ //! Time representation that uses a single integer count
+ template<class config>
+ struct counted_time_rep
+ {
+ typedef typename config::int_type int_type;
+ typedef typename config::date_type date_type;
+ typedef typename config::impl_type impl_type;
+ typedef typename date_type::duration_type date_duration_type;
+ typedef typename date_type::calendar_type calendar_type;
+ typedef typename date_type::ymd_type ymd_type;
+ typedef typename config::time_duration_type time_duration_type;
+ typedef typename config::resolution_traits resolution_traits;
+
+ counted_time_rep(const date_type& d, const time_duration_type& time_of_day)
+ : time_count_(1)
+ {
+ if(d.is_infinity() || d.is_not_a_date() || time_of_day.is_special()) {
+ time_count_ = time_of_day.get_rep() + d.day_count();
+ //std::cout << time_count_ << std::endl;
+ }
+ else {
+ time_count_ = (d.day_number() * frac_sec_per_day()) + time_of_day.ticks();
+ }
+ }
+ explicit counted_time_rep(int_type count) :
+ time_count_(count)
+ {}
+ explicit counted_time_rep(impl_type count) :
+ time_count_(count)
+ {}
+ date_type date() const
+ {
+ if(time_count_.is_special()) {
+ return date_type(time_count_.as_special());
+ }
+ else {
+ typename calendar_type::date_int_type dc = day_count();
+ //std::cout << "time_rep here:" << dc << std::endl;
+ ymd_type ymd = calendar_type::from_day_number(dc);
+ return date_type(ymd);
+ }
+ }
+ //int_type day_count() const
+ unsigned long day_count() const
+ {
+ /* resolution_traits::as_number returns a boost::int64_t &
+ * frac_sec_per_day is also a boost::int64_t so, naturally,
+ * the division operation returns a boost::int64_t.
+ * The static_cast to an unsigned long is ok (results in no data loss)
+ * because frac_sec_per_day is either the number of
+ * microseconds per day, or the number of nanoseconds per day.
+ * Worst case scenario: resolution_traits::as_number returns the
+ * maximum value an int64_t can hold and frac_sec_per_day
+ * is microseconds per day (lowest possible value).
+ * The division operation will then return a value of 106751991 -
+ * easily fitting in an unsigned long.
+ */
+ return static_cast<unsigned long>(resolution_traits::as_number(time_count_) / frac_sec_per_day());
+ }
+ int_type time_count() const
+ {
+ return resolution_traits::as_number(time_count_);
+ }
+ int_type tod() const
+ {
+ return resolution_traits::as_number(time_count_) % frac_sec_per_day();
+ }
+ static int_type frac_sec_per_day()
+ {
+ int_type seconds_per_day = 60*60*24;
+ int_type fractional_sec_per_sec(resolution_traits::res_adjust());
+ return seconds_per_day*fractional_sec_per_sec;
+ }
+ bool is_pos_infinity()const
+ {
+ return impl_type::is_pos_inf(time_count_.as_number());
+ }
+ bool is_neg_infinity()const
+ {
+ return impl_type::is_neg_inf(time_count_.as_number());
+ }
+ bool is_not_a_date_time()const
+ {
+ return impl_type::is_not_a_number(time_count_.as_number());
+ }
+ bool is_special()const
+ {
+ return time_count_.is_special();
+ }
+ impl_type get_rep()const
+ {
+ return time_count_;
+ }
+ private:
+ impl_type time_count_;
+ };
+
+ //! An unadjusted time system implementation.
+ template<class time_rep>
+ class counted_time_system
+ {
+ public:
+ typedef time_rep time_rep_type;
+ typedef typename time_rep_type::impl_type impl_type;
+ typedef typename time_rep_type::time_duration_type time_duration_type;
+ typedef typename time_duration_type::fractional_seconds_type fractional_seconds_type;
+ typedef typename time_rep_type::date_type date_type;
+ typedef typename time_rep_type::date_duration_type date_duration_type;
+
+
+ template<class T> static void unused_var(const T&) {}
+
+ static time_rep_type get_time_rep(const date_type& day,
+ const time_duration_type& tod,
+ date_time::dst_flags dst=not_dst)
+ {
+ unused_var(dst);
+ return time_rep_type(day, tod);
+ }
+
+ static time_rep_type get_time_rep(special_values sv)
+ {
+ switch (sv) {
+ case not_a_date_time:
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ case pos_infin:
+ return time_rep_type(date_type(pos_infin),
+ time_duration_type(pos_infin));
+ case neg_infin:
+ return time_rep_type(date_type(neg_infin),
+ time_duration_type(neg_infin));
+ case max_date_time: {
+ time_duration_type td = time_duration_type(24,0,0,0) - time_duration_type(0,0,0,1);
+ return time_rep_type(date_type(max_date_time), td);
+ }
+ case min_date_time:
+ return time_rep_type(date_type(min_date_time), time_duration_type(0,0,0,0));
+
+ default:
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+
+ }
+
+ }
+
+ static date_type get_date(const time_rep_type& val)
+ {
+ return val.date();
+ }
+ static time_duration_type get_time_of_day(const time_rep_type& val)
+ {
+ if(val.is_special()) {
+ return time_duration_type(val.get_rep().as_special());
+ }
+ else{
+ return time_duration_type(0,0,0,val.tod());
+ }
+ }
+ static std::string zone_name(const time_rep_type&)
+ {
+ return "";
+ }
+ static bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs)
+ {
+ return (lhs.time_count() == rhs.time_count());
+ }
+ static bool is_less(const time_rep_type& lhs, const time_rep_type& rhs)
+ {
+ return (lhs.time_count() < rhs.time_count());
+ }
+ static time_rep_type add_days(const time_rep_type& base,
+ const date_duration_type& dd)
+ {
+ if(base.is_special() || dd.is_special()) {
+ return(time_rep_type(base.get_rep() + dd.get_rep()));
+ }
+ else {
+ return time_rep_type(base.time_count() + (dd.days() * time_rep_type::frac_sec_per_day()));
+ }
+ }
+ static time_rep_type subtract_days(const time_rep_type& base,
+ const date_duration_type& dd)
+ {
+ if(base.is_special() || dd.is_special()) {
+ return(time_rep_type(base.get_rep() - dd.get_rep()));
+ }
+ else{
+ return time_rep_type(base.time_count() - (dd.days() * time_rep_type::frac_sec_per_day()));
+ }
+ }
+ static time_rep_type subtract_time_duration(const time_rep_type& base,
+ const time_duration_type& td)
+ {
+ if(base.is_special() || td.is_special()) {
+ return(time_rep_type(base.get_rep() - td.get_rep()));
+ }
+ else {
+ return time_rep_type(base.time_count() - td.ticks());
+ }
+ }
+ static time_rep_type add_time_duration(const time_rep_type& base,
+ time_duration_type td)
+ {
+ if(base.is_special() || td.is_special()) {
+ return(time_rep_type(base.get_rep() + td.get_rep()));
+ }
+ else {
+ return time_rep_type(base.time_count() + td.ticks());
+ }
+ }
+ static time_duration_type subtract_times(const time_rep_type& lhs,
+ const time_rep_type& rhs)
+ {
+ if(lhs.is_special() || rhs.is_special()) {
+ return(time_duration_type(
+ impl_type::to_special((lhs.get_rep() - rhs.get_rep()).as_number())));
+ }
+ else {
+ fractional_seconds_type fs = lhs.time_count() - rhs.time_count();
+ return time_duration_type(0,0,0,fs);
+ }
+ }
+
+ };
+
+
+} } //namespace date_time
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/time_system_split.hpp b/3rdParty/Boost/boost/date_time/time_system_split.hpp
new file mode 100644
index 0000000..08ea1ec
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/time_system_split.hpp
@@ -0,0 +1,207 @@
+#ifndef DATE_TIME_TIME_SYSTEM_SPLIT_HPP
+#define DATE_TIME_TIME_SYSTEM_SPLIT_HPP
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-13 15:10:23 -0500 (Thu, 13 Nov 2008) $
+ */
+
+
+#include <string>
+#include "boost/date_time/compiler_config.hpp"
+#include "boost/date_time/special_defs.hpp"
+
+namespace boost {
+namespace date_time {
+
+ //! An unadjusted time system implementation.
+#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT))
+ template<typename config, boost::int32_t ticks_per_second>
+#else
+ template<typename config>
+#endif
+ class split_timedate_system
+ {
+ public:
+ typedef typename config::time_rep_type time_rep_type;
+ typedef typename config::date_type date_type;
+ typedef typename config::time_duration_type time_duration_type;
+ typedef typename config::date_duration_type date_duration_type;
+ typedef typename config::int_type int_type;
+ typedef typename config::resolution_traits resolution_traits;
+
+ //86400 is number of seconds in a day...
+#if (defined(BOOST_DATE_TIME_NO_MEMBER_INIT))
+ typedef date_time::wrapping_int<int_type, INT64_C(86400) * ticks_per_second > wrap_int_type;
+#else
+ private:
+ BOOST_STATIC_CONSTANT(int_type, ticks_per_day = INT64_C(86400) * config::tick_per_second);
+ public:
+# if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0X581) )
+ typedef date_time::wrapping_int< split_timedate_system::int_type, split_timedate_system::ticks_per_day> wrap_int_type;
+# else
+ typedef date_time::wrapping_int<int_type, ticks_per_day> wrap_int_type;
+#endif
+#endif
+
+ static time_rep_type get_time_rep(special_values sv)
+ {
+ switch (sv) {
+ case not_a_date_time:
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ case pos_infin:
+ return time_rep_type(date_type(pos_infin),
+ time_duration_type(pos_infin));
+ case neg_infin:
+ return time_rep_type(date_type(neg_infin),
+ time_duration_type(neg_infin));
+ case max_date_time: {
+ time_duration_type td = time_duration_type(24,0,0,0) - time_duration_type(0,0,0,1);
+ return time_rep_type(date_type(max_date_time), td);
+ }
+ case min_date_time:
+ return time_rep_type(date_type(min_date_time), time_duration_type(0,0,0,0));
+
+ default:
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+
+ }
+
+ }
+
+ static time_rep_type get_time_rep(const date_type& day,
+ const time_duration_type& tod,
+ date_time::dst_flags /* dst */ = not_dst)
+ {
+ if(day.is_special() || tod.is_special()) {
+ if(day.is_not_a_date() || tod.is_not_a_date_time()) {
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ }
+ else if(day.is_pos_infinity()) {
+ if(tod.is_neg_infinity()) {
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ }
+ else {
+ return time_rep_type(day, time_duration_type(pos_infin));
+ }
+ }
+ else if(day.is_neg_infinity()) {
+ if(tod.is_pos_infinity()) {
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ }
+ else {
+ return time_rep_type(day, time_duration_type(neg_infin));
+ }
+ }
+ else if(tod.is_pos_infinity()) {
+ if(day.is_neg_infinity()) {
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ }
+ else {
+ return time_rep_type(date_type(pos_infin), tod);
+ }
+ }
+ else if(tod.is_neg_infinity()) {
+ if(day.is_pos_infinity()) {
+ return time_rep_type(date_type(not_a_date_time),
+ time_duration_type(not_a_date_time));
+ }
+ else {
+ return time_rep_type(date_type(neg_infin), tod);
+ }
+ }
+ }
+ return time_rep_type(day, tod);
+ }
+ static date_type get_date(const time_rep_type& val)
+ {
+ return date_type(val.day);
+ }
+ static time_duration_type get_time_of_day(const time_rep_type& val)
+ {
+ return time_duration_type(val.time_of_day);
+ }
+ static std::string zone_name(const time_rep_type&)
+ {
+ return std::string();
+ }
+ static bool is_equal(const time_rep_type& lhs, const time_rep_type& rhs)
+ {
+ return ((lhs.day == rhs.day) && (lhs.time_of_day == rhs.time_of_day));
+ }
+ static bool is_less(const time_rep_type& lhs, const time_rep_type& rhs)
+ {
+ if (lhs.day < rhs.day) return true;
+ if (lhs.day > rhs.day) return false;
+ return (lhs.time_of_day < rhs.time_of_day);
+ }
+ static time_rep_type add_days(const time_rep_type& base,
+ const date_duration_type& dd)
+ {
+ return time_rep_type(base.day+dd, base.time_of_day);
+ }
+ static time_rep_type subtract_days(const time_rep_type& base,
+ const date_duration_type& dd)
+ {
+ return split_timedate_system::get_time_rep(base.day-dd, base.time_of_day);
+ }
+ static time_rep_type subtract_time_duration(const time_rep_type& base,
+ const time_duration_type& td)
+ {
+ if(base.day.is_special() || td.is_special())
+ {
+ return split_timedate_system::get_time_rep(base.day, -td);
+ }
+ if (td.is_negative()) {
+ time_duration_type td1 = td.invert_sign();
+ return add_time_duration(base,td1);
+ }
+
+ wrap_int_type day_offset(base.time_of_day.ticks());
+ date_duration_type day_overflow(static_cast<typename date_duration_type::duration_rep_type>(day_offset.subtract(td.ticks())));
+
+ return time_rep_type(base.day-day_overflow,
+ time_duration_type(0,0,0,day_offset.as_int()));
+ }
+ static time_rep_type add_time_duration(const time_rep_type& base,
+ time_duration_type td)
+ {
+ if(base.day.is_special() || td.is_special()) {
+ return split_timedate_system::get_time_rep(base.day, td);
+ }
+ if (td.is_negative()) {
+ time_duration_type td1 = td.invert_sign();
+ return subtract_time_duration(base,td1);
+ }
+
+ wrap_int_type day_offset(base.time_of_day.ticks());
+ date_duration_type day_overflow(static_cast< typename date_duration_type::duration_rep_type >(day_offset.add(td.ticks())));
+
+ return time_rep_type(base.day+day_overflow,
+ time_duration_type(0,0,0,day_offset.as_int()));
+ }
+ static time_duration_type subtract_times(const time_rep_type& lhs,
+ const time_rep_type& rhs)
+ {
+ date_duration_type dd = lhs.day - rhs.day;
+ time_duration_type td(dd.days()*24,0,0); //days * 24 hours
+ time_duration_type td2 = lhs.time_of_day - rhs.time_of_day;
+ return td+td2;
+ // return time_rep_type(base.day-dd, base.time_of_day);
+ }
+
+ };
+
+} } //namespace date_time
+
+
+#endif
diff --git a/3rdParty/Boost/boost/date_time/wrapping_int.hpp b/3rdParty/Boost/boost/date_time/wrapping_int.hpp
new file mode 100644
index 0000000..969b078
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/wrapping_int.hpp
@@ -0,0 +1,169 @@
+#ifndef _DATE_TIME_WRAPPING_INT_HPP__
+#define _DATE_TIME_WRAPPING_INT_HPP__
+
+/* Copyright (c) 2002,2003,2005 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland, Bart Garst
+ * $Date: 2008-11-12 14:37:53 -0500 (Wed, 12 Nov 2008) $
+ */
+
+
+namespace boost {
+namespace date_time {
+
+//! A wrapping integer used to support time durations (WARNING: only instantiate with a signed type)
+/*! In composite date and time types this type is used to
+ * wrap at the day boundary.
+ * Ex:
+ * A wrapping_int<short, 10> will roll over after nine, and
+ * roll under below zero. This gives a range of [0,9]
+ *
+ * NOTE: it is strongly recommended that wrapping_int2 be used
+ * instead of wrapping_int as wrapping_int is to be depricated
+ * at some point soon.
+ *
+ * Also Note that warnings will occur if instantiated with an
+ * unsigned type. Only a signed type should be used!
+ */
+template<typename int_type_, int_type_ wrap_val>
+class wrapping_int {
+public:
+ typedef int_type_ int_type;
+ //typedef overflow_type_ overflow_type;
+ static int_type wrap_value() {return wrap_val;}
+ //!Add, return true if wrapped
+ wrapping_int(int_type v) : value_(v) {};
+ //! Explicit converion method
+ int_type as_int() const {return value_;}
+ operator int_type() const {return value_;}
+ //!Add, return number of wraps performed
+ /*! The sign of the returned value will indicate which direction the
+ * wraps went. Ex: add a negative number and wrapping under could occur,
+ * this would be indicated by a negative return value. If wrapping over
+ * took place, a positive value would be returned */
+ template< typename IntT >
+ IntT add(IntT v)
+ {
+ int_type remainder = static_cast<int_type>(v % (wrap_val));
+ IntT overflow = static_cast<IntT>(v / (wrap_val));
+ value_ = static_cast<int_type>(value_ + remainder);
+ return calculate_wrap(overflow);
+ }
+ //! Subtract will return '+d' if wrapping under took place ('d' is the number of wraps)
+ /*! The sign of the returned value will indicate which direction the
+ * wraps went (positive indicates wrap under, negative indicates wrap over).
+ * Ex: subtract a negative number and wrapping over could
+ * occur, this would be indicated by a negative return value. If
+ * wrapping under took place, a positive value would be returned. */
+ template< typename IntT >
+ IntT subtract(IntT v)
+ {
+ int_type remainder = static_cast<int_type>(v % (wrap_val));
+ IntT underflow = static_cast<IntT>(-(v / (wrap_val)));
+ value_ = static_cast<int_type>(value_ - remainder);
+ return calculate_wrap(underflow) * -1;
+ }
+private:
+ int_type value_;
+
+ template< typename IntT >
+ IntT calculate_wrap(IntT wrap)
+ {
+ if ((value_) >= wrap_val)
+ {
+ ++wrap;
+ value_ -= (wrap_val);
+ }
+ else if(value_ < 0)
+ {
+ --wrap;
+ value_ += (wrap_val);
+ }
+ return wrap;
+ }
+
+};
+
+
+//! A wrapping integer used to wrap around at the top (WARNING: only instantiate with a signed type)
+/*! Bad name, quick impl to fix a bug -- fix later!!
+ * This allows the wrap to restart at a value other than 0.
+ */
+template<typename int_type_, int_type_ wrap_min, int_type_ wrap_max>
+class wrapping_int2 {
+public:
+ typedef int_type_ int_type;
+ static int_type wrap_value() {return wrap_max;}
+ static int_type min_value() {return wrap_min;}
+ /*! If initializing value is out of range of [wrap_min, wrap_max],
+ * value will be initialized to closest of min or max */
+ wrapping_int2(int_type v) : value_(v) {
+ if(value_ < wrap_min)
+ {
+ value_ = wrap_min;
+ }
+ if(value_ > wrap_max)
+ {
+ value_ = wrap_max;
+ }
+ }
+ //! Explicit converion method
+ int_type as_int() const {return value_;}
+ operator int_type() const {return value_;}
+ //!Add, return number of wraps performed
+ /*! The sign of the returned value will indicate which direction the
+ * wraps went. Ex: add a negative number and wrapping under could occur,
+ * this would be indicated by a negative return value. If wrapping over
+ * took place, a positive value would be returned */
+ template< typename IntT >
+ IntT add(IntT v)
+ {
+ int_type remainder = static_cast<int_type>(v % (wrap_max - wrap_min + 1));
+ IntT overflow = static_cast<IntT>(v / (wrap_max - wrap_min + 1));
+ value_ = static_cast<int_type>(value_ + remainder);
+ return calculate_wrap(overflow);
+ }
+ //! Subtract will return '-d' if wrapping under took place ('d' is the number of wraps)
+ /*! The sign of the returned value will indicate which direction the
+ * wraps went. Ex: subtract a negative number and wrapping over could
+ * occur, this would be indicated by a positive return value. If
+ * wrapping under took place, a negative value would be returned */
+ template< typename IntT >
+ IntT subtract(IntT v)
+ {
+ int_type remainder = static_cast<int_type>(v % (wrap_max - wrap_min + 1));
+ IntT underflow = static_cast<IntT>(-(v / (wrap_max - wrap_min + 1)));
+ value_ = static_cast<int_type>(value_ - remainder);
+ return calculate_wrap(underflow);
+ }
+
+private:
+ int_type value_;
+
+ template< typename IntT >
+ IntT calculate_wrap(IntT wrap)
+ {
+ if ((value_) > wrap_max)
+ {
+ ++wrap;
+ value_ -= (wrap_max - wrap_min + 1);
+ }
+ else if((value_) < wrap_min)
+ {
+ --wrap;
+ value_ += (wrap_max - wrap_min + 1);
+ }
+ return wrap;
+ }
+};
+
+
+
+} } //namespace date_time
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/date_time/year_month_day.hpp b/3rdParty/Boost/boost/date_time/year_month_day.hpp
new file mode 100644
index 0000000..802ce42
--- /dev/null
+++ b/3rdParty/Boost/boost/date_time/year_month_day.hpp
@@ -0,0 +1,45 @@
+#ifndef YearMonthDayBase_HPP__
+#define YearMonthDayBase_HPP__
+
+/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
+ * Use, modification and distribution is subject to the
+ * Boost Software License, Version 1.0. (See accompanying
+ * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ * Author: Jeff Garland
+ * $Date: 2008-02-27 15:00:24 -0500 (Wed, 27 Feb 2008) $
+ */
+
+namespace boost {
+namespace date_time {
+
+ //! Allow rapid creation of ymd triples of different types
+ template<typename YearType, typename MonthType, typename DayType>
+ struct year_month_day_base {
+ year_month_day_base(YearType year,
+ MonthType month,
+ DayType day);
+ YearType year;
+ MonthType month;
+ DayType day;
+ typedef YearType year_type;
+ typedef MonthType month_type;
+ typedef DayType day_type;
+ };
+
+
+ //! A basic constructor
+ template<typename YearType, typename MonthType, typename DayType>
+ inline
+ year_month_day_base<YearType,MonthType,DayType>::year_month_day_base(YearType y,
+ MonthType m,
+ DayType d) :
+ year(y),
+ month(m),
+ day(d)
+ {}
+
+} }//namespace date_time
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/detail/atomic_count.hpp b/3rdParty/Boost/boost/detail/atomic_count.hpp
new file mode 100644
index 0000000..5411c7a
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/atomic_count.hpp
@@ -0,0 +1,21 @@
+#ifndef BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
+#define BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/atomic_count.hpp - thread/SMP safe reference counter
+//
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/smart_ptr/detail/atomic_count.hpp>
+
+#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/detail/call_traits.hpp b/3rdParty/Boost/boost/detail/call_traits.hpp
new file mode 100644
index 0000000..6ad646e
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/call_traits.hpp
@@ -0,0 +1,164 @@
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/utility for most recent version including documentation.
+
+// call_traits: defines typedefs for function usage
+// (see libs/utility/call_traits.htm)
+
+/* Release notes:
+ 23rd July 2000:
+ Fixed array specialization. (JM)
+ Added Borland specific fixes for reference types
+ (issue raised by Steve Cleary).
+*/
+
+#ifndef BOOST_DETAIL_CALL_TRAITS_HPP
+#define BOOST_DETAIL_CALL_TRAITS_HPP
+
+#ifndef BOOST_CONFIG_HPP
+#include <boost/config.hpp>
+#endif
+#include <cstddef>
+
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/detail/workaround.hpp>
+
+namespace boost{
+
+namespace detail{
+
+template <typename T, bool small_>
+struct ct_imp2
+{
+ typedef const T& param_type;
+};
+
+template <typename T>
+struct ct_imp2<T, true>
+{
+ typedef const T param_type;
+};
+
+template <typename T, bool isp, bool b1>
+struct ct_imp
+{
+ typedef const T& param_type;
+};
+
+template <typename T, bool isp>
+struct ct_imp<T, isp, true>
+{
+ typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
+};
+
+template <typename T, bool b1>
+struct ct_imp<T, true, b1>
+{
+ typedef const T param_type;
+};
+
+}
+
+template <typename T>
+struct call_traits
+{
+public:
+ typedef T value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ //
+ // C++ Builder workaround: we should be able to define a compile time
+ // constant and pass that as a single template parameter to ct_imp<T,bool>,
+ // however compiler bugs prevent this - instead pass three bool's to
+ // ct_imp<T,bool,bool,bool> and add an extra partial specialisation
+ // of ct_imp to handle the logic. (JM)
+ typedef typename boost::detail::ct_imp<
+ T,
+ ::boost::is_pointer<T>::value,
+ ::boost::is_arithmetic<T>::value
+ >::param_type param_type;
+};
+
+template <typename T>
+struct call_traits<T&>
+{
+ typedef T& value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T& param_type; // hh removed const
+};
+
+#if BOOST_WORKAROUND( __BORLANDC__, < 0x5A0 )
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+template <typename T>
+struct call_traits<T&const>
+{
+ typedef T& value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T& param_type; // hh removed const
+};
+template <typename T>
+struct call_traits<T&volatile>
+{
+ typedef T& value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T& param_type; // hh removed const
+};
+template <typename T>
+struct call_traits<T&const volatile>
+{
+ typedef T& value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef T& param_type; // hh removed const
+};
+
+template <typename T>
+struct call_traits< T * >
+{
+ typedef T * value_type;
+ typedef T * & reference;
+ typedef T * const & const_reference;
+ typedef T * const param_type; // hh removed const
+};
+#endif
+#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+template <typename T, std::size_t N>
+struct call_traits<T [N]>
+{
+private:
+ typedef T array_type[N];
+public:
+ // degrades array to pointer:
+ typedef const T* value_type;
+ typedef array_type& reference;
+ typedef const array_type& const_reference;
+ typedef const T* const param_type;
+};
+
+template <typename T, std::size_t N>
+struct call_traits<const T [N]>
+{
+private:
+ typedef const T array_type[N];
+public:
+ // degrades array to pointer:
+ typedef const T* value_type;
+ typedef array_type& reference;
+ typedef const array_type& const_reference;
+ typedef const T* const param_type;
+};
+#endif
+
+}
+
+#endif // BOOST_DETAIL_CALL_TRAITS_HPP
diff --git a/3rdParty/Boost/boost/detail/container_fwd.hpp b/3rdParty/Boost/boost/detail/container_fwd.hpp
new file mode 100644
index 0000000..f54dedb
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/container_fwd.hpp
@@ -0,0 +1,99 @@
+
+// Copyright 2005-2008 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP)
+#define BOOST_DETAIL_CONTAINER_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(__GNUC__, < 3) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+#define BOOST_HASH_CHAR_TRAITS string_char_traits
+#else
+#define BOOST_HASH_CHAR_TRAITS char_traits
+#endif
+
+#if ((defined(__GLIBCPP__) || defined(__GLIBCXX__)) && defined(_GLIBCXX_DEBUG)) \
+ || BOOST_WORKAROUND(__BORLANDC__, > 0x551) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x842)) \
+ || (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
+
+#include <deque>
+#include <list>
+#include <vector>
+#include <map>
+#include <set>
+#include <bitset>
+#include <string>
+#include <complex>
+
+#else
+
+#include <cstddef>
+
+#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && \
+ defined(__STL_CONFIG_H)
+
+#define BOOST_CONTAINER_FWD_BAD_BITSET
+
+#if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
+#define BOOST_CONTAINER_FWD_BAD_DEQUE
+#endif
+
+#endif
+
+#if defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
+#include <deque>
+#endif
+
+#if defined(BOOST_CONTAINER_FWD_BAD_BITSET)
+#include <bitset>
+#endif
+
+#if defined(BOOST_MSVC)
+#pragma warning(push)
+#pragma warning(disable:4099) // struct/class mismatch in fwd declarations
+#endif
+
+namespace std
+{
+ template <class T> class allocator;
+ template <class charT, class traits, class Allocator> class basic_string;
+ template <class charT> struct BOOST_HASH_CHAR_TRAITS;
+ template <class T> class complex;
+}
+
+// gcc 3.4 and greater
+namespace std
+{
+#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
+ template <class T, class Allocator> class deque;
+#endif
+
+ template <class T, class Allocator> class list;
+ template <class T, class Allocator> class vector;
+ template <class Key, class T, class Compare, class Allocator> class map;
+ template <class Key, class T, class Compare, class Allocator>
+ class multimap;
+ template <class Key, class Compare, class Allocator> class set;
+ template <class Key, class Compare, class Allocator> class multiset;
+
+#if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
+ template <size_t N> class bitset;
+#endif
+ template <class T1, class T2> struct pair;
+}
+
+#if defined(BOOST_MSVC)
+#pragma warning(pop)
+#endif
+
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/detail/endian.hpp b/3rdParty/Boost/boost/detail/endian.hpp
new file mode 100644
index 0000000..803d7e2
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/endian.hpp
@@ -0,0 +1,73 @@
+// Copyright 2005 Caleb Epstein
+// Copyright 2006 John Maddock
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+/*
+ * Copyright (c) 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 notice reproduced from <boost/detail/limits.hpp>, from
+ * which this code was originally taken.
+ *
+ * Modified by Caleb Epstein to use <endian.h> with GNU libc and to
+ * defined the BOOST_ENDIAN macro.
+ */
+
+#ifndef BOOST_DETAIL_ENDIAN_HPP
+#define BOOST_DETAIL_ENDIAN_HPP
+
+// GNU libc offers the helpful header <endian.h> which defines
+// __BYTE_ORDER
+
+#if defined (__GLIBC__)
+# include <endian.h>
+# if (__BYTE_ORDER == __LITTLE_ENDIAN)
+# define BOOST_LITTLE_ENDIAN
+# elif (__BYTE_ORDER == __BIG_ENDIAN)
+# define BOOST_BIG_ENDIAN
+# elif (__BYTE_ORDER == __PDP_ENDIAN)
+# define BOOST_PDP_ENDIAN
+# else
+# error Unknown machine endianness detected.
+# endif
+# define BOOST_BYTE_ORDER __BYTE_ORDER
+#elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
+# define BOOST_BIG_ENDIAN
+# define BOOST_BYTE_ORDER 4321
+#elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
+# define BOOST_LITTLE_ENDIAN
+# define BOOST_BYTE_ORDER 1234
+#elif defined(__sparc) || defined(__sparc__) \
+ || defined(_POWER) || defined(__powerpc__) \
+ || defined(__ppc__) || defined(__hpux) \
+ || defined(_MIPSEB) || defined(_POWER) \
+ || defined(__s390__)
+# define BOOST_BIG_ENDIAN
+# define BOOST_BYTE_ORDER 4321
+#elif defined(__i386__) || defined(__alpha__) \
+ || defined(__ia64) || defined(__ia64__) \
+ || defined(_M_IX86) || defined(_M_IA64) \
+ || defined(_M_ALPHA) || defined(__amd64) \
+ || defined(__amd64__) || defined(_M_AMD64) \
+ || defined(__x86_64) || defined(__x86_64__) \
+ || defined(_M_X64) || defined(__bfin__)
+
+# define BOOST_LITTLE_ENDIAN
+# define BOOST_BYTE_ORDER 1234
+#else
+# error The file boost/detail/endian.hpp needs to be set up for your CPU type.
+#endif
+
+
+#endif
diff --git a/3rdParty/Boost/boost/detail/indirect_traits.hpp b/3rdParty/Boost/boost/detail/indirect_traits.hpp
new file mode 100644
index 0000000..f9c0cd6
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/indirect_traits.hpp
@@ -0,0 +1,487 @@
+// Copyright David Abrahams 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)
+#ifndef INDIRECT_TRAITS_DWA2002131_HPP
+# define INDIRECT_TRAITS_DWA2002131_HPP
+# include <boost/type_traits/is_function.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_pointer.hpp>
+# include <boost/type_traits/is_class.hpp>
+# include <boost/type_traits/is_const.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+# include <boost/type_traits/is_member_function_pointer.hpp>
+# include <boost/type_traits/is_member_pointer.hpp>
+# include <boost/type_traits/remove_cv.hpp>
+# include <boost/type_traits/remove_reference.hpp>
+# include <boost/type_traits/remove_pointer.hpp>
+
+# include <boost/type_traits/detail/ice_and.hpp>
+# include <boost/detail/workaround.hpp>
+
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/and.hpp>
+# include <boost/mpl/not.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+
+# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/detail/is_function_ref_tester.hpp>
+# endif
+
+namespace boost { namespace detail {
+
+namespace indirect_traits {
+
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <class T>
+struct is_reference_to_const : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_const<T const&> : mpl::true_
+{
+};
+
+# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
+template<class T>
+struct is_reference_to_const<T const volatile&> : mpl::true_
+{
+};
+# endif
+
+template <class T>
+struct is_reference_to_function : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_function<T&> : is_function<T>
+{
+};
+
+template <class T>
+struct is_pointer_to_function : mpl::false_
+{
+};
+
+// There's no such thing as a pointer-to-cv-function, so we don't need
+// specializations for those
+template <class T>
+struct is_pointer_to_function<T*> : is_function<T>
+{
+};
+
+template <class T>
+struct is_reference_to_member_function_pointer_impl : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_member_function_pointer_impl<T&>
+ : is_member_function_pointer<typename remove_cv<T>::type>
+{
+};
+
+
+template <class T>
+struct is_reference_to_member_function_pointer
+ : is_reference_to_member_function_pointer_impl<T>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
+};
+
+template <class T>
+struct is_reference_to_function_pointer_aux
+ : mpl::and_<
+ is_reference<T>
+ , is_pointer_to_function<
+ typename remove_cv<
+ typename remove_reference<T>::type
+ >::type
+ >
+ >
+{
+ // There's no such thing as a pointer-to-cv-function, so we don't need specializations for those
+};
+
+template <class T>
+struct is_reference_to_function_pointer
+ : mpl::if_<
+ is_reference_to_function<T>
+ , mpl::false_
+ , is_reference_to_function_pointer_aux<T>
+ >::type
+{
+};
+
+template <class T>
+struct is_reference_to_non_const
+ : mpl::and_<
+ is_reference<T>
+ , mpl::not_<
+ is_reference_to_const<T>
+ >
+ >
+{
+};
+
+template <class T>
+struct is_reference_to_volatile : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_volatile<T volatile&> : mpl::true_
+{
+};
+
+# if defined(BOOST_MSVC) && _MSC_FULL_VER <= 13102140 // vc7.01 alpha workaround
+template <class T>
+struct is_reference_to_volatile<T const volatile&> : mpl::true_
+{
+};
+# endif
+
+
+template <class T>
+struct is_reference_to_pointer : mpl::false_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T*&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T* const&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T* volatile&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_pointer<T* const volatile&> : mpl::true_
+{
+};
+
+template <class T>
+struct is_reference_to_class
+ : mpl::and_<
+ is_reference<T>
+ , is_class<
+ typename remove_cv<
+ typename remove_reference<T>::type
+ >::type
+ >
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
+};
+
+template <class T>
+struct is_pointer_to_class
+ : mpl::and_<
+ is_pointer<T>
+ , is_class<
+ typename remove_cv<
+ typename remove_pointer<T>::type
+ >::type
+ >
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_class,(T))
+};
+
+# else
+
+using namespace boost::detail::is_function_ref_tester_;
+
+typedef char (&inner_yes_type)[3];
+typedef char (&inner_no_type)[2];
+typedef char (&outer_no_type)[1];
+
+template <typename V>
+struct is_const_help
+{
+ typedef typename mpl::if_<
+ is_const<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <typename V>
+struct is_volatile_help
+{
+ typedef typename mpl::if_<
+ is_volatile<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <typename V>
+struct is_pointer_help
+{
+ typedef typename mpl::if_<
+ is_pointer<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <typename V>
+struct is_class_help
+{
+ typedef typename mpl::if_<
+ is_class<V>
+ , inner_yes_type
+ , inner_no_type
+ >::type type;
+};
+
+template <class T>
+struct is_reference_to_function_aux
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(detail::is_function_ref_tester(t,0)) == sizeof(::boost::type_traits::yes_type));
+ typedef mpl::bool_<value> type;
+ };
+
+template <class T>
+struct is_reference_to_function
+ : mpl::if_<is_reference<T>, is_reference_to_function_aux<T>, mpl::bool_<false> >::type
+{
+};
+
+template <class T>
+struct is_pointer_to_function_aux
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(::boost::type_traits::is_function_ptr_tester(t)) == sizeof(::boost::type_traits::yes_type));
+ typedef mpl::bool_<value> type;
+};
+
+template <class T>
+struct is_pointer_to_function
+ : mpl::if_<is_pointer<T>, is_pointer_to_function_aux<T>, mpl::bool_<false> >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_pointer_to_function,(T))
+};
+
+struct false_helper1
+{
+ template <class T>
+ struct apply : mpl::false_
+ {
+ };
+};
+
+template <typename V>
+typename is_const_help<V>::type reference_to_const_helper(V&);
+outer_no_type
+reference_to_const_helper(...);
+
+struct true_helper1
+{
+ template <class T>
+ struct apply
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(reference_to_const_helper(t)) == sizeof(inner_yes_type));
+ typedef mpl::bool_<value> type;
+ };
+};
+
+template <bool ref = true>
+struct is_reference_to_const_helper1 : true_helper1
+{
+};
+
+template <>
+struct is_reference_to_const_helper1<false> : false_helper1
+{
+};
+
+
+template <class T>
+struct is_reference_to_const
+ : is_reference_to_const_helper1<is_reference<T>::value>::template apply<T>
+{
+};
+
+
+template <bool ref = true>
+struct is_reference_to_non_const_helper1
+{
+ template <class T>
+ struct apply
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(reference_to_const_helper(t)) == sizeof(inner_no_type));
+
+ typedef mpl::bool_<value> type;
+ };
+};
+
+template <>
+struct is_reference_to_non_const_helper1<false> : false_helper1
+{
+};
+
+
+template <class T>
+struct is_reference_to_non_const
+ : is_reference_to_non_const_helper1<is_reference<T>::value>::template apply<T>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_non_const,(T))
+};
+
+
+template <typename V>
+typename is_volatile_help<V>::type reference_to_volatile_helper(V&);
+outer_no_type
+reference_to_volatile_helper(...);
+
+template <bool ref = true>
+struct is_reference_to_volatile_helper1
+{
+ template <class T>
+ struct apply
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof(reference_to_volatile_helper(t)) == sizeof(inner_yes_type));
+ typedef mpl::bool_<value> type;
+ };
+};
+
+template <>
+struct is_reference_to_volatile_helper1<false> : false_helper1
+{
+};
+
+
+template <class T>
+struct is_reference_to_volatile
+ : is_reference_to_volatile_helper1<is_reference<T>::value>::template apply<T>
+{
+};
+
+template <typename V>
+typename is_pointer_help<V>::type reference_to_pointer_helper(V&);
+outer_no_type reference_to_pointer_helper(...);
+
+template <class T>
+struct reference_to_pointer_impl
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = (sizeof((reference_to_pointer_helper)(t)) == sizeof(inner_yes_type))
+ );
+
+ typedef mpl::bool_<value> type;
+};
+
+template <class T>
+struct is_reference_to_pointer
+ : mpl::eval_if<is_reference<T>, reference_to_pointer_impl<T>, mpl::false_>::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_pointer,(T))
+};
+
+template <class T>
+struct is_reference_to_function_pointer
+ : mpl::eval_if<is_reference<T>, is_pointer_to_function_aux<T>, mpl::false_>::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_function_pointer,(T))
+};
+
+
+template <class T>
+struct is_member_function_pointer_help
+ : mpl::if_<is_member_function_pointer<T>, inner_yes_type, inner_no_type>
+{};
+
+template <typename V>
+typename is_member_function_pointer_help<V>::type member_function_pointer_helper(V&);
+outer_no_type member_function_pointer_helper(...);
+
+template <class T>
+struct is_pointer_to_member_function_aux
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = sizeof((member_function_pointer_helper)(t)) == sizeof(inner_yes_type));
+ typedef mpl::bool_<value> type;
+};
+
+template <class T>
+struct is_reference_to_member_function_pointer
+ : mpl::if_<
+ is_reference<T>
+ , is_pointer_to_member_function_aux<T>
+ , mpl::bool_<false>
+ >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_member_function_pointer,(T))
+};
+
+template <typename V>
+typename is_class_help<V>::type reference_to_class_helper(V const volatile&);
+outer_no_type reference_to_class_helper(...);
+
+template <class T>
+struct is_reference_to_class
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = (is_reference<T>::value
+ & (sizeof(reference_to_class_helper(t)) == sizeof(inner_yes_type)))
+ );
+ typedef mpl::bool_<value> type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,is_reference_to_class,(T))
+};
+
+template <typename V>
+typename is_class_help<V>::type pointer_to_class_helper(V const volatile*);
+outer_no_type pointer_to_class_helper(...);
+
+template <class T>
+struct is_pointer_to_class
+{
+ static T t;
+ BOOST_STATIC_CONSTANT(
+ bool, value
+ = (is_pointer<T>::value
+ && sizeof(pointer_to_class_helper(t)) == sizeof(inner_yes_type))
+ );
+ typedef mpl::bool_<value> type;
+};
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+}
+
+using namespace indirect_traits;
+
+}} // namespace boost::python::detail
+
+#endif // INDIRECT_TRAITS_DWA2002131_HPP
diff --git a/3rdParty/Boost/boost/detail/interlocked.hpp b/3rdParty/Boost/boost/detail/interlocked.hpp
new file mode 100644
index 0000000..b6c8d75
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/interlocked.hpp
@@ -0,0 +1,130 @@
+#ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
+#define BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/interlocked.hpp
+//
+// Copyright 2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/config.hpp>
+
+#if defined( BOOST_USE_WINDOWS_H )
+
+# include <windows.h>
+
+# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER InterlockedCompareExchangePointer
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER InterlockedExchangePointer
+
+#elif defined(_WIN32_WCE)
+
+// under Windows CE we still have old-style Interlocked* functions
+
+extern "C" long __cdecl InterlockedIncrement( long* );
+extern "C" long __cdecl InterlockedDecrement( long* );
+extern "C" long __cdecl InterlockedCompareExchange( long*, long, long );
+extern "C" long __cdecl InterlockedExchange( long*, long );
+extern "C" long __cdecl InterlockedExchangeAdd( long*, long );
+
+# define BOOST_INTERLOCKED_INCREMENT InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD InterlockedExchangeAdd
+
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
+ ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long*)(dest),(long)(exchange),(long)(compare)))
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
+ ((void*)BOOST_INTERLOCKED_EXCHANGE((long*)(dest),(long)(exchange)))
+
+#elif defined( BOOST_MSVC ) || defined( BOOST_INTEL_WIN )
+
+extern "C" long __cdecl _InterlockedIncrement( long volatile * );
+extern "C" long __cdecl _InterlockedDecrement( long volatile * );
+extern "C" long __cdecl _InterlockedCompareExchange( long volatile *, long, long );
+extern "C" long __cdecl _InterlockedExchange( long volatile *, long);
+extern "C" long __cdecl _InterlockedExchangeAdd( long volatile *, long);
+
+# pragma intrinsic( _InterlockedIncrement )
+# pragma intrinsic( _InterlockedDecrement )
+# pragma intrinsic( _InterlockedCompareExchange )
+# pragma intrinsic( _InterlockedExchange )
+# pragma intrinsic( _InterlockedExchangeAdd )
+
+# if defined(_M_IA64) || defined(_M_AMD64)
+
+extern "C" void* __cdecl _InterlockedCompareExchangePointer( void* volatile *, void*, void* );
+extern "C" void* __cdecl _InterlockedExchangePointer( void* volatile *, void* );
+
+# pragma intrinsic( _InterlockedCompareExchangePointer )
+# pragma intrinsic( _InterlockedExchangePointer )
+
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER _InterlockedCompareExchangePointer
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER _InterlockedExchangePointer
+
+# else
+
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
+ ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
+ ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
+
+# endif
+
+# define BOOST_INTERLOCKED_INCREMENT _InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT _InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE _InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE _InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD _InterlockedExchangeAdd
+
+#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
+
+namespace boost
+{
+
+namespace detail
+{
+
+extern "C" __declspec(dllimport) long __stdcall InterlockedIncrement( long volatile * );
+extern "C" __declspec(dllimport) long __stdcall InterlockedDecrement( long volatile * );
+extern "C" __declspec(dllimport) long __stdcall InterlockedCompareExchange( long volatile *, long, long );
+extern "C" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long );
+extern "C" __declspec(dllimport) long __stdcall InterlockedExchangeAdd( long volatile *, long );
+
+} // namespace detail
+
+} // namespace boost
+
+# define BOOST_INTERLOCKED_INCREMENT ::boost::detail::InterlockedIncrement
+# define BOOST_INTERLOCKED_DECREMENT ::boost::detail::InterlockedDecrement
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE ::boost::detail::InterlockedCompareExchange
+# define BOOST_INTERLOCKED_EXCHANGE ::boost::detail::InterlockedExchange
+# define BOOST_INTERLOCKED_EXCHANGE_ADD ::boost::detail::InterlockedExchangeAdd
+
+# define BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(dest,exchange,compare) \
+ ((void*)BOOST_INTERLOCKED_COMPARE_EXCHANGE((long volatile*)(dest),(long)(exchange),(long)(compare)))
+# define BOOST_INTERLOCKED_EXCHANGE_POINTER(dest,exchange) \
+ ((void*)BOOST_INTERLOCKED_EXCHANGE((long volatile*)(dest),(long)(exchange)))
+
+#else
+
+# error "Interlocked intrinsics not available"
+
+#endif
+
+#endif // #ifndef BOOST_DETAIL_INTERLOCKED_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/detail/is_function_ref_tester.hpp b/3rdParty/Boost/boost/detail/is_function_ref_tester.hpp
new file mode 100644
index 0000000..5f367ea
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/is_function_ref_tester.hpp
@@ -0,0 +1,135 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
+#define BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
+
+#include "boost/type_traits/detail/yes_no_type.hpp"
+#include "boost/type_traits/config.hpp"
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+# include "boost/preprocessor/iterate.hpp"
+# include "boost/preprocessor/enum_params.hpp"
+# include "boost/preprocessor/comma_if.hpp"
+#endif
+
+namespace boost {
+namespace detail {
+namespace is_function_ref_tester_ {
+
+template <class T>
+boost::type_traits::no_type BOOST_TT_DECL is_function_ref_tester(T& ...);
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// preprocessor-generated part, don't edit by hand!
+
+template <class R>
+boost::type_traits::yes_type is_function_ref_tester(R (&)(), int);
+
+template <class R,class T0 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0), int);
+
+template <class R,class T0,class T1 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1), int);
+
+template <class R,class T0,class T1,class T2 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2), int);
+
+template <class R,class T0,class T1,class T2,class T3 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23), int);
+
+template <class R,class T0,class T1,class T2,class T3,class T4,class T5,class T6,class T7,class T8,class T9,class T10,class T11,class T12,class T13,class T14,class T15,class T16,class T17,class T18,class T19,class T20,class T21,class T22,class T23,class T24 >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24), int);
+
+#else
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (0, 25, "boost/type_traits/detail/is_function_ref_tester.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace detail
+} // namespace python
+} // namespace boost
+
+#endif // BOOST_DETAIL_IS_FUNCTION_REF_TESTER_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i BOOST_PP_FRAME_ITERATION(1)
+
+template <class R BOOST_PP_COMMA_IF(i) BOOST_PP_ENUM_PARAMS(i,class T) >
+boost::type_traits::yes_type is_function_ref_tester(R (&)(BOOST_PP_ENUM_PARAMS(i,T)), int);
+
+#undef i
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/detail/iterator.hpp b/3rdParty/Boost/boost/detail/iterator.hpp
new file mode 100644
index 0000000..5bb9c62
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/iterator.hpp
@@ -0,0 +1,494 @@
+// (C) Copyright David Abrahams 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)
+
+// Boost versions of
+//
+// std::iterator_traits<>::iterator_category
+// std::iterator_traits<>::difference_type
+// std::distance()
+//
+// ...for all compilers and iterators
+//
+// Additionally, if X is a pointer
+// std::iterator_traits<X>::pointer
+
+// Otherwise, if partial specialization is supported or X is not a pointer
+// std::iterator_traits<X>::value_type
+// std::iterator_traits<X>::pointer
+// std::iterator_traits<X>::reference
+//
+// See http://www.boost.org for most recent version including documentation.
+
+// Revision History
+// 04 Mar 2001 - More attempted fixes for Intel C++ (David Abrahams)
+// 03 Mar 2001 - Put all implementation into namespace
+// boost::detail::iterator_traits_. Some progress made on fixes
+// for Intel compiler. (David Abrahams)
+// 02 Mar 2001 - Changed BOOST_MSVC to BOOST_MSVC_STD_ITERATOR in a few
+// places. (Jeremy Siek)
+// 19 Feb 2001 - Improved workarounds for stock MSVC6; use yes_type and
+// no_type from type_traits.hpp; stopped trying to remove_cv
+// before detecting is_pointer, in honor of the new type_traits
+// semantics. (David Abrahams)
+// 13 Feb 2001 - Make it work with nearly all standard-conforming iterators
+// under raw VC6. The one category remaining which will fail is
+// that of iterators derived from std::iterator but not
+// boost::iterator and which redefine difference_type.
+// 11 Feb 2001 - Clean away code which can never be used (David Abrahams)
+// 09 Feb 2001 - Always have a definition for each traits member, even if it
+// can't be properly deduced. These will be incomplete types in
+// some cases (undefined<void>), but it helps suppress MSVC errors
+// elsewhere (David Abrahams)
+// 07 Feb 2001 - Support for more of the traits members where possible, making
+// this useful as a replacement for std::iterator_traits<T> when
+// used as a default template parameter.
+// 06 Feb 2001 - Removed useless #includes of standard library headers
+// (David Abrahams)
+
+#ifndef ITERATOR_DWA122600_HPP_
+# define ITERATOR_DWA122600_HPP_
+
+# include <boost/config.hpp>
+# include <iterator>
+
+// STLPort 4.0 and betas have a bug when debugging is enabled and there is no
+// partial specialization: instead of an iterator_category typedef, the standard
+// container iterators have _Iterator_category.
+//
+// Also, whether debugging is enabled or not, there is a broken specialization
+// of std::iterator<output_iterator_tag,void,void,void,void> which has no
+// typedefs but iterator_category.
+# if defined(__SGI_STL_PORT)
+
+# if (__SGI_STL_PORT <= 0x410) && !defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && defined(__STL_DEBUG)
+# define BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
+# endif
+
+# define BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
+
+# endif // STLPort <= 4.1b4 && no partial specialization
+
+# if !defined(BOOST_NO_STD_ITERATOR_TRAITS) \
+ && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MSVC_STD_ITERATOR)
+
+namespace boost { namespace detail {
+
+// Define a new template so it can be specialized
+template <class Iterator>
+struct iterator_traits
+ : std::iterator_traits<Iterator>
+{};
+using std::distance;
+
+}} // namespace boost::detail
+
+# else
+
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MSVC_STD_ITERATOR)
+
+// This is the case where everything conforms except BOOST_NO_STD_ITERATOR_TRAITS
+
+namespace boost { namespace detail {
+
+// Rogue Wave Standard Library fools itself into thinking partial
+// specialization is missing on some platforms (e.g. Sun), so fails to
+// supply iterator_traits!
+template <class Iterator>
+struct iterator_traits
+{
+ typedef typename Iterator::value_type value_type;
+ typedef typename Iterator::reference reference;
+ typedef typename Iterator::pointer pointer;
+ typedef typename Iterator::difference_type difference_type;
+ typedef typename Iterator::iterator_category iterator_category;
+};
+
+template <class T>
+struct iterator_traits<T*>
+{
+ typedef T value_type;
+ typedef T& reference;
+ typedef T* pointer;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::random_access_iterator_tag iterator_category;
+};
+
+template <class T>
+struct iterator_traits<T const*>
+{
+ typedef T value_type;
+ typedef T const& reference;
+ typedef T const* pointer;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::random_access_iterator_tag iterator_category;
+};
+
+}} // namespace boost::detail
+
+# else
+
+# include <boost/type_traits/remove_const.hpp>
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/is_pointer.hpp>
+
+# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/remove_pointer.hpp>
+# endif
+# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
+# include <boost/type_traits/is_base_and_derived.hpp>
+# endif
+
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/has_xxx.hpp>
+# include <cstddef>
+
+// should be the last #include
+# include "boost/type_traits/detail/bool_trait_def.hpp"
+
+namespace boost { namespace detail {
+
+BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(reference)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(pointer)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(difference_type)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator_category)
+
+// is_mutable_iterator --
+//
+// A metafunction returning true iff T is a mutable iterator type
+// with a nested value_type. Will only work portably with iterators
+// whose operator* returns a reference, but that seems to be OK for
+// the iterators supplied by Dinkumware. Some input iterators may
+// compile-time if they arrive here, and if the compiler is strict
+// about not taking the address of an rvalue.
+
+// This one detects ordinary mutable iterators - the result of
+// operator* is convertible to the value_type.
+template <class T>
+type_traits::yes_type is_mutable_iterator_helper(T const*, BOOST_DEDUCED_TYPENAME T::value_type*);
+
+// Since you can't take the address of an rvalue, the guts of
+// is_mutable_iterator_impl will fail if we use &*t directly. This
+// makes sure we can still work with non-lvalue iterators.
+template <class T> T* mutable_iterator_lvalue_helper(T& x);
+int mutable_iterator_lvalue_helper(...);
+
+
+// This one detects output iterators such as ostream_iterator which
+// return references to themselves.
+template <class T>
+type_traits::yes_type is_mutable_iterator_helper(T const*, T const*);
+
+type_traits::no_type is_mutable_iterator_helper(...);
+
+template <class T>
+struct is_mutable_iterator_impl
+{
+ static T t;
+
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(
+ detail::is_mutable_iterator_helper(
+ (T*)0
+ , mutable_iterator_lvalue_helper(*t) // like &*t
+ ))
+ == sizeof(type_traits::yes_type)
+ );
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+ is_mutable_iterator,T,::boost::detail::is_mutable_iterator_impl<T>::value)
+
+
+// is_full_iterator_traits --
+//
+// A metafunction returning true iff T has all the requisite nested
+// types to satisfy the requirements for a fully-conforming
+// iterator_traits implementation.
+template <class T>
+struct is_full_iterator_traits_impl
+{
+ enum { value =
+ has_value_type<T>::value
+ & has_reference<T>::value
+ & has_pointer<T>::value
+ & has_difference_type<T>::value
+ & has_iterator_category<T>::value
+ };
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+ is_full_iterator_traits,T,::boost::detail::is_full_iterator_traits_impl<T>::value)
+
+
+# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
+BOOST_MPL_HAS_XXX_TRAIT_DEF(_Iterator_category)
+
+// is_stlport_40_debug_iterator --
+//
+// A metafunction returning true iff T has all the requisite nested
+// types to satisfy the requirements of an STLPort 4.0 debug iterator
+// iterator_traits implementation.
+template <class T>
+struct is_stlport_40_debug_iterator_impl
+{
+ enum { value =
+ has_value_type<T>::value
+ & has_reference<T>::value
+ & has_pointer<T>::value
+ & has_difference_type<T>::value
+ & has__Iterator_category<T>::value
+ };
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+ is_stlport_40_debug_iterator,T,::boost::detail::is_stlport_40_debug_iterator_impl<T>::value)
+
+template <class T>
+struct stlport_40_debug_iterator_traits
+{
+ typedef typename T::value_type value_type;
+ typedef typename T::reference reference;
+ typedef typename T::pointer pointer;
+ typedef typename T::difference_type difference_type;
+ typedef typename T::_Iterator_category iterator_category;
+};
+# endif // BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
+
+template <class T> struct pointer_iterator_traits;
+
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <class T>
+struct pointer_iterator_traits<T*>
+{
+ typedef typename remove_const<T>::type value_type;
+ typedef T* pointer;
+ typedef T& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef std::ptrdiff_t difference_type;
+};
+# else
+
+// In case of no template partial specialization, and if T is a
+// pointer, iterator_traits<T>::value_type can still be computed. For
+// some basic types, remove_pointer is manually defined in
+// type_traits/broken_compiler_spec.hpp. For others, do it yourself.
+
+template<class P> class please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee;
+
+template<class P>
+struct pointer_value_type
+ : mpl::if_<
+ is_same<P, typename remove_pointer<P>::type>
+ , please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<P>
+ , typename remove_const<
+ typename remove_pointer<P>::type
+ >::type
+ >
+{
+};
+
+
+template<class P>
+struct pointer_reference
+ : mpl::if_<
+ is_same<P, typename remove_pointer<P>::type>
+ , please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_on_cv_unqualified_pointee<P>
+ , typename remove_pointer<P>::type&
+ >
+{
+};
+
+template <class T>
+struct pointer_iterator_traits
+{
+ typedef T pointer;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef std::ptrdiff_t difference_type;
+
+ typedef typename pointer_value_type<T>::type value_type;
+ typedef typename pointer_reference<T>::type reference;
+};
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// We'll sort iterator types into one of these classifications, from which we
+// can determine the difference_type, pointer, reference, and value_type
+template <class Iterator>
+struct standard_iterator_traits
+{
+ typedef typename Iterator::difference_type difference_type;
+ typedef typename Iterator::value_type value_type;
+ typedef typename Iterator::pointer pointer;
+ typedef typename Iterator::reference reference;
+ typedef typename Iterator::iterator_category iterator_category;
+};
+
+template <class Iterator>
+struct msvc_stdlib_mutable_traits
+ : std::iterator_traits<Iterator>
+{
+ typedef typename std::iterator_traits<Iterator>::distance_type difference_type;
+ typedef typename std::iterator_traits<Iterator>::value_type* pointer;
+ typedef typename std::iterator_traits<Iterator>::value_type& reference;
+};
+
+template <class Iterator>
+struct msvc_stdlib_const_traits
+ : std::iterator_traits<Iterator>
+{
+ typedef typename std::iterator_traits<Iterator>::distance_type difference_type;
+ typedef const typename std::iterator_traits<Iterator>::value_type* pointer;
+ typedef const typename std::iterator_traits<Iterator>::value_type& reference;
+};
+
+# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
+template <class Iterator>
+struct is_bad_output_iterator
+ : is_base_and_derived<
+ std::iterator<std::output_iterator_tag,void,void,void,void>
+ , Iterator>
+{
+};
+
+struct bad_output_iterator_traits
+{
+ typedef void value_type;
+ typedef void difference_type;
+ typedef std::output_iterator_tag iterator_category;
+ typedef void pointer;
+ typedef void reference;
+};
+# endif
+
+// If we're looking at an MSVC6 (old Dinkumware) ``standard''
+// iterator, this will generate an appropriate traits class.
+template <class Iterator>
+struct msvc_stdlib_iterator_traits
+ : mpl::if_<
+ is_mutable_iterator<Iterator>
+ , msvc_stdlib_mutable_traits<Iterator>
+ , msvc_stdlib_const_traits<Iterator>
+ >::type
+{};
+
+template <class Iterator>
+struct non_pointer_iterator_traits
+ : mpl::if_<
+ // if the iterator contains all the right nested types...
+ is_full_iterator_traits<Iterator>
+ // Use a standard iterator_traits implementation
+ , standard_iterator_traits<Iterator>
+# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
+ // Check for STLPort 4.0 broken _Iterator_category type
+ , mpl::if_<
+ is_stlport_40_debug_iterator<Iterator>
+ , stlport_40_debug_iterator_traits<Iterator>
+# endif
+ // Otherwise, assume it's a Dinkum iterator
+ , msvc_stdlib_iterator_traits<Iterator>
+# ifdef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
+ >::type
+# endif
+ >::type
+{
+};
+
+template <class Iterator>
+struct iterator_traits_aux
+ : mpl::if_<
+ is_pointer<Iterator>
+ , pointer_iterator_traits<Iterator>
+ , non_pointer_iterator_traits<Iterator>
+ >::type
+{
+};
+
+template <class Iterator>
+struct iterator_traits
+{
+ // Explicit forwarding from base class needed to keep MSVC6 happy
+ // under some circumstances.
+ private:
+# ifdef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
+ typedef
+ typename mpl::if_<
+ is_bad_output_iterator<Iterator>
+ , bad_output_iterator_traits
+ , iterator_traits_aux<Iterator>
+ >::type base;
+# else
+ typedef iterator_traits_aux<Iterator> base;
+# endif
+ public:
+ typedef typename base::value_type value_type;
+ typedef typename base::pointer pointer;
+ typedef typename base::reference reference;
+ typedef typename base::difference_type difference_type;
+ typedef typename base::iterator_category iterator_category;
+};
+
+// This specialization cuts off ETI (Early Template Instantiation) for MSVC.
+template <> struct iterator_traits<int>
+{
+ typedef int value_type;
+ typedef int pointer;
+ typedef int reference;
+ typedef int difference_type;
+ typedef int iterator_category;
+};
+
+}} // namespace boost::detail
+
+# endif // workarounds
+
+namespace boost { namespace detail {
+
+namespace iterator_traits_
+{
+ template <class Iterator, class Difference>
+ struct distance_select
+ {
+ static Difference execute(Iterator i1, const Iterator i2, ...)
+ {
+ Difference result = 0;
+ while (i1 != i2)
+ {
+ ++i1;
+ ++result;
+ }
+ return result;
+ }
+
+ static Difference execute(Iterator i1, const Iterator i2, std::random_access_iterator_tag*)
+ {
+ return i2 - i1;
+ }
+ };
+} // namespace boost::detail::iterator_traits_
+
+template <class Iterator>
+inline typename iterator_traits<Iterator>::difference_type
+distance(Iterator first, Iterator last)
+{
+ typedef typename iterator_traits<Iterator>::difference_type diff_t;
+ typedef typename ::boost::detail::iterator_traits<Iterator>::iterator_category iterator_category;
+
+ return iterator_traits_::distance_select<Iterator,diff_t>::execute(
+ first, last, (iterator_category*)0);
+}
+
+}}
+
+# endif
+
+
+# undef BOOST_BAD_CONTAINER_ITERATOR_CATEGORY_TYPEDEF
+# undef BOOST_BAD_OUTPUT_ITERATOR_SPECIALIZATION
+
+#endif // ITERATOR_DWA122600_HPP_
diff --git a/3rdParty/Boost/boost/detail/lcast_precision.hpp b/3rdParty/Boost/boost/detail/lcast_precision.hpp
new file mode 100644
index 0000000..d40ca21
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/lcast_precision.hpp
@@ -0,0 +1,184 @@
+// Copyright Alexander Nasonov & Paul A. Bristow 2006.
+
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt
+// or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
+#define BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
+
+#include <climits>
+#include <ios>
+#include <limits>
+
+#include <boost/config.hpp>
+#include <boost/integer_traits.hpp>
+
+#ifndef BOOST_NO_IS_ABSTRACT
+// Fix for SF:1358600 - lexical_cast & pure virtual functions & VC 8 STL
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_abstract.hpp>
+#endif
+
+#if defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || \
+ (defined(BOOST_MSVC) && (BOOST_MSVC<1310))
+
+#define BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+#endif
+
+#ifdef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+#include <boost/assert.hpp>
+#else
+#include <boost/static_assert.hpp>
+#endif
+
+namespace boost { namespace detail {
+
+class lcast_abstract_stub {};
+
+#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+// Calculate an argument to pass to std::ios_base::precision from
+// lexical_cast. See alternative implementation for broken standard
+// libraries in lcast_get_precision below. Keep them in sync, please.
+template<class T>
+struct lcast_precision
+{
+#ifdef BOOST_NO_IS_ABSTRACT
+ typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
+#else
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
+ boost::is_abstract<T>
+ , std::numeric_limits<lcast_abstract_stub>
+ , std::numeric_limits<T>
+ >::type limits;
+#endif
+
+ BOOST_STATIC_CONSTANT(bool, use_default_precision =
+ !limits::is_specialized || limits::is_exact
+ );
+
+ BOOST_STATIC_CONSTANT(bool, is_specialized_bin =
+ !use_default_precision &&
+ limits::radix == 2 && limits::digits > 0
+ );
+
+ BOOST_STATIC_CONSTANT(bool, is_specialized_dec =
+ !use_default_precision &&
+ limits::radix == 10 && limits::digits10 > 0
+ );
+
+ BOOST_STATIC_CONSTANT(std::streamsize, streamsize_max =
+ boost::integer_traits<std::streamsize>::const_max
+ );
+
+ BOOST_STATIC_CONSTANT(unsigned int, precision_dec = limits::digits10 + 1U);
+
+ BOOST_STATIC_ASSERT(!is_specialized_dec ||
+ precision_dec <= streamsize_max + 0UL
+ );
+
+ BOOST_STATIC_CONSTANT(unsigned long, precision_bin =
+ 2UL + limits::digits * 30103UL / 100000UL
+ );
+
+ BOOST_STATIC_ASSERT(!is_specialized_bin ||
+ (limits::digits + 0UL < ULONG_MAX / 30103UL &&
+ precision_bin > limits::digits10 + 0UL &&
+ precision_bin <= streamsize_max + 0UL)
+ );
+
+ BOOST_STATIC_CONSTANT(std::streamsize, value =
+ is_specialized_bin ? precision_bin
+ : is_specialized_dec ? precision_dec : 6
+ );
+};
+#endif
+
+template<class T>
+inline std::streamsize lcast_get_precision(T* = 0)
+{
+#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+ return lcast_precision<T>::value;
+#else // Follow lcast_precision algorithm at run-time:
+
+#ifdef BOOST_NO_IS_ABSTRACT
+ typedef std::numeric_limits<T> limits; // No fix for SF:1358600.
+#else
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
+ boost::is_abstract<T>
+ , std::numeric_limits<lcast_abstract_stub>
+ , std::numeric_limits<T>
+ >::type limits;
+#endif
+
+ bool const use_default_precision =
+ !limits::is_specialized || limits::is_exact;
+
+ if(!use_default_precision)
+ { // Includes all built-in floating-point types, float, double ...
+ // and UDT types for which digits (significand bits) is defined (not zero)
+
+ bool const is_specialized_bin =
+ limits::radix == 2 && limits::digits > 0;
+ bool const is_specialized_dec =
+ limits::radix == 10 && limits::digits10 > 0;
+ std::streamsize const streamsize_max =
+ (boost::integer_traits<std::streamsize>::max)();
+
+ if(is_specialized_bin)
+ { // Floating-point types with
+ // limits::digits defined by the specialization.
+
+ unsigned long const digits = limits::digits;
+ unsigned long const precision = 2UL + digits * 30103UL / 100000UL;
+ // unsigned long is selected because it is at least 32-bits
+ // and thus ULONG_MAX / 30103UL is big enough for all types.
+ BOOST_ASSERT(
+ digits < ULONG_MAX / 30103UL &&
+ precision > limits::digits10 + 0UL &&
+ precision <= streamsize_max + 0UL
+ );
+ return precision;
+ }
+ else if(is_specialized_dec)
+ { // Decimal Floating-point type, most likely a User Defined Type
+ // rather than a real floating-point hardware type.
+ unsigned int const precision = limits::digits10 + 1U;
+ BOOST_ASSERT(precision <= streamsize_max + 0UL);
+ return precision;
+ }
+ }
+
+ // Integral type (for which precision has no effect)
+ // or type T for which limits is NOT specialized,
+ // so assume stream precision remains the default 6 decimal digits.
+ // Warning: if your User-defined Floating-point type T is NOT specialized,
+ // then you may lose accuracy by only using 6 decimal digits.
+ // To avoid this, you need to specialize T with either
+ // radix == 2 and digits == the number of significand bits,
+ // OR
+ // radix = 10 and digits10 == the number of decimal digits.
+
+ return 6;
+#endif
+}
+
+template<class T>
+inline void lcast_set_precision(std::ios_base& stream, T*)
+{
+ stream.precision(lcast_get_precision<T>());
+}
+
+template<class Source, class Target>
+inline void lcast_set_precision(std::ios_base& stream, Source*, Target*)
+{
+ std::streamsize const s = lcast_get_precision((Source*)0);
+ std::streamsize const t = lcast_get_precision((Target*)0);
+ stream.precision(s > t ? s : t);
+}
+
+}}
+
+#endif // BOOST_DETAIL_LCAST_PRECISION_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/detail/lightweight_mutex.hpp b/3rdParty/Boost/boost/detail/lightweight_mutex.hpp
new file mode 100644
index 0000000..b7a7f6d
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/lightweight_mutex.hpp
@@ -0,0 +1,22 @@
+#ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
+#define BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/lightweight_mutex.hpp - lightweight mutex
+//
+// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+
+#include <boost/smart_ptr/detail/lightweight_mutex.hpp>
+
+#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/detail/limits.hpp b/3rdParty/Boost/boost/detail/limits.hpp
new file mode 100644
index 0000000..6f018df
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/limits.hpp
@@ -0,0 +1,449 @@
+// Copyright 2001 John Maddock
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+/*
+ * Copyright (c) 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.
+ */
+
+/* NOTE: This is not portable code. Parts of numeric_limits<> are
+ * inherently machine-dependent, and this file is written for the MIPS
+ * architecture and the SGI MIPSpro C++ compiler. Parts of it (in
+ * particular, some of the characteristics of floating-point types)
+ * are almost certainly incorrect for any other platform.
+ */
+
+/* The above comment is almost certainly out of date. This file works
+ * on systems other than SGI MIPSpro C++ now.
+ */
+
+/*
+ * Revision history:
+ * 21 Sep 2001:
+ * Only include <cwchar> if BOOST_NO_CWCHAR is defined. (Darin Adler)
+ * 10 Aug 2001:
+ * Added MIPS (big endian) to the big endian family. (Jens Maurer)
+ * 13 Apr 2001:
+ * Added powerpc to the big endian family. (Jeremy Siek)
+ * 5 Apr 2001:
+ * Added sparc (big endian) processor support (John Maddock).
+ * Initial sub:
+ * Modified by Jens Maurer for gcc 2.95 on x86.
+ */
+
+#ifndef BOOST_SGI_CPP_LIMITS
+#define BOOST_SGI_CPP_LIMITS
+
+#include <climits>
+#include <cfloat>
+#include <boost/config.hpp>
+#include <boost/detail/endian.hpp>
+
+#ifndef BOOST_NO_CWCHAR
+#include <cwchar> // for WCHAR_MIN and WCHAR_MAX
+#endif
+
+namespace std {
+
+enum float_round_style {
+ round_indeterminate = -1,
+ round_toward_zero = 0,
+ round_to_nearest = 1,
+ round_toward_infinity = 2,
+ round_toward_neg_infinity = 3
+};
+
+enum float_denorm_style {
+ denorm_indeterminate = -1,
+ denorm_absent = 0,
+ denorm_present = 1
+};
+
+// The C++ standard (section 18.2.1) requires that some of the members of
+// numeric_limits be static const data members that are given constant-
+// initializers within the class declaration. On compilers where the
+// BOOST_NO_INCLASS_MEMBER_INITIALIZATION macro is defined, it is impossible to write
+// a standard-conforming numeric_limits class.
+//
+// There are two possible workarounds: either initialize the data
+// members outside the class, or change them from data members to
+// enums. Neither workaround is satisfactory: the former makes it
+// impossible to use the data members in constant-expressions, and the
+// latter means they have the wrong type and that it is impossible to
+// take their addresses. We choose the former workaround.
+
+#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
+ enum { __mem_name = __mem_value }
+#else /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
+# define BOOST_STL_DECLARE_LIMITS_MEMBER(__mem_type, __mem_name, __mem_value) \
+ static const __mem_type __mem_name = __mem_value
+#endif /* BOOST_NO_INCLASS_MEMBER_INITIALIZATION */
+
+// Base class for all specializations of numeric_limits.
+template <class __number>
+class _Numeric_limits_base {
+public:
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, false);
+
+ static __number min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); }
+ static __number max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __number(); }
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, 0);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, 0);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, false);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 0);
+
+ static __number epsilon() throw() { return __number(); }
+ static __number round_error() throw() { return __number(); }
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, 0);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, 0);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, 0);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, 0);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
+ has_denorm,
+ denorm_absent);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
+
+ static __number infinity() throw() { return __number(); }
+ static __number quiet_NaN() throw() { return __number(); }
+ static __number signaling_NaN() throw() { return __number(); }
+ static __number denorm_min() throw() { return __number(); }
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, false);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style,
+ round_style,
+ round_toward_zero);
+};
+
+// Base class for integers.
+
+template <class _Int,
+ _Int __imin,
+ _Int __imax,
+ int __idigits = -1>
+class _Integer_limits : public _Numeric_limits_base<_Int>
+{
+public:
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
+
+ static _Int min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imin; }
+ static _Int max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return __imax; }
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int,
+ digits,
+ (__idigits < 0) ? (int)(sizeof(_Int) * CHAR_BIT)
+ - (__imin == 0 ? 0 : 1)
+ : __idigits);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, (digits * 301) / 1000);
+ // log 2 = 0.301029995664...
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, __imin != 0);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_integer, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_exact, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_modulo, true);
+};
+
+#if defined(BOOST_BIG_ENDIAN)
+
+ template<class Number, unsigned int Word>
+ struct float_helper{
+ static Number get_word() throw() {
+ // sizeof(long double) == 16
+ const unsigned int _S_word[4] = { Word, 0, 0, 0 };
+ return *reinterpret_cast<const Number*>(&_S_word);
+ }
+};
+
+#else
+
+ template<class Number, unsigned int Word>
+ struct float_helper{
+ static Number get_word() throw() {
+ // sizeof(long double) == 12, but only 10 bytes significant
+ const unsigned int _S_word[4] = { 0, 0, 0, Word };
+ return *reinterpret_cast<const Number*>(
+ reinterpret_cast<const char *>(&_S_word)+16-
+ (sizeof(Number) == 12 ? 10 : sizeof(Number)));
+ }
+};
+
+#endif
+
+// Base class for floating-point numbers.
+template <class __number,
+ int __Digits, int __Digits10,
+ int __MinExp, int __MaxExp,
+ int __MinExp10, int __MaxExp10,
+ unsigned int __InfinityWord,
+ unsigned int __QNaNWord, unsigned int __SNaNWord,
+ bool __IsIEC559,
+ float_round_style __RoundStyle>
+class _Floating_limits : public _Numeric_limits_base<__number>
+{
+public:
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_specialized, true);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits, __Digits);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, digits10, __Digits10);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_signed, true);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, radix, 2);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent, __MinExp);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent, __MaxExp);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, min_exponent10, __MinExp10);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(int, max_exponent10, __MaxExp10);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_infinity, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_quiet_NaN, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_signaling_NaN, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(float_denorm_style,
+ has_denorm,
+ denorm_indeterminate);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, has_denorm_loss, false);
+
+
+ static __number infinity() throw() {
+ return float_helper<__number, __InfinityWord>::get_word();
+ }
+ static __number quiet_NaN() throw() {
+ return float_helper<__number,__QNaNWord>::get_word();
+ }
+ static __number signaling_NaN() throw() {
+ return float_helper<__number,__SNaNWord>::get_word();
+ }
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_iec559, __IsIEC559);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, is_bounded, true);
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, traps, false /* was: true */ );
+ BOOST_STL_DECLARE_LIMITS_MEMBER(bool, tinyness_before, false);
+
+ BOOST_STL_DECLARE_LIMITS_MEMBER(float_round_style, round_style, __RoundStyle);
+};
+
+// Class numeric_limits
+
+// The unspecialized class.
+
+template<class T>
+class numeric_limits : public _Numeric_limits_base<T> {};
+
+// Specializations for all built-in integral types.
+
+template<>
+class numeric_limits<bool>
+ : public _Integer_limits<bool, false, true, 0>
+{};
+
+template<>
+class numeric_limits<char>
+ : public _Integer_limits<char, CHAR_MIN, CHAR_MAX>
+{};
+
+template<>
+class numeric_limits<signed char>
+ : public _Integer_limits<signed char, SCHAR_MIN, SCHAR_MAX>
+{};
+
+template<>
+class numeric_limits<unsigned char>
+ : public _Integer_limits<unsigned char, 0, UCHAR_MAX>
+{};
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+template<>
+class numeric_limits<wchar_t>
+#if !defined(WCHAR_MAX) || !defined(WCHAR_MIN)
+#if defined(_WIN32) || defined(__CYGWIN__)
+ : public _Integer_limits<wchar_t, 0, USHRT_MAX>
+#elif defined(__hppa)
+// wchar_t has "unsigned int" as the underlying type
+ : public _Integer_limits<wchar_t, 0, UINT_MAX>
+#else
+// assume that wchar_t has "int" as the underlying type
+ : public _Integer_limits<wchar_t, INT_MIN, INT_MAX>
+#endif
+#else
+// we have WCHAR_MIN and WCHAR_MAX defined, so use it
+ : public _Integer_limits<wchar_t, WCHAR_MIN, WCHAR_MAX>
+#endif
+{};
+#endif
+
+template<>
+class numeric_limits<short>
+ : public _Integer_limits<short, SHRT_MIN, SHRT_MAX>
+{};
+
+template<>
+class numeric_limits<unsigned short>
+ : public _Integer_limits<unsigned short, 0, USHRT_MAX>
+{};
+
+template<>
+class numeric_limits<int>
+ : public _Integer_limits<int, INT_MIN, INT_MAX>
+{};
+
+template<>
+class numeric_limits<unsigned int>
+ : public _Integer_limits<unsigned int, 0, UINT_MAX>
+{};
+
+template<>
+class numeric_limits<long>
+ : public _Integer_limits<long, LONG_MIN, LONG_MAX>
+{};
+
+template<>
+class numeric_limits<unsigned long>
+ : public _Integer_limits<unsigned long, 0, ULONG_MAX>
+{};
+
+#ifdef __GNUC__
+
+// Some compilers have long long, but don't define the
+// LONGLONG_MIN and LONGLONG_MAX macros in limits.h. This
+// assumes that long long is 64 bits.
+#if !defined(LONGLONG_MAX) && !defined(ULONGLONG_MAX)
+
+# define ULONGLONG_MAX 0xffffffffffffffffLLU
+# define LONGLONG_MAX 0x7fffffffffffffffLL
+
+#endif
+
+#if !defined(LONGLONG_MIN)
+# define LONGLONG_MIN (-LONGLONG_MAX - 1)
+#endif
+
+
+#if !defined(ULONGLONG_MIN)
+# define ULONGLONG_MIN 0
+#endif
+
+#endif /* __GNUC__ */
+
+// Specializations for all built-in floating-point type.
+
+template<> class numeric_limits<float>
+ : public _Floating_limits<float,
+ FLT_MANT_DIG, // Binary digits of precision
+ FLT_DIG, // Decimal digits of precision
+ FLT_MIN_EXP, // Minimum exponent
+ FLT_MAX_EXP, // Maximum exponent
+ FLT_MIN_10_EXP, // Minimum base 10 exponent
+ FLT_MAX_10_EXP, // Maximum base 10 exponent
+#if defined(BOOST_BIG_ENDIAN)
+ 0x7f80 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
+ 0x7f81 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
+ 0x7fc1 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
+#else
+ 0x7f800000u, // Last word of +infinity
+ 0x7f810000u, // Last word of quiet NaN
+ 0x7fc10000u, // Last word of signaling NaN
+#endif
+ true, // conforms to iec559
+ round_to_nearest>
+{
+public:
+ static float min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MIN; }
+ static float denorm_min() throw() { return FLT_MIN; }
+ static float max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return FLT_MAX; }
+ static float epsilon() throw() { return FLT_EPSILON; }
+ static float round_error() throw() { return 0.5f; } // Units: ulps.
+};
+
+template<> class numeric_limits<double>
+ : public _Floating_limits<double,
+ DBL_MANT_DIG, // Binary digits of precision
+ DBL_DIG, // Decimal digits of precision
+ DBL_MIN_EXP, // Minimum exponent
+ DBL_MAX_EXP, // Maximum exponent
+ DBL_MIN_10_EXP, // Minimum base 10 exponent
+ DBL_MAX_10_EXP, // Maximum base 10 exponent
+#if defined(BOOST_BIG_ENDIAN)
+ 0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
+ 0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
+ 0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
+#else
+ 0x7ff00000u, // Last word of +infinity
+ 0x7ff10000u, // Last word of quiet NaN
+ 0x7ff90000u, // Last word of signaling NaN
+#endif
+ true, // conforms to iec559
+ round_to_nearest>
+{
+public:
+ static double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MIN; }
+ static double denorm_min() throw() { return DBL_MIN; }
+ static double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return DBL_MAX; }
+ static double epsilon() throw() { return DBL_EPSILON; }
+ static double round_error() throw() { return 0.5; } // Units: ulps.
+};
+
+template<> class numeric_limits<long double>
+ : public _Floating_limits<long double,
+ LDBL_MANT_DIG, // Binary digits of precision
+ LDBL_DIG, // Decimal digits of precision
+ LDBL_MIN_EXP, // Minimum exponent
+ LDBL_MAX_EXP, // Maximum exponent
+ LDBL_MIN_10_EXP,// Minimum base 10 exponent
+ LDBL_MAX_10_EXP,// Maximum base 10 exponent
+#if defined(BOOST_BIG_ENDIAN)
+ 0x7ff0 << (sizeof(int)*CHAR_BIT-16), // Last word of +infinity
+ 0x7ff1 << (sizeof(int)*CHAR_BIT-16), // Last word of quiet NaN
+ 0x7ff9 << (sizeof(int)*CHAR_BIT-16), // Last word of signaling NaN
+#else
+ 0x7fff8000u, // Last word of +infinity
+ 0x7fffc000u, // Last word of quiet NaN
+ 0x7fff9000u, // Last word of signaling NaN
+#endif
+ false, // Doesn't conform to iec559
+ round_to_nearest>
+{
+public:
+ static long double min BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MIN; }
+ static long double denorm_min() throw() { return LDBL_MIN; }
+ static long double max BOOST_PREVENT_MACRO_SUBSTITUTION () throw() { return LDBL_MAX; }
+ static long double epsilon() throw() { return LDBL_EPSILON; }
+ static long double round_error() throw() { return 4; } // Units: ulps.
+};
+
+} // namespace std
+
+#endif /* BOOST_SGI_CPP_LIMITS */
+
+// Local Variables:
+// mode:C++
+// End:
+
+
+
diff --git a/3rdParty/Boost/boost/detail/ob_call_traits.hpp b/3rdParty/Boost/boost/detail/ob_call_traits.hpp
new file mode 100644
index 0000000..eb4df7a
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/ob_call_traits.hpp
@@ -0,0 +1,168 @@
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/utility for most recent version including documentation.
+//
+// Crippled version for crippled compilers:
+// see libs/utility/call_traits.htm
+//
+
+/* Release notes:
+ 01st October 2000:
+ Fixed call_traits on VC6, using "poor man's partial specialisation",
+ using ideas taken from "Generative programming" by Krzysztof Czarnecki
+ & Ulrich Eisenecker.
+*/
+
+#ifndef BOOST_OB_CALL_TRAITS_HPP
+#define BOOST_OB_CALL_TRAITS_HPP
+
+#ifndef BOOST_CONFIG_HPP
+#include <boost/config.hpp>
+#endif
+
+#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
+#include <boost/type_traits/arithmetic_traits.hpp>
+#endif
+#ifndef BOOST_COMPOSITE_TYPE_TRAITS_HPP
+#include <boost/type_traits/composite_traits.hpp>
+#endif
+
+namespace boost{
+
+#ifdef BOOST_MSVC6_MEMBER_TEMPLATES
+//
+// use member templates to emulate
+// partial specialisation:
+//
+namespace detail{
+
+template <class T>
+struct standard_call_traits
+{
+ typedef T value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef const T& param_type;
+};
+template <class T>
+struct simple_call_traits
+{
+ typedef T value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef const T param_type;
+};
+template <class T>
+struct reference_call_traits
+{
+ typedef T value_type;
+ typedef T reference;
+ typedef T const_reference;
+ typedef T param_type;
+};
+
+template <bool pointer, bool arithmetic, bool reference>
+struct call_traits_chooser
+{
+ template <class T>
+ struct rebind
+ {
+ typedef standard_call_traits<T> type;
+ };
+};
+
+template <>
+struct call_traits_chooser<true, false, false>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef simple_call_traits<T> type;
+ };
+};
+
+template <>
+struct call_traits_chooser<false, false, true>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef reference_call_traits<T> type;
+ };
+};
+
+template <bool size_is_small>
+struct call_traits_sizeof_chooser2
+{
+ template <class T>
+ struct small_rebind
+ {
+ typedef simple_call_traits<T> small_type;
+ };
+};
+
+template<>
+struct call_traits_sizeof_chooser2<false>
+{
+ template <class T>
+ struct small_rebind
+ {
+ typedef standard_call_traits<T> small_type;
+ };
+};
+
+template <>
+struct call_traits_chooser<false, true, false>
+{
+ template <class T>
+ struct rebind
+ {
+ enum { sizeof_choice = (sizeof(T) <= sizeof(void*)) };
+ typedef call_traits_sizeof_chooser2<(sizeof(T) <= sizeof(void*))> chooser;
+ typedef typename chooser::template small_rebind<T> bound_type;
+ typedef typename bound_type::small_type type;
+ };
+};
+
+} // namespace detail
+template <typename T>
+struct call_traits
+{
+private:
+ typedef detail::call_traits_chooser<
+ ::boost::is_pointer<T>::value,
+ ::boost::is_arithmetic<T>::value,
+ ::boost::is_reference<T>::value
+ > chooser;
+ typedef typename chooser::template rebind<T> bound_type;
+ typedef typename bound_type::type call_traits_type;
+public:
+ typedef typename call_traits_type::value_type value_type;
+ typedef typename call_traits_type::reference reference;
+ typedef typename call_traits_type::const_reference const_reference;
+ typedef typename call_traits_type::param_type param_type;
+};
+
+#else
+//
+// sorry call_traits is completely non-functional
+// blame your broken compiler:
+//
+
+template <typename T>
+struct call_traits
+{
+ typedef T value_type;
+ typedef T& reference;
+ typedef const T& const_reference;
+ typedef const T& param_type;
+};
+
+#endif // member templates
+
+}
+
+#endif // BOOST_OB_CALL_TRAITS_HPP
diff --git a/3rdParty/Boost/boost/detail/reference_content.hpp b/3rdParty/Boost/boost/detail/reference_content.hpp
new file mode 100644
index 0000000..daf56a8
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/reference_content.hpp
@@ -0,0 +1,141 @@
+//-----------------------------------------------------------------------------
+// boost detail/reference_content.hpp header file
+// See http://www.boost.org for updates, documentation, and revision history.
+//-----------------------------------------------------------------------------
+//
+// Copyright (c) 2003
+// Eric Friedman
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_DETAIL_REFERENCE_CONTENT_HPP
+#define BOOST_DETAIL_REFERENCE_CONTENT_HPP
+
+#include "boost/config.hpp"
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+# include "boost/mpl/bool.hpp"
+# include "boost/type_traits/has_nothrow_copy.hpp"
+#else
+# include "boost/mpl/if.hpp"
+# include "boost/type_traits/is_reference.hpp"
+#endif
+
+#include "boost/mpl/void.hpp"
+
+namespace boost {
+
+namespace detail {
+
+///////////////////////////////////////////////////////////////////////////////
+// (detail) class template reference_content
+//
+// Non-Assignable wrapper for references.
+//
+template <typename RefT>
+class reference_content
+{
+private: // representation
+
+ RefT content_;
+
+public: // structors
+
+ ~reference_content()
+ {
+ }
+
+ reference_content(RefT r)
+ : content_( r )
+ {
+ }
+
+ reference_content(const reference_content& operand)
+ : content_( operand.content_ )
+ {
+ }
+
+private: // non-Assignable
+
+ reference_content& operator=(const reference_content&);
+
+public: // queries
+
+ RefT get() const
+ {
+ return content_;
+ }
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// (detail) metafunction make_reference_content
+//
+// Wraps with reference_content if specified type is reference.
+//
+
+template <typename T = mpl::void_> struct make_reference_content;
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template <typename T>
+struct make_reference_content
+{
+ typedef T type;
+};
+
+template <typename T>
+struct make_reference_content< T& >
+{
+ typedef reference_content<T&> type;
+};
+
+#else // defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template <typename T>
+struct make_reference_content
+ : mpl::if_<
+ is_reference<T>
+ , reference_content<T>
+ , T
+ >
+{
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION workaround
+
+template <>
+struct make_reference_content< mpl::void_ >
+{
+ template <typename T>
+ struct apply
+ : make_reference_content<T>
+ {
+ };
+
+ typedef mpl::void_ type;
+};
+
+} // namespace detail
+
+///////////////////////////////////////////////////////////////////////////////
+// reference_content<T&> type traits specializations
+//
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template <typename T>
+struct has_nothrow_copy<
+ ::boost::detail::reference_content< T& >
+ >
+ : mpl::true_
+{
+};
+
+#endif // !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+} // namespace boost
+
+#endif // BOOST_DETAIL_REFERENCE_CONTENT_HPP
diff --git a/3rdParty/Boost/boost/detail/sp_typeinfo.hpp b/3rdParty/Boost/boost/detail/sp_typeinfo.hpp
new file mode 100644
index 0000000..e78c943
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/sp_typeinfo.hpp
@@ -0,0 +1,83 @@
+#ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
+#define BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// detail/sp_typeinfo.hpp
+//
+// Copyright 2007 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/config.hpp>
+
+#if defined( BOOST_NO_TYPEID )
+
+namespace boost
+{
+
+namespace detail
+{
+
+typedef void* sp_typeinfo;
+
+template<class T> struct sp_typeid_
+{
+ static char v_;
+};
+
+template<class T> char sp_typeid_< T >::v_;
+
+template<class T> struct sp_typeid_< T const >: sp_typeid_< T >
+{
+};
+
+template<class T> struct sp_typeid_< T volatile >: sp_typeid_< T >
+{
+};
+
+template<class T> struct sp_typeid_< T const volatile >: sp_typeid_< T >
+{
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#define BOOST_SP_TYPEID(T) (&boost::detail::sp_typeid_<T>::v_)
+
+#else
+
+#include <typeinfo>
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if defined( BOOST_NO_STD_TYPEINFO )
+
+typedef ::type_info sp_typeinfo;
+
+#else
+
+typedef std::type_info sp_typeinfo;
+
+#endif
+
+} // namespace detail
+
+} // namespace boost
+
+#define BOOST_SP_TYPEID(T) typeid(T)
+
+#endif
+
+#endif // #ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/detail/utf8_codecvt_facet.hpp b/3rdParty/Boost/boost/detail/utf8_codecvt_facet.hpp
new file mode 100644
index 0000000..ac7e7bf
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/utf8_codecvt_facet.hpp
@@ -0,0 +1,197 @@
+// Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu)
+// Andrew Lumsdaine, Indiana University (lums@osl.iu.edu).
+// Distributed under the Boost Software License, Version 1.0. (See accompany-
+// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_UTF8_CODECVT_FACET_HPP
+#define BOOST_UTF8_CODECVT_FACET_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
+// utf8_codecvt_facet.hpp
+
+// This header defines class utf8_codecvt_facet, derived fro
+// std::codecvt<wchar_t, char>, which can be used to convert utf8 data in
+// files into wchar_t strings in the application.
+//
+// The header is NOT STANDALONE, and is not to be included by the USER.
+// There are at least two libraries which want to use this functionality, and
+// we want to avoid code duplication. It would be possible to create utf8
+// library, but:
+// - this requires review process first
+// - in the case, when linking the a library which uses utf8
+// (say 'program_options'), user should also link to the utf8 library.
+// This seems inconvenient, and asking a user to link to an unrevieved
+// library is strange.
+// Until the above points are fixed, a library which wants to use utf8 must:
+// - include this header from one of it's headers or sources
+// - include the corresponding .cpp file from one of the sources
+// - before including either file, the library must define
+// - BOOST_UTF8_BEGIN_NAMESPACE to the namespace declaration that must be used
+// - BOOST_UTF8_END_NAMESPACE to the code to close the previous namespace
+// - declaration.
+// - BOOST_UTF8_DECL -- to the code which must be used for all 'exportable'
+// symbols.
+//
+// For example, program_options library might contain:
+// #define BOOST_UTF8_BEGIN_NAMESPACE <backslash character>
+// namespace boost { namespace program_options {
+// #define BOOST_UTF8_END_NAMESPACE }}
+// #define BOOST_UTF8_DECL BOOST_PROGRAM_OPTIONS_DECL
+// #include "../../detail/utf8/utf8_codecvt.cpp"
+//
+// Essentially, each library will have its own copy of utf8 code, in
+// different namespaces.
+
+// Note:(Robert Ramey). I have made the following alterations in the original
+// code.
+// a) Rendered utf8_codecvt<wchar_t, char> with using templates
+// b) Move longer functions outside class definition to prevent inlining
+// and make code smaller
+// c) added on a derived class to permit translation to/from current
+// locale to utf8
+
+// See http://www.boost.org for updates, documentation, and revision history.
+
+// archives stored as text - note these ar templated on the basic
+// stream templates to accommodate wide (and other?) kind of characters
+//
+// note the fact that on libraries without wide characters, ostream is
+// is not a specialization of basic_ostream which in fact is not defined
+// in such cases. So we can't use basic_ostream<OStream::char_type> but rather
+// use two template parameters
+//
+// utf8_codecvt_facet
+// This is an implementation of a std::codecvt facet for translating
+// from UTF-8 externally to UCS-4. Note that this is not tied to
+// any specific types in order to allow customization on platforms
+// where wchar_t is not big enough.
+//
+// NOTES: The current implementation jumps through some unpleasant hoops in
+// order to deal with signed character types. As a std::codecvt_base::result,
+// it is necessary for the ExternType to be convertible to unsigned char.
+// I chose not to tie the extern_type explicitly to char. But if any combination
+// of types other than <wchar_t,char_t> is used, then std::codecvt must be
+// specialized on those types for this to work.
+
+#include <locale>
+// for mbstate_t
+#include <wchar.h>
+// for std::size_t
+#include <cstddef>
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+namespace std {
+ #if defined(__LIBCOMO__)
+ using ::mbstate_t;
+ #elif defined(BOOST_DINKUMWARE_STDLIB) && !defined(__BORLANDC__)
+ using ::mbstate_t;
+ #elif defined(__SGI_STL_PORT)
+ #elif defined(BOOST_NO_STDC_NAMESPACE)
+ using ::mbstate_t;
+ using ::codecvt;
+ #endif
+} // namespace std
+
+#if !defined(__MSL_CPP__) && !defined(__LIBCOMO__)
+ #define BOOST_CODECVT_DO_LENGTH_CONST const
+#else
+ #define BOOST_CODECVT_DO_LENGTH_CONST
+#endif
+
+// maximum lenght of a multibyte string
+#define MB_LENGTH_MAX 8
+
+BOOST_UTF8_BEGIN_NAMESPACE
+
+struct BOOST_UTF8_DECL utf8_codecvt_facet :
+ public std::codecvt<wchar_t, char, std::mbstate_t>
+{
+public:
+ explicit utf8_codecvt_facet(std::size_t no_locale_manage=0)
+ : std::codecvt<wchar_t, char, std::mbstate_t>(no_locale_manage)
+ {}
+protected:
+ virtual std::codecvt_base::result do_in(
+ std::mbstate_t& state,
+ const char * from,
+ const char * from_end,
+ const char * & from_next,
+ wchar_t * to,
+ wchar_t * to_end,
+ wchar_t*& to_next
+ ) const;
+
+ virtual std::codecvt_base::result do_out(
+ std::mbstate_t & state, const wchar_t * from,
+ const wchar_t * from_end, const wchar_t* & from_next,
+ char * to, char * to_end, char * & to_next
+ ) const;
+
+ bool invalid_continuing_octet(unsigned char octet_1) const {
+ return (octet_1 < 0x80|| 0xbf< octet_1);
+ }
+
+ bool invalid_leading_octet(unsigned char octet_1) const {
+ return (0x7f < octet_1 && octet_1 < 0xc0) ||
+ (octet_1 > 0xfd);
+ }
+
+ // continuing octets = octets except for the leading octet
+ static unsigned int get_cont_octet_count(unsigned char lead_octet) {
+ return get_octet_count(lead_octet) - 1;
+ }
+
+ static unsigned int get_octet_count(unsigned char lead_octet);
+
+ // How many "continuing octets" will be needed for this word
+ // == total octets - 1.
+ int get_cont_octet_out_count(wchar_t word) const ;
+
+ virtual bool do_always_noconv() const throw() { return false; }
+
+ // UTF-8 isn't really stateful since we rewind on partial conversions
+ virtual std::codecvt_base::result do_unshift(
+ std::mbstate_t&,
+ char * from,
+ char * /*to*/,
+ char * & next
+ ) const
+ {
+ next = from;
+ return ok;
+ }
+
+ virtual int do_encoding() const throw() {
+ const int variable_byte_external_encoding=0;
+ return variable_byte_external_encoding;
+ }
+
+ // How many char objects can I process to get <= max_limit
+ // wchar_t objects?
+ virtual int do_length(
+ BOOST_CODECVT_DO_LENGTH_CONST std::mbstate_t &,
+ const char * from,
+ const char * from_end,
+ std::size_t max_limit
+#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
+ ) const throw();
+#else
+ ) const;
+#endif
+
+ // Largest possible value do_length(state,from,from_end,1) could return.
+ virtual int do_max_length() const throw () {
+ return 6; // largest UTF-8 encoding of a UCS-4 character
+ }
+};
+
+BOOST_UTF8_END_NAMESPACE
+
+#endif // BOOST_UTF8_CODECVT_FACET_HPP
diff --git a/3rdParty/Boost/boost/detail/workaround.hpp b/3rdParty/Boost/boost/detail/workaround.hpp
new file mode 100644
index 0000000..b6b6412
--- /dev/null
+++ b/3rdParty/Boost/boost/detail/workaround.hpp
@@ -0,0 +1,262 @@
+// Copyright David Abrahams 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)
+#ifndef WORKAROUND_DWA2002126_HPP
+# define WORKAROUND_DWA2002126_HPP
+
+// Compiler/library version workaround macro
+//
+// Usage:
+//
+// #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// // workaround for eVC4 and VC6
+// ... // workaround code here
+// #endif
+//
+// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the
+// first argument must be undefined or expand to a numeric
+// value. The above expands to:
+//
+// (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300
+//
+// When used for workarounds that apply to the latest known version
+// and all earlier versions of a compiler, the following convention
+// should be observed:
+//
+// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301))
+//
+// The version number in this case corresponds to the last version in
+// which the workaround was known to have been required. When
+// BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro
+// BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates
+// the workaround for any version of the compiler. When
+// BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or
+// error will be issued if the compiler version exceeds the argument
+// to BOOST_TESTED_AT(). This can be used to locate workarounds which
+// may be obsoleted by newer versions.
+
+# ifndef BOOST_STRICT_CONFIG
+
+#include <boost/config.hpp>
+
+#ifndef __BORLANDC__
+#define __BORLANDC___WORKAROUND_GUARD 1
+#else
+#define __BORLANDC___WORKAROUND_GUARD 0
+#endif
+#ifndef __CODEGEARC__
+#define __CODEGEARC___WORKAROUND_GUARD 1
+#else
+#define __CODEGEARC___WORKAROUND_GUARD 0
+#endif
+#ifndef _MSC_VER
+#define _MSC_VER_WORKAROUND_GUARD 1
+#else
+#define _MSC_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef _MSC_FULL_VER
+#define _MSC_FULL_VER_WORKAROUND_GUARD 1
+#else
+#define _MSC_FULL_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_MSVC
+#define BOOST_MSVC_WORKAROUND_GUARD 1
+#else
+#define BOOST_MSVC_WORKAROUND_GUARD 0
+#endif
+#ifndef __GNUC__
+#define __GNUC___WORKAROUND_GUARD 1
+#else
+#define __GNUC___WORKAROUND_GUARD 0
+#endif
+#ifndef __GNUC_MINOR__
+#define __GNUC_MINOR___WORKAROUND_GUARD 1
+#else
+#define __GNUC_MINOR___WORKAROUND_GUARD 0
+#endif
+#ifndef __GNUC_PATCHLEVEL__
+#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1
+#else
+#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0
+#endif
+#ifndef __IBMCPP__
+#define __IBMCPP___WORKAROUND_GUARD 1
+#else
+#define __IBMCPP___WORKAROUND_GUARD 0
+#endif
+#ifndef __SUNPRO_CC
+#define __SUNPRO_CC_WORKAROUND_GUARD 1
+#else
+#define __SUNPRO_CC_WORKAROUND_GUARD 0
+#endif
+#ifndef __DECCXX_VER
+#define __DECCXX_VER_WORKAROUND_GUARD 1
+#else
+#define __DECCXX_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef __MWERKS__
+#define __MWERKS___WORKAROUND_GUARD 1
+#else
+#define __MWERKS___WORKAROUND_GUARD 0
+#endif
+#ifndef __EDG__
+#define __EDG___WORKAROUND_GUARD 1
+#else
+#define __EDG___WORKAROUND_GUARD 0
+#endif
+#ifndef __EDG_VERSION__
+#define __EDG_VERSION___WORKAROUND_GUARD 1
+#else
+#define __EDG_VERSION___WORKAROUND_GUARD 0
+#endif
+#ifndef __HP_aCC
+#define __HP_aCC_WORKAROUND_GUARD 1
+#else
+#define __HP_aCC_WORKAROUND_GUARD 0
+#endif
+#ifndef __hpxstd98
+#define __hpxstd98_WORKAROUND_GUARD 1
+#else
+#define __hpxstd98_WORKAROUND_GUARD 0
+#endif
+#ifndef _CRAYC
+#define _CRAYC_WORKAROUND_GUARD 1
+#else
+#define _CRAYC_WORKAROUND_GUARD 0
+#endif
+#ifndef __DMC__
+#define __DMC___WORKAROUND_GUARD 1
+#else
+#define __DMC___WORKAROUND_GUARD 0
+#endif
+#ifndef MPW_CPLUS
+#define MPW_CPLUS_WORKAROUND_GUARD 1
+#else
+#define MPW_CPLUS_WORKAROUND_GUARD 0
+#endif
+#ifndef __COMO__
+#define __COMO___WORKAROUND_GUARD 1
+#else
+#define __COMO___WORKAROUND_GUARD 0
+#endif
+#ifndef __COMO_VERSION__
+#define __COMO_VERSION___WORKAROUND_GUARD 1
+#else
+#define __COMO_VERSION___WORKAROUND_GUARD 0
+#endif
+#ifndef __INTEL_COMPILER
+#define __INTEL_COMPILER_WORKAROUND_GUARD 1
+#else
+#define __INTEL_COMPILER_WORKAROUND_GUARD 0
+#endif
+#ifndef __ICL
+#define __ICL_WORKAROUND_GUARD 1
+#else
+#define __ICL_WORKAROUND_GUARD 0
+#endif
+#ifndef _COMPILER_VERSION
+#define _COMPILER_VERSION_WORKAROUND_GUARD 1
+#else
+#define _COMPILER_VERSION_WORKAROUND_GUARD 0
+#endif
+
+#ifndef _RWSTD_VER
+#define _RWSTD_VER_WORKAROUND_GUARD 1
+#else
+#define _RWSTD_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_RWSTD_VER
+#define BOOST_RWSTD_VER_WORKAROUND_GUARD 1
+#else
+#define BOOST_RWSTD_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef __GLIBCPP__
+#define __GLIBCPP___WORKAROUND_GUARD 1
+#else
+#define __GLIBCPP___WORKAROUND_GUARD 0
+#endif
+#ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
+#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1
+#else
+#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0
+#endif
+#ifndef __SGI_STL_PORT
+#define __SGI_STL_PORT_WORKAROUND_GUARD 1
+#else
+#define __SGI_STL_PORT_WORKAROUND_GUARD 0
+#endif
+#ifndef _STLPORT_VERSION
+#define _STLPORT_VERSION_WORKAROUND_GUARD 1
+#else
+#define _STLPORT_VERSION_WORKAROUND_GUARD 0
+#endif
+#ifndef __LIBCOMO_VERSION__
+#define __LIBCOMO_VERSION___WORKAROUND_GUARD 1
+#else
+#define __LIBCOMO_VERSION___WORKAROUND_GUARD 0
+#endif
+#ifndef _CPPLIB_VER
+#define _CPPLIB_VER_WORKAROUND_GUARD 1
+#else
+#define _CPPLIB_VER_WORKAROUND_GUARD 0
+#endif
+
+#ifndef BOOST_INTEL_CXX_VERSION
+#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1
+#else
+#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_INTEL_WIN
+#define BOOST_INTEL_WIN_WORKAROUND_GUARD 1
+#else
+#define BOOST_INTEL_WIN_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_DINKUMWARE_STDLIB
+#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1
+#else
+#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_INTEL
+#define BOOST_INTEL_WORKAROUND_GUARD 1
+#else
+#define BOOST_INTEL_WORKAROUND_GUARD 0
+#endif
+// Always define to zero, if it's used it'll be defined my MPL:
+#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
+
+# define BOOST_WORKAROUND(symbol, test) \
+ ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \
+ (symbol != 0) && (1 % (( (symbol test) ) + 1)))
+// ^ ^ ^ ^
+// The extra level of parenthesis nesting above, along with the
+// BOOST_OPEN_PAREN indirection below, is required to satisfy the
+// broken preprocessor in MWCW 8.3 and earlier.
+//
+// The basic mechanism works as follows:
+// (symbol test) + 1 => if (symbol test) then 2 else 1
+// 1 % ((symbol test) + 1) => if (symbol test) then 1 else 0
+//
+// The complication with % is for cooperation with BOOST_TESTED_AT().
+// When "test" is BOOST_TESTED_AT(x) and
+// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined,
+//
+// symbol test => if (symbol <= x) then 1 else -1
+// (symbol test) + 1 => if (symbol <= x) then 2 else 0
+// 1 % ((symbol test) + 1) => if (symbol <= x) then 1 else divide-by-zero
+//
+
+# ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS
+# define BOOST_OPEN_PAREN (
+# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1
+# else
+# define BOOST_TESTED_AT(value) != ((value)-(value))
+# endif
+
+# else
+
+# define BOOST_WORKAROUND(symbol, test) 0
+
+# endif
+
+#endif // WORKAROUND_DWA2002126_HPP
diff --git a/3rdParty/Boost/boost/enable_shared_from_this.hpp b/3rdParty/Boost/boost/enable_shared_from_this.hpp
new file mode 100644
index 0000000..b1bb63d
--- /dev/null
+++ b/3rdParty/Boost/boost/enable_shared_from_this.hpp
@@ -0,0 +1,18 @@
+#ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
+#define BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
+
+//
+// enable_shared_from_this.hpp
+//
+// Copyright (c) 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// http://www.boost.org/libs/smart_ptr/enable_shared_from_this.html
+//
+
+#include <boost/smart_ptr/enable_shared_from_this.hpp>
+
+#endif // #ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/exception/exception.hpp b/3rdParty/Boost/boost/exception/exception.hpp
new file mode 100644
index 0000000..6df93ac
--- /dev/null
+++ b/3rdParty/Boost/boost/exception/exception.hpp
@@ -0,0 +1,396 @@
+//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
+#define UUID_274DA366004E11DCB1DDFE2E56D89593
+
+namespace
+boost
+ {
+ namespace
+ exception_detail
+ {
+ template <class T>
+ class
+ refcount_ptr
+ {
+ public:
+
+ refcount_ptr():
+ px_(0)
+ {
+ }
+
+ ~refcount_ptr()
+ {
+ release();
+ }
+
+ refcount_ptr( refcount_ptr const & x ):
+ px_(x.px_)
+ {
+ add_ref();
+ }
+
+ refcount_ptr &
+ operator=( refcount_ptr const & x )
+ {
+ adopt(x.px_);
+ return *this;
+ }
+
+ void
+ adopt( T * px )
+ {
+ release();
+ px_=px;
+ add_ref();
+ }
+
+ T *
+ get() const
+ {
+ return px_;
+ }
+
+ private:
+
+ T * px_;
+
+ void
+ add_ref()
+ {
+ if( px_ )
+ px_->add_ref();
+ }
+
+ void
+ release()
+ {
+ if( px_ )
+ px_->release();
+ }
+ };
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ template <class Tag,class T>
+ class error_info;
+
+ typedef error_info<struct tag_throw_function,char const *> throw_function;
+ typedef error_info<struct tag_throw_file,char const *> throw_file;
+ typedef error_info<struct tag_throw_line,int> throw_line;
+
+ template <>
+ class
+ error_info<tag_throw_function,char const *>
+ {
+ public:
+ typedef char const * value_type;
+ value_type v_;
+ explicit
+ error_info( value_type v ):
+ v_(v)
+ {
+ }
+ };
+
+ template <>
+ class
+ error_info<tag_throw_file,char const *>
+ {
+ public:
+ typedef char const * value_type;
+ value_type v_;
+ explicit
+ error_info( value_type v ):
+ v_(v)
+ {
+ }
+ };
+
+ template <>
+ class
+ error_info<tag_throw_line,int>
+ {
+ public:
+ typedef int value_type;
+ value_type v_;
+ explicit
+ error_info( value_type v ):
+ v_(v)
+ {
+ }
+ };
+
+ template <class E,class Tag,class T>
+ E const & operator<<( E const &, error_info<Tag,T> const & );
+
+ class exception;
+
+ template <class>
+ class shared_ptr;
+
+ namespace
+ exception_detail
+ {
+ class error_info_base;
+ struct type_info_;
+
+ struct
+ error_info_container
+ {
+ virtual char const * diagnostic_information() const = 0;
+ virtual shared_ptr<error_info_base const> get( type_info_ const & ) const = 0;
+ virtual void set( shared_ptr<error_info_base const> const &, type_info_ const & ) = 0;
+ virtual void add_ref() const = 0;
+ virtual void release() const = 0;
+
+ protected:
+
+ virtual
+ ~error_info_container() throw()
+ {
+ }
+ };
+
+ template <class>
+ struct get_info;
+
+ template <>
+ struct get_info<throw_function>;
+
+ template <>
+ struct get_info<throw_file>;
+
+ template <>
+ struct get_info<throw_line>;
+
+ char const * get_diagnostic_information( exception const & );
+ }
+
+ class
+ exception
+ {
+ protected:
+
+ exception():
+ throw_function_(0),
+ throw_file_(0),
+ throw_line_(-1)
+ {
+ }
+
+#ifdef __HP_aCC
+ //On HP aCC, this protected copy constructor prevents throwing boost::exception.
+ //On all other platforms, the same effect is achieved by the pure virtual destructor.
+ exception( exception const & x ) throw():
+ data_(x.data_),
+ throw_function_(x.throw_function_),
+ throw_file_(x.throw_file_),
+ throw_line_(x.throw_line_)
+ {
+ }
+#endif
+
+ virtual ~exception() throw()
+#ifndef __HP_aCC
+ = 0 //Workaround for HP aCC, =0 incorrectly leads to link errors.
+#endif
+ ;
+
+ private:
+
+ template <class E>
+ friend
+ E const &
+ operator<<( E const & x, throw_function const & y )
+ {
+ x.throw_function_=y.v_;
+ return x;
+ }
+
+ template <class E>
+ friend
+ E const &
+ operator<<( E const & x, throw_file const & y )
+ {
+ x.throw_file_=y.v_;
+ return x;
+ }
+
+ template <class E>
+ friend
+ E const &
+ operator<<( E const & x, throw_line const & y )
+ {
+ x.throw_line_=y.v_;
+ return x;
+ }
+
+ friend char const * exception_detail::get_diagnostic_information( exception const & );
+
+ template <class E,class Tag,class T>
+ friend E const & operator<<( E const &, error_info<Tag,T> const & );
+
+ template <class>
+ friend struct exception_detail::get_info;
+ friend struct exception_detail::get_info<throw_function>;
+ friend struct exception_detail::get_info<throw_file>;
+ friend struct exception_detail::get_info<throw_line>;
+
+ mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
+ mutable char const * throw_function_;
+ mutable char const * throw_file_;
+ mutable int throw_line_;
+ };
+
+ inline
+ exception::
+ ~exception() throw()
+ {
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ namespace
+ exception_detail
+ {
+ template <class T>
+ struct
+ error_info_injector:
+ public T,
+ public exception
+ {
+ explicit
+ error_info_injector( T const & x ):
+ T(x)
+ {
+ }
+
+ ~error_info_injector() throw()
+ {
+ }
+ };
+
+ struct large_size { char c[256]; };
+ large_size dispatch( exception * );
+
+ struct small_size { };
+ small_size dispatch( void * );
+
+ template <class,int>
+ struct enable_error_info_helper;
+
+ template <class T>
+ struct
+ enable_error_info_helper<T,sizeof(large_size)>
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct
+ enable_error_info_helper<T,sizeof(small_size)>
+ {
+ typedef error_info_injector<T> type;
+ };
+
+ template <class T>
+ struct
+ enable_error_info_return_type
+ {
+ typedef typename enable_error_info_helper<T,sizeof(dispatch((T*)0))>::type type;
+ };
+ }
+
+ template <class T>
+ inline
+ typename
+ exception_detail::enable_error_info_return_type<T>::type
+ enable_error_info( T const & x )
+ {
+ typedef typename exception_detail::enable_error_info_return_type<T>::type rt;
+ return rt(x);
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ namespace
+ exception_detail
+ {
+ class
+ clone_base
+ {
+ public:
+
+ virtual clone_base const * clone() const = 0;
+ virtual void rethrow() const = 0;
+
+ virtual
+ ~clone_base() throw()
+ {
+ }
+ };
+
+ inline
+ void
+ copy_boost_exception( exception * a, exception const * b )
+ {
+ *a = *b;
+ }
+
+ inline
+ void
+ copy_boost_exception( void *, void const * )
+ {
+ }
+
+ template <class T>
+ class
+ clone_impl:
+ public T,
+ public clone_base
+ {
+ public:
+
+ explicit
+ clone_impl( T const & x ):
+ T(x)
+ {
+ copy_boost_exception(this,&x);
+ }
+
+ ~clone_impl() throw()
+ {
+ }
+
+ private:
+
+ clone_base const *
+ clone() const
+ {
+ return new clone_impl(*this);
+ }
+
+ void
+ rethrow() const
+ {
+ throw*this;
+ }
+ };
+ }
+
+ template <class T>
+ inline
+ exception_detail::clone_impl<T>
+ enable_current_exception( T const & x )
+ {
+ return exception_detail::clone_impl<T>(x);
+ }
+ }
+
+#endif
diff --git a/3rdParty/Boost/boost/filesystem.hpp b/3rdParty/Boost/boost/filesystem.hpp
new file mode 100644
index 0000000..aa65b21
--- /dev/null
+++ b/3rdParty/Boost/boost/filesystem.hpp
@@ -0,0 +1,20 @@
+// boost/filesystem/filesystem.hpp -----------------------------------------//
+
+// Copyright Beman Dawes 2005
+
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See library home page at http://www.boost.org/libs/filesystem
+
+//----------------------------------------------------------------------------//
+
+#ifndef BOOST_FILESYSTEM_FILESYSTEM_HPP
+#define BOOST_FILESYSTEM_FILESYSTEM_HPP
+
+#include <boost/filesystem/operations.hpp> // includes path.hpp
+#include <boost/filesystem/convenience.hpp>
+
+#endif
+
diff --git a/3rdParty/Boost/boost/filesystem/config.hpp b/3rdParty/Boost/boost/filesystem/config.hpp
new file mode 100644
index 0000000..29a0494
--- /dev/null
+++ b/3rdParty/Boost/boost/filesystem/config.hpp
@@ -0,0 +1,113 @@
+// boost/filesystem/config.hpp ---------------------------------------------//
+
+// Copyright Beman Dawes 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 library home page at http://www.boost.org/libs/filesystem
+
+//----------------------------------------------------------------------------//
+
+#ifndef BOOST_FILESYSTEM_CONFIG_HPP
+#define BOOST_FILESYSTEM_CONFIG_HPP
+
+#define BOOST_FILESYSTEM_I18N // aid users wishing to compile several versions
+
+// ability to change namespace aids path_table.cpp ------------------------//
+#ifndef BOOST_FILESYSTEM_NAMESPACE
+# define BOOST_FILESYSTEM_NAMESPACE filesystem
+#endif
+
+// This header implements separate compilation features as described in
+// http://www.boost.org/more/separate_compilation.html
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+// determine platform ------------------------------------------------------//
+
+// BOOST_CYGWIN_PATH implies BOOST_WINDOWS_PATH and BOOST_POSIX_API
+
+# if defined(BOOST_CYGWIN_PATH)
+# if defined(BOOST_POSIX_PATH)
+# error BOOST_POSIX_PATH is invalid when BOOST_CYGWIN_PATH is defined
+# endif
+# if defined(BOOST_WINDOWS_API)
+# error BOOST_WINDOWS_API is invalid when BOOST_CYGWIN_PATH is defined
+# endif
+# define BOOST_WINDOWS_PATH
+# define BOOST_POSIX_API
+# endif
+
+// BOOST_POSIX_API or BOOST_WINDOWS_API specify which API to use
+
+# if defined( BOOST_WINDOWS_API ) && defined( BOOST_POSIX_API )
+# error both BOOST_WINDOWS_API and BOOST_POSIX_API are defined
+# elif !defined( BOOST_WINDOWS_API ) && !defined( BOOST_POSIX_API )
+# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
+# define BOOST_WINDOWS_API
+# else
+# define BOOST_POSIX_API
+# endif
+# endif
+
+// BOOST_WINDOWS_PATH enables Windows path syntax recognition
+
+# if !defined(BOOST_POSIX_PATH) && (defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__))
+# define BOOST_WINDOWS_PATH
+# endif
+
+// 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)
+# define BOOST_FILESYSTEM_NARROW_ONLY
+# endif
+
+// enable dynamic linking on Windows ---------------------------------------//
+
+# if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)) && BOOST_WORKAROUND(__BORLANDC__, <0x610) && defined(__WIN32__)
+# error Dynamic linking Boost.Filesystem does not work for Borland; use static linking instead
+# endif
+
+#ifdef BOOST_HAS_DECLSPEC // defined in config system
+// we need to import/export our code only if the user has specifically
+// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
+// libraries to be dynamically linked, or BOOST_FILESYSTEM_DYN_LINK
+// if they want just this one to be dynamically liked:
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)
+// export if this is our own source, otherwise import:
+#ifdef BOOST_FILESYSTEM_SOURCE
+# define BOOST_FILESYSTEM_DECL __declspec(dllexport)
+#else
+# define BOOST_FILESYSTEM_DECL __declspec(dllimport)
+#endif // BOOST_FILESYSTEM_SOURCE
+#endif // DYN_LINK
+#endif // BOOST_HAS_DECLSPEC
+//
+// if BOOST_FILESYSTEM_DECL isn't defined yet define it now:
+#ifndef BOOST_FILESYSTEM_DECL
+#define BOOST_FILESYSTEM_DECL
+#endif
+
+// enable automatic library variant selection ------------------------------//
+
+#if !defined(BOOST_FILESYSTEM_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_FILESYSTEM_NO_LIB)
+//
+// Set the name of our library, this will get undef'ed by auto_link.hpp
+// once it's done with it:
+//
+#define BOOST_LIB_NAME boost_filesystem
+//
+// If we're importing code from a dll, then tell auto_link.hpp about it:
+//
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)
+# define BOOST_DYN_LINK
+#endif
+//
+// And include the header that does the work:
+//
+#include <boost/config/auto_link.hpp>
+#endif // auto-linking disabled
+
+#endif // BOOST_FILESYSTEM_CONFIG_HPP
diff --git a/3rdParty/Boost/boost/filesystem/convenience.hpp b/3rdParty/Boost/boost/filesystem/convenience.hpp
new file mode 100644
index 0000000..d0e6c54
--- /dev/null
+++ b/3rdParty/Boost/boost/filesystem/convenience.hpp
@@ -0,0 +1,306 @@
+// boost/filesystem/convenience.hpp ----------------------------------------//
+
+// Copyright Beman Dawes, 2002-2005
+// Copyright Vladimir Prus, 2002
+// 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/filesystem
+
+//----------------------------------------------------------------------------//
+
+#ifndef BOOST_FILESYSTEM_CONVENIENCE_HPP
+#define BOOST_FILESYSTEM_CONVENIENCE_HPP
+
+#include <boost/filesystem/operations.hpp>
+#include <boost/system/error_code.hpp>
+#include <vector>
+#include <stack>
+
+#include <boost/config/abi_prefix.hpp> // must be the last #include
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+# define BOOST_FS_FUNC(BOOST_FS_TYPE) \
+ template<class Path> typename boost::enable_if<is_basic_path<Path>, \
+ BOOST_FS_TYPE>::type
+# define BOOST_FS_FUNC_STRING BOOST_FS_FUNC(typename Path::string_type)
+# define BOOST_FS_TYPENAME typename
+# else
+# define BOOST_FS_FUNC(BOOST_FS_TYPE) inline BOOST_FS_TYPE
+ typedef boost::filesystem::path Path;
+# define BOOST_FS_FUNC_STRING inline std::string
+# define BOOST_FS_TYPENAME
+# endif
+
+namespace boost
+{
+ namespace filesystem
+ {
+
+ BOOST_FS_FUNC(bool) create_directories(const Path& ph)
+ {
+ if (ph.empty() || exists(ph))
+ {
+ if ( !ph.empty() && !is_directory(ph) )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::create_directories", ph,
+ make_error_code( boost::system::posix::file_exists ) ) );
+ return false;
+ }
+
+ // First create branch, by calling ourself recursively
+ create_directories(ph.parent_path());
+ // Now that parent's path exists, create the directory
+ create_directory(ph);
+ return true;
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+
+ BOOST_FS_FUNC_STRING extension(const Path& ph)
+ {
+ typedef BOOST_FS_TYPENAME Path::string_type string_type;
+ string_type filename = ph.filename();
+
+ BOOST_FS_TYPENAME string_type::size_type n = filename.rfind('.');
+ if (n != string_type::npos)
+ return filename.substr(n);
+ else
+ return string_type();
+ }
+
+ BOOST_FS_FUNC_STRING basename(const Path& ph)
+ {
+ typedef BOOST_FS_TYPENAME Path::string_type string_type;
+ string_type filename = ph.filename();
+ BOOST_FS_TYPENAME string_type::size_type n = filename.rfind('.');
+ return filename.substr(0, n);
+ }
+
+
+ BOOST_FS_FUNC(Path) change_extension( const Path & ph,
+ const BOOST_FS_TYPENAME Path::string_type & new_extension )
+ { return ph.parent_path() / (basename(ph) + new_extension); }
+
+# endif
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ // "do-the-right-thing" overloads ---------------------------------------//
+
+ inline bool create_directories(const path& ph)
+ { return create_directories<path>(ph); }
+ inline bool create_directories(const wpath& ph)
+ { return create_directories<wpath>(ph); }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ inline std::string extension(const path& ph)
+ { return extension<path>(ph); }
+ inline std::wstring extension(const wpath& ph)
+ { return extension<wpath>(ph); }
+
+ inline std::string basename(const path& ph)
+ { return basename<path>( ph ); }
+ inline std::wstring basename(const wpath& ph)
+ { return basename<wpath>( ph ); }
+
+ inline path change_extension( const path & ph, const std::string& new_ex )
+ { return change_extension<path>( ph, new_ex ); }
+ inline wpath change_extension( const wpath & ph, const std::wstring& new_ex )
+ { return change_extension<wpath>( ph, new_ex ); }
+# endif
+
+# endif
+
+
+ // basic_recursive_directory_iterator helpers --------------------------//
+
+ namespace detail
+ {
+ template< class Path >
+ struct recur_dir_itr_imp
+ {
+ typedef basic_directory_iterator< Path > element_type;
+ std::stack< element_type, std::vector< element_type > > m_stack;
+ int m_level;
+ bool m_no_push;
+ bool m_no_throw;
+
+ recur_dir_itr_imp() : m_level(0), m_no_push(false), m_no_throw(false) {}
+ };
+
+ } // namespace detail
+
+ // basic_recursive_directory_iterator ----------------------------------//
+
+ template< class Path >
+ class basic_recursive_directory_iterator
+ : public boost::iterator_facade<
+ basic_recursive_directory_iterator<Path>,
+ basic_directory_entry<Path>,
+ boost::single_pass_traversal_tag >
+ {
+ public:
+ typedef Path path_type;
+
+ basic_recursive_directory_iterator(){} // creates the "end" iterator
+
+ explicit basic_recursive_directory_iterator( const Path & dir_path );
+ basic_recursive_directory_iterator( const Path & dir_path,
+ system::error_code & ec );
+
+ int level() const { return m_imp->m_level; }
+
+ void pop();
+ void no_push()
+ {
+ BOOST_ASSERT( m_imp.get() && "attempt to no_push() on end iterator" );
+ m_imp->m_no_push = true;
+ }
+
+ file_status status() const
+ {
+ BOOST_ASSERT( m_imp.get()
+ && "attempt to call status() on end recursive_iterator" );
+ return m_imp->m_stack.top()->status();
+ }
+
+ file_status symlink_status() const
+ {
+ BOOST_ASSERT( m_imp.get()
+ && "attempt to call symlink_status() on end recursive_iterator" );
+ return m_imp->m_stack.top()->symlink_status();
+ }
+
+ private:
+
+ // shared_ptr provides shallow-copy semantics required for InputIterators.
+ // m_imp.get()==0 indicates the end iterator.
+ boost::shared_ptr< detail::recur_dir_itr_imp< Path > > m_imp;
+
+ friend class boost::iterator_core_access;
+
+ typename boost::iterator_facade<
+ basic_recursive_directory_iterator<Path>,
+ basic_directory_entry<Path>,
+ boost::single_pass_traversal_tag >::reference
+ dereference() const
+ {
+ BOOST_ASSERT( m_imp.get() && "attempt to dereference end iterator" );
+ return *m_imp->m_stack.top();
+ }
+
+ void increment();
+
+ bool equal( const basic_recursive_directory_iterator & rhs ) const
+ { return m_imp == rhs.m_imp; }
+
+ };
+
+ typedef basic_recursive_directory_iterator<path> recursive_directory_iterator;
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ typedef basic_recursive_directory_iterator<wpath> wrecursive_directory_iterator;
+# endif
+
+ // basic_recursive_directory_iterator implementation -------------------//
+
+ // constructors
+ template<class Path>
+ basic_recursive_directory_iterator<Path>::
+ basic_recursive_directory_iterator( const Path & dir_path )
+ : m_imp( new detail::recur_dir_itr_imp<Path> )
+ {
+ m_imp->m_stack.push( basic_directory_iterator<Path>( dir_path ) );
+ if ( m_imp->m_stack.top () == basic_directory_iterator<Path>() )
+ { m_imp.reset (); }
+ }
+
+ template<class Path>
+ basic_recursive_directory_iterator<Path>::
+ basic_recursive_directory_iterator( const Path & dir_path,
+ system::error_code & ec )
+ : m_imp( new detail::recur_dir_itr_imp<Path> )
+ {
+ m_imp->m_no_throw = true;
+ m_imp->m_stack.push( basic_directory_iterator<Path>( dir_path, ec ) );
+ if ( m_imp->m_stack.top () == basic_directory_iterator<Path>() )
+ { m_imp.reset (); }
+ }
+
+ // increment
+ template<class Path>
+ void basic_recursive_directory_iterator<Path>::increment()
+ {
+ BOOST_ASSERT( m_imp.get() && "increment on end iterator" );
+
+ static const basic_directory_iterator<Path> end_itr;
+
+ if ( m_imp->m_no_push )
+ { m_imp->m_no_push = false; }
+ else if ( is_directory( m_imp->m_stack.top()->status() ) )
+ {
+ system::error_code ec;
+#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+ if( m_imp->m_no_throw ) {
+ m_imp->m_stack.push(
+ basic_directory_iterator<Path>( *m_imp->m_stack.top(), ec )
+ );
+ }
+ else {
+ m_imp->m_stack.push(
+ basic_directory_iterator<Path>( *m_imp->m_stack.top() )
+ );
+ }
+#else
+ m_imp->m_stack.push(
+ m_imp->m_no_throw
+ ? basic_directory_iterator<Path>( *m_imp->m_stack.top(), ec )
+ : basic_directory_iterator<Path>( *m_imp->m_stack.top() ) );
+#endif
+ if ( m_imp->m_stack.top() != end_itr )
+ {
+ ++m_imp->m_level;
+ return;
+ }
+ m_imp->m_stack.pop();
+ }
+
+ while ( !m_imp->m_stack.empty()
+ && ++m_imp->m_stack.top() == end_itr )
+ {
+ m_imp->m_stack.pop();
+ --m_imp->m_level;
+ }
+
+ if ( m_imp->m_stack.empty() ) m_imp.reset(); // done, so make end iterator
+ }
+
+ // pop
+ template<class Path>
+ void basic_recursive_directory_iterator<Path>::pop()
+ {
+ BOOST_ASSERT( m_imp.get() && "pop on end iterator" );
+ BOOST_ASSERT( m_imp->m_level > 0 && "pop with level < 1" );
+
+ static const basic_directory_iterator<Path> end_itr;
+
+ do
+ {
+ m_imp->m_stack.pop();
+ --m_imp->m_level;
+ }
+ while ( !m_imp->m_stack.empty()
+ && ++m_imp->m_stack.top() == end_itr );
+
+ if ( m_imp->m_stack.empty() ) m_imp.reset(); // done, so make end iterator
+ }
+
+ } // namespace filesystem
+} // namespace boost
+
+#undef BOOST_FS_FUNC_STRING
+#undef BOOST_FS_FUNC
+
+#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
+#endif // BOOST_FILESYSTEM_CONVENIENCE_HPP
diff --git a/3rdParty/Boost/boost/filesystem/fstream.hpp b/3rdParty/Boost/boost/filesystem/fstream.hpp
new file mode 100644
index 0000000..bdba8f0
--- /dev/null
+++ b/3rdParty/Boost/boost/filesystem/fstream.hpp
@@ -0,0 +1,584 @@
+// boost/filesystem/fstream.hpp --------------------------------------------//
+
+// Copyright Beman Dawes 2002.
+// 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/filesystem
+
+//----------------------------------------------------------------------------//
+
+#ifndef BOOST_FILESYSTEM_FSTREAM_HPP
+#define BOOST_FILESYSTEM_FSTREAM_HPP
+
+#include <boost/filesystem/operations.hpp> // for 8.3 hack (see below)
+#include <boost/utility/enable_if.hpp>
+#include <boost/detail/workaround.hpp>
+
+#include <iosfwd>
+#include <fstream>
+
+#include <boost/config/abi_prefix.hpp> // must be the last #include
+
+// NOTE: fstream.hpp for Boost 1.32.0 and earlier supplied workarounds for
+// various compiler problems. They have been removed to ease development of the
+// basic i18n functionality. Once the new interface is stable, the workarounds
+// will be reinstated for any compilers that otherwise can support the rest of
+// the library after internationalization.
+
+namespace boost
+{
+ namespace filesystem
+ {
+ namespace detail
+ {
+# if defined(BOOST_WINDOWS_API) && !defined(BOOST_FILESYSTEM_NARROW_ONLY)
+# if !defined(BOOST_DINKUMWARE_STDLIB) || BOOST_DINKUMWARE_STDLIB < 405
+ // The 8.3 hack:
+ // C++98 does not supply a wchar_t open, so try to get an equivalent
+ // narrow char name based on the short, so-called 8.3, name.
+ // Not needed for Dinkumware 405 and later as they do supply wchar_t open.
+ BOOST_FILESYSTEM_DECL bool create_file_api( const std::wstring & ph,
+ std::ios_base::openmode mode ); // true if succeeds
+ BOOST_FILESYSTEM_DECL std::string narrow_path_api(
+ const std::wstring & ph ); // return is empty if fails
+
+ inline std::string path_proxy( const std::wstring & file_ph,
+ std::ios_base::openmode mode )
+ // Return a non-existant path if cannot supply narrow short path.
+ // An empty path doesn't work because some Dinkumware versions
+ // assert the path is non-empty.
+ {
+ std::string narrow_ph;
+ bool created_file( false );
+ if ( !exists( file_ph )
+ && (mode & std::ios_base::out) != 0
+ && create_file_api( file_ph, mode ) )
+ {
+ created_file = true;
+ }
+ narrow_ph = narrow_path_api( file_ph );
+ if ( narrow_ph.empty() )
+ {
+ if ( created_file ) remove_api( file_ph );
+ narrow_ph = "\x01";
+ }
+ return narrow_ph;
+ }
+# else
+ // Dinkumware 405 and later does supply wchar_t functions
+ inline const std::wstring & path_proxy( const std::wstring & file_ph,
+ std::ios_base::openmode )
+ { return file_ph; }
+# endif
+# endif
+
+ inline const std::string & path_proxy( const std::string & file_ph,
+ std::ios_base::openmode )
+ { return file_ph; }
+
+ } // namespace detail
+
+ template < class charT, class traits = std::char_traits<charT> >
+ class basic_filebuf : public std::basic_filebuf<charT,traits>
+ {
+ private: // disallow copying
+ basic_filebuf( const basic_filebuf & );
+ const basic_filebuf & operator=( const basic_filebuf & );
+ public:
+ basic_filebuf() {}
+ virtual ~basic_filebuf() {}
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>,
+ basic_filebuf<charT,traits> *>::type
+ open( const Path & file_ph, std::ios_base::openmode mode );
+
+ basic_filebuf<charT,traits> *
+ open( const wpath & file_ph, std::ios_base::openmode mode );
+# endif
+
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ basic_filebuf<charT,traits> *
+ open( const path & file_ph, std::ios_base::openmode mode );
+# endif
+ };
+
+ template < class charT, class traits = std::char_traits<charT> >
+ class basic_ifstream : public std::basic_ifstream<charT,traits>
+ {
+ private: // disallow copying
+ basic_ifstream( const basic_ifstream & );
+ const basic_ifstream & operator=( const basic_ifstream & );
+ public:
+ basic_ifstream() {}
+
+ // use two signatures, rather than one signature with default second
+ // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ template<class Path>
+ explicit basic_ifstream( const Path & file_ph,
+ typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
+
+ template<class Path>
+ basic_ifstream( const Path & file_ph, std::ios_base::openmode mode,
+ typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
+
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ open( const Path & file_ph );
+
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ open( const Path & file_ph, std::ios_base::openmode mode );
+
+ explicit basic_ifstream( const wpath & file_ph );
+ basic_ifstream( const wpath & file_ph, std::ios_base::openmode mode );
+ void open( const wpath & file_ph );
+ void open( const wpath & file_ph, std::ios_base::openmode mode );
+# endif
+
+ explicit basic_ifstream( const path & file_ph );
+ basic_ifstream( const path & file_ph, std::ios_base::openmode mode );
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ void open( const path & file_ph );
+ void open( const path & file_ph, std::ios_base::openmode mode );
+# endif
+ virtual ~basic_ifstream() {}
+ };
+
+ template < class charT, class traits = std::char_traits<charT> >
+ class basic_ofstream : public std::basic_ofstream<charT,traits>
+ {
+ private: // disallow copying
+ basic_ofstream( const basic_ofstream & );
+ const basic_ofstream & operator=( const basic_ofstream & );
+ public:
+ basic_ofstream() {}
+
+ // use two signatures, rather than one signature with default second
+ // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ template<class Path>
+ explicit basic_ofstream( const Path & file_ph,
+ typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
+ explicit basic_ofstream( const wpath & file_ph );
+
+ template<class Path>
+ basic_ofstream( const Path & file_ph, std::ios_base::openmode mode,
+ typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
+ basic_ofstream( const wpath & file_ph, std::ios_base::openmode mode );
+
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ open( const Path & file_ph );
+ void open( const wpath & file_ph );
+
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ open( const Path & file_ph, std::ios_base::openmode mode );
+ void open( const wpath & file_ph, std::ios_base::openmode mode );
+
+# endif
+
+ explicit basic_ofstream( const path & file_ph );
+ basic_ofstream( const path & file_ph, std::ios_base::openmode mode );
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ void open( const path & file_ph );
+ void open( const path & file_ph, std::ios_base::openmode mode );
+# endif
+ virtual ~basic_ofstream() {}
+ };
+
+ template < class charT, class traits = std::char_traits<charT> >
+ class basic_fstream : public std::basic_fstream<charT,traits>
+ {
+ private: // disallow copying
+ basic_fstream( const basic_fstream & );
+ const basic_fstream & operator=( const basic_fstream & );
+ public:
+ basic_fstream() {}
+
+ // use two signatures, rather than one signature with default second
+ // argument, to workaround VC++ 7.1 bug (ID VSWhidbey 38416)
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ template<class Path>
+ explicit basic_fstream( const Path & file_ph,
+ typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
+ explicit basic_fstream( const wpath & file_ph );
+
+ template<class Path>
+ basic_fstream( const Path & file_ph, std::ios_base::openmode mode,
+ typename boost::enable_if<is_basic_path<Path> >::type* dummy = 0 );
+ basic_fstream( const wpath & file_ph, std::ios_base::openmode mode );
+
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ open( const Path & file_ph );
+ void open( const wpath & file_ph );
+
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ open( const Path & file_ph, std::ios_base::openmode mode );
+ void open( const wpath & file_ph, std::ios_base::openmode mode );
+
+# endif
+
+ explicit basic_fstream( const path & file_ph );
+ basic_fstream( const path & file_ph, std::ios_base::openmode mode );
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ void open( const path & file_ph );
+ void open( const path & file_ph, std::ios_base::openmode mode );
+# endif
+ virtual ~basic_fstream() {}
+
+ };
+
+ typedef basic_filebuf<char> filebuf;
+ typedef basic_ifstream<char> ifstream;
+ typedef basic_ofstream<char> ofstream;
+ typedef basic_fstream<char> fstream;
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ typedef basic_filebuf<wchar_t> wfilebuf;
+ typedef basic_ifstream<wchar_t> wifstream;
+ typedef basic_fstream<wchar_t> wfstream;
+ typedef basic_ofstream<wchar_t> wofstream;
+# endif
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+// basic_filebuf definitions -----------------------------------------------//
+
+ template <class charT, class traits>
+ template<class Path>
+ typename boost::enable_if<is_basic_path<Path>,
+ basic_filebuf<charT,traits> *>::type
+ basic_filebuf<charT,traits>::open( const Path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ return (std::basic_filebuf<charT,traits>::open( detail::path_proxy(
+ file_ph.external_file_string(), mode ).c_str(), mode )
+ == 0) ? 0 : this;
+ }
+
+ template <class charT, class traits>
+ basic_filebuf<charT,traits> *
+ basic_filebuf<charT, traits>::open( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ {
+ return this->BOOST_NESTED_TEMPLATE open<wpath>( file_ph, mode );
+ }
+
+// basic_ifstream definitions ----------------------------------------------//
+
+ template <class charT, class traits> template<class Path>
+ basic_ifstream<charT,traits>::basic_ifstream(const Path & file_ph,
+ typename boost::enable_if<is_basic_path<Path> >::type* )
+ : std::basic_ifstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in ).c_str(), std::ios_base::in ) {}
+
+ template <class charT, class traits>
+ basic_ifstream<charT,traits>::basic_ifstream( const wpath & file_ph )
+ : std::basic_ifstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in ).c_str(), std::ios_base::in ) {}
+
+ template <class charT, class traits> template<class Path>
+ basic_ifstream<charT,traits>::basic_ifstream( const Path & file_ph,
+ std::ios_base::openmode mode,
+ typename boost::enable_if<is_basic_path<Path> >::type* )
+ : std::basic_ifstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in ) {}
+
+ template <class charT, class traits>
+ basic_ifstream<charT,traits>::basic_ifstream( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ : std::basic_ifstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in ) {}
+
+ template <class charT, class traits> template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ basic_ifstream<charT,traits>::open( const Path & file_ph )
+ {
+ std::basic_ifstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in ).c_str(), std::ios_base::in );
+ }
+
+ template <class charT, class traits>
+ void basic_ifstream<charT,traits>::open( const wpath & file_ph )
+ {
+ std::basic_ifstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in ).c_str(), std::ios_base::in );
+ }
+
+ template <class charT, class traits> template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ basic_ifstream<charT,traits>::open( const Path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_ifstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in );
+ }
+
+ template <class charT, class traits>
+ void basic_ifstream<charT,traits>::open( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_ifstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in );
+ }
+
+// basic_ofstream definitions ----------------------------------------------//
+
+ template <class charT, class traits> template<class Path>
+ basic_ofstream<charT,traits>::basic_ofstream(const Path & file_ph,
+ typename boost::enable_if<is_basic_path<Path> >::type* )
+ : std::basic_ofstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::out ).c_str(), std::ios_base::out ) {}
+
+ template <class charT, class traits>
+ basic_ofstream<charT,traits>::basic_ofstream( const wpath & file_ph )
+ : std::basic_ofstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::out ).c_str(), std::ios_base::out ) {}
+
+ template <class charT, class traits> template<class Path>
+ basic_ofstream<charT,traits>::basic_ofstream( const Path & file_ph,
+ std::ios_base::openmode mode,
+ typename boost::enable_if<is_basic_path<Path> >::type* )
+ : std::basic_ofstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::out ) {}
+
+ template <class charT, class traits>
+ basic_ofstream<charT,traits>::basic_ofstream( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ : std::basic_ofstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::out ) {}
+
+ template <class charT, class traits> template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ basic_ofstream<charT,traits>::open( const Path & file_ph )
+ {
+ std::basic_ofstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::out ).c_str(), std::ios_base::out );
+ }
+
+ template <class charT, class traits>
+ void basic_ofstream<charT,traits>::open( const wpath & file_ph )
+ {
+ std::basic_ofstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::out ).c_str(), std::ios_base::out );
+ }
+
+ template <class charT, class traits> template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ basic_ofstream<charT,traits>::open( const Path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_ofstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::out );
+ }
+
+ template <class charT, class traits>
+ void basic_ofstream<charT,traits>::open( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_ofstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::out );
+ }
+
+// basic_fstream definitions -----------------------------------------------//
+
+ template <class charT, class traits> template<class Path>
+ basic_fstream<charT,traits>::basic_fstream(const Path & file_ph,
+ typename boost::enable_if<is_basic_path<Path> >::type* )
+ : std::basic_fstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in|std::ios_base::out ).c_str(),
+ std::ios_base::in|std::ios_base::out ) {}
+
+ template <class charT, class traits>
+ basic_fstream<charT,traits>::basic_fstream( const wpath & file_ph )
+ : std::basic_fstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in|std::ios_base::out ).c_str(),
+ std::ios_base::in|std::ios_base::out ) {}
+
+ template <class charT, class traits> template<class Path>
+ basic_fstream<charT,traits>::basic_fstream( const Path & file_ph,
+ std::ios_base::openmode mode,
+ typename boost::enable_if<is_basic_path<Path> >::type* )
+ : std::basic_fstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in | std::ios_base::out ) {}
+
+ template <class charT, class traits>
+ basic_fstream<charT,traits>::basic_fstream( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ : std::basic_fstream<charT,traits>(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in | std::ios_base::out ) {}
+
+ template <class charT, class traits> template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ basic_fstream<charT,traits>::open( const Path & file_ph )
+ {
+ std::basic_fstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in|std::ios_base::out ).c_str(),
+ std::ios_base::in|std::ios_base::out );
+ }
+
+ template <class charT, class traits>
+ void basic_fstream<charT,traits>::open( const wpath & file_ph )
+ {
+ std::basic_fstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ std::ios_base::in|std::ios_base::out ).c_str(),
+ std::ios_base::in|std::ios_base::out );
+ }
+
+ template <class charT, class traits> template<class Path>
+ typename boost::enable_if<is_basic_path<Path>, void>::type
+ basic_fstream<charT,traits>::open( const Path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_fstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in | std::ios_base::out );
+ }
+
+ template <class charT, class traits>
+ void basic_fstream<charT,traits>::open( const wpath & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_fstream<charT,traits>::open(
+ detail::path_proxy( file_ph.external_file_string(),
+ mode ).c_str(), mode | std::ios_base::in | std::ios_base::out );
+ }
+
+# endif
+
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ template <class charT, class traits>
+ basic_filebuf<charT,traits> *
+ basic_filebuf<charT, traits>::open( const path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ return std::basic_filebuf<charT,traits>::open(
+ file_ph.file_string().c_str(), mode ) == 0 ? 0 : this;
+ }
+# endif
+
+ template <class charT, class traits>
+ basic_ifstream<charT,traits>::basic_ifstream( const path & file_ph )
+ : std::basic_ifstream<charT,traits>(
+ file_ph.file_string().c_str(), std::ios_base::in ) {}
+
+ template <class charT, class traits>
+ basic_ifstream<charT,traits>::basic_ifstream( const path & file_ph,
+ std::ios_base::openmode mode )
+ : std::basic_ifstream<charT,traits>(
+ file_ph.file_string().c_str(), mode ) {}
+
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ template <class charT, class traits>
+ void basic_ifstream<charT,traits>::open( const path & file_ph )
+ {
+ std::basic_ifstream<charT,traits>::open(
+ file_ph.file_string().c_str(), std::ios_base::in );
+ }
+
+ template <class charT, class traits>
+ void basic_ifstream<charT,traits>::open( const path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_ifstream<charT,traits>::open(
+ file_ph.file_string().c_str(), mode );
+ }
+# endif
+
+ template <class charT, class traits>
+ basic_ofstream<charT,traits>::basic_ofstream( const path & file_ph )
+ : std::basic_ofstream<charT,traits>(
+ file_ph.file_string().c_str(), std::ios_base::out ) {}
+
+ template <class charT, class traits>
+ basic_ofstream<charT,traits>::basic_ofstream( const path & file_ph,
+ std::ios_base::openmode mode )
+ : std::basic_ofstream<charT,traits>(
+ file_ph.file_string().c_str(), mode ) {}
+
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ template <class charT, class traits>
+ void basic_ofstream<charT,traits>::open( const path & file_ph )
+ {
+ std::basic_ofstream<charT,traits>::open(
+ file_ph.file_string().c_str(), std::ios_base::out );
+ }
+
+ template <class charT, class traits>
+ void basic_ofstream<charT,traits>::open( const path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_ofstream<charT,traits>::open(
+ file_ph.file_string().c_str(), mode );
+ }
+# endif
+
+ template <class charT, class traits>
+ basic_fstream<charT,traits>::basic_fstream( const path & file_ph )
+ : std::basic_fstream<charT,traits>(
+ file_ph.file_string().c_str(),
+ std::ios_base::in|std::ios_base::out ) {}
+
+
+ template <class charT, class traits>
+ basic_fstream<charT,traits>::basic_fstream( const path & file_ph,
+ std::ios_base::openmode mode )
+ : std::basic_fstream<charT,traits>(
+ file_ph.file_string().c_str(), mode ) {}
+
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) // VC++ 6.0 can't handle this
+ template <class charT, class traits>
+ void basic_fstream<charT,traits>::open( const path & file_ph )
+ {
+ std::basic_fstream<charT,traits>::open(
+ file_ph.file_string().c_str(), std::ios_base::in|std::ios_base::out );
+ }
+
+ template <class charT, class traits>
+ void basic_fstream<charT,traits>::open( const path & file_ph,
+ std::ios_base::openmode mode )
+ {
+ std::basic_fstream<charT,traits>::open(
+ file_ph.file_string().c_str(), mode );
+ }
+# endif
+ } // namespace filesystem
+} // namespace boost
+
+#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
+#endif // BOOST_FILESYSTEM_FSTREAM_HPP
diff --git a/3rdParty/Boost/boost/filesystem/operations.hpp b/3rdParty/Boost/boost/filesystem/operations.hpp
new file mode 100644
index 0000000..5c2080c
--- /dev/null
+++ b/3rdParty/Boost/boost/filesystem/operations.hpp
@@ -0,0 +1,1173 @@
+// boost/filesystem/operations.hpp -----------------------------------------//
+
+// Copyright 2002-2005 Beman Dawes
+// Copyright 2002 Jan Langer
+// Copyright 2001 Dietmar Kuehl
+//
+// Distributed under the 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/filesystem
+
+//----------------------------------------------------------------------------//
+
+#ifndef BOOST_FILESYSTEM_OPERATIONS_HPP
+#define BOOST_FILESYSTEM_OPERATIONS_HPP
+
+#include <boost/filesystem/path.hpp>
+
+#include <boost/shared_ptr.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/iterator.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/assert.hpp>
+
+#include <string>
+#include <utility> // for pair
+#include <ctime>
+
+#ifdef BOOST_WINDOWS_API
+# include <fstream>
+# if !defined(_WIN32_WINNT) || _WIN32_WINNT >= 0x0500
+# define BOOST_FS_HARD_LINK // Default for Windows 2K or later
+# endif
+#endif
+
+#include <boost/config/abi_prefix.hpp> // must be the last #include
+
+# ifdef BOOST_NO_STDC_NAMESPACE
+ namespace std { using ::time_t; }
+# endif
+
+//----------------------------------------------------------------------------//
+
+namespace boost
+{
+ namespace filesystem
+ {
+
+// typedef boost::filesystem::path Path; needs to be in namespace boost::filesystem
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+# define BOOST_FS_FUNC(BOOST_FS_TYPE) \
+ template<class Path> typename boost::enable_if<is_basic_path<Path>, \
+ BOOST_FS_TYPE>::type
+# define BOOST_INLINE_FS_FUNC(BOOST_FS_TYPE) \
+ template<class Path> inline typename boost::enable_if<is_basic_path<Path>, \
+ BOOST_FS_TYPE>::type
+# define BOOST_FS_TYPENAME typename
+# else
+# define BOOST_FS_FUNC(BOOST_FS_TYPE) inline BOOST_FS_TYPE
+# define BOOST_INLINE_FS_FUNC(BOOST_FS_TYPE) inline BOOST_FS_TYPE
+ typedef boost::filesystem::path Path;
+# define BOOST_FS_TYPENAME
+# endif
+
+ template<class Path> class basic_directory_iterator;
+
+ // BOOST_FILESYSTEM_NARROW_ONLY needs this:
+ typedef basic_directory_iterator<path> directory_iterator;
+
+ template<class Path> class basic_directory_entry;
+
+ enum file_type
+ {
+ status_unknown,
+ file_not_found,
+ regular_file,
+ directory_file,
+ // the following will never be reported by some operating or file systems
+ symlink_file,
+ block_file,
+ character_file,
+ fifo_file,
+ socket_file,
+ 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
+ };
+
+ class file_status
+ {
+ public:
+ explicit file_status( file_type v = status_unknown ) : m_value(v) {}
+
+ void type( file_type v ) { m_value = v; }
+ file_type type() const { return m_value; }
+
+ private:
+ // the internal representation is unspecified so that additional state
+ // information such as permissions can be added in the future; this
+ // implementation just uses status_type as the internal representation
+
+ file_type m_value;
+ };
+
+ inline bool status_known( file_status f ) { return f.type() != status_unknown; }
+ inline bool exists( file_status f ) { return f.type() != status_unknown && f.type() != file_not_found; }
+ inline bool is_regular_file(file_status f){ return f.type() == regular_file; }
+ inline bool is_directory( file_status f ) { return f.type() == directory_file; }
+ inline bool is_symlink( file_status f ) { return f.type() == symlink_file; }
+ inline bool is_other( file_status f ) { return exists(f) && !is_regular_file(f) && !is_directory(f) && !is_symlink(f); }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ inline bool is_regular( file_status f ) { return f.type() == regular_file; }
+# endif
+
+ struct space_info
+ {
+ // all values are byte counts
+ boost::uintmax_t capacity;
+ boost::uintmax_t free; // <= capacity
+ boost::uintmax_t available; // <= free
+ };
+
+ namespace detail
+ {
+ typedef std::pair< system::error_code, bool >
+ query_pair;
+
+ typedef std::pair< system::error_code, boost::uintmax_t >
+ uintmax_pair;
+
+ typedef std::pair< system::error_code, std::time_t >
+ time_pair;
+
+ typedef std::pair< system::error_code, space_info >
+ space_pair;
+
+ template< class Path >
+ struct directory_pair
+ {
+ typedef std::pair< system::error_code,
+ typename Path::external_string_type > type;
+ };
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ BOOST_FILESYSTEM_DECL bool
+ symbolic_link_exists_api( const std::string & ); // deprecated
+# endif
+
+ BOOST_FILESYSTEM_DECL file_status
+ status_api( const std::string & ph, system::error_code & ec );
+# ifndef BOOST_WINDOWS_API
+ BOOST_FILESYSTEM_DECL file_status
+ symlink_status_api( const std::string & ph, system::error_code & ec );
+# endif
+ BOOST_FILESYSTEM_DECL query_pair
+ is_empty_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL query_pair
+ equivalent_api( const std::string & ph1, const std::string & ph2 );
+ BOOST_FILESYSTEM_DECL uintmax_pair
+ file_size_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL space_pair
+ space_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL time_pair
+ last_write_time_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ last_write_time_api( const std::string & ph, std::time_t new_value );
+ BOOST_FILESYSTEM_DECL system::error_code
+ get_current_path_api( std::string & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ set_current_path_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL query_pair
+ create_directory_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ create_hard_link_api( const std::string & to_ph,
+ const std::string & from_ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ create_symlink_api( const std::string & to_ph,
+ const std::string & from_ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ remove_api( const std::string & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ rename_api( const std::string & from, const std::string & to );
+ BOOST_FILESYSTEM_DECL system::error_code
+ copy_file_api( const std::string & from, const std::string & to );
+
+# if defined(BOOST_WINDOWS_API)
+
+ BOOST_FILESYSTEM_DECL system::error_code
+ get_full_path_name_api( const std::string & ph, std::string & target );
+
+# if !defined(BOOST_FILESYSTEM_NARROW_ONLY)
+
+ BOOST_FILESYSTEM_DECL boost::filesystem::file_status
+ status_api( const std::wstring & ph, system::error_code & ec );
+ BOOST_FILESYSTEM_DECL query_pair
+ is_empty_api( const std::wstring & ph );
+ BOOST_FILESYSTEM_DECL query_pair
+ equivalent_api( const std::wstring & ph1, const std::wstring & ph2 );
+ BOOST_FILESYSTEM_DECL uintmax_pair
+ file_size_api( const std::wstring & ph );
+ BOOST_FILESYSTEM_DECL space_pair
+ space_api( const std::wstring & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ get_full_path_name_api( const std::wstring & ph, std::wstring & target );
+ BOOST_FILESYSTEM_DECL time_pair
+ last_write_time_api( const std::wstring & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ last_write_time_api( const std::wstring & ph, std::time_t new_value );
+ BOOST_FILESYSTEM_DECL system::error_code
+ get_current_path_api( std::wstring & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ set_current_path_api( const std::wstring & ph );
+ BOOST_FILESYSTEM_DECL query_pair
+ create_directory_api( const std::wstring & ph );
+# ifdef BOOST_FS_HARD_LINK
+ BOOST_FILESYSTEM_DECL system::error_code
+ create_hard_link_api( const std::wstring & existing_ph,
+ const std::wstring & new_ph );
+# endif
+ BOOST_FILESYSTEM_DECL system::error_code
+ create_symlink_api( const std::wstring & to_ph,
+ const std::wstring & from_ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ remove_api( const std::wstring & ph );
+ BOOST_FILESYSTEM_DECL system::error_code
+ rename_api( const std::wstring & from, const std::wstring & to );
+ BOOST_FILESYSTEM_DECL system::error_code
+ copy_file_api( const std::wstring & from, const std::wstring & to );
+
+# endif
+# endif
+
+ template<class Path>
+ bool remove_aux( const Path & ph, file_status f );
+
+ template<class Path>
+ unsigned long remove_all_aux( const Path & ph, file_status f );
+
+ } // namespace detail
+
+// operations functions ----------------------------------------------------//
+
+ // The non-template overloads enable automatic conversion from std and
+ // C-style strings. See basic_path constructors. The enable_if for the
+ // templates implements the famous "do-the-right-thing" rule.
+
+// query functions ---------------------------------------------------------//
+
+ BOOST_INLINE_FS_FUNC(file_status)
+ status( const Path & ph, system::error_code & ec )
+ { return detail::status_api( ph.external_file_string(), ec ); }
+
+ BOOST_FS_FUNC(file_status)
+ status( const Path & ph )
+ {
+ 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::status", ph, ec ) );
+ return result;
+ }
+
+ BOOST_INLINE_FS_FUNC(file_status)
+ symlink_status( const Path & ph, system::error_code & ec )
+# ifdef BOOST_WINDOWS_API
+ { return detail::status_api( ph.external_file_string(), ec ); }
+# else
+ { return detail::symlink_status_api( ph.external_file_string(), ec ); }
+# endif
+
+ BOOST_FS_FUNC(file_status)
+ symlink_status( const Path & ph )
+ {
+ system::error_code ec;
+ file_status result( symlink_status( ph, ec ) );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::symlink_status", ph, ec ) );
+ return result;
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ inline bool symbolic_link_exists( const path & ph )
+ { return is_symlink( symlink_status(ph) ); }
+# endif
+
+ BOOST_FS_FUNC(bool) exists( const Path & ph )
+ {
+ 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::exists", ph, ec ) );
+ return exists( result );
+ }
+
+ BOOST_FS_FUNC(bool) is_directory( const Path & ph )
+ {
+ 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::is_directory", ph, ec ) );
+ return is_directory( result );
+ }
+
+ BOOST_FS_FUNC(bool) is_regular_file( const Path & ph )
+ {
+ 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::is_regular_file", ph, ec ) );
+ return is_regular_file( result );
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ BOOST_FS_FUNC(bool) is_regular( const Path & ph )
+ {
+ 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::is_regular", ph, ec ) );
+ return is_regular( result );
+ }
+# endif
+
+ BOOST_FS_FUNC(bool) is_other( const Path & ph )
+ {
+ 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::is_other", ph, ec ) );
+ return is_other( result );
+ }
+
+ BOOST_FS_FUNC(bool) is_symlink(
+# ifdef BOOST_WINDOWS_API
+ const Path & )
+ {
+ return false;
+# else
+ const Path & ph)
+ {
+ 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::is_symlink", ph, ec ) );
+ return is_symlink( result );
+# endif
+ }
+
+ // VC++ 7.0 and earlier has a serious namespace bug that causes a clash
+ // between boost::filesystem::is_empty and the unrelated type trait
+ // boost::is_empty.
+
+# if !defined( BOOST_MSVC ) || BOOST_MSVC > 1300
+ BOOST_FS_FUNC(bool) is_empty( const Path & ph )
+# else
+ BOOST_FS_FUNC(bool) _is_empty( const Path & ph )
+# endif
+ {
+ detail::query_pair result(
+ detail::is_empty_api( ph.external_file_string() ) );
+ if ( result.first )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::is_empty", ph, result.first ) );
+ return result.second;
+ }
+
+ BOOST_FS_FUNC(bool) equivalent( const Path & ph1, const Path & ph2 )
+ {
+ 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::equivalent", ph1, ph2, result.first ) );
+ return result.second;
+ }
+
+ BOOST_FS_FUNC(boost::uintmax_t) file_size( const Path & ph )
+ {
+ detail::uintmax_pair result
+ ( detail::file_size_api( ph.external_file_string() ) );
+ if ( result.first )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::file_size", ph, result.first ) );
+ return result.second;
+ }
+
+ BOOST_FS_FUNC(space_info) space( const Path & ph )
+ {
+ detail::space_pair result
+ ( detail::space_api( ph.external_file_string() ) );
+ if ( result.first )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::space", ph, result.first ) );
+ return result.second;
+ }
+
+ BOOST_FS_FUNC(std::time_t) last_write_time( const Path & ph )
+ {
+ 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::last_write_time", ph, result.first ) );
+ return result.second;
+ }
+
+
+// operations --------------------------------------------------------------//
+
+ BOOST_FS_FUNC(bool) create_directory( const Path & dir_ph )
+ {
+ 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::create_directory",
+ dir_ph, result.first ) );
+ return result.second;
+ }
+
+#if !defined(BOOST_WINDOWS_API) || defined(BOOST_FS_HARD_LINK)
+ BOOST_FS_FUNC(void)
+ create_hard_link( const Path & to_ph, const Path & from_ph )
+ {
+ system::error_code ec(
+ detail::create_hard_link_api(
+ to_ph.external_file_string(),
+ from_ph.external_file_string() ) );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::create_hard_link",
+ to_ph, from_ph, ec ) );
+ }
+
+ BOOST_FS_FUNC(system::error_code)
+ create_hard_link( const Path & to_ph, const Path & from_ph,
+ system::error_code & ec )
+ {
+ ec = detail::create_hard_link_api(
+ to_ph.external_file_string(),
+ from_ph.external_file_string() );
+ return ec;
+ }
+#endif
+
+ BOOST_FS_FUNC(void)
+ create_symlink( const Path & to_ph, const Path & from_ph )
+ {
+ system::error_code ec(
+ detail::create_symlink_api(
+ to_ph.external_file_string(),
+ from_ph.external_file_string() ) );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::create_symlink",
+ to_ph, from_ph, ec ) );
+ }
+
+ BOOST_FS_FUNC(system::error_code)
+ create_symlink( const Path & to_ph, const Path & from_ph,
+ system::error_code & ec )
+ {
+ ec = detail::create_symlink_api(
+ to_ph.external_file_string(),
+ from_ph.external_file_string() );
+ return ec;
+ }
+
+ BOOST_FS_FUNC(bool) remove( const Path & ph )
+ {
+ system::error_code ec;
+ file_status f = symlink_status( ph, ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove", ph, ec ) );
+ return detail::remove_aux( ph, f );
+ }
+
+ BOOST_FS_FUNC(unsigned long) remove_all( const Path & ph )
+ {
+ system::error_code ec;
+ file_status f = symlink_status( ph, ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove_all", ph, ec ) );
+ return exists( f ) ? detail::remove_all_aux( ph, f ) : 0;
+ }
+
+ BOOST_FS_FUNC(void) rename( const Path & from_path, const Path & to_path )
+ {
+ system::error_code ec( detail::rename_api(
+ from_path.external_directory_string(),
+ to_path.external_directory_string() ) );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::rename",
+ from_path, to_path, ec ) );
+ }
+
+ BOOST_FS_FUNC(void) copy_file( const Path & from_path, const Path & to_path )
+ {
+ system::error_code ec( detail::copy_file_api(
+ from_path.external_directory_string(),
+ to_path.external_directory_string() ) );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::copy_file",
+ from_path, to_path, ec ) );
+ }
+
+ template< class Path >
+ Path current_path()
+ {
+ 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::current_path", ec ) );
+ return Path( Path::traits_type::to_internal( ph ) );
+ }
+
+ BOOST_FS_FUNC(void) current_path( const Path & ph )
+ {
+ system::error_code ec( detail::set_current_path_api(
+ ph.external_directory_string() ) );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::current_path", ph, ec ) );
+ }
+
+ template< class Path >
+ const Path & initial_path()
+ {
+ static Path init_path;
+ if ( init_path.empty() ) init_path = current_path<Path>();
+ return init_path;
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ // legacy support
+ inline path current_path() // overload supports pre-i18n apps
+ { return current_path<boost::filesystem::path>(); }
+ inline const path & initial_path() // overload supports pre-i18n apps
+ { return initial_path<boost::filesystem::path>(); }
+# endif
+
+ BOOST_FS_FUNC(Path) system_complete( const Path & ph )
+ {
+# ifdef BOOST_WINDOWS_API
+ if ( ph.empty() ) return ph;
+ BOOST_FS_TYPENAME Path::external_string_type sys_ph;
+ 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::system_complete", ph, ec ) );
+ return Path( Path::traits_type::to_internal( sys_ph ) );
+# else
+ return (ph.empty() || ph.is_complete())
+ ? ph : current_path<Path>() / ph;
+# endif
+ }
+
+ BOOST_FS_FUNC(Path)
+ complete( const Path & ph,
+ const Path & base/* = initial_path<Path>() */)
+ {
+ BOOST_ASSERT( base.is_complete()
+ && (ph.is_complete() || !ph.has_root_name())
+ && "boost::filesystem::complete() precondition not met" );
+# ifdef BOOST_WINDOWS_PATH
+ if (ph.empty() || ph.is_complete()) return ph;
+ if ( !ph.has_root_name() )
+ return ph.has_root_directory()
+ ? Path( base.root_name() ) / ph
+ : base / ph;
+ return base / ph;
+# else
+ return (ph.empty() || ph.is_complete()) ? ph : base / ph;
+# endif
+ }
+
+ // VC++ 7.1 had trouble with default arguments, so separate one argument
+ // signatures are provided as workarounds; the effect is the same.
+ BOOST_FS_FUNC(Path) complete( const Path & ph )
+ { return complete( ph, initial_path<Path>() ); }
+
+ BOOST_FS_FUNC(void)
+ last_write_time( const Path & ph, const std::time_t new_time )
+ {
+ 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::last_write_time", ph, ec ) );
+ }
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ // "do-the-right-thing" overloads ---------------------------------------//
+
+ inline file_status status( const path & ph )
+ { return status<path>( ph ); }
+ inline file_status status( const wpath & ph )
+ { return status<wpath>( ph ); }
+
+ inline file_status status( const path & ph, system::error_code & ec )
+ { return status<path>( ph, ec ); }
+ inline file_status status( const wpath & ph, system::error_code & ec )
+ { return status<wpath>( ph, ec ); }
+
+ inline file_status symlink_status( const path & ph )
+ { return symlink_status<path>( ph ); }
+ inline file_status symlink_status( const wpath & ph )
+ { return symlink_status<wpath>( ph ); }
+
+ inline file_status symlink_status( const path & ph, system::error_code & ec )
+ { return symlink_status<path>( ph, ec ); }
+ inline file_status symlink_status( const wpath & ph, system::error_code & ec )
+ { return symlink_status<wpath>( ph, ec ); }
+
+ inline bool exists( const path & ph ) { return exists<path>( ph ); }
+ inline bool exists( const wpath & ph ) { return exists<wpath>( ph ); }
+
+ inline bool is_directory( const path & ph )
+ { return is_directory<path>( ph ); }
+ inline bool is_directory( const wpath & ph )
+ { return is_directory<wpath>( ph ); }
+
+ inline bool is_regular_file( const path & ph )
+ { return is_regular_file<path>( ph ); }
+ inline bool is_regular_file( const wpath & ph )
+ { return is_regular_file<wpath>( ph ); }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ inline bool is_regular( const path & ph )
+ { return is_regular<path>( ph ); }
+ inline bool is_regular( const wpath & ph )
+ { return is_regular<wpath>( ph ); }
+# endif
+
+ inline bool is_other( const path & ph )
+ { return is_other<path>( ph ); }
+ inline bool is_other( const wpath & ph )
+ { return is_other<wpath>( ph ); }
+
+ inline bool is_symlink( const path & ph )
+ { return is_symlink<path>( ph ); }
+ inline bool is_symlink( const wpath & ph )
+ { return is_symlink<wpath>( ph ); }
+
+ inline bool is_empty( const path & ph )
+ { return is_empty<path>( ph ); }
+ inline bool is_empty( const wpath & ph )
+ { return is_empty<wpath>( ph ); }
+
+ inline bool equivalent( const path & ph1, const path & ph2 )
+ { return equivalent<path>( ph1, ph2 ); }
+ inline bool equivalent( const wpath & ph1, const wpath & ph2 )
+ { return equivalent<wpath>( ph1, ph2 ); }
+
+ inline boost::uintmax_t file_size( const path & ph )
+ { return file_size<path>( ph ); }
+ inline boost::uintmax_t file_size( const wpath & ph )
+ { return file_size<wpath>( ph ); }
+
+ inline space_info space( const path & ph )
+ { return space<path>( ph ); }
+ inline space_info space( const wpath & ph )
+ { return space<wpath>( ph ); }
+
+ inline std::time_t last_write_time( const path & ph )
+ { return last_write_time<path>( ph ); }
+ inline std::time_t last_write_time( const wpath & ph )
+ { return last_write_time<wpath>( ph ); }
+
+ inline bool create_directory( const path & dir_ph )
+ { return create_directory<path>( dir_ph ); }
+ inline bool create_directory( const wpath & dir_ph )
+ { return create_directory<wpath>( dir_ph ); }
+
+#if !defined(BOOST_WINDOWS_API) || defined(BOOST_FS_HARD_LINK)
+ inline void create_hard_link( const path & to_ph,
+ const path & from_ph )
+ { return create_hard_link<path>( to_ph, from_ph ); }
+ inline void create_hard_link( const wpath & to_ph,
+ const wpath & from_ph )
+ { return create_hard_link<wpath>( to_ph, from_ph ); }
+
+ inline system::error_code create_hard_link( const path & to_ph,
+ const path & from_ph, system::error_code & ec )
+ { return create_hard_link<path>( to_ph, from_ph, ec ); }
+ inline system::error_code create_hard_link( const wpath & to_ph,
+ const wpath & from_ph, system::error_code & ec )
+ { return create_hard_link<wpath>( to_ph, from_ph, ec ); }
+#endif
+
+ inline void create_symlink( const path & to_ph,
+ const path & from_ph )
+ { return create_symlink<path>( to_ph, from_ph ); }
+ inline void create_symlink( const wpath & to_ph,
+ const wpath & from_ph )
+ { return create_symlink<wpath>( to_ph, from_ph ); }
+
+ inline system::error_code create_symlink( const path & to_ph,
+ const path & from_ph, system::error_code & ec )
+ { return create_symlink<path>( to_ph, from_ph, ec ); }
+ inline system::error_code create_symlink( const wpath & to_ph,
+ const wpath & from_ph, system::error_code & ec )
+ { return create_symlink<wpath>( to_ph, from_ph, ec ); }
+
+ inline bool remove( const path & ph )
+ { return remove<path>( ph ); }
+ inline bool remove( const wpath & ph )
+ { return remove<wpath>( ph ); }
+
+ inline unsigned long remove_all( const path & ph )
+ { return remove_all<path>( ph ); }
+ inline unsigned long remove_all( const wpath & ph )
+ { return remove_all<wpath>( ph ); }
+
+ inline void rename( const path & from_path, const path & to_path )
+ { return rename<path>( from_path, to_path ); }
+ inline void rename( const wpath & from_path, const wpath & to_path )
+ { return rename<wpath>( from_path, to_path ); }
+
+ inline void copy_file( const path & from_path, const path & to_path )
+ { return copy_file<path>( from_path, to_path ); }
+ inline void copy_file( const wpath & from_path, const wpath & to_path )
+ { return copy_file<wpath>( from_path, to_path ); }
+
+ inline path system_complete( const path & ph )
+ { return system_complete<path>( ph ); }
+ inline wpath system_complete( const wpath & ph )
+ { return system_complete<wpath>( ph ); }
+
+ inline path complete( const path & ph,
+ const path & base/* = initial_path<path>()*/ )
+ { return complete<path>( ph, base ); }
+ inline wpath complete( const wpath & ph,
+ const wpath & base/* = initial_path<wpath>()*/ )
+ { return complete<wpath>( ph, base ); }
+
+ inline path complete( const path & ph )
+ { return complete<path>( ph, initial_path<path>() ); }
+ inline wpath complete( const wpath & ph )
+ { return complete<wpath>( ph, initial_path<wpath>() ); }
+
+ inline void last_write_time( const path & ph, const std::time_t new_time )
+ { last_write_time<path>( ph, new_time ); }
+ inline void last_write_time( const wpath & ph, const std::time_t new_time )
+ { last_write_time<wpath>( ph, new_time ); }
+
+ inline void current_path( const path & ph )
+ { current_path<path>( ph ); }
+ inline void current_path( const wpath & ph )
+ { current_path<wpath>( ph ); }
+
+# endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ namespace detail
+ {
+ template<class Path>
+ bool remove_aux( const Path & ph, file_status f )
+ {
+ if ( exists( f ) )
+ {
+ system::error_code ec = remove_api( ph.external_file_string() );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::remove", ph, ec ) );
+ return true;
+ }
+ return false;
+ }
+
+ template<class Path>
+ unsigned long remove_all_aux( const Path & ph, file_status f )
+ {
+ static const boost::filesystem::basic_directory_iterator<Path> end_itr;
+ unsigned long count = 1;
+ if ( !boost::filesystem::is_symlink( f ) // don't recurse symbolic links
+ && boost::filesystem::is_directory( f ) )
+ {
+ for ( boost::filesystem::basic_directory_iterator<Path> itr( ph );
+ itr != end_itr; ++itr )
+ {
+ boost::system::error_code ec;
+ boost::filesystem::file_status fn = boost::filesystem::symlink_status( itr->path(), ec );
+ if ( ec )
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem:remove_all", ph, ec ) );
+ count += remove_all_aux( itr->path(), fn );
+ }
+ }
+ remove_aux( ph, f );
+ return count;
+ }
+
+// test helper -------------------------------------------------------------//
+
+ // not part of the documented interface because false positives are possible;
+ // there is no law that says that an OS that has large stat.st_size
+ // actually supports large file sizes.
+ BOOST_FILESYSTEM_DECL bool possible_large_file_size_support();
+
+// directory_iterator helpers ----------------------------------------------//
+
+// forwarding functions avoid need for BOOST_FILESYSTEM_DECL for class
+// basic_directory_iterator, and so avoid iterator_facade DLL template
+// problems. They also overload to the proper external path character type.
+
+ BOOST_FILESYSTEM_DECL system::error_code
+ dir_itr_first( void *& handle,
+#if defined(BOOST_POSIX_API)
+ void *& buffer,
+#endif
+ const std::string & dir_path,
+ std::string & target, file_status & fs, file_status & symlink_fs );
+ // eof: return==0 && handle==0
+
+ BOOST_FILESYSTEM_DECL system::error_code
+ dir_itr_increment( void *& handle,
+#if defined(BOOST_POSIX_API)
+ void *& buffer,
+#endif
+ std::string & target, file_status & fs, file_status & symlink_fs );
+ // eof: return==0 && handle==0
+
+ BOOST_FILESYSTEM_DECL system::error_code
+ dir_itr_close( void *& handle
+#if defined(BOOST_POSIX_API)
+ , void *& buffer
+#endif
+ );
+ // Effects: none if handle==0, otherwise close handle, set handle=0
+
+# if defined(BOOST_WINDOWS_API) && !defined(BOOST_FILESYSTEM_NARROW_ONLY)
+ BOOST_FILESYSTEM_DECL system::error_code
+ dir_itr_first( void *& handle, const std::wstring & ph,
+ std::wstring & target, file_status & fs, file_status & symlink_fs );
+ BOOST_FILESYSTEM_DECL system::error_code
+ dir_itr_increment( void *& handle, std::wstring & target,
+ file_status & fs, file_status & symlink_fs );
+# endif
+
+ template< class Path >
+ class dir_itr_imp
+ {
+ public:
+ basic_directory_entry<Path> m_directory_entry;
+ void * m_handle;
+# ifdef BOOST_POSIX_API
+ void * m_buffer; // see dir_itr_increment implementation
+# endif
+ dir_itr_imp() : m_handle(0)
+# ifdef BOOST_POSIX_API
+ , m_buffer(0)
+# endif
+ {}
+
+ ~dir_itr_imp() { dir_itr_close( m_handle
+#if defined(BOOST_POSIX_API)
+ , m_buffer
+#endif
+ ); }
+ };
+
+ BOOST_FILESYSTEM_DECL system::error_code not_found_error();
+
+ } // namespace detail
+
+// basic_directory_iterator ------------------------------------------------//
+
+ template< class Path >
+ class basic_directory_iterator
+ : public boost::iterator_facade<
+ basic_directory_iterator<Path>,
+ basic_directory_entry<Path>,
+ boost::single_pass_traversal_tag >
+ {
+ public:
+ typedef Path path_type;
+
+ basic_directory_iterator(){} // creates the "end" iterator
+
+ explicit basic_directory_iterator( const Path & dir_path );
+ basic_directory_iterator( const Path & dir_path, system::error_code & ec );
+
+ private:
+
+ // shared_ptr provides shallow-copy semantics required for InputIterators.
+ // m_imp.get()==0 indicates the end iterator.
+ boost::shared_ptr< detail::dir_itr_imp< Path > > m_imp;
+
+ friend class boost::iterator_core_access;
+
+ typename boost::iterator_facade<
+ basic_directory_iterator<Path>,
+ basic_directory_entry<Path>,
+ boost::single_pass_traversal_tag >::reference dereference() const
+ {
+ BOOST_ASSERT( m_imp.get() && "attempt to dereference end iterator" );
+ return m_imp->m_directory_entry;
+ }
+
+ void increment();
+
+ bool equal( const basic_directory_iterator & rhs ) const
+ { return m_imp == rhs.m_imp; }
+
+ system::error_code m_init( const Path & dir_path );
+ };
+
+ typedef basic_directory_iterator< path > directory_iterator;
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ typedef basic_directory_iterator< wpath > wdirectory_iterator;
+# endif
+
+ // basic_directory_iterator implementation ---------------------------//
+
+ template<class Path>
+ system::error_code basic_directory_iterator<Path>::m_init(
+ const Path & dir_path )
+ {
+ if ( dir_path.empty() )
+ {
+ m_imp.reset();
+ return detail::not_found_error();
+ }
+ typename Path::external_string_type name;
+ file_status fs, symlink_fs;
+ system::error_code ec( detail::dir_itr_first( m_imp->m_handle,
+#if defined(BOOST_POSIX_API)
+ m_imp->m_buffer,
+#endif
+ dir_path.external_directory_string(),
+ name, fs, symlink_fs ) );
+
+ if ( ec )
+ {
+ m_imp.reset();
+ return ec;
+ }
+
+ if ( m_imp->m_handle == 0 ) m_imp.reset(); // eof, so make end iterator
+ else // not eof
+ {
+ m_imp->m_directory_entry.assign( dir_path
+ / Path::traits_type::to_internal( name ), fs, symlink_fs );
+ if ( name[0] == dot<Path>::value // dot or dot-dot
+ && (name.size() == 1
+ || (name[1] == dot<Path>::value
+ && name.size() == 2)) )
+ { increment(); }
+ }
+ return boost::system::error_code();
+ }
+
+ template<class Path>
+ basic_directory_iterator<Path>::basic_directory_iterator(
+ const Path & dir_path )
+ : m_imp( new detail::dir_itr_imp<Path> )
+ {
+ system::error_code ec( m_init(dir_path) );
+ if ( ec )
+ {
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::basic_directory_iterator constructor",
+ dir_path, ec ) );
+ }
+ }
+
+ template<class Path>
+ basic_directory_iterator<Path>::basic_directory_iterator(
+ const Path & dir_path, system::error_code & ec )
+ : m_imp( new detail::dir_itr_imp<Path> )
+ {
+ ec = m_init(dir_path);
+ }
+
+ template<class Path>
+ void basic_directory_iterator<Path>::increment()
+ {
+ BOOST_ASSERT( m_imp.get() && "attempt to increment end iterator" );
+ BOOST_ASSERT( m_imp->m_handle != 0 && "internal program error" );
+
+ typename Path::external_string_type name;
+ file_status fs, symlink_fs;
+ system::error_code ec;
+
+ for (;;)
+ {
+ ec = detail::dir_itr_increment( m_imp->m_handle,
+#if defined(BOOST_POSIX_API)
+ m_imp->m_buffer,
+#endif
+ name, fs, symlink_fs );
+ if ( ec )
+ {
+ boost::throw_exception( basic_filesystem_error<Path>(
+ "boost::filesystem::basic_directory_iterator increment",
+ m_imp->m_directory_entry.path().parent_path(), ec ) );
+ }
+ if ( m_imp->m_handle == 0 ) { m_imp.reset(); return; } // eof, make end
+ if ( !(name[0] == dot<Path>::value // !(dot or dot-dot)
+ && (name.size() == 1
+ || (name[1] == dot<Path>::value
+ && name.size() == 2))) )
+ {
+ m_imp->m_directory_entry.replace_filename(
+ Path::traits_type::to_internal( name ), fs, symlink_fs );
+ return;
+ }
+ }
+ }
+
+ // basic_directory_entry -----------------------------------------------//
+
+ template<class Path>
+ class basic_directory_entry
+ {
+ public:
+ typedef Path path_type;
+ typedef typename Path::string_type string_type;
+
+ // compiler generated copy-ctor, copy assignment, and destructor apply
+
+ basic_directory_entry() {}
+ explicit basic_directory_entry( const path_type & p,
+ file_status st = file_status(), file_status symlink_st=file_status() )
+ : m_path(p), m_status(st), m_symlink_status(symlink_st)
+ {}
+
+ void assign( const path_type & p,
+ file_status st, file_status symlink_st )
+ { m_path = p; m_status = st; m_symlink_status = symlink_st; }
+
+ void replace_filename( const string_type & s,
+ file_status st, file_status symlink_st )
+ {
+ m_path.remove_filename();
+ m_path /= s;
+ m_status = st;
+ m_symlink_status = symlink_st;
+ }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ void replace_leaf( const string_type & s,
+ file_status st, file_status symlink_st )
+ { replace_filename( s, st, symlink_st ); }
+# endif
+
+ const Path & path() const { return m_path; }
+ file_status status() const;
+ file_status status( system::error_code & ec ) const;
+ file_status symlink_status() const;
+ file_status symlink_status( system::error_code & ec ) const;
+
+ // conversion simplifies the most common use of basic_directory_entry
+ operator const path_type &() const { return m_path; }
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ // deprecated functions preserve common use cases in legacy code
+ typename Path::string_type filename() const
+ {
+ return path().filename();
+ }
+ typename Path::string_type leaf() const
+ {
+ return path().filename();
+ }
+ typename Path::string_type string() const
+ {
+ return path().string();
+ }
+# endif
+
+ private:
+ path_type m_path;
+ mutable file_status m_status; // stat()-like
+ mutable file_status m_symlink_status; // lstat()-like
+ // note: m_symlink_status is not used by Windows implementation
+
+ }; // basic_directory_status
+
+ typedef basic_directory_entry<path> directory_entry;
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ typedef basic_directory_entry<wpath> wdirectory_entry;
+# endif
+
+ // basic_directory_entry implementation --------------------------------//
+
+ template<class Path>
+ file_status
+ basic_directory_entry<Path>::status() const
+ {
+ if ( !status_known( m_status ) )
+ {
+# ifndef BOOST_WINDOWS_API
+ if ( status_known( m_symlink_status )
+ && !is_symlink( m_symlink_status ) )
+ { m_status = m_symlink_status; }
+ else { m_status = boost::filesystem::status( m_path ); }
+# else
+ m_status = boost::filesystem::status( m_path );
+# endif
+ }
+ return m_status;
+ }
+
+ template<class Path>
+ file_status
+ basic_directory_entry<Path>::status( system::error_code & ec ) const
+ {
+ if ( !status_known( m_status ) )
+ {
+# ifndef BOOST_WINDOWS_API
+ if ( status_known( m_symlink_status )
+ && !is_symlink( m_symlink_status ) )
+ { ec = boost::system::error_code();; m_status = m_symlink_status; }
+ else { m_status = boost::filesystem::status( m_path, ec ); }
+# else
+ m_status = boost::filesystem::status( m_path, ec );
+# endif
+ }
+ else ec = boost::system::error_code();;
+ return m_status;
+ }
+
+ template<class Path>
+ file_status
+ basic_directory_entry<Path>::symlink_status() const
+ {
+# ifndef BOOST_WINDOWS_API
+ if ( !status_known( m_symlink_status ) )
+ { m_symlink_status = boost::filesystem::symlink_status( m_path ); }
+ return m_symlink_status;
+# else
+ return status();
+# endif
+ }
+
+ template<class Path>
+ file_status
+ basic_directory_entry<Path>::symlink_status( system::error_code & ec ) const
+ {
+# ifndef BOOST_WINDOWS_API
+ if ( !status_known( m_symlink_status ) )
+ { m_symlink_status = boost::filesystem::symlink_status( m_path, ec ); }
+ else ec = boost::system::error_code();;
+ return m_symlink_status;
+# else
+ return status( ec );
+# endif
+ }
+ } // namespace filesystem
+} // namespace boost
+
+#undef BOOST_FS_FUNC
+
+
+#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
+#endif // BOOST_FILESYSTEM_OPERATIONS_HPP
diff --git a/3rdParty/Boost/boost/filesystem/path.hpp b/3rdParty/Boost/boost/filesystem/path.hpp
new file mode 100644
index 0000000..bfb1aab
--- /dev/null
+++ b/3rdParty/Boost/boost/filesystem/path.hpp
@@ -0,0 +1,1507 @@
+// boost/filesystem/path.hpp -----------------------------------------------//
+
+// Copyright Beman Dawes 2002-2005
+// Copyright Vladimir Prus 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 library home page at http://www.boost.org/libs/filesystem
+
+// basic_path's stem(), extension(), and replace_extension() are based on
+// basename(), extension(), and change_extension() from the original
+// filesystem/convenience.hpp header by Vladimir Prus.
+
+//----------------------------------------------------------------------------//
+
+#ifndef BOOST_FILESYSTEM_PATH_HPP
+#define BOOST_FILESYSTEM_PATH_HPP
+
+#include <boost/filesystem/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 <string>
+#include <algorithm> // for lexicographical_compare
+#include <iosfwd> // needed by basic_path inserter and extractor
+#include <stdexcept>
+#include <cassert>
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+# include <locale>
+# endif
+
+#include <boost/config/abi_prefix.hpp> // must be the last #include
+
+//----------------------------------------------------------------------------//
+
+namespace boost
+{
+ namespace BOOST_FILESYSTEM_NAMESPACE
+ {
+ template<class String, class Traits> class basic_path;
+
+ struct path_traits;
+ typedef basic_path< std::string, path_traits > path;
+
+ struct path_traits
+ {
+ typedef std::string internal_string_type;
+ typedef std::string external_string_type;
+ static external_string_type to_external( const path &,
+ const internal_string_type & src ) { return src; }
+ static internal_string_type to_internal(
+ const external_string_type & src ) { return src; }
+ };
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ struct BOOST_FILESYSTEM_DECL wpath_traits;
+
+ typedef basic_path< std::wstring, wpath_traits > wpath;
+
+ struct BOOST_FILESYSTEM_DECL wpath_traits
+ {
+ typedef std::wstring internal_string_type;
+# ifdef BOOST_WINDOWS_API
+ typedef std::wstring external_string_type;
+ static external_string_type to_external( const wpath &,
+ const internal_string_type & src ) { return src; }
+ static internal_string_type to_internal(
+ const external_string_type & src ) { return src; }
+# else
+ typedef std::string external_string_type;
+ static external_string_type to_external( const wpath & ph,
+ const internal_string_type & src );
+ static internal_string_type to_internal(
+ const external_string_type & src );
+# endif
+ static void imbue( const std::locale & loc );
+ static bool imbue( const std::locale & loc, const std::nothrow_t & );
+ };
+
+# endif // ifndef BOOST_FILESYSTEM_NARROW_ONLY
+
+ // path traits ---------------------------------------------------------//
+
+ template<class Path> struct is_basic_path
+ { BOOST_STATIC_CONSTANT( bool, value = false ); };
+ template<> struct is_basic_path<path>
+ { BOOST_STATIC_CONSTANT( bool, value = true ); };
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ template<> struct is_basic_path<wpath>
+ { BOOST_STATIC_CONSTANT( bool, value = true ); };
+# endif
+
+ // These only have to be specialized if Path::string_type::value_type
+ // is not convertible from char, although specializations may eliminate
+ // compiler warnings. See ticket 2543.
+ template<class Path> struct slash
+ { BOOST_STATIC_CONSTANT( char, value = '/' ); };
+
+ template<class Path> struct dot
+ { BOOST_STATIC_CONSTANT( char, value = '.' ); };
+
+ template<class Path> struct colon
+ { BOOST_STATIC_CONSTANT( char, value = ':' ); };
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ template<> struct slash<wpath>
+ { BOOST_STATIC_CONSTANT( wchar_t, value = L'/' ); };
+ template<> struct dot<wpath>
+ { BOOST_STATIC_CONSTANT( wchar_t, value = L'.' ); };
+ template<> struct colon<wpath>
+ { BOOST_STATIC_CONSTANT( wchar_t, value = L':' ); };
+# endif
+
+# ifdef BOOST_WINDOWS_PATH
+ template<class Path> struct path_alt_separator
+ { BOOST_STATIC_CONSTANT( char, value = '\\' ); };
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ template<> struct path_alt_separator<wpath>
+ { BOOST_STATIC_CONSTANT( wchar_t, value = L'\\' ); };
+# endif
+# endif
+
+ // workaround for VC++ 7.0 and earlier issues with nested classes
+ namespace detail
+ {
+ template<class Path>
+ class iterator_helper
+ {
+ public:
+ typedef typename Path::iterator iterator;
+ static void do_increment( iterator & ph );
+ static void do_decrement( iterator & ph );
+ };
+ }
+
+ // basic_path ----------------------------------------------------------//
+
+ template<class String, class Traits>
+ class basic_path
+ {
+ // invariant: m_path valid according to the portable generic path grammar
+
+ // validate template arguments
+// TODO: get these working
+// BOOST_STATIC_ASSERT( ::boost::is_same<String,typename Traits::internal_string_type>::value );
+// BOOST_STATIC_ASSERT( ::boost::is_same<typename Traits::external_string_type,std::string>::value || ::boost::is_same<typename Traits::external_string_type,std::wstring>::value );
+
+ public:
+ // compiler generates copy constructor and copy assignment
+
+ typedef basic_path<String, Traits> path_type;
+ typedef String string_type;
+ typedef typename String::value_type value_type;
+ typedef Traits traits_type;
+ typedef typename Traits::external_string_type external_string_type;
+
+ // constructors/destructor
+ basic_path() {}
+ basic_path( const string_type & s ) { operator/=( s ); }
+ basic_path( const value_type * s ) { operator/=( s ); }
+# ifndef BOOST_NO_MEMBER_TEMPLATES
+ template <class InputIterator>
+ basic_path( InputIterator first, InputIterator last )
+ { append( first, last ); }
+# endif
+ ~basic_path() {}
+
+ // assignments
+ basic_path & operator=( const string_type & s )
+ {
+# if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, >= 310)
+ m_path.clear();
+# else
+ m_path.erase( m_path.begin(), m_path.end() );
+# endif
+ operator/=( s );
+ return *this;
+ }
+ basic_path & operator=( const value_type * s )
+ {
+# if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, >= 310)
+ m_path.clear();
+# else
+ m_path.erase( m_path.begin(), m_path.end() );
+# endif
+ operator/=( s );
+ return *this;
+ }
+# ifndef BOOST_NO_MEMBER_TEMPLATES
+ template <class InputIterator>
+ basic_path & assign( InputIterator first, InputIterator last )
+ { m_path.clear(); append( first, last ); return *this; }
+# endif
+
+ // modifiers
+ basic_path & operator/=( const basic_path & rhs ) { return operator /=( rhs.string().c_str() ); }
+ basic_path & operator/=( const string_type & rhs ) { return operator /=( rhs.c_str() ); }
+ basic_path & operator/=( const value_type * s );
+# ifndef BOOST_NO_MEMBER_TEMPLATES
+ template <class InputIterator>
+ basic_path & append( InputIterator first, InputIterator last );
+# endif
+
+ void swap( basic_path & rhs )
+ {
+ m_path.swap( rhs.m_path );
+# ifdef BOOST_CYGWIN_PATH
+ std::swap( m_cygwin_root, rhs.m_cygwin_root );
+# endif
+ }
+
+ basic_path & remove_filename();
+ basic_path & replace_extension( const string_type & new_extension = string_type() );
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ basic_path & remove_leaf() { return remove_filename(); }
+# endif
+
+ // observers
+ const string_type & string() const { return m_path; }
+ const string_type file_string() const;
+ const string_type directory_string() const { return file_string(); }
+
+ const external_string_type external_file_string() const { return Traits::to_external( *this, file_string() ); }
+ const external_string_type external_directory_string() const { return Traits::to_external( *this, directory_string() ); }
+
+ basic_path root_path() const;
+ string_type root_name() const;
+ string_type root_directory() const;
+ basic_path relative_path() const;
+ basic_path parent_path() const;
+ string_type filename() const;
+ string_type stem() const;
+ string_type extension() const;
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ string_type leaf() const { return filename(); }
+ basic_path branch_path() const { return parent_path(); }
+ bool has_leaf() const { return !m_path.empty(); }
+ bool has_branch_path() const { return !parent_path().empty(); }
+# endif
+
+ bool empty() const { return m_path.empty(); } // name consistent with std containers
+ bool is_complete() const;
+ bool has_root_path() const;
+ bool has_root_name() const;
+ bool has_root_directory() const;
+ bool has_relative_path() const { return !relative_path().empty(); }
+ bool has_filename() const { return !m_path.empty(); }
+ bool has_parent_path() const { return !parent_path().empty(); }
+
+ // iterators
+ class iterator : public boost::iterator_facade<
+ iterator,
+ string_type const,
+ boost::bidirectional_traversal_tag >
+ {
+ private:
+ friend class boost::iterator_core_access;
+ friend class boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits>;
+
+ const string_type & dereference() const
+ { return m_name; }
+ bool equal( const iterator & rhs ) const
+ { return m_path_ptr == rhs.m_path_ptr && m_pos == rhs.m_pos; }
+
+ friend class boost::BOOST_FILESYSTEM_NAMESPACE::detail::iterator_helper<path_type>;
+
+ void increment()
+ {
+ boost::BOOST_FILESYSTEM_NAMESPACE::detail::iterator_helper<path_type>::do_increment(
+ *this );
+ }
+ void decrement()
+ {
+ boost::BOOST_FILESYSTEM_NAMESPACE::detail::iterator_helper<path_type>::do_decrement(
+ *this );
+ }
+
+ string_type m_name; // current element
+ const basic_path * m_path_ptr; // path being iterated over
+ typename string_type::size_type m_pos; // position of name in
+ // path_ptr->string(). The
+ // end() iterator is indicated by
+ // pos == path_ptr->m_path.size()
+ }; // iterator
+
+ typedef iterator const_iterator;
+
+ iterator begin() const;
+ iterator end() const;
+
+ private:
+ // Note: This is an implementation for POSIX and Windows, where there
+ // are only minor differences between generic and native path grammars.
+ // Private members might be quite different in other implementations,
+ // particularly where there were wide differences between portable and
+ // native path formats, or between file_string() and
+ // directory_string() formats, or simply that the implementation
+ // was willing expend additional memory to achieve greater speed for
+ // some operations at the expense of other operations.
+
+ string_type m_path; // invariant: portable path grammar
+ // on Windows, backslashes converted to slashes
+
+# ifdef BOOST_CYGWIN_PATH
+ bool m_cygwin_root; // if present, m_path[0] was slash. note: initialization
+ // done by append
+# endif
+
+ void m_append_separator_if_needed();
+ void m_append( value_type value ); // converts Windows alt_separator
+
+ // Was qualified; como433beta8 reports:
+ // warning #427-D: qualified name is not allowed in member declaration
+ friend class iterator;
+ friend class boost::BOOST_FILESYSTEM_NAMESPACE::detail::iterator_helper<path_type>;
+
+ // Deprecated features ease transition for existing code. Don't use these
+ // in new code.
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ public:
+ typedef bool (*name_check)( const std::string & name );
+ basic_path( const string_type & str, name_check ) { operator/=( str ); }
+ basic_path( const typename string_type::value_type * s, name_check )
+ { operator/=( s );}
+ string_type native_file_string() const { return file_string(); }
+ string_type native_directory_string() const { return directory_string(); }
+ static bool default_name_check_writable() { return false; }
+ static void default_name_check( name_check ) {}
+ static name_check default_name_check() { return 0; }
+ basic_path & canonize();
+ basic_path & normalize();
+# endif
+ };
+
+ // basic_path non-member functions ---------------------------------------//
+
+ template< class String, class Traits >
+ inline void swap( basic_path<String, Traits> & lhs,
+ basic_path<String, Traits> & rhs ) { lhs.swap( rhs ); }
+
+ template< class String, class Traits >
+ bool operator<( const basic_path<String, Traits> & lhs, const basic_path<String, Traits> & rhs )
+ {
+ return std::lexicographical_compare(
+ lhs.begin(), lhs.end(), rhs.begin(), rhs.end() );
+ }
+
+ template< class String, class Traits >
+ bool operator<( const typename basic_path<String, Traits>::string_type::value_type * lhs,
+ const basic_path<String, Traits> & rhs )
+ {
+ basic_path<String, Traits> tmp( lhs );
+ return std::lexicographical_compare(
+ tmp.begin(), tmp.end(), rhs.begin(), rhs.end() );
+ }
+
+ template< class String, class Traits >
+ bool operator<( const typename basic_path<String, Traits>::string_type & lhs,
+ const basic_path<String, Traits> & rhs )
+ {
+ basic_path<String, Traits> tmp( lhs );
+ return std::lexicographical_compare(
+ tmp.begin(), tmp.end(), rhs.begin(), rhs.end() );
+ }
+
+ template< class String, class Traits >
+ bool operator<( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type::value_type * rhs )
+ {
+ basic_path<String, Traits> tmp( rhs );
+ return std::lexicographical_compare(
+ lhs.begin(), lhs.end(), tmp.begin(), tmp.end() );
+ }
+
+ template< class String, class Traits >
+ bool operator<( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type & rhs )
+ {
+ basic_path<String, Traits> tmp( rhs );
+ return std::lexicographical_compare(
+ lhs.begin(), lhs.end(), tmp.begin(), tmp.end() );
+ }
+
+ // operator == uses string compare rather than !(lhs < rhs) && !(rhs < lhs) because
+ // the result is the same yet the direct string compare is much more efficient that
+ // lexicographical_compare, and lexicographical_compare used twice at that.
+
+ template< class String, class Traits >
+ inline bool operator==( const basic_path<String, Traits> & lhs, const basic_path<String, Traits> & rhs )
+ {
+ return lhs.string() == rhs.string();
+ }
+
+ template< class String, class Traits >
+ inline bool operator==( const typename basic_path<String, Traits>::string_type::value_type * lhs,
+ const basic_path<String, Traits> & rhs )
+ {
+ return lhs == rhs.string();
+ }
+
+ template< class String, class Traits >
+ inline bool operator==( const typename basic_path<String, Traits>::string_type & lhs,
+ const basic_path<String, Traits> & rhs )
+ {
+ return lhs == rhs.string();
+ }
+
+ template< class String, class Traits >
+ inline bool operator==( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type::value_type * rhs )
+ {
+ return lhs.string() == rhs;
+ }
+
+ template< class String, class Traits >
+ inline bool operator==( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type & rhs )
+ {
+ return lhs.string() == rhs;
+ }
+
+ template< class String, class Traits >
+ inline bool operator!=( const basic_path<String, Traits> & lhs,
+ const basic_path<String, Traits> & rhs )
+ { return !(lhs == rhs); }
+
+ template< class String, class Traits >
+ inline bool operator!=( const typename basic_path<String,
+ Traits>::string_type::value_type * lhs,
+ const basic_path<String, Traits> & rhs )
+ { return !(lhs == rhs); }
+
+ template< class String, class Traits >
+ inline bool operator!=( const typename basic_path<String, Traits>::string_type & lhs,
+ const basic_path<String, Traits> & rhs )
+ { return !(lhs == rhs); }
+
+ template< class String, class Traits >
+ inline bool operator!=( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type::value_type * rhs )
+ { return !(lhs == rhs); }
+
+ template< class String, class Traits >
+ inline bool operator!=( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type & rhs )
+ { return !(lhs == rhs); }
+
+ template< class String, class Traits >
+ inline bool operator>( const basic_path<String, Traits> & lhs, const basic_path<String, Traits> & rhs ) { return rhs < lhs; }
+
+ template< class String, class Traits >
+ inline bool operator>( const typename basic_path<String, Traits>::string_type::value_type * lhs,
+ const basic_path<String, Traits> & rhs ) { return rhs < basic_path<String, Traits>(lhs); }
+
+ template< class String, class Traits >
+ inline bool operator>( const typename basic_path<String, Traits>::string_type & lhs,
+ const basic_path<String, Traits> & rhs ) { return rhs < basic_path<String, Traits>(lhs); }
+
+ template< class String, class Traits >
+ inline bool operator>( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type::value_type * rhs )
+ { return basic_path<String, Traits>(rhs) < lhs; }
+
+ template< class String, class Traits >
+ inline bool operator>( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type & rhs )
+ { return basic_path<String, Traits>(rhs) < lhs; }
+
+ template< class String, class Traits >
+ inline bool operator<=( const basic_path<String, Traits> & lhs, const basic_path<String, Traits> & rhs ) { return !(rhs < lhs); }
+
+ template< class String, class Traits >
+ inline bool operator<=( const typename basic_path<String, Traits>::string_type::value_type * lhs,
+ const basic_path<String, Traits> & rhs ) { return !(rhs < basic_path<String, Traits>(lhs)); }
+
+ template< class String, class Traits >
+ inline bool operator<=( const typename basic_path<String, Traits>::string_type & lhs,
+ const basic_path<String, Traits> & rhs ) { return !(rhs < basic_path<String, Traits>(lhs)); }
+
+ template< class String, class Traits >
+ inline bool operator<=( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type::value_type * rhs )
+ { return !(basic_path<String, Traits>(rhs) < lhs); }
+
+ template< class String, class Traits >
+ inline bool operator<=( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type & rhs )
+ { return !(basic_path<String, Traits>(rhs) < lhs); }
+
+ template< class String, class Traits >
+ inline bool operator>=( const basic_path<String, Traits> & lhs, const basic_path<String, Traits> & rhs ) { return !(lhs < rhs); }
+
+ template< class String, class Traits >
+ inline bool operator>=( const typename basic_path<String, Traits>::string_type::value_type * lhs,
+ const basic_path<String, Traits> & rhs ) { return !(lhs < basic_path<String, Traits>(rhs)); }
+
+ template< class String, class Traits >
+ inline bool operator>=( const typename basic_path<String, Traits>::string_type & lhs,
+ const basic_path<String, Traits> & rhs ) { return !(lhs < basic_path<String, Traits>(rhs)); }
+
+ template< class String, class Traits >
+ inline bool operator>=( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type::value_type * rhs )
+ { return !(basic_path<String, Traits>(lhs) < rhs); }
+
+ template< class String, class Traits >
+ inline bool operator>=( const basic_path<String, Traits> & lhs,
+ const typename basic_path<String, Traits>::string_type & rhs )
+ { return !(basic_path<String, Traits>(lhs) < rhs); }
+
+ // operator /
+
+ template< class String, class Traits >
+ inline basic_path<String, Traits> operator/(
+ const basic_path<String, Traits> & lhs,
+ const basic_path<String, Traits> & rhs )
+ { return basic_path<String, Traits>( lhs ) /= rhs; }
+
+ template< class String, class Traits >
+ inline basic_path<String, Traits> operator/(
+ const basic_path<String, Traits> & lhs,
+ const typename String::value_type * rhs )
+ { return basic_path<String, Traits>( lhs ) /=
+ basic_path<String, Traits>( rhs ); }
+
+ template< class String, class Traits >
+ inline basic_path<String, Traits> operator/(
+ const basic_path<String, Traits> & lhs, const String & rhs )
+ { return basic_path<String, Traits>( lhs ) /=
+ basic_path<String, Traits>( rhs ); }
+
+ template< class String, class Traits >
+ inline basic_path<String, Traits> operator/(
+ const typename String::value_type * lhs,
+ const basic_path<String, Traits> & rhs )
+ { return basic_path<String, Traits>( lhs ) /= rhs; }
+
+ template< class String, class Traits >
+ inline basic_path<String, Traits> operator/(
+ const String & lhs, const basic_path<String, Traits> & rhs )
+ { return basic_path<String, Traits>( lhs ) /= rhs; }
+
+ // inserters and extractors --------------------------------------------//
+
+// bypass VC++ 7.0 and earlier, and broken Borland compilers
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__BORLANDC__, < 0x610)
+ template< class Path >
+ std::basic_ostream< typename Path::string_type::value_type,
+ typename Path::string_type::traits_type > &
+ operator<<
+ ( std::basic_ostream< typename Path::string_type::value_type,
+ typename Path::string_type::traits_type >& os, const Path & ph )
+ {
+ os << ph.string();
+ return os;
+ }
+
+ template< class Path >
+ std::basic_istream< typename Path::string_type::value_type,
+ typename Path::string_type::traits_type > &
+ operator>>
+ ( std::basic_istream< typename Path::string_type::value_type,
+ typename Path::string_type::traits_type >& is, Path & ph )
+ {
+ typename Path::string_type str;
+ is >> str;
+ ph = str;
+ return is;
+ }
+# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ template< class String, class Traits >
+ std::basic_ostream< BOOST_DEDUCED_TYPENAME String::value_type,
+ BOOST_DEDUCED_TYPENAME String::traits_type > &
+ operator<<
+ ( std::basic_ostream< BOOST_DEDUCED_TYPENAME String::value_type,
+ BOOST_DEDUCED_TYPENAME String::traits_type >& os,
+ const basic_path< String, Traits > & ph )
+ {
+ os << ph.string();
+ return os;
+ }
+
+ template< class String, class Traits >
+ std::basic_istream< BOOST_DEDUCED_TYPENAME String::value_type,
+ BOOST_DEDUCED_TYPENAME String::traits_type > &
+ operator>>
+ ( std::basic_istream< BOOST_DEDUCED_TYPENAME String::value_type,
+ BOOST_DEDUCED_TYPENAME String::traits_type> & is,
+ basic_path< String, Traits > & ph )
+ {
+ String str;
+ is >> str;
+ ph = str;
+ return is;
+ }
+# endif
+
+ // basic_filesystem_error helpers --------------------------------------//
+
+ // Originally choice of implementation was done via specialization of
+ // basic_filesystem_error::what(). Several compilers (GCC, aCC, etc.)
+ // couldn't handle that, so the choice is now accomplished by overloading.
+
+ namespace detail
+ {
+ // BOOST_FILESYSTEM_DECL version works for VC++ but not GCC. Go figure!
+ inline
+ const char * what( const char * sys_err_what,
+ const path & path1_arg, const path & path2_arg, std::string & target )
+ {
+ try
+ {
+ if ( target.empty() )
+ {
+ target = sys_err_what;
+ if ( !path1_arg.empty() )
+ {
+ target += ": \"";
+ target += path1_arg.file_string();
+ target += "\"";
+ }
+ if ( !path2_arg.empty() )
+ {
+ target += ", \"";
+ target += path2_arg.file_string();
+ target += "\"";
+ }
+ }
+ return target.c_str();
+ }
+ catch (...)
+ {
+ return sys_err_what;
+ }
+ }
+
+ template<class Path>
+ const char * what( const char * sys_err_what,
+ const Path & /*path1_arg*/, const Path & /*path2_arg*/, std::string & /*target*/ )
+ {
+ return sys_err_what;
+ }
+ }
+
+ // basic_filesystem_error ----------------------------------------------//
+
+ template<class Path>
+ class basic_filesystem_error : public system::system_error
+ {
+ // see http://www.boost.org/more/error_handling.html for design rationale
+ public:
+ // compiler generates copy constructor and copy assignment
+
+ typedef Path path_type;
+
+ basic_filesystem_error( const std::string & what_arg,
+ system::error_code ec );
+
+ basic_filesystem_error( const std::string & what_arg,
+ const path_type & path1_arg, system::error_code ec );
+
+ basic_filesystem_error( const std::string & what_arg, const path_type & path1_arg,
+ const path_type & path2_arg, system::error_code ec );
+
+ ~basic_filesystem_error() throw() {}
+
+ const path_type & path1() const
+ {
+ static const path_type empty_path;
+ return m_imp_ptr.get() ? m_imp_ptr->m_path1 : empty_path ;
+ }
+ const path_type & path2() const
+ {
+ static const path_type empty_path;
+ return m_imp_ptr.get() ? m_imp_ptr->m_path2 : empty_path ;
+ }
+
+ const char * what() const throw()
+ {
+ if ( !m_imp_ptr.get() )
+ return system::system_error::what();
+ return detail::what( system::system_error::what(), m_imp_ptr->m_path1,
+ m_imp_ptr->m_path2, m_imp_ptr->m_what );
+ }
+
+ private:
+ struct m_imp
+ {
+ path_type m_path1; // may be empty()
+ path_type m_path2; // may be empty()
+ std::string m_what; // not built until needed
+ };
+ boost::shared_ptr<m_imp> m_imp_ptr;
+ };
+
+ typedef basic_filesystem_error<path> filesystem_error;
+
+# ifndef BOOST_FILESYSTEM_NARROW_ONLY
+ typedef basic_filesystem_error<wpath> wfilesystem_error;
+# endif
+
+ // path::name_checks -----------------------------------------------------//
+
+ BOOST_FILESYSTEM_DECL bool portable_posix_name( const std::string & name );
+ BOOST_FILESYSTEM_DECL bool windows_name( const std::string & name );
+ BOOST_FILESYSTEM_DECL bool portable_name( const std::string & name );
+ BOOST_FILESYSTEM_DECL bool portable_directory_name( const std::string & name );
+ BOOST_FILESYSTEM_DECL bool portable_file_name( const std::string & name );
+ BOOST_FILESYSTEM_DECL bool native( const std::string & name );
+ inline bool no_check( const std::string & )
+ { return true; }
+
+// implementation -----------------------------------------------------------//
+
+ namespace detail
+ {
+
+ // is_separator helper ------------------------------------------------//
+
+ template<class Path>
+ inline bool is_separator( typename Path::string_type::value_type c )
+ {
+ return c == slash<Path>::value
+# ifdef BOOST_WINDOWS_PATH
+ || c == path_alt_separator<Path>::value
+# endif
+ ;
+ }
+
+ // filename_pos helper ----------------------------------------------------//
+
+ template<class String, class Traits>
+ typename String::size_type filename_pos(
+ const String & str, // precondition: portable generic path grammar
+ typename String::size_type end_pos ) // end_pos is past-the-end position
+ // return 0 if str itself is filename (or empty)
+ {
+ typedef typename
+ boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits> path_type;
+
+ // case: "//"
+ if ( end_pos == 2
+ && str[0] == slash<path_type>::value
+ && str[1] == slash<path_type>::value ) return 0;
+
+ // case: ends in "/"
+ if ( end_pos && str[end_pos-1] == slash<path_type>::value )
+ return end_pos-1;
+
+ // set pos to start of last element
+ typename String::size_type pos(
+ str.find_last_of( slash<path_type>::value, end_pos-1 ) );
+# ifdef BOOST_WINDOWS_PATH
+ if ( pos == String::npos )
+ pos = str.find_last_of( path_alt_separator<path_type>::value, end_pos-1 );
+ if ( pos == String::npos )
+ pos = str.find_last_of( colon<path_type>::value, end_pos-2 );
+# endif
+
+ return ( pos == String::npos // path itself must be a filename (or empty)
+ || (pos == 1 && str[0] == slash<path_type>::value) ) // or net
+ ? 0 // so filename is entire string
+ : pos + 1; // or starts after delimiter
+ }
+
+ // first_element helper -----------------------------------------------//
+ // sets pos and len of first element, excluding extra separators
+ // if src.empty(), sets pos,len, to 0,0.
+
+ template<class String, class Traits>
+ void first_element(
+ const String & src, // precondition: portable generic path grammar
+ typename String::size_type & element_pos,
+ typename String::size_type & element_size,
+# if !BOOST_WORKAROUND( BOOST_MSVC, <= 1310 ) // VC++ 7.1
+ typename String::size_type size = String::npos
+# else
+ typename String::size_type size = -1
+# endif
+ )
+ {
+ if ( size == String::npos ) size = src.size();
+ element_pos = 0;
+ element_size = 0;
+ if ( src.empty() ) return;
+
+ typedef typename boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits> path_type;
+
+ typename String::size_type cur(0);
+
+ // deal with // [network]
+ if ( size >= 2 && src[0] == slash<path_type>::value
+ && src[1] == slash<path_type>::value
+ && (size == 2
+ || src[2] != slash<path_type>::value) )
+ {
+ cur += 2;
+ element_size += 2;
+ }
+
+ // leading (not non-network) separator
+ else if ( src[0] == slash<path_type>::value )
+ {
+ ++element_size;
+ // bypass extra leading separators
+ while ( cur+1 < size
+ && src[cur+1] == slash<path_type>::value )
+ {
+ ++cur;
+ ++element_pos;
+ }
+ return;
+ }
+
+ // at this point, we have either a plain name, a network name,
+ // or (on Windows only) a device name
+
+ // find the end
+ while ( cur < size
+# ifdef BOOST_WINDOWS_PATH
+ && src[cur] != colon<path_type>::value
+# endif
+ && src[cur] != slash<path_type>::value )
+ {
+ ++cur;
+ ++element_size;
+ }
+
+# ifdef BOOST_WINDOWS_PATH
+ if ( cur == size ) return;
+ // include device delimiter
+ if ( src[cur] == colon<path_type>::value )
+ { ++element_size; }
+# endif
+
+ return;
+ }
+
+ // root_directory_start helper ----------------------------------------//
+
+ template<class String, class Traits>
+ typename String::size_type root_directory_start(
+ const String & s, // precondition: portable generic path grammar
+ typename String::size_type size )
+ // return npos if no root_directory found
+ {
+ typedef typename boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits> path_type;
+
+# ifdef BOOST_WINDOWS_PATH
+ // case "c:/"
+ if ( size > 2
+ && s[1] == colon<path_type>::value
+ && s[2] == slash<path_type>::value ) return 2;
+# endif
+
+ // case "//"
+ if ( size == 2
+ && s[0] == slash<path_type>::value
+ && s[1] == slash<path_type>::value ) return String::npos;
+
+ // case "//net {/}"
+ if ( size > 3
+ && s[0] == slash<path_type>::value
+ && s[1] == slash<path_type>::value
+ && s[2] != slash<path_type>::value )
+ {
+ typename String::size_type pos(
+ s.find( slash<path_type>::value, 2 ) );
+ return pos < size ? pos : String::npos;
+ }
+
+ // case "/"
+ if ( size > 0 && s[0] == slash<path_type>::value ) return 0;
+
+ return String::npos;
+ }
+
+ // is_non_root_slash helper -------------------------------------------//
+
+ template<class String, class Traits>
+ bool is_non_root_slash( const String & str,
+ typename String::size_type pos ) // pos is position of the slash
+ {
+ typedef typename
+ boost::BOOST_FILESYSTEM_NAMESPACE::basic_path<String, Traits>
+ path_type;
+
+ assert( !str.empty() && str[pos] == slash<path_type>::value
+ && "precondition violation" );
+
+ // subsequent logic expects pos to be for leftmost slash of a set
+ while ( pos > 0 && str[pos-1] == slash<path_type>::value )
+ --pos;
+
+ return pos != 0
+ && (pos <= 2 || str[1] != slash<path_type>::value
+ || str.find( slash<path_type>::value, 2 ) != pos)
+# ifdef BOOST_WINDOWS_PATH
+ && (pos !=2 || str[1] != colon<path_type>::value)
+# endif
+ ;
+ }
+ } // namespace detail
+
+ // decomposition functions ----------------------------------------------//
+
+ template<class String, class Traits>
+ String basic_path<String, Traits>::filename() const
+ {
+ typename String::size_type end_pos(
+ detail::filename_pos<String, Traits>( m_path, m_path.size() ) );
+ return (m_path.size()
+ && end_pos
+ && m_path[end_pos] == slash<path_type>::value
+ && detail::is_non_root_slash< String, Traits >(m_path, end_pos))
+ ? String( 1, dot<path_type>::value )
+ : m_path.substr( end_pos );
+ }
+
+ template<class String, class Traits>
+ String basic_path<String, Traits>::stem() const
+ {
+ string_type name = filename();
+ typename string_type::size_type n = name.rfind('.');
+ return name.substr(0, n);
+ }
+
+ template<class String, class Traits>
+ String basic_path<String, Traits>::extension() const
+ {
+ string_type name = filename();
+ typename string_type::size_type n = name.rfind('.');
+ if (n != string_type::npos)
+ return name.substr(n);
+ else
+ return string_type();
+ }
+
+ template<class String, class Traits>
+ basic_path<String, Traits> basic_path<String, Traits>::parent_path() const
+ {
+ typename String::size_type end_pos(
+ detail::filename_pos<String, Traits>( m_path, m_path.size() ) );
+
+ bool filename_was_separator( m_path.size()
+ && m_path[end_pos] == slash<path_type>::value );
+
+ // skip separators unless root directory
+ typename string_type::size_type root_dir_pos( detail::root_directory_start
+ <string_type, traits_type>( m_path, end_pos ) );
+ for ( ;
+ end_pos > 0
+ && (end_pos-1) != root_dir_pos
+ && m_path[end_pos-1] == slash<path_type>::value
+ ;
+ --end_pos ) {}
+
+ return (end_pos == 1 && root_dir_pos == 0 && filename_was_separator)
+ ? path_type()
+ : path_type( m_path.substr( 0, end_pos ) );
+ }
+
+ template<class String, class Traits>
+ basic_path<String, Traits> basic_path<String, Traits>::relative_path() const
+ {
+ iterator itr( begin() );
+ for ( ; itr.m_pos != m_path.size()
+ && (itr.m_name[0] == slash<path_type>::value
+# ifdef BOOST_WINDOWS_PATH
+ || itr.m_name[itr.m_name.size()-1]
+ == colon<path_type>::value
+# endif
+ ); ++itr ) {}
+
+ return basic_path<String, Traits>( m_path.substr( itr.m_pos ) );
+ }
+
+ template<class String, class Traits>
+ String basic_path<String, Traits>::root_name() const
+ {
+ iterator itr( begin() );
+
+ return ( itr.m_pos != m_path.size()
+ && (
+ ( itr.m_name.size() > 1
+ && itr.m_name[0] == slash<path_type>::value
+ && itr.m_name[1] == slash<path_type>::value
+ )
+# ifdef BOOST_WINDOWS_PATH
+ || itr.m_name[itr.m_name.size()-1]
+ == colon<path_type>::value
+# endif
+ ) )
+ ? *itr
+ : String();
+ }
+
+ template<class String, class Traits>
+ String basic_path<String, Traits>::root_directory() const
+ {
+ typename string_type::size_type start(
+ detail::root_directory_start<String, Traits>( m_path, m_path.size() ) );
+
+ return start == string_type::npos
+ ? string_type()
+ : m_path.substr( start, 1 );
+ }
+
+ template<class String, class Traits>
+ basic_path<String, Traits> basic_path<String, Traits>::root_path() const
+ {
+ // even on POSIX, root_name() is non-empty() on network paths
+ return basic_path<String, Traits>( root_name() ) /= root_directory();
+ }
+
+ // path query functions -------------------------------------------------//
+
+ template<class String, class Traits>
+ inline bool basic_path<String, Traits>::is_complete() const
+ {
+# ifdef BOOST_WINDOWS_PATH
+ return has_root_name() && has_root_directory();
+# else
+ return has_root_directory();
+# endif
+ }
+
+ template<class String, class Traits>
+ inline bool basic_path<String, Traits>::has_root_path() const
+ {
+ return !root_path().empty();
+ }
+
+ template<class String, class Traits>
+ inline bool basic_path<String, Traits>::has_root_name() const
+ {
+ return !root_name().empty();
+ }
+
+ template<class String, class Traits>
+ inline bool basic_path<String, Traits>::has_root_directory() const
+ {
+ return !root_directory().empty();
+ }
+
+ // append ---------------------------------------------------------------//
+
+ template<class String, class Traits>
+ void basic_path<String, Traits>::m_append_separator_if_needed()
+ // requires: !empty()
+ {
+ if (
+# ifdef BOOST_WINDOWS_PATH
+ *(m_path.end()-1) != colon<path_type>::value &&
+# endif
+ *(m_path.end()-1) != slash<path_type>::value )
+ {
+ m_path += slash<path_type>::value;
+ }
+ }
+
+ template<class String, class Traits>
+ void basic_path<String, Traits>::m_append( value_type value )
+ {
+# ifdef BOOST_CYGWIN_PATH
+ if ( m_path.empty() ) m_cygwin_root = (value == slash<path_type>::value);
+# endif
+
+# ifdef BOOST_WINDOWS_PATH
+ // for BOOST_WINDOWS_PATH, convert alt_separator ('\') to separator ('/')
+ m_path += ( value == path_alt_separator<path_type>::value
+ ? slash<path_type>::value
+ : value );
+# else
+ m_path += value;
+# endif
+ }
+
+ // except that it wouldn't work for BOOST_NO_MEMBER_TEMPLATES compilers,
+ // the append() member template could replace this code.
+ template<class String, class Traits>
+ basic_path<String, Traits> & basic_path<String, Traits>::operator /=
+ ( const value_type * next_p )
+ {
+ // ignore escape sequence on POSIX or Windows
+ if ( *next_p == slash<path_type>::value
+ && *(next_p+1) == slash<path_type>::value
+ && *(next_p+2) == colon<path_type>::value ) next_p += 3;
+
+ // append slash<path_type>::value if needed
+ if ( !empty() && *next_p != 0
+ && !detail::is_separator<path_type>( *next_p ) )
+ { m_append_separator_if_needed(); }
+
+ for ( ; *next_p != 0; ++next_p ) m_append( *next_p );
+ return *this;
+ }
+
+# ifndef BOOST_NO_MEMBER_TEMPLATES
+ template<class String, class Traits> template <class InputIterator>
+ basic_path<String, Traits> & basic_path<String, Traits>::append(
+ InputIterator first, InputIterator last )
+ {
+ // append slash<path_type>::value if needed
+ if ( !empty() && first != last
+ && !detail::is_separator<path_type>( *first ) )
+ { m_append_separator_if_needed(); }
+
+ // song-and-dance to avoid violating InputIterator requirements
+ // (which prohibit lookahead) in detecting a possible escape sequence
+ // (escape sequences are simply ignored on POSIX and Windows)
+ bool was_escape_sequence(true);
+ std::size_t append_count(0);
+ typename String::size_type initial_pos( m_path.size() );
+
+ for ( ; first != last && *first; ++first )
+ {
+ if ( append_count == 0 && *first != slash<path_type>::value )
+ was_escape_sequence = false;
+ if ( append_count == 1 && *first != slash<path_type>::value )
+ was_escape_sequence = false;
+ if ( append_count == 2 && *first != colon<path_type>::value )
+ was_escape_sequence = false;
+ m_append( *first );
+ ++append_count;
+ }
+
+ // erase escape sequence if any
+ if ( was_escape_sequence && append_count >= 3 )
+ m_path.erase( initial_pos, 3 );
+
+ return *this;
+ }
+# endif
+
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+
+ // canonize ------------------------------------------------------------//
+
+ template<class String, class Traits>
+ basic_path<String, Traits> & basic_path<String, Traits>::canonize()
+ {
+ static const typename string_type::value_type dot_str[]
+ = { dot<path_type>::value, 0 };
+
+ if ( m_path.empty() ) return *this;
+
+ path_type temp;
+
+ for ( iterator itr( begin() ); itr != end(); ++itr )
+ {
+ temp /= *itr;
+ };
+
+ if ( temp.empty() ) temp /= dot_str;
+ m_path = temp.m_path;
+ return *this;
+ }
+
+ // normalize ------------------------------------------------------------//
+
+ template<class String, class Traits>
+ basic_path<String, Traits> & basic_path<String, Traits>::normalize()
+ {
+ static const typename string_type::value_type dot_str[]
+ = { dot<path_type>::value, 0 };
+
+ if ( m_path.empty() ) return *this;
+
+ path_type temp;
+ iterator start( begin() );
+ iterator last( end() );
+ iterator stop( last-- );
+ for ( iterator itr( start ); itr != stop; ++itr )
+ {
+ // ignore "." except at start and last
+ if ( itr->size() == 1
+ && (*itr)[0] == dot<path_type>::value
+ && itr != start
+ && itr != last ) continue;
+
+ // ignore a name and following ".."
+ if ( !temp.empty()
+ && itr->size() == 2
+ && (*itr)[0] == dot<path_type>::value
+ && (*itr)[1] == dot<path_type>::value ) // dot dot
+ {
+ string_type lf( temp.filename() );
+ if ( lf.size() > 0
+ && (lf.size() != 1
+ || (lf[0] != dot<path_type>::value
+ && lf[0] != slash<path_type>::value))
+ && (lf.size() != 2
+ || (lf[0] != dot<path_type>::value
+ && lf[1] != dot<path_type>::value
+# ifdef BOOST_WINDOWS_PATH
+ && lf[1] != colon<path_type>::value
+# endif
+ )
+ )
+ )
+ {
+ temp.remove_filename();
+ // if not root directory, must also remove "/" if any
+ if ( temp.m_path.size() > 0
+ && temp.m_path[temp.m_path.size()-1]
+ == slash<path_type>::value )
+ {
+ typename string_type::size_type rds(
+ detail::root_directory_start<String,Traits>( temp.m_path,
+ temp.m_path.size() ) );
+ if ( rds == string_type::npos
+ || rds != temp.m_path.size()-1 )
+ { temp.m_path.erase( temp.m_path.size()-1 ); }
+ }
+
+ iterator next( itr );
+ if ( temp.empty() && ++next != stop
+ && next == last && *last == dot_str ) temp /= dot_str;
+ continue;
+ }
+ }
+
+ temp /= *itr;
+ };
+
+ if ( temp.empty() ) temp /= dot_str;
+ m_path = temp.m_path;
+ return *this;
+ }
+
+# endif
+
+ // modifiers ------------------------------------------------------------//
+
+ template<class String, class Traits>
+ basic_path<String, Traits> & basic_path<String, Traits>::remove_filename()
+ {
+ m_path.erase(
+ detail::filename_pos<String, Traits>( m_path, m_path.size() ) );
+ return *this;
+ }
+
+ template<class String, class Traits>
+ basic_path<String, Traits> &
+ basic_path<String, Traits>::replace_extension( const string_type & new_ext )
+ {
+ // erase existing extension if any
+ string_type old_ext = extension();
+ if ( !old_ext.empty() )
+ m_path.erase( m_path.size() - old_ext.size() );
+
+ if ( !new_ext.empty() && new_ext[0] != dot<path_type>::value )
+ m_path += dot<path_type>::value;
+
+ m_path += new_ext;
+
+ return *this;
+ }
+
+
+ // path conversion functions --------------------------------------------//
+
+ template<class String, class Traits>
+ const String
+ basic_path<String, Traits>::file_string() const
+ {
+# ifdef BOOST_WINDOWS_PATH
+ // for Windows, use the alternate separator, and bypass extra
+ // root separators
+
+ typename string_type::size_type root_dir_start(
+ detail::root_directory_start<String, Traits>( m_path, m_path.size() ) );
+ bool in_root( root_dir_start != string_type::npos );
+ String s;
+ for ( typename string_type::size_type pos( 0 );
+ pos != m_path.size(); ++pos )
+ {
+ // special case // [net]
+ if ( pos == 0 && m_path.size() > 1
+ && m_path[0] == slash<path_type>::value
+ && m_path[1] == slash<path_type>::value
+ && ( m_path.size() == 2
+ || !detail::is_separator<path_type>( m_path[2] )
+ ) )
+ {
+ ++pos;
+ s += path_alt_separator<path_type>::value;
+ s += path_alt_separator<path_type>::value;
+ continue;
+ }
+
+ // bypass extra root separators
+ if ( in_root )
+ {
+ if ( s.size() > 0
+ && s[s.size()-1] == path_alt_separator<path_type>::value
+ && m_path[pos] == slash<path_type>::value
+ ) continue;
+ }
+
+ if ( m_path[pos] == slash<path_type>::value )
+ s += path_alt_separator<path_type>::value;
+ else
+ s += m_path[pos];
+
+ if ( pos > root_dir_start
+ && m_path[pos] == slash<path_type>::value )
+ { in_root = false; }
+ }
+# ifdef BOOST_CYGWIN_PATH
+ if ( m_cygwin_root ) s[0] = slash<path_type>::value;
+# endif
+ return s;
+# else
+ return m_path;
+# endif
+ }
+
+ // iterator functions ---------------------------------------------------//
+
+ template<class String, class Traits>
+ typename basic_path<String, Traits>::iterator basic_path<String, Traits>::begin() const
+ {
+ iterator itr;
+ itr.m_path_ptr = this;
+ typename string_type::size_type element_size;
+ detail::first_element<String, Traits>( m_path, itr.m_pos, element_size );
+ itr.m_name = m_path.substr( itr.m_pos, element_size );
+ return itr;
+ }
+
+ template<class String, class Traits>
+ typename basic_path<String, Traits>::iterator basic_path<String, Traits>::end() const
+ {
+ iterator itr;
+ itr.m_path_ptr = this;
+ itr.m_pos = m_path.size();
+ return itr;
+ }
+
+ namespace detail
+ {
+ // do_increment ------------------------------------------------------//
+
+ template<class Path>
+ void iterator_helper<Path>::do_increment( iterator & itr )
+ {
+ 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()" );
+
+ bool was_net( itr.m_name.size() > 2
+ && itr.m_name[0] == slash<Path>::value
+ && itr.m_name[1] == slash<Path>::value
+ && itr.m_name[2] != slash<Path>::value );
+
+ // increment to position past current element
+ itr.m_pos += itr.m_name.size();
+
+ // if end reached, create end iterator
+ if ( itr.m_pos == itr.m_path_ptr->m_path.size() )
+ {
+ itr.m_name.erase( itr.m_name.begin(), itr.m_name.end() ); // VC++ 6.0 lib didn't supply clear()
+ return;
+ }
+
+ // process separator (Windows drive spec is only case not a separator)
+ if ( itr.m_path_ptr->m_path[itr.m_pos] == slash<Path>::value )
+ {
+ // detect root directory
+ if ( was_net
+ # ifdef BOOST_WINDOWS_PATH
+ // case "c:/"
+ || itr.m_name[itr.m_name.size()-1] == colon<Path>::value
+ # endif
+ )
+ {
+ itr.m_name = slash<Path>::value;
+ return;
+ }
+
+ // bypass separators
+ while ( itr.m_pos != itr.m_path_ptr->m_path.size()
+ && itr.m_path_ptr->m_path[itr.m_pos] == slash<Path>::value )
+ { ++itr.m_pos; }
+
+ // detect trailing separator, and treat it as ".", per POSIX spec
+ if ( itr.m_pos == itr.m_path_ptr->m_path.size()
+ && detail::is_non_root_slash< string_type, traits_type >(
+ itr.m_path_ptr->m_path, itr.m_pos-1 ) )
+ {
+ --itr.m_pos;
+ itr.m_name = dot<Path>::value;
+ return;
+ }
+ }
+
+ // get next element
+ typename string_type::size_type end_pos(
+ itr.m_path_ptr->m_path.find( slash<Path>::value, itr.m_pos ) );
+ itr.m_name = itr.m_path_ptr->m_path.substr( itr.m_pos, end_pos - itr.m_pos );
+ }
+
+ // do_decrement ------------------------------------------------------//
+
+ template<class Path>
+ void iterator_helper<Path>::do_decrement( iterator & itr )
+ {
+ assert( itr.m_pos && "basic_path::iterator decrement past begin()" );
+
+ typedef typename Path::string_type string_type;
+ typedef typename Path::traits_type traits_type;
+
+ typename string_type::size_type end_pos( itr.m_pos );
+
+ typename string_type::size_type root_dir_pos(
+ detail::root_directory_start<string_type, traits_type>(
+ itr.m_path_ptr->m_path, end_pos ) );
+
+ // if at end and there was a trailing non-root '/', return "."
+ if ( itr.m_pos == itr.m_path_ptr->m_path.size()
+ && itr.m_path_ptr->m_path.size() > 1
+ && itr.m_path_ptr->m_path[itr.m_pos-1] == slash<Path>::value
+ && detail::is_non_root_slash< string_type, traits_type >(
+ itr.m_path_ptr->m_path, itr.m_pos-1 )
+ )
+ {
+ --itr.m_pos;
+ itr.m_name = dot<Path>::value;
+ return;
+ }
+
+ // skip separators unless root directory
+ for (
+ ;
+ end_pos > 0
+ && (end_pos-1) != root_dir_pos
+ && itr.m_path_ptr->m_path[end_pos-1] == slash<Path>::value
+ ;
+ --end_pos ) {}
+
+ itr.m_pos = detail::filename_pos<string_type, traits_type>
+ ( itr.m_path_ptr->m_path, end_pos );
+ itr.m_name = itr.m_path_ptr->m_path.substr( itr.m_pos, end_pos - itr.m_pos );
+ }
+ } // namespace detail
+
+ // basic_filesystem_error implementation --------------------------------//
+
+ template<class Path>
+ basic_filesystem_error<Path>::basic_filesystem_error(
+ const std::string & what_arg, system::error_code ec )
+ : system::system_error(ec, what_arg)
+ {
+ try
+ {
+ m_imp_ptr.reset( new m_imp );
+ }
+ catch (...) { m_imp_ptr.reset(); }
+ }
+
+ template<class Path>
+ basic_filesystem_error<Path>::basic_filesystem_error(
+ const std::string & what_arg, const path_type & path1_arg,
+ system::error_code ec )
+ : system::system_error(ec, what_arg)
+ {
+ try
+ {
+ m_imp_ptr.reset( new m_imp );
+ m_imp_ptr->m_path1 = path1_arg;
+ }
+ catch (...) { m_imp_ptr.reset(); }
+ }
+
+ template<class Path>
+ basic_filesystem_error<Path>::basic_filesystem_error(
+ const std::string & what_arg, const path_type & path1_arg,
+ const path_type & path2_arg, system::error_code ec )
+ : system::system_error(ec, what_arg)
+ {
+ try
+ {
+ m_imp_ptr.reset( new m_imp );
+ m_imp_ptr->m_path1 = path1_arg;
+ m_imp_ptr->m_path2 = path2_arg;
+ }
+ catch (...) { m_imp_ptr.reset(); }
+ }
+
+ } // namespace BOOST_FILESYSTEM_NAMESPACE
+} // namespace boost
+
+#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
+
+#endif // BOOST_FILESYSTEM_PATH_HPP
diff --git a/3rdParty/Boost/boost/foreach.hpp b/3rdParty/Boost/boost/foreach.hpp
new file mode 100644
index 0000000..c384cee
--- /dev/null
+++ b/3rdParty/Boost/boost/foreach.hpp
@@ -0,0 +1,1099 @@
+///////////////////////////////////////////////////////////////////////////////
+// foreach.hpp header file
+//
+// Copyright 2004 Eric Niebler.
+// Distributed under the 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/foreach for documentation
+//
+// Credits:
+// Anson Tsao - for the initial inspiration and several good suggestions.
+// Thorsten Ottosen - for Boost.Range, and for suggesting a way to detect
+// const-qualified rvalues at compile time on VC7.1+
+// Russell Hind - For help porting to Borland
+// Alisdair Meredith - For help porting to Borland
+// Stefan Slapeta - For help porting to Intel
+// David Jenkins - For help finding a Microsoft Code Analysis bug
+
+#ifndef BOOST_FOREACH
+
+// MS compatible compilers support #pragma once
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <cstddef>
+#include <utility> // for std::pair
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+// Some compilers let us detect even const-qualified rvalues at compile-time
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1310) && !defined(_PREFAST_) \
+ || (BOOST_WORKAROUND(__GNUC__, >= 4) && !defined(BOOST_INTEL)) \
+ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ >= 4) && !defined(BOOST_INTEL))
+# define BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION
+#else
+// Some compilers allow temporaries to be bound to non-const references.
+// These compilers make it impossible to for BOOST_FOREACH to detect
+// temporaries and avoid reevaluation of the collection expression.
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__BORLANDC__, < 0x593) \
+ || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x570)) \
+ || BOOST_WORKAROUND(__DECCXX_VER, <= 60590042)
+# define BOOST_FOREACH_NO_RVALUE_DETECTION
+# endif
+// Some compilers do not correctly implement the lvalue/rvalue conversion
+// rules of the ternary conditional operator.
+# if defined(BOOST_FOREACH_NO_RVALUE_DETECTION) \
+ || defined(BOOST_NO_SFINAE) \
+ || BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
+ || BOOST_WORKAROUND(BOOST_INTEL_WIN, BOOST_TESTED_AT(1400)) \
+ || BOOST_WORKAROUND(__GNUC__, < 3) \
+ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 2)) \
+ || (BOOST_WORKAROUND(__GNUC__, == 3) && (__GNUC_MINOR__ <= 3) && defined(__APPLE_CC__)) \
+ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3206)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590))
+# define BOOST_FOREACH_NO_CONST_RVALUE_DETECTION
+# else
+# define BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+# endif
+#endif
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/logical.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/rend.hpp>
+#include <boost/range/rbegin.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/reverse_iterator.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_abstract.hpp>
+#include <boost/type_traits/is_base_and_derived.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/utility/addressof.hpp>
+
+#ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+# include <new>
+# include <boost/aligned_storage.hpp>
+# include <boost/utility/enable_if.hpp>
+# include <boost/type_traits/remove_const.hpp>
+#endif
+
+// This must be at global scope, hence the uglified name
+enum boost_foreach_argument_dependent_lookup_hack
+{
+ boost_foreach_argument_dependent_lookup_hack_value
+};
+
+namespace boost
+{
+
+// forward declarations for iterator_range
+template<typename T>
+class iterator_range;
+
+// forward declarations for sub_range
+template<typename T>
+class sub_range;
+
+namespace foreach
+{
+ ///////////////////////////////////////////////////////////////////////////////
+ // in_range
+ //
+ template<typename T>
+ inline std::pair<T, T> in_range(T begin, T end)
+ {
+ return std::make_pair(begin, end);
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // boost::foreach::tag
+ //
+ typedef boost_foreach_argument_dependent_lookup_hack tag;
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // boost::foreach::is_lightweight_proxy
+ // Specialize this for user-defined collection types if they are inexpensive to copy.
+ // This tells BOOST_FOREACH it can avoid the rvalue/lvalue detection stuff.
+ template<typename T>
+ struct is_lightweight_proxy
+ : boost::mpl::false_
+ {
+ };
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // boost::foreach::is_noncopyable
+ // Specialize this for user-defined collection types if they cannot be copied.
+ // This also tells BOOST_FOREACH to avoid the rvalue/lvalue detection stuff.
+ template<typename T>
+ struct is_noncopyable
+ #if !defined(BOOST_BROKEN_IS_BASE_AND_DERIVED) && !defined(BOOST_NO_IS_ABSTRACT)
+ : boost::mpl::or_<
+ boost::is_abstract<T>
+ , boost::is_base_and_derived<boost::noncopyable, T>
+ >
+ #elif !defined(BOOST_BROKEN_IS_BASE_AND_DERIVED)
+ : boost::is_base_and_derived<boost::noncopyable, T>
+ #elif !defined(BOOST_NO_IS_ABSTRACT)
+ : boost::is_abstract<T>
+ #else
+ : boost::mpl::false_
+ #endif
+ {
+ };
+
+} // namespace foreach
+
+} // namespace boost
+
+// vc6/7 needs help ordering the following overloads
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_FOREACH_TAG_DEFAULT ...
+#else
+# define BOOST_FOREACH_TAG_DEFAULT boost::foreach::tag
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// boost_foreach_is_lightweight_proxy
+// Another customization point for the is_lightweight_proxy optimization,
+// this one works on legacy compilers. Overload boost_foreach_is_lightweight_proxy
+// at the global namespace for your type.
+template<typename T>
+inline boost::foreach::is_lightweight_proxy<T> *
+boost_foreach_is_lightweight_proxy(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
+
+template<typename T>
+inline boost::mpl::true_ *
+boost_foreach_is_lightweight_proxy(std::pair<T, T> *&, boost::foreach::tag) { return 0; }
+
+template<typename T>
+inline boost::mpl::true_ *
+boost_foreach_is_lightweight_proxy(boost::iterator_range<T> *&, boost::foreach::tag) { return 0; }
+
+template<typename T>
+inline boost::mpl::true_ *
+boost_foreach_is_lightweight_proxy(boost::sub_range<T> *&, boost::foreach::tag) { return 0; }
+
+template<typename T>
+inline boost::mpl::true_ *
+boost_foreach_is_lightweight_proxy(T **&, boost::foreach::tag) { return 0; }
+
+///////////////////////////////////////////////////////////////////////////////
+// boost_foreach_is_noncopyable
+// Another customization point for the is_noncopyable trait,
+// this one works on legacy compilers. Overload boost_foreach_is_noncopyable
+// at the global namespace for your type.
+template<typename T>
+inline boost::foreach::is_noncopyable<T> *
+boost_foreach_is_noncopyable(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }
+
+namespace boost
+{
+
+namespace foreach_detail_
+{
+
+///////////////////////////////////////////////////////////////////////////////
+// Define some utilities for assessing the properties of expressions
+//
+template<typename Bool1, typename Bool2>
+inline boost::mpl::and_<Bool1, Bool2> *and_(Bool1 *, Bool2 *) { return 0; }
+
+template<typename Bool1, typename Bool2, typename Bool3>
+inline boost::mpl::and_<Bool1, Bool2, Bool3> *and_(Bool1 *, Bool2 *, Bool3 *) { return 0; }
+
+template<typename Bool1, typename Bool2>
+inline boost::mpl::or_<Bool1, Bool2> *or_(Bool1 *, Bool2 *) { return 0; }
+
+template<typename Bool1, typename Bool2, typename Bool3>
+inline boost::mpl::or_<Bool1, Bool2, Bool3> *or_(Bool1 *, Bool2 *, Bool3 *) { return 0; }
+
+template<typename Bool>
+inline boost::mpl::not_<Bool> *not_(Bool *) { return 0; }
+
+template<typename T>
+inline boost::mpl::false_ *is_rvalue_(T &, int) { return 0; }
+
+template<typename T>
+inline boost::mpl::true_ *is_rvalue_(T const &, ...) { return 0; }
+
+template<typename T>
+inline boost::is_array<T> *is_array_(T const &) { return 0; }
+
+template<typename T>
+inline boost::is_const<T> *is_const_(T &) { return 0; }
+
+#ifndef BOOST_FOREACH_NO_RVALUE_DETECTION
+template<typename T>
+inline boost::mpl::true_ *is_const_(T const &) { return 0; }
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// auto_any_t/auto_any
+// General utility for putting an object of any type into automatic storage
+struct auto_any_base
+{
+ // auto_any_base must evaluate to false in boolean context so that
+ // they can be declared in if() statements.
+ operator bool() const
+ {
+ return false;
+ }
+};
+
+template<typename T>
+struct auto_any : auto_any_base
+{
+ auto_any(T const &t)
+ : item(t)
+ {
+ }
+
+ // temporaries of type auto_any will be bound to const auto_any_base
+ // references, but we still want to be able to mutate the stored
+ // data, so declare it as mutable.
+ mutable T item;
+};
+
+typedef auto_any_base const &auto_any_t;
+
+template<typename T, typename C>
+inline BOOST_DEDUCED_TYPENAME boost::mpl::if_<C, T const, T>::type &auto_any_cast(auto_any_t a)
+{
+ return static_cast<auto_any<T> const &>(a).item;
+}
+
+typedef boost::mpl::true_ const_;
+
+///////////////////////////////////////////////////////////////////////////////
+// type2type
+//
+template<typename T, typename C = boost::mpl::false_>
+struct type2type
+ : boost::mpl::if_<C, T const, T>
+{
+};
+
+template<typename T>
+struct wrap_cstr
+{
+ typedef T type;
+};
+
+template<>
+struct wrap_cstr<char *>
+{
+ typedef wrap_cstr<char *> type;
+ typedef char *iterator;
+ typedef char *const_iterator;
+};
+
+template<>
+struct wrap_cstr<char const *>
+{
+ typedef wrap_cstr<char const *> type;
+ typedef char const *iterator;
+ typedef char const *const_iterator;
+};
+
+template<>
+struct wrap_cstr<wchar_t *>
+{
+ typedef wrap_cstr<wchar_t *> type;
+ typedef wchar_t *iterator;
+ typedef wchar_t *const_iterator;
+};
+
+template<>
+struct wrap_cstr<wchar_t const *>
+{
+ typedef wrap_cstr<wchar_t const *> type;
+ typedef wchar_t const *iterator;
+ typedef wchar_t const *const_iterator;
+};
+
+template<typename T>
+struct is_char_array
+ : mpl::and_<
+ is_array<T>
+ , mpl::or_<
+ is_convertible<T, char const *>
+ , is_convertible<T, wchar_t const *>
+ >
+ >
+{};
+
+template<typename T, typename C = boost::mpl::false_>
+struct foreach_iterator
+{
+ // **** READ THIS IF YOUR COMPILE BREAKS HERE ****
+ //
+ // There is an ambiguity about how to iterate over arrays of char and wchar_t.
+ // Should the last array element be treated as a null terminator to be skipped, or
+ // is it just like any other element in the array? To fix the problem, you must
+ // say which behavior you want.
+ //
+ // To treat the container as a null-terminated string, merely cast it to a
+ // char const *, as in BOOST_FOREACH( char ch, (char const *)"hello" ) ...
+ //
+ // To treat the container as an array, use boost::as_array() in <boost/range/as_array.hpp>,
+ // as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ...
+ #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ BOOST_MPL_ASSERT_MSG( (!is_char_array<T>::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING, (T&) );
+ #endif
+
+ // If the type is a pointer to a null terminated string (as opposed
+ // to an array type), there is no ambiguity.
+ typedef BOOST_DEDUCED_TYPENAME wrap_cstr<T>::type container;
+
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if<
+ C
+ , range_const_iterator<container>
+ , range_mutable_iterator<container>
+ >::type type;
+};
+
+
+template<typename T, typename C = boost::mpl::false_>
+struct foreach_reverse_iterator
+{
+ // **** READ THIS IF YOUR COMPILE BREAKS HERE ****
+ //
+ // There is an ambiguity about how to iterate over arrays of char and wchar_t.
+ // Should the last array element be treated as a null terminator to be skipped, or
+ // is it just like any other element in the array? To fix the problem, you must
+ // say which behavior you want.
+ //
+ // To treat the container as a null-terminated string, merely cast it to a
+ // char const *, as in BOOST_FOREACH( char ch, (char const *)"hello" ) ...
+ //
+ // To treat the container as an array, use boost::as_array() in <boost/range/as_array.hpp>,
+ // as in BOOST_FOREACH( char ch, boost::as_array("hello") ) ...
+ #if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ BOOST_MPL_ASSERT_MSG( (!is_char_array<T>::value), IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING, (T&) );
+ #endif
+
+ // If the type is a pointer to a null terminated string (as opposed
+ // to an array type), there is no ambiguity.
+ typedef BOOST_DEDUCED_TYPENAME wrap_cstr<T>::type container;
+
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::eval_if<
+ C
+ , range_reverse_iterator<container const>
+ , range_reverse_iterator<container>
+ >::type type;
+};
+
+template<typename T, typename C = boost::mpl::false_>
+struct foreach_reference
+ : iterator_reference<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
+{
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// encode_type
+//
+template<typename T>
+inline type2type<T> *encode_type(T &, boost::mpl::false_ *) { return 0; }
+
+template<typename T>
+inline type2type<T, const_> *encode_type(T const &, boost::mpl::true_ *) { return 0; }
+
+///////////////////////////////////////////////////////////////////////////////
+// set_false
+//
+inline bool set_false(bool &b)
+{
+ b = false;
+ return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// to_ptr
+//
+template<typename T>
+inline T *&to_ptr(T const &)
+{
+ static T *t = 0;
+ return t;
+}
+
+// Borland needs a little extra help with arrays
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+template<typename T,std::size_t N>
+inline T (*&to_ptr(T (&)[N]))[N]
+{
+ static T (*t)[N] = 0;
+ return t;
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// derefof
+//
+template<typename T>
+inline T &derefof(T *t)
+{
+ // This is a work-around for a compiler bug in Borland. If T* is a pointer to array type U(*)[N],
+ // then dereferencing it results in a U* instead of U(&)[N]. The cast forces the issue.
+ return reinterpret_cast<T &>(
+ *const_cast<char *>(
+ reinterpret_cast<char const volatile *>(t)
+ )
+ );
+}
+
+#ifdef BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION
+///////////////////////////////////////////////////////////////////////////////
+// Detect at compile-time whether an expression yields an rvalue or
+// an lvalue. This is rather non-standard, but some popular compilers
+// accept it.
+///////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////////////////
+// rvalue_probe
+//
+template<typename T>
+struct rvalue_probe
+{
+ struct private_type_ {};
+ // can't ever return an array by value
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
+ boost::mpl::or_<boost::is_abstract<T>, boost::is_array<T> >, private_type_, T
+ >::type value_type;
+ operator value_type() { return *reinterpret_cast<value_type *>(this); } // never called
+ operator T &() const { return *reinterpret_cast<T *>(const_cast<rvalue_probe *>(this)); } // never called
+};
+
+template<typename T>
+rvalue_probe<T> const make_probe(T const &)
+{
+ return rvalue_probe<T>();
+}
+
+# define BOOST_FOREACH_IS_RVALUE(COL) \
+ boost::foreach_detail_::and_( \
+ boost::foreach_detail_::not_(boost::foreach_detail_::is_array_(COL)) \
+ , (true ? 0 : boost::foreach_detail_::is_rvalue_( \
+ (true ? boost::foreach_detail_::make_probe(COL) : (COL)), 0)))
+
+#elif defined(BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION)
+///////////////////////////////////////////////////////////////////////////////
+// Detect at run-time whether an expression yields an rvalue
+// or an lvalue. This is 100% standard C++, but not all compilers
+// accept it. Also, it causes FOREACH to break when used with non-
+// copyable collection types.
+///////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////////////////
+// rvalue_probe
+//
+template<typename T>
+struct rvalue_probe
+{
+ rvalue_probe(T &t, bool &b)
+ : value(t)
+ , is_rvalue(b)
+ {
+ }
+
+ struct private_type_ {};
+ // can't ever return an array or an abstract type by value
+ #ifdef BOOST_NO_IS_ABSTRACT
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
+ boost::is_array<T>, private_type_, T
+ >::type value_type;
+ #else
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
+ boost::mpl::or_<boost::is_abstract<T>, boost::is_array<T> >, private_type_, T
+ >::type value_type;
+ #endif
+
+ operator value_type()
+ {
+ this->is_rvalue = true;
+ return this->value;
+ }
+
+ operator T &() const
+ {
+ return this->value;
+ }
+
+private:
+ T &value;
+ bool &is_rvalue;
+};
+
+template<typename T>
+rvalue_probe<T> make_probe(T &t, bool &b) { return rvalue_probe<T>(t, b); }
+
+template<typename T>
+rvalue_probe<T const> make_probe(T const &t, bool &b) { return rvalue_probe<T const>(t, b); }
+
+///////////////////////////////////////////////////////////////////////////////
+// simple_variant
+// holds either a T or a T const*
+template<typename T>
+struct simple_variant
+{
+ simple_variant(T const *t)
+ : is_rvalue(false)
+ {
+ *static_cast<T const **>(this->data.address()) = t;
+ }
+
+ simple_variant(T const &t)
+ : is_rvalue(true)
+ {
+ ::new(this->data.address()) T(t);
+ }
+
+ simple_variant(simple_variant const &that)
+ : is_rvalue(that.is_rvalue)
+ {
+ if(this->is_rvalue)
+ ::new(this->data.address()) T(*that.get());
+ else
+ *static_cast<T const **>(this->data.address()) = that.get();
+ }
+
+ ~simple_variant()
+ {
+ if(this->is_rvalue)
+ this->get()->~T();
+ }
+
+ T const *get() const
+ {
+ if(this->is_rvalue)
+ return static_cast<T const *>(this->data.address());
+ else
+ return *static_cast<T const * const *>(this->data.address());
+ }
+
+private:
+ enum size_type { size = sizeof(T) > sizeof(T*) ? sizeof(T) : sizeof(T*) };
+ simple_variant &operator =(simple_variant const &);
+ bool const is_rvalue;
+ aligned_storage<size> data;
+};
+
+// If the collection is an array or is noncopyable, it must be an lvalue.
+// If the collection is a lightweight proxy, treat it as an rvalue
+// BUGBUG what about a noncopyable proxy?
+template<typename LValue, typename IsProxy>
+inline BOOST_DEDUCED_TYPENAME boost::enable_if<boost::mpl::or_<LValue, IsProxy>, IsProxy>::type *
+should_copy_impl(LValue *, IsProxy *, bool *)
+{
+ return 0;
+}
+
+// Otherwise, we must determine at runtime whether it's an lvalue or rvalue
+inline bool *
+should_copy_impl(boost::mpl::false_ *, boost::mpl::false_ *, bool *is_rvalue)
+{
+ return is_rvalue;
+}
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// contain
+//
+template<typename T>
+inline auto_any<T> contain(T const &t, boost::mpl::true_ *) // rvalue
+{
+ return t;
+}
+
+template<typename T>
+inline auto_any<T *> contain(T &t, boost::mpl::false_ *) // lvalue
+{
+ // Cannot seem to get sunpro to handle addressof() with array types.
+ #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x570))
+ return &t;
+ #else
+ return boost::addressof(t);
+ #endif
+}
+
+#ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+template<typename T>
+auto_any<simple_variant<T> >
+contain(T const &t, bool *rvalue)
+{
+ return *rvalue ? simple_variant<T>(t) : simple_variant<T>(&t);
+}
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// begin
+//
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
+begin(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
+{
+ return boost::begin(auto_any_cast<T, C>(col));
+}
+
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
+begin(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
+{
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iterator;
+ return iterator(boost::begin(derefof(auto_any_cast<type *, boost::mpl::false_>(col))));
+}
+
+#ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+template<typename T>
+auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, const_>::type>
+begin(auto_any_t col, type2type<T, const_> *, bool *)
+{
+ return boost::begin(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get());
+}
+#endif
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+template<typename T, typename C>
+inline auto_any<T *>
+begin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
+{
+ return auto_any_cast<T *, boost::mpl::false_>(col);
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// end
+//
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
+end(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
+{
+ return boost::end(auto_any_cast<T, C>(col));
+}
+
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type>
+end(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
+{
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iterator;
+ return iterator(boost::end(derefof(auto_any_cast<type *, boost::mpl::false_>(col))));
+}
+
+#ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+template<typename T>
+auto_any<BOOST_DEDUCED_TYPENAME foreach_iterator<T, const_>::type>
+end(auto_any_t col, type2type<T, const_> *, bool *)
+{
+ return boost::end(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get());
+}
+#endif
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+template<typename T, typename C>
+inline auto_any<int>
+end(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
+{
+ return 0; // not used
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// done
+//
+template<typename T, typename C>
+inline bool done(auto_any_t cur, auto_any_t end, type2type<T, C> *)
+{
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iter_t;
+ return auto_any_cast<iter_t, boost::mpl::false_>(cur) == auto_any_cast<iter_t, boost::mpl::false_>(end);
+}
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+template<typename T, typename C>
+inline bool done(auto_any_t cur, auto_any_t, type2type<T *, C> *) // null-terminated C-style strings
+{
+ return ! *auto_any_cast<T *, boost::mpl::false_>(cur);
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// next
+//
+template<typename T, typename C>
+inline void next(auto_any_t cur, type2type<T, C> *)
+{
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iter_t;
+ ++auto_any_cast<iter_t, boost::mpl::false_>(cur);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// deref
+//
+template<typename T, typename C>
+inline BOOST_DEDUCED_TYPENAME foreach_reference<T, C>::type
+deref(auto_any_t cur, type2type<T, C> *)
+{
+ typedef BOOST_DEDUCED_TYPENAME foreach_iterator<T, C>::type iter_t;
+ return *auto_any_cast<iter_t, boost::mpl::false_>(cur);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// rbegin
+//
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
+rbegin(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
+{
+ return boost::rbegin(auto_any_cast<T, C>(col));
+}
+
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
+rbegin(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
+{
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iterator;
+ return iterator(boost::rbegin(derefof(auto_any_cast<type *, boost::mpl::false_>(col))));
+}
+
+#ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+template<typename T>
+auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, const_>::type>
+rbegin(auto_any_t col, type2type<T, const_> *, bool *)
+{
+ return boost::rbegin(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get());
+}
+#endif
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+template<typename T, typename C>
+inline auto_any<reverse_iterator<T *> >
+rbegin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
+{
+ T *p = auto_any_cast<T *, boost::mpl::false_>(col);
+ while(0 != *p)
+ ++p;
+ return reverse_iterator<T *>(p);
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// rend
+//
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
+rend(auto_any_t col, type2type<T, C> *, boost::mpl::true_ *) // rvalue
+{
+ return boost::rend(auto_any_cast<T, C>(col));
+}
+
+template<typename T, typename C>
+inline auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type>
+rend(auto_any_t col, type2type<T, C> *, boost::mpl::false_ *) // lvalue
+{
+ typedef BOOST_DEDUCED_TYPENAME type2type<T, C>::type type;
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iterator;
+ return iterator(boost::rend(derefof(auto_any_cast<type *, boost::mpl::false_>(col))));
+}
+
+#ifdef BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION
+template<typename T>
+auto_any<BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, const_>::type>
+rend(auto_any_t col, type2type<T, const_> *, bool *)
+{
+ return boost::rend(*auto_any_cast<simple_variant<T>, boost::mpl::false_>(col).get());
+}
+#endif
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+template<typename T, typename C>
+inline auto_any<reverse_iterator<T *> >
+rend(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C-style strings
+{
+ return reverse_iterator<T *>(auto_any_cast<T *, boost::mpl::false_>(col));
+}
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// rdone
+//
+template<typename T, typename C>
+inline bool rdone(auto_any_t cur, auto_any_t end, type2type<T, C> *)
+{
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iter_t;
+ return auto_any_cast<iter_t, boost::mpl::false_>(cur) == auto_any_cast<iter_t, boost::mpl::false_>(end);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// rnext
+//
+template<typename T, typename C>
+inline void rnext(auto_any_t cur, type2type<T, C> *)
+{
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iter_t;
+ ++auto_any_cast<iter_t, boost::mpl::false_>(cur);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// rderef
+//
+template<typename T, typename C>
+inline BOOST_DEDUCED_TYPENAME foreach_reference<T, C>::type
+rderef(auto_any_t cur, type2type<T, C> *)
+{
+ typedef BOOST_DEDUCED_TYPENAME foreach_reverse_iterator<T, C>::type iter_t;
+ return *auto_any_cast<iter_t, boost::mpl::false_>(cur);
+}
+
+} // namespace foreach_detail_
+} // namespace boost
+
+// Suppress a bogus code analysis warning on vc8+
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
+# define BOOST_FOREACH_SUPPRESS_WARNINGS() __pragma(warning(suppress:6001))
+#else
+# define BOOST_FOREACH_SUPPRESS_WARNINGS()
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+// Define a macro for giving hidden variables a unique name. Not strictly
+// needed, but eliminates some warnings on some compilers.
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+// With some versions of MSVC, use of __LINE__ to create unique identifiers
+// can fail when the Edit-and-Continue debug flag is used.
+# define BOOST_FOREACH_ID(x) x
+#else
+# define BOOST_FOREACH_ID(x) BOOST_PP_CAT(x, __LINE__)
+#endif
+
+// A sneaky way to get the type of the collection without evaluating the expression
+#define BOOST_FOREACH_TYPEOF(COL) \
+ (true ? 0 : boost::foreach_detail_::encode_type(COL, boost::foreach_detail_::is_const_(COL)))
+
+// returns true_* if the type is noncopyable
+#define BOOST_FOREACH_IS_NONCOPYABLE(COL) \
+ boost_foreach_is_noncopyable( \
+ boost::foreach_detail_::to_ptr(COL) \
+ , boost_foreach_argument_dependent_lookup_hack_value)
+
+// returns true_* if the type is a lightweight proxy (and is not noncopyable)
+#define BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL) \
+ boost::foreach_detail_::and_( \
+ boost::foreach_detail_::not_(BOOST_FOREACH_IS_NONCOPYABLE(COL)) \
+ , boost_foreach_is_lightweight_proxy( \
+ boost::foreach_detail_::to_ptr(COL) \
+ , boost_foreach_argument_dependent_lookup_hack_value))
+
+#ifdef BOOST_FOREACH_COMPILE_TIME_CONST_RVALUE_DETECTION
+///////////////////////////////////////////////////////////////////////////////
+// R-values and const R-values supported here with zero runtime overhead
+///////////////////////////////////////////////////////////////////////////////
+
+// No variable is needed to track the rvalue-ness of the collection expression
+# define BOOST_FOREACH_PREAMBLE() \
+ BOOST_FOREACH_SUPPRESS_WARNINGS()
+
+// Evaluate the collection expression
+# define BOOST_FOREACH_EVALUATE(COL) \
+ (COL)
+
+# define BOOST_FOREACH_SHOULD_COPY(COL) \
+ (true ? 0 : boost::foreach_detail_::or_( \
+ BOOST_FOREACH_IS_RVALUE(COL) \
+ , BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL)))
+
+#elif defined(BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION)
+///////////////////////////////////////////////////////////////////////////////
+// R-values and const R-values supported here
+///////////////////////////////////////////////////////////////////////////////
+
+// Declare a variable to track the rvalue-ness of the collection expression
+# define BOOST_FOREACH_PREAMBLE() \
+ BOOST_FOREACH_SUPPRESS_WARNINGS() \
+ if (bool BOOST_FOREACH_ID(_foreach_is_rvalue) = false) {} else
+
+// Evaluate the collection expression, and detect if it is an lvalue or and rvalue
+# define BOOST_FOREACH_EVALUATE(COL) \
+ (true ? boost::foreach_detail_::make_probe((COL), BOOST_FOREACH_ID(_foreach_is_rvalue)) : (COL))
+
+// The rvalue/lvalue-ness of the collection expression is determined dynamically, unless
+// type type is an array or is noncopyable or is non-const, in which case we know it's an lvalue.
+// If the type happens to be a lightweight proxy, always make a copy.
+# define BOOST_FOREACH_SHOULD_COPY(COL) \
+ (boost::foreach_detail_::should_copy_impl( \
+ true ? 0 : boost::foreach_detail_::or_( \
+ boost::foreach_detail_::is_array_(COL) \
+ , BOOST_FOREACH_IS_NONCOPYABLE(COL) \
+ , boost::foreach_detail_::not_(boost::foreach_detail_::is_const_(COL))) \
+ , true ? 0 : BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL) \
+ , &BOOST_FOREACH_ID(_foreach_is_rvalue)))
+
+#elif !defined(BOOST_FOREACH_NO_RVALUE_DETECTION)
+///////////////////////////////////////////////////////////////////////////////
+// R-values supported here, const R-values NOT supported here
+///////////////////////////////////////////////////////////////////////////////
+
+// No variable is needed to track the rvalue-ness of the collection expression
+# define BOOST_FOREACH_PREAMBLE() \
+ BOOST_FOREACH_SUPPRESS_WARNINGS()
+
+// Evaluate the collection expression
+# define BOOST_FOREACH_EVALUATE(COL) \
+ (COL)
+
+// Determine whether the collection expression is an lvalue or an rvalue.
+// NOTE: this gets the answer wrong for const rvalues.
+# define BOOST_FOREACH_SHOULD_COPY(COL) \
+ (true ? 0 : boost::foreach_detail_::or_( \
+ boost::foreach_detail_::is_rvalue_((COL), 0) \
+ , BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL)))
+
+#else
+///////////////////////////////////////////////////////////////////////////////
+// R-values NOT supported here
+///////////////////////////////////////////////////////////////////////////////
+
+// No variable is needed to track the rvalue-ness of the collection expression
+# define BOOST_FOREACH_PREAMBLE() \
+ BOOST_FOREACH_SUPPRESS_WARNINGS()
+
+// Evaluate the collection expression
+# define BOOST_FOREACH_EVALUATE(COL) \
+ (COL)
+
+// Can't use rvalues with BOOST_FOREACH (unless they are lightweight proxies)
+# define BOOST_FOREACH_SHOULD_COPY(COL) \
+ (true ? 0 : BOOST_FOREACH_IS_LIGHTWEIGHT_PROXY(COL))
+
+#endif
+
+#define BOOST_FOREACH_CONTAIN(COL) \
+ boost::foreach_detail_::contain( \
+ BOOST_FOREACH_EVALUATE(COL) \
+ , BOOST_FOREACH_SHOULD_COPY(COL))
+
+#define BOOST_FOREACH_BEGIN(COL) \
+ boost::foreach_detail_::begin( \
+ BOOST_FOREACH_ID(_foreach_col) \
+ , BOOST_FOREACH_TYPEOF(COL) \
+ , BOOST_FOREACH_SHOULD_COPY(COL))
+
+#define BOOST_FOREACH_END(COL) \
+ boost::foreach_detail_::end( \
+ BOOST_FOREACH_ID(_foreach_col) \
+ , BOOST_FOREACH_TYPEOF(COL) \
+ , BOOST_FOREACH_SHOULD_COPY(COL))
+
+#define BOOST_FOREACH_DONE(COL) \
+ boost::foreach_detail_::done( \
+ BOOST_FOREACH_ID(_foreach_cur) \
+ , BOOST_FOREACH_ID(_foreach_end) \
+ , BOOST_FOREACH_TYPEOF(COL))
+
+#define BOOST_FOREACH_NEXT(COL) \
+ boost::foreach_detail_::next( \
+ BOOST_FOREACH_ID(_foreach_cur) \
+ , BOOST_FOREACH_TYPEOF(COL))
+
+#define BOOST_FOREACH_DEREF(COL) \
+ boost::foreach_detail_::deref( \
+ BOOST_FOREACH_ID(_foreach_cur) \
+ , BOOST_FOREACH_TYPEOF(COL))
+
+#define BOOST_FOREACH_RBEGIN(COL) \
+ boost::foreach_detail_::rbegin( \
+ BOOST_FOREACH_ID(_foreach_col) \
+ , BOOST_FOREACH_TYPEOF(COL) \
+ , BOOST_FOREACH_SHOULD_COPY(COL))
+
+#define BOOST_FOREACH_REND(COL) \
+ boost::foreach_detail_::rend( \
+ BOOST_FOREACH_ID(_foreach_col) \
+ , BOOST_FOREACH_TYPEOF(COL) \
+ , BOOST_FOREACH_SHOULD_COPY(COL))
+
+#define BOOST_FOREACH_RDONE(COL) \
+ boost::foreach_detail_::rdone( \
+ BOOST_FOREACH_ID(_foreach_cur) \
+ , BOOST_FOREACH_ID(_foreach_end) \
+ , BOOST_FOREACH_TYPEOF(COL))
+
+#define BOOST_FOREACH_RNEXT(COL) \
+ boost::foreach_detail_::rnext( \
+ BOOST_FOREACH_ID(_foreach_cur) \
+ , BOOST_FOREACH_TYPEOF(COL))
+
+#define BOOST_FOREACH_RDEREF(COL) \
+ boost::foreach_detail_::rderef( \
+ BOOST_FOREACH_ID(_foreach_cur) \
+ , BOOST_FOREACH_TYPEOF(COL))
+
+///////////////////////////////////////////////////////////////////////////////
+// BOOST_FOREACH
+//
+// For iterating over collections. Collections can be
+// arrays, null-terminated strings, or STL containers.
+// The loop variable can be a value or reference. For
+// example:
+//
+// std::list<int> int_list(/*stuff*/);
+// BOOST_FOREACH(int &i, int_list)
+// {
+// /*
+// * loop body goes here.
+// * i is a reference to the int in int_list.
+// */
+// }
+//
+// Alternately, you can declare the loop variable first,
+// so you can access it after the loop finishes. Obviously,
+// if you do it this way, then the loop variable cannot be
+// a reference.
+//
+// int i;
+// BOOST_FOREACH(i, int_list)
+// { ... }
+//
+#define BOOST_FOREACH(VAR, COL) \
+ BOOST_FOREACH_PREAMBLE() \
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_col) = BOOST_FOREACH_CONTAIN(COL)) {} else \
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_cur) = BOOST_FOREACH_BEGIN(COL)) {} else \
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_end) = BOOST_FOREACH_END(COL)) {} else \
+ for (bool BOOST_FOREACH_ID(_foreach_continue) = true; \
+ BOOST_FOREACH_ID(_foreach_continue) && !BOOST_FOREACH_DONE(COL); \
+ BOOST_FOREACH_ID(_foreach_continue) ? BOOST_FOREACH_NEXT(COL) : (void)0) \
+ if (boost::foreach_detail_::set_false(BOOST_FOREACH_ID(_foreach_continue))) {} else \
+ for (VAR = BOOST_FOREACH_DEREF(COL); !BOOST_FOREACH_ID(_foreach_continue); BOOST_FOREACH_ID(_foreach_continue) = true)
+
+///////////////////////////////////////////////////////////////////////////////
+// BOOST_REVERSE_FOREACH
+//
+// For iterating over collections in reverse order. In
+// all other respects, BOOST_REVERSE_FOREACH is like
+// BOOST_FOREACH.
+//
+#define BOOST_REVERSE_FOREACH(VAR, COL) \
+ BOOST_FOREACH_PREAMBLE() \
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_col) = BOOST_FOREACH_CONTAIN(COL)) {} else \
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_cur) = BOOST_FOREACH_RBEGIN(COL)) {} else \
+ if (boost::foreach_detail_::auto_any_t BOOST_FOREACH_ID(_foreach_end) = BOOST_FOREACH_REND(COL)) {} else \
+ for (bool BOOST_FOREACH_ID(_foreach_continue) = true; \
+ BOOST_FOREACH_ID(_foreach_continue) && !BOOST_FOREACH_RDONE(COL); \
+ BOOST_FOREACH_ID(_foreach_continue) ? BOOST_FOREACH_RNEXT(COL) : (void)0) \
+ if (boost::foreach_detail_::set_false(BOOST_FOREACH_ID(_foreach_continue))) {} else \
+ for (VAR = BOOST_FOREACH_RDEREF(COL); !BOOST_FOREACH_ID(_foreach_continue); BOOST_FOREACH_ID(_foreach_continue) = true)
+
+#endif
diff --git a/3rdParty/Boost/boost/function.hpp b/3rdParty/Boost/boost/function.hpp
new file mode 100644
index 0000000..bdb2769
--- /dev/null
+++ b/3rdParty/Boost/boost/function.hpp
@@ -0,0 +1,66 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org/libs/function
+
+// William Kempf, Jesse Jones and Karl Nelson were all very helpful in the
+// design of this library.
+
+#include <functional> // unary_function, binary_function
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifndef BOOST_FUNCTION_MAX_ARGS
+# define BOOST_FUNCTION_MAX_ARGS 10
+#endif // BOOST_FUNCTION_MAX_ARGS
+
+// Include the prologue here so that the use of file-level iteration
+// in anything that may be included by function_template.hpp doesn't break
+#include <boost/function/detail/prologue.hpp>
+
+// Visual Age C++ doesn't handle the file iteration well
+#if BOOST_WORKAROUND(__IBMCPP__, >= 500)
+# if BOOST_FUNCTION_MAX_ARGS >= 0
+# include <boost/function/function0.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 1
+# include <boost/function/function1.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 2
+# include <boost/function/function2.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 3
+# include <boost/function/function3.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 4
+# include <boost/function/function4.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 5
+# include <boost/function/function5.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 6
+# include <boost/function/function6.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 7
+# include <boost/function/function7.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 8
+# include <boost/function/function8.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 9
+# include <boost/function/function9.hpp>
+# endif
+# if BOOST_FUNCTION_MAX_ARGS >= 10
+# include <boost/function/function10.hpp>
+# endif
+#else
+// What is the '3' for?
+# define BOOST_PP_ITERATION_PARAMS_1 (3,(0,BOOST_FUNCTION_MAX_ARGS,<boost/function/detail/function_iterate.hpp>))
+# include BOOST_PP_ITERATE()
+# undef BOOST_PP_ITERATION_PARAMS_1
+#endif
diff --git a/3rdParty/Boost/boost/function/detail/function_iterate.hpp b/3rdParty/Boost/boost/function/detail/function_iterate.hpp
new file mode 100644
index 0000000..5370b36
--- /dev/null
+++ b/3rdParty/Boost/boost/function/detail/function_iterate.hpp
@@ -0,0 +1,16 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2003. 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)
+
+// For more information, see http://www.boost.org
+#if !defined(BOOST_PP_IS_ITERATING)
+# error Boost.Function - do not include this file!
+#endif
+
+#define BOOST_FUNCTION_NUM_ARGS BOOST_PP_ITERATION()
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
+
diff --git a/3rdParty/Boost/boost/function/detail/gen_maybe_include.pl b/3rdParty/Boost/boost/function/detail/gen_maybe_include.pl
new file mode 100644
index 0000000..d062920
--- /dev/null
+++ b/3rdParty/Boost/boost/function/detail/gen_maybe_include.pl
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+#
+# Boost.Function library
+#
+# Copyright (C) 2001-2003 Douglas Gregor (gregod@cs.rpi.edu)
+#
+# Permission to copy, use, sell and distribute this software is granted
+# provided this copyright notice appears in all copies.
+# Permission to modify the code and to distribute modified code is granted
+# provided this copyright notice appears in all copies, and a notice
+# that the code was modified is included with the copyright notice.
+#
+# This software is provided "as is" without express or implied warranty,
+# and with no claim as to its suitability for any purpose.
+#
+# For more information, see http://www.boost.org
+use English;
+
+$max_args = $ARGV[0];
+
+open (OUT, ">maybe_include.hpp") or die("Cannot write to maybe_include.hpp");
+for($on_arg = 0; $on_arg <= $max_args; ++$on_arg) {
+ if ($on_arg == 0) {
+ print OUT "#if";
+ }
+ else {
+ print OUT "#elif";
+ }
+ print OUT " BOOST_FUNCTION_NUM_ARGS == $on_arg\n";
+ print OUT "# ifndef BOOST_FUNCTION_$on_arg\n";
+ print OUT "# define BOOST_FUNCTION_$on_arg\n";
+ print OUT "# include <boost/function/function_template.hpp>\n";
+ print OUT "# endif\n";
+}
+print OUT "#else\n";
+print OUT "# error Cannot handle Boost.Function objects that accept more than $max_args arguments!\n";
+print OUT "#endif\n";
diff --git a/3rdParty/Boost/boost/function/detail/maybe_include.hpp b/3rdParty/Boost/boost/function/detail/maybe_include.hpp
new file mode 100644
index 0000000..92f71bb
--- /dev/null
+++ b/3rdParty/Boost/boost/function/detail/maybe_include.hpp
@@ -0,0 +1,267 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2003. 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)
+
+// For more information, see http://www.boost.org
+
+#if BOOST_FUNCTION_NUM_ARGS == 0
+# ifndef BOOST_FUNCTION_0
+# define BOOST_FUNCTION_0
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 1
+# ifndef BOOST_FUNCTION_1
+# define BOOST_FUNCTION_1
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 2
+# ifndef BOOST_FUNCTION_2
+# define BOOST_FUNCTION_2
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 3
+# ifndef BOOST_FUNCTION_3
+# define BOOST_FUNCTION_3
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 4
+# ifndef BOOST_FUNCTION_4
+# define BOOST_FUNCTION_4
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 5
+# ifndef BOOST_FUNCTION_5
+# define BOOST_FUNCTION_5
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 6
+# ifndef BOOST_FUNCTION_6
+# define BOOST_FUNCTION_6
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 7
+# ifndef BOOST_FUNCTION_7
+# define BOOST_FUNCTION_7
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 8
+# ifndef BOOST_FUNCTION_8
+# define BOOST_FUNCTION_8
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 9
+# ifndef BOOST_FUNCTION_9
+# define BOOST_FUNCTION_9
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 10
+# ifndef BOOST_FUNCTION_10
+# define BOOST_FUNCTION_10
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 11
+# ifndef BOOST_FUNCTION_11
+# define BOOST_FUNCTION_11
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 12
+# ifndef BOOST_FUNCTION_12
+# define BOOST_FUNCTION_12
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 13
+# ifndef BOOST_FUNCTION_13
+# define BOOST_FUNCTION_13
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 14
+# ifndef BOOST_FUNCTION_14
+# define BOOST_FUNCTION_14
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 15
+# ifndef BOOST_FUNCTION_15
+# define BOOST_FUNCTION_15
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 16
+# ifndef BOOST_FUNCTION_16
+# define BOOST_FUNCTION_16
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 17
+# ifndef BOOST_FUNCTION_17
+# define BOOST_FUNCTION_17
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 18
+# ifndef BOOST_FUNCTION_18
+# define BOOST_FUNCTION_18
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 19
+# ifndef BOOST_FUNCTION_19
+# define BOOST_FUNCTION_19
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 20
+# ifndef BOOST_FUNCTION_20
+# define BOOST_FUNCTION_20
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 21
+# ifndef BOOST_FUNCTION_21
+# define BOOST_FUNCTION_21
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 22
+# ifndef BOOST_FUNCTION_22
+# define BOOST_FUNCTION_22
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 23
+# ifndef BOOST_FUNCTION_23
+# define BOOST_FUNCTION_23
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 24
+# ifndef BOOST_FUNCTION_24
+# define BOOST_FUNCTION_24
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 25
+# ifndef BOOST_FUNCTION_25
+# define BOOST_FUNCTION_25
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 26
+# ifndef BOOST_FUNCTION_26
+# define BOOST_FUNCTION_26
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 27
+# ifndef BOOST_FUNCTION_27
+# define BOOST_FUNCTION_27
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 28
+# ifndef BOOST_FUNCTION_28
+# define BOOST_FUNCTION_28
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 29
+# ifndef BOOST_FUNCTION_29
+# define BOOST_FUNCTION_29
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 30
+# ifndef BOOST_FUNCTION_30
+# define BOOST_FUNCTION_30
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 31
+# ifndef BOOST_FUNCTION_31
+# define BOOST_FUNCTION_31
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 32
+# ifndef BOOST_FUNCTION_32
+# define BOOST_FUNCTION_32
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 33
+# ifndef BOOST_FUNCTION_33
+# define BOOST_FUNCTION_33
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 34
+# ifndef BOOST_FUNCTION_34
+# define BOOST_FUNCTION_34
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 35
+# ifndef BOOST_FUNCTION_35
+# define BOOST_FUNCTION_35
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 36
+# ifndef BOOST_FUNCTION_36
+# define BOOST_FUNCTION_36
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 37
+# ifndef BOOST_FUNCTION_37
+# define BOOST_FUNCTION_37
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 38
+# ifndef BOOST_FUNCTION_38
+# define BOOST_FUNCTION_38
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 39
+# ifndef BOOST_FUNCTION_39
+# define BOOST_FUNCTION_39
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 40
+# ifndef BOOST_FUNCTION_40
+# define BOOST_FUNCTION_40
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 41
+# ifndef BOOST_FUNCTION_41
+# define BOOST_FUNCTION_41
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 42
+# ifndef BOOST_FUNCTION_42
+# define BOOST_FUNCTION_42
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 43
+# ifndef BOOST_FUNCTION_43
+# define BOOST_FUNCTION_43
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 44
+# ifndef BOOST_FUNCTION_44
+# define BOOST_FUNCTION_44
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 45
+# ifndef BOOST_FUNCTION_45
+# define BOOST_FUNCTION_45
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 46
+# ifndef BOOST_FUNCTION_46
+# define BOOST_FUNCTION_46
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 47
+# ifndef BOOST_FUNCTION_47
+# define BOOST_FUNCTION_47
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 48
+# ifndef BOOST_FUNCTION_48
+# define BOOST_FUNCTION_48
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 49
+# ifndef BOOST_FUNCTION_49
+# define BOOST_FUNCTION_49
+# include <boost/function/function_template.hpp>
+# endif
+#elif BOOST_FUNCTION_NUM_ARGS == 50
+# ifndef BOOST_FUNCTION_50
+# define BOOST_FUNCTION_50
+# include <boost/function/function_template.hpp>
+# endif
+#else
+# error Cannot handle Boost.Function objects that accept more than 50 arguments!
+#endif
diff --git a/3rdParty/Boost/boost/function/detail/prologue.hpp b/3rdParty/Boost/boost/function/detail/prologue.hpp
new file mode 100644
index 0000000..53d0f05
--- /dev/null
+++ b/3rdParty/Boost/boost/function/detail/prologue.hpp
@@ -0,0 +1,26 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_FUNCTION_PROLOGUE_HPP
+#define BOOST_FUNCTION_PROLOGUE_HPP
+# include <cassert>
+# include <algorithm>
+# include <boost/config/no_tr1/functional.hpp> // unary_function, binary_function
+# include <boost/throw_exception.hpp>
+# include <boost/config.hpp>
+# include <boost/function/function_base.hpp>
+# include <boost/mem_fn.hpp>
+# include <boost/type_traits/is_integral.hpp>
+# include <boost/preprocessor/enum.hpp>
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/type_traits/is_void.hpp>
+#endif // BOOST_FUNCTION_PROLOGUE_HPP
diff --git a/3rdParty/Boost/boost/function/function0.hpp b/3rdParty/Boost/boost/function/function0.hpp
new file mode 100644
index 0000000..65a02e5
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function0.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 0
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function1.hpp b/3rdParty/Boost/boost/function/function1.hpp
new file mode 100644
index 0000000..9089715
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function1.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 1
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function10.hpp b/3rdParty/Boost/boost/function/function10.hpp
new file mode 100644
index 0000000..6562724
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function10.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 10
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function2.hpp b/3rdParty/Boost/boost/function/function2.hpp
new file mode 100644
index 0000000..dc8bf97
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function2.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 2
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function3.hpp b/3rdParty/Boost/boost/function/function3.hpp
new file mode 100644
index 0000000..19d1a49
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function3.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 3
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function4.hpp b/3rdParty/Boost/boost/function/function4.hpp
new file mode 100644
index 0000000..f3349e2
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function4.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 4
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function5.hpp b/3rdParty/Boost/boost/function/function5.hpp
new file mode 100644
index 0000000..a1305eb
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function5.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 5
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function6.hpp b/3rdParty/Boost/boost/function/function6.hpp
new file mode 100644
index 0000000..1f60914
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function6.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 6
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function7.hpp b/3rdParty/Boost/boost/function/function7.hpp
new file mode 100644
index 0000000..68542ed
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function7.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 7
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function8.hpp b/3rdParty/Boost/boost/function/function8.hpp
new file mode 100644
index 0000000..cf2c376
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function8.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 8
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function9.hpp b/3rdParty/Boost/boost/function/function9.hpp
new file mode 100644
index 0000000..590e088
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function9.hpp
@@ -0,0 +1,12 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2002-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#define BOOST_FUNCTION_NUM_ARGS 9
+#include <boost/function/detail/maybe_include.hpp>
+#undef BOOST_FUNCTION_NUM_ARGS
diff --git a/3rdParty/Boost/boost/function/function_base.hpp b/3rdParty/Boost/boost/function/function_base.hpp
new file mode 100644
index 0000000..6612fb8
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function_base.hpp
@@ -0,0 +1,880 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2001-2006
+// Copyright Emil Dotchevski 2007
+// 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_FUNCTION_BASE_HEADER
+#define BOOST_FUNCTION_BASE_HEADER
+
+#include <stdexcept>
+#include <string>
+#include <memory>
+#include <new>
+#include <typeinfo>
+#include <boost/config.hpp>
+#include <boost/assert.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/composite_traits.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/ref.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+#ifndef BOOST_NO_SFINAE
+# include "boost/utility/enable_if.hpp"
+#else
+# include "boost/mpl/bool.hpp"
+#endif
+#include <boost/function_equal.hpp>
+#include <boost/function/function_fwd.hpp>
+
+#if defined(BOOST_MSVC)
+# pragma warning( push )
+# pragma warning( disable : 4793 ) // complaint about native code generation
+# pragma warning( disable : 4127 ) // "conditional expression is constant"
+#endif
+
+// Define BOOST_FUNCTION_STD_NS to the namespace that contains type_info.
+#ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE
+// Embedded VC++ does not have type_info in namespace std
+# define BOOST_FUNCTION_STD_NS
+#else
+# define BOOST_FUNCTION_STD_NS std
+#endif
+
+// Borrowed from Boost.Python library: determines the cases where we
+// need to use std::type_info::name to compare instead of operator==.
+# if (defined(__GNUC__) && __GNUC__ >= 3) \
+ || defined(_AIX) \
+ || ( defined(__sgi) && defined(__host_mips))
+# include <cstring>
+# define BOOST_FUNCTION_COMPARE_TYPE_ID(X,Y) \
+ (std::strcmp((X).name(),(Y).name()) == 0)
+# else
+# define BOOST_FUNCTION_COMPARE_TYPE_ID(X,Y) ((X)==(Y))
+#endif
+
+#if defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__ICL) && __ICL <= 600 || defined(__MWERKS__) && __MWERKS__ < 0x2406 && !defined(BOOST_STRICT_CONFIG)
+# define BOOST_FUNCTION_TARGET_FIX(x) x
+#else
+# define BOOST_FUNCTION_TARGET_FIX(x)
+#endif // not MSVC
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x5A0)
+# define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \
+ typename ::boost::enable_if_c<(::boost::type_traits::ice_not< \
+ (::boost::is_integral<Functor>::value)>::value), \
+ Type>::type
+#else
+// BCC doesn't recognize this depends on a template argument and complains
+// about the use of 'typename'
+# define BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor,Type) \
+ ::boost::enable_if_c<(::boost::type_traits::ice_not< \
+ (::boost::is_integral<Functor>::value)>::value), \
+ Type>::type
+#endif
+
+namespace boost {
+ namespace detail {
+ namespace function {
+ class X;
+
+ /**
+ * A buffer used to store small function objects in
+ * boost::function. It is a union containing function pointers,
+ * object pointers, and a structure that resembles a bound
+ * member function pointer.
+ */
+ union function_buffer
+ {
+ // For pointers to function objects
+ mutable void* obj_ptr;
+
+ // For pointers to std::type_info objects
+ struct type_t {
+ // (get_functor_type_tag, check_functor_type_tag).
+ const BOOST_FUNCTION_STD_NS::type_info* type;
+
+ // Whether the type is const-qualified.
+ bool const_qualified;
+ // Whether the type is volatile-qualified.
+ bool volatile_qualified;
+ } type;
+
+ // For function pointers of all kinds
+ mutable void (*func_ptr)();
+
+ // For bound member pointers
+ struct bound_memfunc_ptr_t {
+ void (X::*memfunc_ptr)(int);
+ void* obj_ptr;
+ } bound_memfunc_ptr;
+
+ // For references to function objects. We explicitly keep
+ // track of the cv-qualifiers on the object referenced.
+ struct obj_ref_t {
+ mutable void* obj_ptr;
+ bool is_const_qualified;
+ bool is_volatile_qualified;
+ } obj_ref;
+
+ // To relax aliasing constraints
+ mutable char data;
+ };
+
+ /**
+ * The unusable class is a placeholder for unused function arguments
+ * It is also completely unusable except that it constructable from
+ * anything. This helps compilers without partial specialization to
+ * handle Boost.Function objects returning void.
+ */
+ struct unusable
+ {
+ unusable() {}
+ template<typename T> unusable(const T&) {}
+ };
+
+ /* Determine the return type. This supports compilers that do not support
+ * void returns or partial specialization by silently changing the return
+ * type to "unusable".
+ */
+ template<typename T> struct function_return_type { typedef T type; };
+
+ template<>
+ struct function_return_type<void>
+ {
+ typedef unusable type;
+ };
+
+ // The operation type to perform on the given functor/function pointer
+ enum functor_manager_operation_type {
+ clone_functor_tag,
+ move_functor_tag,
+ destroy_functor_tag,
+ check_functor_type_tag,
+ get_functor_type_tag
+ };
+
+ // Tags used to decide between different types of functions
+ struct function_ptr_tag {};
+ struct function_obj_tag {};
+ struct member_ptr_tag {};
+ struct function_obj_ref_tag {};
+
+ template<typename F>
+ class get_function_tag
+ {
+ typedef typename mpl::if_c<(is_pointer<F>::value),
+ function_ptr_tag,
+ function_obj_tag>::type ptr_or_obj_tag;
+
+ typedef typename mpl::if_c<(is_member_pointer<F>::value),
+ member_ptr_tag,
+ ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag;
+
+ typedef typename mpl::if_c<(is_reference_wrapper<F>::value),
+ function_obj_ref_tag,
+ ptr_or_obj_or_mem_tag>::type or_ref_tag;
+
+ public:
+ typedef or_ref_tag type;
+ };
+
+ // The trivial manager does nothing but return the same pointer (if we
+ // are cloning) or return the null pointer (if we are deleting).
+ template<typename F>
+ struct reference_manager
+ {
+ static inline void
+ manage(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
+ {
+ switch (op) {
+ case clone_functor_tag:
+ out_buffer.obj_ref.obj_ptr = in_buffer.obj_ref.obj_ptr;
+ return;
+
+ case move_functor_tag:
+ out_buffer.obj_ref.obj_ptr = in_buffer.obj_ref.obj_ptr;
+ in_buffer.obj_ref.obj_ptr = 0;
+ return;
+
+ case destroy_functor_tag:
+ out_buffer.obj_ref.obj_ptr = 0;
+ return;
+
+ case check_functor_type_tag:
+ {
+ const BOOST_FUNCTION_STD_NS::type_info& check_type
+ = *out_buffer.type.type;
+
+ // Check whether we have the same type. We can add
+ // cv-qualifiers, but we can't take them away.
+ if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(F))
+ && (!in_buffer.obj_ref.is_const_qualified
+ || out_buffer.type.const_qualified)
+ && (!in_buffer.obj_ref.is_volatile_qualified
+ || out_buffer.type.volatile_qualified))
+ out_buffer.obj_ptr = in_buffer.obj_ref.obj_ptr;
+ else
+ out_buffer.obj_ptr = 0;
+ }
+ return;
+
+ case get_functor_type_tag:
+ out_buffer.type.type = &typeid(F);
+ out_buffer.type.const_qualified = in_buffer.obj_ref.is_const_qualified;
+ out_buffer.type.volatile_qualified = in_buffer.obj_ref.is_volatile_qualified;
+ return;
+ }
+ }
+ };
+
+ /**
+ * Determine if boost::function can use the small-object
+ * optimization with the function object type F.
+ */
+ template<typename F>
+ struct function_allows_small_object_optimization
+ {
+ BOOST_STATIC_CONSTANT
+ (bool,
+ value = ((sizeof(F) <= sizeof(function_buffer) &&
+ (alignment_of<function_buffer>::value
+ % alignment_of<F>::value == 0))));
+ };
+
+ template <typename F,typename A>
+ struct functor_wrapper: public F, public A
+ {
+ functor_wrapper( F f, A a ):
+ F(f),
+ A(a)
+ {
+ }
+ };
+
+ /**
+ * The functor_manager class contains a static function "manage" which
+ * can clone or destroy the given function/function object pointer.
+ */
+ template<typename Functor>
+ struct functor_manager_common
+ {
+ typedef Functor functor_type;
+
+ // Function pointers
+ static inline void
+ manage_ptr(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
+ {
+ if (op == clone_functor_tag)
+ out_buffer.func_ptr = in_buffer.func_ptr;
+ else if (op == move_functor_tag) {
+ out_buffer.func_ptr = in_buffer.func_ptr;
+ in_buffer.func_ptr = 0;
+ } else if (op == destroy_functor_tag)
+ out_buffer.func_ptr = 0;
+ else if (op == check_functor_type_tag) {
+ const BOOST_FUNCTION_STD_NS::type_info& check_type
+ = *out_buffer.type.type;
+ if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
+ out_buffer.obj_ptr = &in_buffer.func_ptr;
+ else
+ out_buffer.obj_ptr = 0;
+ } else /* op == get_functor_type_tag */ {
+ out_buffer.type.type = &typeid(Functor);
+ out_buffer.type.const_qualified = false;
+ out_buffer.type.volatile_qualified = false;
+ }
+ }
+
+ // Function objects that fit in the small-object buffer.
+ static inline void
+ manage_small(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
+ {
+ if (op == clone_functor_tag || op == move_functor_tag) {
+ const functor_type* in_functor =
+ reinterpret_cast<const functor_type*>(&in_buffer.data);
+ new ((void*)&out_buffer.data) functor_type(*in_functor);
+
+ if (op == move_functor_tag) {
+ reinterpret_cast<functor_type*>(&in_buffer.data)->~Functor();
+ }
+ } else if (op == destroy_functor_tag) {
+ // Some compilers (Borland, vc6, ...) are unhappy with ~functor_type.
+ reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor();
+ } else if (op == check_functor_type_tag) {
+ const BOOST_FUNCTION_STD_NS::type_info& check_type
+ = *out_buffer.type.type;
+ if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
+ out_buffer.obj_ptr = &in_buffer.data;
+ else
+ out_buffer.obj_ptr = 0;
+ } else /* op == get_functor_type_tag */ {
+ out_buffer.type.type = &typeid(Functor);
+ out_buffer.type.const_qualified = false;
+ out_buffer.type.volatile_qualified = false;
+ }
+ }
+ };
+
+ template<typename Functor>
+ struct functor_manager
+ {
+ private:
+ typedef Functor functor_type;
+
+ // Function pointers
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, function_ptr_tag)
+ {
+ functor_manager_common<Functor>::manage_ptr(in_buffer,out_buffer,op);
+ }
+
+ // Function objects that fit in the small-object buffer.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, mpl::true_)
+ {
+ functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
+ }
+
+ // Function objects that require heap allocation
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, mpl::false_)
+ {
+ if (op == clone_functor_tag) {
+ // Clone the functor
+ // GCC 2.95.3 gets the CV qualifiers wrong here, so we
+ // can't do the static_cast that we should do.
+ const functor_type* f =
+ (const functor_type*)(in_buffer.obj_ptr);
+ functor_type* new_f = new functor_type(*f);
+ out_buffer.obj_ptr = new_f;
+ } else if (op == move_functor_tag) {
+ out_buffer.obj_ptr = in_buffer.obj_ptr;
+ in_buffer.obj_ptr = 0;
+ } else if (op == destroy_functor_tag) {
+ /* Cast from the void pointer to the functor pointer type */
+ functor_type* f =
+ static_cast<functor_type*>(out_buffer.obj_ptr);
+ delete f;
+ out_buffer.obj_ptr = 0;
+ } else if (op == check_functor_type_tag) {
+ const BOOST_FUNCTION_STD_NS::type_info& check_type
+ = *out_buffer.type.type;
+ if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
+ out_buffer.obj_ptr = in_buffer.obj_ptr;
+ else
+ out_buffer.obj_ptr = 0;
+ } else /* op == get_functor_type_tag */ {
+ out_buffer.type.type = &typeid(Functor);
+ out_buffer.type.const_qualified = false;
+ out_buffer.type.volatile_qualified = false;
+ }
+ }
+
+ // For function objects, we determine whether the function
+ // object can use the small-object optimization buffer or
+ // whether we need to allocate it on the heap.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, function_obj_tag)
+ {
+ manager(in_buffer, out_buffer, op,
+ mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
+ }
+
+ // For member pointers, we use the small-object optimization buffer.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, member_ptr_tag)
+ {
+ manager(in_buffer, out_buffer, op, mpl::true_());
+ }
+
+ public:
+ /* Dispatch to an appropriate manager based on whether we have a
+ function pointer or a function object pointer. */
+ static inline void
+ manage(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
+ {
+ typedef typename get_function_tag<functor_type>::type tag_type;
+ switch (op) {
+ case get_functor_type_tag:
+ out_buffer.type.type = &typeid(functor_type);
+ out_buffer.type.const_qualified = false;
+ out_buffer.type.volatile_qualified = false;
+ return;
+
+ default:
+ manager(in_buffer, out_buffer, op, tag_type());
+ return;
+ }
+ }
+ };
+
+ template<typename Functor, typename Allocator>
+ struct functor_manager_a
+ {
+ private:
+ typedef Functor functor_type;
+
+ // Function pointers
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, function_ptr_tag)
+ {
+ functor_manager_common<Functor>::manage_ptr(in_buffer,out_buffer,op);
+ }
+
+ // Function objects that fit in the small-object buffer.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, mpl::true_)
+ {
+ functor_manager_common<Functor>::manage_small(in_buffer,out_buffer,op);
+ }
+
+ // Function objects that require heap allocation
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, mpl::false_)
+ {
+ typedef functor_wrapper<Functor,Allocator> functor_wrapper_type;
+ typedef typename Allocator::template rebind<functor_wrapper_type>::other
+ wrapper_allocator_type;
+ typedef typename wrapper_allocator_type::pointer wrapper_allocator_pointer_type;
+
+ if (op == clone_functor_tag) {
+ // Clone the functor
+ // GCC 2.95.3 gets the CV qualifiers wrong here, so we
+ // can't do the static_cast that we should do.
+ const functor_wrapper_type* f =
+ (const functor_wrapper_type*)(in_buffer.obj_ptr);
+ wrapper_allocator_type wrapper_allocator(static_cast<Allocator const &>(*f));
+ wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
+ wrapper_allocator.construct(copy, *f);
+
+ // Get back to the original pointer type
+ functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
+ out_buffer.obj_ptr = new_f;
+ } else if (op == move_functor_tag) {
+ out_buffer.obj_ptr = in_buffer.obj_ptr;
+ in_buffer.obj_ptr = 0;
+ } else if (op == destroy_functor_tag) {
+ /* Cast from the void pointer to the functor_wrapper_type */
+ functor_wrapper_type* victim =
+ static_cast<functor_wrapper_type*>(in_buffer.obj_ptr);
+ wrapper_allocator_type wrapper_allocator(static_cast<Allocator const &>(*victim));
+ wrapper_allocator.destroy(victim);
+ wrapper_allocator.deallocate(victim,1);
+ out_buffer.obj_ptr = 0;
+ } else if (op == check_functor_type_tag) {
+ const BOOST_FUNCTION_STD_NS::type_info& check_type
+ = *out_buffer.type.type;
+ if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
+ out_buffer.obj_ptr = in_buffer.obj_ptr;
+ else
+ out_buffer.obj_ptr = 0;
+ } else /* op == get_functor_type_tag */ {
+ out_buffer.type.type = &typeid(Functor);
+ out_buffer.type.const_qualified = false;
+ out_buffer.type.volatile_qualified = false;
+ }
+ }
+
+ // For function objects, we determine whether the function
+ // object can use the small-object optimization buffer or
+ // whether we need to allocate it on the heap.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, function_obj_tag)
+ {
+ manager(in_buffer, out_buffer, op,
+ mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
+ }
+
+ public:
+ /* Dispatch to an appropriate manager based on whether we have a
+ function pointer or a function object pointer. */
+ static inline void
+ manage(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
+ {
+ typedef typename get_function_tag<functor_type>::type tag_type;
+ switch (op) {
+ case get_functor_type_tag:
+ out_buffer.type.type = &typeid(functor_type);
+ out_buffer.type.const_qualified = false;
+ out_buffer.type.volatile_qualified = false;
+ return;
+
+ default:
+ manager(in_buffer, out_buffer, op, tag_type());
+ return;
+ }
+ }
+ };
+
+ // A type that is only used for comparisons against zero
+ struct useless_clear_type {};
+
+#ifdef BOOST_NO_SFINAE
+ // These routines perform comparisons between a Boost.Function
+ // object and an arbitrary function object (when the last
+ // parameter is mpl::bool_<false>) or against zero (when the
+ // last parameter is mpl::bool_<true>). They are only necessary
+ // for compilers that don't support SFINAE.
+ template<typename Function, typename Functor>
+ bool
+ compare_equal(const Function& f, const Functor&, int, mpl::bool_<true>)
+ { return f.empty(); }
+
+ template<typename Function, typename Functor>
+ bool
+ compare_not_equal(const Function& f, const Functor&, int,
+ mpl::bool_<true>)
+ { return !f.empty(); }
+
+ template<typename Function, typename Functor>
+ bool
+ compare_equal(const Function& f, const Functor& g, long,
+ mpl::bool_<false>)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return function_equal(*fp, g);
+ else return false;
+ }
+
+ template<typename Function, typename Functor>
+ bool
+ compare_equal(const Function& f, const reference_wrapper<Functor>& g,
+ int, mpl::bool_<false>)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return fp == g.get_pointer();
+ else return false;
+ }
+
+ template<typename Function, typename Functor>
+ bool
+ compare_not_equal(const Function& f, const Functor& g, long,
+ mpl::bool_<false>)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return !function_equal(*fp, g);
+ else return true;
+ }
+
+ template<typename Function, typename Functor>
+ bool
+ compare_not_equal(const Function& f,
+ const reference_wrapper<Functor>& g, int,
+ mpl::bool_<false>)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return fp != g.get_pointer();
+ else return true;
+ }
+#endif // BOOST_NO_SFINAE
+
+ /**
+ * Stores the "manager" portion of the vtable for a
+ * boost::function object.
+ */
+ struct vtable_base
+ {
+ void (*manager)(const function_buffer& in_buffer,
+ function_buffer& out_buffer,
+ functor_manager_operation_type op);
+ };
+ } // end namespace function
+ } // end namespace detail
+
+/**
+ * The function_base class contains the basic elements needed for the
+ * function1, function2, function3, etc. classes. It is common to all
+ * functions (and as such can be used to tell if we have one of the
+ * functionN objects).
+ */
+class function_base
+{
+public:
+ function_base() : vtable(0) { }
+
+ /** Determine if the function is empty (i.e., has no target). */
+ bool empty() const { return !vtable; }
+
+ /** Retrieve the type of the stored function object, or typeid(void)
+ if this is empty. */
+ const BOOST_FUNCTION_STD_NS::type_info& target_type() const
+ {
+ if (!vtable) return typeid(void);
+
+ detail::function::function_buffer type;
+ vtable->manager(functor, type, detail::function::get_functor_type_tag);
+ return *type.type.type;
+ }
+
+ template<typename Functor>
+ Functor* target()
+ {
+ if (!vtable) return 0;
+
+ detail::function::function_buffer type_result;
+ type_result.type.type = &typeid(Functor);
+ type_result.type.const_qualified = is_const<Functor>::value;
+ type_result.type.volatile_qualified = is_volatile<Functor>::value;
+ vtable->manager(functor, type_result,
+ detail::function::check_functor_type_tag);
+ return static_cast<Functor*>(type_result.obj_ptr);
+ }
+
+ template<typename Functor>
+#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ const Functor* target( Functor * = 0 ) const
+#else
+ const Functor* target() const
+#endif
+ {
+ if (!vtable) return 0;
+
+ detail::function::function_buffer type_result;
+ type_result.type.type = &typeid(Functor);
+ type_result.type.const_qualified = true;
+ type_result.type.volatile_qualified = is_volatile<Functor>::value;
+ vtable->manager(functor, type_result,
+ detail::function::check_functor_type_tag);
+ // GCC 2.95.3 gets the CV qualifiers wrong here, so we
+ // can't do the static_cast that we should do.
+ return (const Functor*)(type_result.obj_ptr);
+ }
+
+ template<typename F>
+ bool contains(const F& f) const
+ {
+#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ if (const F* fp = this->target( (F*)0 ))
+#else
+ if (const F* fp = this->template target<F>())
+#endif
+ {
+ return function_equal(*fp, f);
+ } else {
+ return false;
+ }
+ }
+
+#if defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3
+ // GCC 3.3 and newer cannot copy with the global operator==, due to
+ // problems with instantiation of function return types before it
+ // has been verified that the argument types match up.
+ template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator==(Functor g) const
+ {
+ if (const Functor* fp = target<Functor>())
+ return function_equal(*fp, g);
+ else return false;
+ }
+
+ template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator!=(Functor g) const
+ {
+ if (const Functor* fp = target<Functor>())
+ return !function_equal(*fp, g);
+ else return true;
+ }
+#endif
+
+public: // should be protected, but GCC 2.95.3 will fail to allow access
+ detail::function::vtable_base* vtable;
+ mutable detail::function::function_buffer functor;
+};
+
+/**
+ * The bad_function_call exception class is thrown when a boost::function
+ * object is invoked
+ */
+class bad_function_call : public std::runtime_error
+{
+public:
+ bad_function_call() : std::runtime_error("call to empty boost::function") {}
+};
+
+#ifndef BOOST_NO_SFINAE
+inline bool operator==(const function_base& f,
+ detail::function::useless_clear_type*)
+{
+ return f.empty();
+}
+
+inline bool operator!=(const function_base& f,
+ detail::function::useless_clear_type*)
+{
+ return !f.empty();
+}
+
+inline bool operator==(detail::function::useless_clear_type*,
+ const function_base& f)
+{
+ return f.empty();
+}
+
+inline bool operator!=(detail::function::useless_clear_type*,
+ const function_base& f)
+{
+ return !f.empty();
+}
+#endif
+
+#ifdef BOOST_NO_SFINAE
+// Comparisons between boost::function objects and arbitrary function objects
+template<typename Functor>
+ inline bool operator==(const function_base& f, Functor g)
+ {
+ typedef mpl::bool_<(is_integral<Functor>::value)> integral;
+ return detail::function::compare_equal(f, g, 0, integral());
+ }
+
+template<typename Functor>
+ inline bool operator==(Functor g, const function_base& f)
+ {
+ typedef mpl::bool_<(is_integral<Functor>::value)> integral;
+ return detail::function::compare_equal(f, g, 0, integral());
+ }
+
+template<typename Functor>
+ inline bool operator!=(const function_base& f, Functor g)
+ {
+ typedef mpl::bool_<(is_integral<Functor>::value)> integral;
+ return detail::function::compare_not_equal(f, g, 0, integral());
+ }
+
+template<typename Functor>
+ inline bool operator!=(Functor g, const function_base& f)
+ {
+ typedef mpl::bool_<(is_integral<Functor>::value)> integral;
+ return detail::function::compare_not_equal(f, g, 0, integral());
+ }
+#else
+
+# if !(defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3)
+// Comparisons between boost::function objects and arbitrary function
+// objects. GCC 3.3 and before has an obnoxious bug that prevents this
+// from working.
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator==(const function_base& f, Functor g)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return function_equal(*fp, g);
+ else return false;
+ }
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator==(Functor g, const function_base& f)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return function_equal(g, *fp);
+ else return false;
+ }
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator!=(const function_base& f, Functor g)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return !function_equal(*fp, g);
+ else return true;
+ }
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator!=(Functor g, const function_base& f)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return !function_equal(g, *fp);
+ else return true;
+ }
+# endif
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator==(const function_base& f, reference_wrapper<Functor> g)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return fp == g.get_pointer();
+ else return false;
+ }
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator==(reference_wrapper<Functor> g, const function_base& f)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return g.get_pointer() == fp;
+ else return false;
+ }
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator!=(const function_base& f, reference_wrapper<Functor> g)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return fp != g.get_pointer();
+ else return true;
+ }
+
+template<typename Functor>
+ BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL(Functor, bool)
+ operator!=(reference_wrapper<Functor> g, const function_base& f)
+ {
+ if (const Functor* fp = f.template target<Functor>())
+ return g.get_pointer() != fp;
+ else return true;
+ }
+
+#endif // Compiler supporting SFINAE
+
+namespace detail {
+ namespace function {
+ inline bool has_empty_target(const function_base* f)
+ {
+ return f->empty();
+ }
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
+ inline bool has_empty_target(const void*)
+ {
+ return false;
+ }
+#else
+ inline bool has_empty_target(...)
+ {
+ return false;
+ }
+#endif
+ } // end namespace function
+} // end namespace detail
+} // end namespace boost
+
+#undef BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL
+#undef BOOST_FUNCTION_COMPARE_TYPE_ID
+
+#endif // BOOST_FUNCTION_BASE_HEADER
diff --git a/3rdParty/Boost/boost/function/function_fwd.hpp b/3rdParty/Boost/boost/function/function_fwd.hpp
new file mode 100644
index 0000000..d2f713a
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function_fwd.hpp
@@ -0,0 +1,70 @@
+// Boost.Function library
+// Copyright (C) Douglas Gregor 2008
+//
+// 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)
+//
+// For more information, see http://www.boost.org
+#ifndef BOOST_FUNCTION_FWD_HPP
+#define BOOST_FUNCTION_FWD_HPP
+#include <boost/config.hpp>
+
+#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730 && !defined(BOOST_STRICT_CONFIG)
+// Work around a compiler bug.
+// boost::python::objects::function has to be seen by the compiler before the
+// boost::function class template.
+namespace boost { namespace python { namespace objects {
+ class function;
+}}}
+#endif
+
+#if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \
+ || !(BOOST_STRICT_CONFIG || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
+# define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
+#endif
+
+namespace boost {
+ class bad_function_call;
+
+#if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX)
+ // Preferred syntax
+ template<typename Signature> class function;
+
+ template<typename Signature>
+ inline void swap(function<Signature>& f1, function<Signature>& f2)
+ {
+ f1.swap(f2);
+ }
+#endif // have partial specialization
+
+ // Portable syntax
+ template<typename R> class function0;
+ template<typename R, typename T1> class function1;
+ template<typename R, typename T1, typename T2> class function2;
+ template<typename R, typename T1, typename T2, typename T3> class function3;
+ template<typename R, typename T1, typename T2, typename T3, typename T4>
+ class function4;
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5>
+ class function5;
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6>
+ class function6;
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7>
+ class function7;
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8>
+ class function8;
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9>
+ class function9;
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9,
+ typename T10>
+ class function10;
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/function/function_template.hpp b/3rdParty/Boost/boost/function/function_template.hpp
new file mode 100644
index 0000000..584abe9
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function_template.hpp
@@ -0,0 +1,1134 @@
+// Boost.Function library
+
+// Copyright Douglas Gregor 2001-2006
+// Copyright Emil Dotchevski 2007
+// 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)
+
+// For more information, see http://www.boost.org
+
+// Note: this header is a header template and must NOT have multiple-inclusion
+// protection.
+#include <boost/function/detail/prologue.hpp>
+
+#if defined(BOOST_MSVC)
+# pragma warning( push )
+# pragma warning( disable : 4127 ) // "conditional expression is constant"
+#endif
+
+#define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
+
+#define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
+
+#define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I)
+
+#define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY)
+
+#define BOOST_FUNCTION_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, a)
+
+#define BOOST_FUNCTION_ARG_TYPE(J,I,D) \
+ typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type);
+
+#define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY)
+
+// Comma if nonzero number of arguments
+#if BOOST_FUNCTION_NUM_ARGS == 0
+# define BOOST_FUNCTION_COMMA
+#else
+# define BOOST_FUNCTION_COMMA ,
+#endif // BOOST_FUNCTION_NUM_ARGS > 0
+
+// Class names used in this version of the code
+#define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_FUNCTION_INVOKER \
+ BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VOID_FUNCTION_INVOKER \
+ BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER \
+ BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER \
+ BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_FUNCTION_REF_INVOKER \
+ BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER \
+ BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_MEMBER_INVOKER \
+ BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VOID_MEMBER_INVOKER \
+ BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_FUNCTION_INVOKER \
+ BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER \
+ BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER \
+ BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_MEMBER_INVOKER \
+ BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_INVOKER \
+ BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
+
+#ifndef BOOST_NO_VOID_RETURNS
+# define BOOST_FUNCTION_VOID_RETURN_TYPE void
+# define BOOST_FUNCTION_RETURN(X) X
+#else
+# define BOOST_FUNCTION_VOID_RETURN_TYPE boost::detail::function::unusable
+# define BOOST_FUNCTION_RETURN(X) X; return BOOST_FUNCTION_VOID_RETURN_TYPE ()
+#endif
+
+namespace boost {
+ namespace detail {
+ namespace function {
+ template<
+ typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_FUNCTION_INVOKER
+ {
+ static R invoke(function_buffer& function_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+ {
+ FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
+ return f(BOOST_FUNCTION_ARGS);
+ }
+ };
+
+ template<
+ typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_VOID_FUNCTION_INVOKER
+ {
+ static BOOST_FUNCTION_VOID_RETURN_TYPE
+ invoke(function_buffer& function_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);
+ BOOST_FUNCTION_RETURN(f(BOOST_FUNCTION_ARGS));
+ }
+ };
+
+ template<
+ typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
+ {
+ static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ FunctionObj* f;
+ if (function_allows_small_object_optimization<FunctionObj>::value)
+ f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
+ else
+ f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
+ return (*f)(BOOST_FUNCTION_ARGS);
+ }
+ };
+
+ template<
+ typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
+ {
+ static BOOST_FUNCTION_VOID_RETURN_TYPE
+ invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ FunctionObj* f;
+ if (function_allows_small_object_optimization<FunctionObj>::value)
+ f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);
+ else
+ f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
+ BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS));
+ }
+ };
+
+ template<
+ typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_FUNCTION_REF_INVOKER
+ {
+ static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ FunctionObj* f =
+ reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
+ return (*f)(BOOST_FUNCTION_ARGS);
+ }
+ };
+
+ template<
+ typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
+ {
+ static BOOST_FUNCTION_VOID_RETURN_TYPE
+ invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ FunctionObj* f =
+ reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);
+ BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS));
+ }
+ };
+
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Handle invocation of member pointers. */
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_MEMBER_INVOKER
+ {
+ static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ MemberPtr* f =
+ reinterpret_cast<MemberPtr*>(&function_obj_ptr.data);
+ return boost::mem_fn(*f)(BOOST_FUNCTION_ARGS);
+ }
+ };
+
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_VOID_MEMBER_INVOKER
+ {
+ static BOOST_FUNCTION_VOID_RETURN_TYPE
+ invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ MemberPtr* f =
+ reinterpret_cast<MemberPtr*>(&function_obj_ptr.data);
+ BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
+ }
+ };
+#endif
+
+ template<
+ typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_GET_FUNCTION_INVOKER
+ {
+ typedef typename mpl::if_c<(is_void<R>::value),
+ BOOST_FUNCTION_VOID_FUNCTION_INVOKER<
+ FunctionPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >,
+ BOOST_FUNCTION_FUNCTION_INVOKER<
+ FunctionPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >
+ >::type type;
+ };
+
+ template<
+ typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
+ {
+ typedef typename mpl::if_c<(is_void<R>::value),
+ BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >,
+ BOOST_FUNCTION_FUNCTION_OBJ_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >
+ >::type type;
+ };
+
+ template<
+ typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
+ {
+ typedef typename mpl::if_c<(is_void<R>::value),
+ BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >,
+ BOOST_FUNCTION_FUNCTION_REF_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >
+ >::type type;
+ };
+
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Retrieve the appropriate invoker for a member pointer. */
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_GET_MEMBER_INVOKER
+ {
+ typedef typename mpl::if_c<(is_void<R>::value),
+ BOOST_FUNCTION_VOID_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >,
+ BOOST_FUNCTION_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >
+ >::type type;
+ };
+#endif
+
+ /* Given the tag returned by get_function_tag, retrieve the
+ actual invoker that will be used for the given function
+ object.
+
+ Each specialization contains an "apply" nested class template
+ that accepts the function object, return type, function
+ argument types, and allocator. The resulting "apply" class
+ contains two typedefs, "invoker_type" and "manager_type",
+ which correspond to the invoker and manager types. */
+ template<typename Tag>
+ struct BOOST_FUNCTION_GET_INVOKER { };
+
+ /* Retrieve the invoker for a function pointer. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_ptr_tag>
+ {
+ template<typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
+ FunctionPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionPtr> manager_type;
+ };
+
+ template<typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply_a
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
+ FunctionPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionPtr> manager_type;
+ };
+ };
+
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Retrieve the invoker for a member pointer. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<member_ptr_tag>
+ {
+ template<typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<MemberPtr> manager_type;
+ };
+
+ template<typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply_a
+ {
+ typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<MemberPtr> manager_type;
+ };
+ };
+#endif
+
+ /* Retrieve the invoker for a function object. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_tag>
+ {
+ template<typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionObj> manager_type;
+ };
+
+ template<typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply_a
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager_a<FunctionObj, Allocator> manager_type;
+ };
+ };
+
+ /* Retrieve the invoker for a reference to a function object. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_ref_tag>
+ {
+ template<typename RefWrapper,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
+ typename RefWrapper::type,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef reference_manager<typename RefWrapper::type> manager_type;
+ };
+
+ template<typename RefWrapper,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply_a
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
+ typename RefWrapper::type,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef reference_manager<typename RefWrapper::type> manager_type;
+ };
+ };
+
+
+ /**
+ * vtable for a specific boost::function instance. This
+ * structure must be an aggregate so that we can use static
+ * initialization in boost::function's assign_to and assign_to_a
+ * members. It therefore cannot have any constructors,
+ * destructors, base classes, etc.
+ */
+ template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ struct BOOST_FUNCTION_VTABLE
+ {
+#ifndef BOOST_NO_VOID_RETURNS
+ typedef R result_type;
+#else
+ typedef typename function_return_type<R>::type result_type;
+#endif // BOOST_NO_VOID_RETURNS
+
+ typedef result_type (*invoker_type)(function_buffer&
+ BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS);
+
+ template<typename F>
+ bool assign_to(F f, function_buffer& functor)
+ {
+ typedef typename get_function_tag<F>::type tag;
+ return assign_to(f, functor, tag());
+ }
+ template<typename F,typename Allocator>
+ bool assign_to_a(F f, function_buffer& functor, Allocator a)
+ {
+ typedef typename get_function_tag<F>::type tag;
+ return assign_to_a(f, functor, a, tag());
+ }
+
+ void clear(function_buffer& functor)
+ {
+ if (base.manager)
+ base.manager(functor, functor, destroy_functor_tag);
+ }
+
+ private:
+ // Function pointers
+ template<typename FunctionPtr>
+ bool
+ assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
+ {
+ this->clear(functor);
+ if (f) {
+ // should be a reinterpret cast, but some compilers insist
+ // on giving cv-qualifiers to free functions
+ functor.func_ptr = (void (*)())(f);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ template<typename FunctionPtr,typename Allocator>
+ bool
+ assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag)
+ {
+ return assign_to(f,functor,function_ptr_tag());
+ }
+
+ // Member pointers
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ template<typename MemberPtr>
+ bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
+ {
+ // DPG TBD: Add explicit support for member function
+ // objects, so we invoke through mem_fn() but we retain the
+ // right target_type() values.
+ if (f) {
+ this->assign_to(mem_fn(f), functor);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ template<typename MemberPtr,typename Allocator>
+ bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag)
+ {
+ // DPG TBD: Add explicit support for member function
+ // objects, so we invoke through mem_fn() but we retain the
+ // right target_type() values.
+ if (f) {
+ this->assign_to_a(mem_fn(f), functor, a);
+ return true;
+ } else {
+ return false;
+ }
+ }
+#endif // BOOST_FUNCTION_NUM_ARGS > 0
+
+ // Function objects
+ // Assign to a function object using the small object optimization
+ template<typename FunctionObj>
+ void
+ assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
+ {
+ new ((void*)&functor.data) FunctionObj(f);
+ }
+ template<typename FunctionObj,typename Allocator>
+ void
+ assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, mpl::true_)
+ {
+ assign_functor(f,functor,mpl::true_());
+ }
+
+ // Assign to a function object allocated on the heap.
+ template<typename FunctionObj>
+ void
+ assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
+ {
+ functor.obj_ptr = new FunctionObj(f);
+ }
+ template<typename FunctionObj,typename Allocator>
+ void
+ assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, mpl::false_)
+ {
+ typedef functor_wrapper<FunctionObj,Allocator> functor_wrapper_type;
+ typedef typename Allocator::template rebind<functor_wrapper_type>::other
+ wrapper_allocator_type;
+ typedef typename wrapper_allocator_type::pointer wrapper_allocator_pointer_type;
+ wrapper_allocator_type wrapper_allocator(a);
+ wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1);
+ wrapper_allocator.construct(copy, functor_wrapper_type(f,a));
+ functor_wrapper_type* new_f = static_cast<functor_wrapper_type*>(copy);
+ functor.obj_ptr = new_f;
+ }
+
+ template<typename FunctionObj>
+ bool
+ assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
+ {
+ if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
+ assign_functor(f, functor,
+ mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
+ return true;
+ } else {
+ return false;
+ }
+ }
+ template<typename FunctionObj,typename Allocator>
+ bool
+ assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag)
+ {
+ if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
+ assign_functor_a(f, functor, a,
+ mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ // Reference to a function object
+ template<typename FunctionObj>
+ bool
+ assign_to(const reference_wrapper<FunctionObj>& f,
+ function_buffer& functor, function_obj_ref_tag)
+ {
+ if (!boost::detail::function::has_empty_target(f.get_pointer())) {
+ functor.obj_ref.obj_ptr = (void *)f.get_pointer();
+ functor.obj_ref.is_const_qualified = is_const<FunctionObj>::value;
+ functor.obj_ref.is_volatile_qualified = is_volatile<FunctionObj>::value;
+ return true;
+ } else {
+ return false;
+ }
+ }
+ template<typename FunctionObj,typename Allocator>
+ bool
+ assign_to_a(const reference_wrapper<FunctionObj>& f,
+ function_buffer& functor, Allocator, function_obj_ref_tag)
+ {
+ return assign_to(f,functor,function_obj_ref_tag());
+ }
+
+ public:
+ vtable_base base;
+ invoker_type invoker;
+ };
+ } // end namespace function
+ } // end namespace detail
+
+ template<
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ class BOOST_FUNCTION_FUNCTION : public function_base
+
+#if BOOST_FUNCTION_NUM_ARGS == 1
+
+ , public std::unary_function<T0,R>
+
+#elif BOOST_FUNCTION_NUM_ARGS == 2
+
+ , public std::binary_function<T0,T1,R>
+
+#endif
+
+ {
+ public:
+#ifndef BOOST_NO_VOID_RETURNS
+ typedef R result_type;
+#else
+ typedef typename boost::detail::function::function_return_type<R>::type
+ result_type;
+#endif // BOOST_NO_VOID_RETURNS
+
+ private:
+ typedef boost::detail::function::BOOST_FUNCTION_VTABLE<
+ R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS>
+ vtable_type;
+
+ struct clear_type {};
+
+ public:
+ BOOST_STATIC_CONSTANT(int, args = BOOST_FUNCTION_NUM_ARGS);
+
+ // add signature for boost::lambda
+ template<typename Args>
+ struct sig
+ {
+ typedef result_type type;
+ };
+
+#if BOOST_FUNCTION_NUM_ARGS == 1
+ typedef T0 argument_type;
+#elif BOOST_FUNCTION_NUM_ARGS == 2
+ typedef T0 first_argument_type;
+ typedef T1 second_argument_type;
+#endif
+
+ BOOST_STATIC_CONSTANT(int, arity = BOOST_FUNCTION_NUM_ARGS);
+ BOOST_FUNCTION_ARG_TYPES
+
+ typedef BOOST_FUNCTION_FUNCTION self_type;
+
+ BOOST_FUNCTION_FUNCTION() : function_base() { }
+
+ // MSVC chokes if the following two constructors are collapsed into
+ // one with a default parameter.
+ template<typename Functor>
+ BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f
+#ifndef BOOST_NO_SFINAE
+ ,typename enable_if_c<
+ (boost::type_traits::ice_not<
+ (is_integral<Functor>::value)>::value),
+ int>::type = 0
+#endif // BOOST_NO_SFINAE
+ ) :
+ function_base()
+ {
+ this->assign_to(f);
+ }
+ template<typename Functor,typename Allocator>
+ BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f, Allocator a
+#ifndef BOOST_NO_SFINAE
+ ,typename enable_if_c<
+ (boost::type_traits::ice_not<
+ (is_integral<Functor>::value)>::value),
+ int>::type = 0
+#endif // BOOST_NO_SFINAE
+ ) :
+ function_base()
+ {
+ this->assign_to_a(f,a);
+ }
+
+#ifndef BOOST_NO_SFINAE
+ BOOST_FUNCTION_FUNCTION(clear_type*) : function_base() { }
+#else
+ BOOST_FUNCTION_FUNCTION(int zero) : function_base()
+ {
+ BOOST_ASSERT(zero == 0);
+ }
+#endif
+
+ BOOST_FUNCTION_FUNCTION(const BOOST_FUNCTION_FUNCTION& f) : function_base()
+ {
+ this->assign_to_own(f);
+ }
+
+ ~BOOST_FUNCTION_FUNCTION() { clear(); }
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // MSVC 6.0 and prior require all definitions to be inline, but
+ // these definitions can become very costly.
+ result_type operator()(BOOST_FUNCTION_PARMS) const
+ {
+ if (this->empty())
+ boost::throw_exception(bad_function_call());
+
+ return static_cast<vtable_type*>(vtable)->invoker
+ (this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS);
+ }
+#else
+ result_type operator()(BOOST_FUNCTION_PARMS) const;
+#endif
+
+ // The distinction between when to use BOOST_FUNCTION_FUNCTION and
+ // when to use self_type is obnoxious. MSVC cannot handle self_type as
+ // the return type of these assignment operators, but Borland C++ cannot
+ // handle BOOST_FUNCTION_FUNCTION as the type of the temporary to
+ // construct.
+ template<typename Functor>
+#ifndef BOOST_NO_SFINAE
+ typename enable_if_c<
+ (boost::type_traits::ice_not<
+ (is_integral<Functor>::value)>::value),
+ BOOST_FUNCTION_FUNCTION&>::type
+#else
+ BOOST_FUNCTION_FUNCTION&
+#endif
+ operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
+ {
+ this->clear();
+ try {
+ this->assign_to(f);
+ } catch (...) {
+ vtable = 0;
+ throw;
+ }
+ return *this;
+ }
+ template<typename Functor,typename Allocator>
+ void assign(Functor BOOST_FUNCTION_TARGET_FIX(const &) f, Allocator a)
+ {
+ this->clear();
+ try {
+ this->assign_to_a(f,a);
+ } catch (...) {
+ vtable = 0;
+ throw;
+ }
+ }
+
+#ifndef BOOST_NO_SFINAE
+ BOOST_FUNCTION_FUNCTION& operator=(clear_type*)
+ {
+ this->clear();
+ return *this;
+ }
+#else
+ BOOST_FUNCTION_FUNCTION& operator=(int zero)
+ {
+ BOOST_ASSERT(zero == 0);
+ this->clear();
+ return *this;
+ }
+#endif
+
+ // Assignment from another BOOST_FUNCTION_FUNCTION
+ BOOST_FUNCTION_FUNCTION& operator=(const BOOST_FUNCTION_FUNCTION& f)
+ {
+ if (&f == this)
+ return *this;
+
+ this->clear();
+ try {
+ this->assign_to_own(f);
+ } catch (...) {
+ vtable = 0;
+ throw;
+ }
+ return *this;
+ }
+
+ void swap(BOOST_FUNCTION_FUNCTION& other)
+ {
+ if (&other == this)
+ return;
+
+ BOOST_FUNCTION_FUNCTION tmp;
+ tmp.move_assign(*this);
+ this->move_assign(other);
+ other.move_assign(tmp);
+ }
+
+ // Clear out a target, if there is one
+ void clear()
+ {
+ if (vtable) {
+ reinterpret_cast<vtable_type*>(vtable)->clear(this->functor);
+ vtable = 0;
+ }
+ }
+
+#if (defined __SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && !(defined BOOST_NO_COMPILER_CONFIG)
+ // Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it
+ operator bool () const { return !this->empty(); }
+#else
+ private:
+ struct dummy {
+ void nonnull() {};
+ };
+
+ typedef void (dummy::*safe_bool)();
+
+ public:
+ operator safe_bool () const
+ { return (this->empty())? 0 : &dummy::nonnull; }
+
+ bool operator!() const
+ { return this->empty(); }
+#endif
+
+ private:
+ void assign_to_own(const BOOST_FUNCTION_FUNCTION& f)
+ {
+ if (!f.empty()) {
+ this->vtable = f.vtable;
+ f.vtable->manager(f.functor, this->functor,
+ boost::detail::function::clone_functor_tag);
+ }
+ }
+
+ template<typename Functor>
+ void assign_to(Functor f)
+ {
+ using detail::function::vtable_base;
+
+ typedef typename detail::function::get_function_tag<Functor>::type tag;
+ typedef detail::function::BOOST_FUNCTION_GET_INVOKER<tag> get_invoker;
+ typedef typename get_invoker::
+ template apply<Functor, R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS>
+ handler_type;
+
+ typedef typename handler_type::invoker_type invoker_type;
+ typedef typename handler_type::manager_type manager_type;
+
+ // Note: it is extremely important that this initialization use
+ // static initialization. Otherwise, we will have a race
+ // condition here in multi-threaded code. See
+ // http://thread.gmane.org/gmane.comp.lib.boost.devel/164902/.
+ static vtable_type stored_vtable =
+ { { &manager_type::manage }, &invoker_type::invoke };
+
+ if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable.base;
+ else vtable = 0;
+ }
+
+ template<typename Functor,typename Allocator>
+ void assign_to_a(Functor f,Allocator a)
+ {
+ using detail::function::vtable_base;
+
+ typedef typename detail::function::get_function_tag<Functor>::type tag;
+ typedef detail::function::BOOST_FUNCTION_GET_INVOKER<tag> get_invoker;
+ typedef typename get_invoker::
+ template apply_a<Functor, R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS,
+ Allocator>
+ handler_type;
+
+ typedef typename handler_type::invoker_type invoker_type;
+ typedef typename handler_type::manager_type manager_type;
+
+ // Note: it is extremely important that this initialization use
+ // static initialization. Otherwise, we will have a race
+ // condition here in multi-threaded code. See
+ // http://thread.gmane.org/gmane.comp.lib.boost.devel/164902/.
+ static vtable_type stored_vtable =
+ { { &manager_type::manage }, &invoker_type::invoke };
+
+ if (stored_vtable.assign_to_a(f, functor, a)) vtable = &stored_vtable.base;
+ else vtable = 0;
+ }
+
+ // Moves the value from the specified argument to *this. If the argument
+ // has its function object allocated on the heap, move_assign will pass
+ // its buffer to *this, and set the argument's buffer pointer to NULL.
+ void move_assign(BOOST_FUNCTION_FUNCTION& f)
+ {
+ if (&f == this)
+ return;
+
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try {
+#endif
+ if (!f.empty()) {
+ this->vtable = f.vtable;
+ f.vtable->manager(f.functor, this->functor,
+ boost::detail::function::move_functor_tag);
+ f.vtable = 0;
+#if !defined(BOOST_NO_EXCEPTIONS)
+ } else {
+ clear();
+ }
+ } catch (...) {
+ vtable = 0;
+ throw;
+ }
+#endif
+ }
+ };
+
+ template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ inline void swap(BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >& f1,
+ BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >& f2)
+ {
+ f1.swap(f2);
+ }
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ typename BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS>::result_type
+ BOOST_FUNCTION_FUNCTION<R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS>
+ ::operator()(BOOST_FUNCTION_PARMS) const
+ {
+ if (this->empty())
+ boost::throw_exception(bad_function_call());
+
+ return reinterpret_cast<const vtable_type*>(vtable)->invoker
+ (this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS);
+ }
+#endif
+
+// Poison comparisons between boost::function objects of the same type.
+template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ void operator==(const BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS>&,
+ const BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS>&);
+template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS>
+ void operator!=(const BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS>&,
+ const BOOST_FUNCTION_FUNCTION<
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS>& );
+
+#if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX)
+
+#if BOOST_FUNCTION_NUM_ARGS == 0
+#define BOOST_FUNCTION_PARTIAL_SPEC R (void)
+#else
+#define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS,T))
+#endif
+
+template<typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS>
+class function<BOOST_FUNCTION_PARTIAL_SPEC>
+ : public BOOST_FUNCTION_FUNCTION<R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS>
+{
+ typedef BOOST_FUNCTION_FUNCTION<R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS> base_type;
+ typedef function self_type;
+
+ struct clear_type {};
+
+public:
+
+ function() : base_type() {}
+
+ template<typename Functor>
+ function(Functor f
+#ifndef BOOST_NO_SFINAE
+ ,typename enable_if_c<
+ (boost::type_traits::ice_not<
+ (is_integral<Functor>::value)>::value),
+ int>::type = 0
+#endif
+ ) :
+ base_type(f)
+ {
+ }
+ template<typename Functor,typename Allocator>
+ function(Functor f, Allocator a
+#ifndef BOOST_NO_SFINAE
+ ,typename enable_if_c<
+ (boost::type_traits::ice_not<
+ (is_integral<Functor>::value)>::value),
+ int>::type = 0
+#endif
+ ) :
+ base_type(f,a)
+ {
+ }
+
+#ifndef BOOST_NO_SFINAE
+ function(clear_type*) : base_type() {}
+#endif
+
+ function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}
+
+ function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}
+
+ self_type& operator=(const self_type& f)
+ {
+ self_type(f).swap(*this);
+ return *this;
+ }
+
+ template<typename Functor>
+#ifndef BOOST_NO_SFINAE
+ typename enable_if_c<
+ (boost::type_traits::ice_not<
+ (is_integral<Functor>::value)>::value),
+ self_type&>::type
+#else
+ self_type&
+#endif
+ operator=(Functor f)
+ {
+ self_type(f).swap(*this);
+ return *this;
+ }
+
+#ifndef BOOST_NO_SFINAE
+ self_type& operator=(clear_type*)
+ {
+ this->clear();
+ return *this;
+ }
+#endif
+
+ self_type& operator=(const base_type& f)
+ {
+ self_type(f).swap(*this);
+ return *this;
+ }
+};
+
+#undef BOOST_FUNCTION_PARTIAL_SPEC
+#endif // have partial specialization
+
+} // end namespace boost
+
+// Cleanup after ourselves...
+#undef BOOST_FUNCTION_VTABLE
+#undef BOOST_FUNCTION_COMMA
+#undef BOOST_FUNCTION_FUNCTION
+#undef BOOST_FUNCTION_FUNCTION_INVOKER
+#undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER
+#undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER
+#undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
+#undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
+#undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
+#undef BOOST_FUNCTION_MEMBER_INVOKER
+#undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
+#undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
+#undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
+#undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
+#undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
+#undef BOOST_FUNCTION_GET_INVOKER
+#undef BOOST_FUNCTION_TEMPLATE_PARMS
+#undef BOOST_FUNCTION_TEMPLATE_ARGS
+#undef BOOST_FUNCTION_PARMS
+#undef BOOST_FUNCTION_PARM
+#undef BOOST_FUNCTION_ARGS
+#undef BOOST_FUNCTION_ARG_TYPE
+#undef BOOST_FUNCTION_ARG_TYPES
+#undef BOOST_FUNCTION_VOID_RETURN_TYPE
+#undef BOOST_FUNCTION_RETURN
+
+#if defined(BOOST_MSVC)
+# pragma warning( pop )
+#endif
diff --git a/3rdParty/Boost/boost/function/function_typeof.hpp b/3rdParty/Boost/boost/function/function_typeof.hpp
new file mode 100644
index 0000000..246dc15
--- /dev/null
+++ b/3rdParty/Boost/boost/function/function_typeof.hpp
@@ -0,0 +1,45 @@
+// Boost.Function library - Typeof support
+// Copyright (C) Douglas Gregor 2008
+//
+// 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)
+//
+// For more information, see http://www.boost.org
+#ifndef BOOST_FUNCTION_TYPEOF_HPP
+#define BOOST_FUNCTION_TYPEOF_HPP
+#include <boost/function/function_fwd.hpp>
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(boost::bad_function_call)
+
+#if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function, (typename))
+#endif
+
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function0, (typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function1, (typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function2, (typename)(typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function3,
+ (typename)(typename)(typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function4,
+ (typename)(typename)(typename)(typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function5,
+ (typename)(typename)(typename)(typename)(typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function6,
+ (typename)(typename)(typename)(typename)(typename)(typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function7,
+ (typename)(typename)(typename)(typename)(typename)(typename)(typename)
+ (typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function8,
+ (typename)(typename)(typename)(typename)(typename)(typename)(typename)
+ (typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function9,
+ (typename)(typename)(typename)(typename)(typename)(typename)(typename)
+ (typename)(typename)(typename))
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::function10,
+ (typename)(typename)(typename)(typename)(typename)(typename)(typename)
+ (typename)(typename)(typename)(typename))
+#endif
diff --git a/3rdParty/Boost/boost/function/gen_function_N.pl b/3rdParty/Boost/boost/function/gen_function_N.pl
new file mode 100644
index 0000000..d8f1249
--- /dev/null
+++ b/3rdParty/Boost/boost/function/gen_function_N.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/perl -w
+#
+# Boost.Function library
+#
+# Copyright Douglas Gregor 2001-2003. 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)
+#
+# For more information, see http://www.boost.org
+use English;
+
+if ($#ARGV < 0) {
+ print "Usage: perl gen_function_N <number of arguments>\n";
+ exit;
+}
+
+
+$totalNumArgs = $ARGV[0];
+for ($numArgs = 0; $numArgs <= $totalNumArgs; ++$numArgs) {
+ open OUT, ">function$numArgs.hpp";
+ print OUT "#define BOOST_FUNCTION_NUM_ARGS $numArgs\n";
+ print OUT "#include <boost/function/detail/maybe_include.hpp>\n";
+ print OUT "#undef BOOST_FUNCTION_NUM_ARGS\n";
+ close OUT;
+}
diff --git a/3rdParty/Boost/boost/function_equal.hpp b/3rdParty/Boost/boost/function_equal.hpp
new file mode 100644
index 0000000..2d76c75
--- /dev/null
+++ b/3rdParty/Boost/boost/function_equal.hpp
@@ -0,0 +1,28 @@
+// Copyright Douglas Gregor 2004.
+// Copyright 2005 Peter Dimov
+
+// 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)
+
+// For more information, see http://www.boost.org
+#ifndef BOOST_FUNCTION_EQUAL_HPP
+#define BOOST_FUNCTION_EQUAL_HPP
+
+namespace boost {
+
+template<typename F, typename G>
+ bool function_equal_impl(const F& f, const G& g, long)
+ { return f == g; }
+
+// function_equal_impl needs to be unqualified to pick
+// user overloads on two-phase compilers
+
+template<typename F, typename G>
+ bool function_equal(const F& f, const G& g)
+ { return function_equal_impl(f, g, 0); }
+
+} // end namespace boost
+
+#endif // BOOST_FUNCTION_EQUAL_HPP
diff --git a/3rdParty/Boost/boost/functional/hash.hpp b/3rdParty/Boost/boost/functional/hash.hpp
new file mode 100644
index 0000000..44983f1
--- /dev/null
+++ b/3rdParty/Boost/boost/functional/hash.hpp
@@ -0,0 +1,7 @@
+
+// Copyright 2005-2009 Daniel James.
+// Distributed under the 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/functional/hash/hash.hpp>
+
diff --git a/3rdParty/Boost/boost/functional/hash/detail/float_functions.hpp b/3rdParty/Boost/boost/functional/hash/detail/float_functions.hpp
new file mode 100644
index 0000000..69cf91a
--- /dev/null
+++ b/3rdParty/Boost/boost/functional/hash/detail/float_functions.hpp
@@ -0,0 +1,162 @@
+
+// Copyright 2005-2009 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP)
+#define BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP
+
+#include <boost/config/no_tr1/cmath.hpp>
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// The C++ standard requires that the C float functions are overloarded
+// for float, double and long double in the std namespace, but some of the older
+// library implementations don't support this. On some that don't, the C99
+// float functions (frexpf, frexpl, etc.) are available.
+//
+// Some of this is based on guess work. If I don't know any better I assume that
+// the standard C++ overloaded functions are available. If they're not then this
+// means that the argument is cast to a double and back, which is inefficient
+// and will give pretty bad results for long doubles - so if you know better
+// let me know.
+
+// STLport:
+#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+# if (defined(__GNUC__) && __GNUC__ < 3 && (defined(linux) || defined(__linux) || defined(__linux__))) || defined(__DMC__)
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+# elif defined(BOOST_MSVC) && BOOST_MSVC < 1300
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+# else
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+# endif
+
+// Roguewave:
+//
+// On borland 5.51, with roguewave 2.1.1 the standard C++ overloads aren't
+// defined, but for the same version of roguewave on sunpro they are.
+#elif defined(_RWSTD_VER)
+# if defined(__BORLANDC__)
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+# define BOOST_HASH_C99_NO_FLOAT_FUNCS
+# elif defined(__DECCXX)
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+# else
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+# endif
+
+// libstdc++ (gcc 3.0 onwards, I think)
+#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+
+// SGI:
+#elif defined(__STL_CONFIG_H)
+# if defined(linux) || defined(__linux) || defined(__linux__)
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+# else
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+# endif
+
+// vxWorks. It has its own math library, but uses Dinkumware STL
+#elif defined(__VXWORKS__)
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+
+// Dinkumware.
+#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
+// Some versions of Visual C++ don't seem to have the C++ overloads but they
+// all seem to have the c99 float overloads
+# if defined(BOOST_MSVC)
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+// On other platforms the C++ overloads seem to have been introduced sometime
+// before 402.
+# elif defined(_CPPLIB_VER) && (_CPPLIB_VER >= 402)
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+# else
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+# endif
+
+// Digital Mars
+#elif defined(__DMC__)
+# define BOOST_HASH_USE_C99_FLOAT_FUNCS
+
+// Use overloaded float functions by default.
+#else
+# define BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+#endif
+
+namespace boost
+{
+ namespace hash_detail
+ {
+
+ inline float call_ldexp(float v, int exp)
+ {
+ using namespace std;
+#if defined(BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS) || \
+ defined(BOOST_HASH_C99_NO_FLOAT_FUNCS)
+ return ldexp(v, exp);
+#else
+ return ldexpf(v, exp);
+#endif
+ }
+
+ inline double call_ldexp(double v, int exp)
+ {
+ using namespace std;
+ return ldexp(v, exp);
+ }
+
+ inline long double call_ldexp(long double v, int exp)
+ {
+ using namespace std;
+#if defined(BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS)
+ return ldexp(v, exp);
+#else
+ return ldexpl(v, exp);
+#endif
+ }
+
+ inline float call_frexp(float v, int* exp)
+ {
+ using namespace std;
+#if defined(BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS) || \
+ defined(BOOST_HASH_C99_NO_FLOAT_FUNCS)
+ return frexp(v, exp);
+#else
+ return frexpf(v, exp);
+#endif
+ }
+
+ inline double call_frexp(double v, int* exp)
+ {
+ using namespace std;
+ return frexp(v, exp);
+ }
+
+ inline long double call_frexp(long double v, int* exp)
+ {
+ using namespace std;
+#if defined(BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS)
+ return frexp(v, exp);
+#else
+ return frexpl(v, exp);
+#endif
+ }
+ }
+}
+
+#if defined(BOOST_HASH_USE_C99_FLOAT_FUNCS)
+#undef BOOST_HASH_USE_C99_FLOAT_FUNCS
+#endif
+
+#if defined(BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS)
+#undef BOOST_HASH_USE_OVERLOAD_FLOAT_FUNCS
+#endif
+
+#if defined(BOOST_HASH_C99_NO_FLOAT_FUNCS)
+#undef BOOST_HASH_C99_NO_FLOAT_FUNCS
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/functional/hash/detail/hash_float.hpp b/3rdParty/Boost/boost/functional/hash/detail/hash_float.hpp
new file mode 100644
index 0000000..5d5ac34
--- /dev/null
+++ b/3rdParty/Boost/boost/functional/hash/detail/hash_float.hpp
@@ -0,0 +1,197 @@
+
+// Copyright 2005-2009 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER)
+#define BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#if defined(BOOST_MSVC)
+#pragma warning(push)
+#if BOOST_MSVC >= 1400
+#pragma warning(disable:6294) // Ill-defined for-loop: initial condition does
+ // not satisfy test. Loop body not executed
+#endif
+#endif
+
+#include <boost/functional/hash/detail/float_functions.hpp>
+#include <boost/integer/static_log2.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/limits.hpp>
+#include <boost/assert.hpp>
+
+// Select implementation for the current platform.
+
+// Cygwn
+#if defined(__CYGWIN__)
+# if defined(__i386__) || defined(_M_IX86)
+# define BOOST_HASH_USE_x86_BINARY_HASH
+# endif
+
+// STLport
+#elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+// fpclassify aren't good enough on STLport.
+
+// GNU libstdc++ 3
+#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# if (defined(__USE_ISOC99) || defined(_GLIBCXX_USE_C99_MATH)) && \
+ !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))
+# define BOOST_HASH_USE_FPCLASSIFY
+# endif
+
+// Dinkumware Library, on Visual C++
+#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
+
+// Not using _fpclass because it is only available for double.
+
+#endif
+
+// On OpenBSD, numeric_limits is not reliable for long doubles, but
+// the macros defined in <float.h> are.
+
+#if defined(__OpenBSD__)
+#include <float.h>
+#endif
+
+namespace boost
+{
+ namespace hash_detail
+ {
+ template <class T>
+ struct limits : std::numeric_limits<T> {};
+
+#if defined(__OpenBSD__)
+ template <>
+ struct limits<long double>
+ : std::numeric_limits<long double>
+ {
+ static long double epsilon() {
+ return LDBL_EPSILON;
+ }
+
+ static long double (max)() {
+ return LDBL_MAX;
+ }
+
+ static long double (min)() {
+ return LDBL_MIN;
+ }
+
+ BOOST_STATIC_CONSTANT(int, digits = LDBL_MANT_DIG);
+ BOOST_STATIC_CONSTANT(int, max_exponent = LDBL_MAX_EXP);
+ BOOST_STATIC_CONSTANT(int, min_exponent = LDBL_MIN_EXP);
+ };
+#endif // __OpenBSD__
+
+ inline void hash_float_combine(std::size_t& seed, std::size_t value)
+ {
+ seed ^= value + (seed<<6) + (seed>>2);
+ }
+
+// A simple, non-portable hash algorithm for x86.
+#if defined(BOOST_HASH_USE_x86_BINARY_HASH)
+ inline std::size_t float_hash_impl(float v)
+ {
+ boost::uint32_t* ptr = (boost::uint32_t*)&v;
+ std::size_t seed = *ptr;
+ return seed;
+ }
+
+ inline std::size_t float_hash_impl(double v)
+ {
+ boost::uint32_t* ptr = (boost::uint32_t*)&v;
+ std::size_t seed = *ptr++;
+ hash_float_combine(seed, *ptr);
+ return seed;
+ }
+
+ inline std::size_t float_hash_impl(long double v)
+ {
+ boost::uint32_t* ptr = (boost::uint32_t*)&v;
+ std::size_t seed = *ptr++;
+ hash_float_combine(seed, *ptr++);
+ hash_float_combine(seed, *(boost::uint16_t*)ptr);
+ return seed;
+ }
+
+#else
+
+ template <class T>
+ inline std::size_t float_hash_impl(T v)
+ {
+ int exp = 0;
+
+ v = boost::hash_detail::call_frexp(v, &exp);
+
+ // A postive value is easier to hash, so combine the
+ // sign with the exponent.
+ if(v < 0) {
+ v = -v;
+ exp += limits<T>::max_exponent -
+ limits<T>::min_exponent;
+ }
+
+ // The result of frexp is always between 0.5 and 1, so its
+ // top bit will always be 1. Subtract by 0.5 to remove that.
+ v -= T(0.5);
+ v = boost::hash_detail::call_ldexp(v,
+ limits<std::size_t>::digits + 1);
+ std::size_t seed = static_cast<std::size_t>(v);
+ v -= seed;
+
+ // ceiling(digits(T) * log2(radix(T))/ digits(size_t)) - 1;
+ std::size_t const length
+ = (limits<T>::digits *
+ boost::static_log2<limits<T>::radix>::value - 1)
+ / limits<std::size_t>::digits;
+
+ for(std::size_t i = 0; i != length; ++i)
+ {
+ v = boost::hash_detail::call_ldexp(v,
+ limits<std::size_t>::digits);
+ std::size_t part = static_cast<std::size_t>(v);
+ v -= part;
+ hash_float_combine(seed, part);
+ }
+
+ hash_float_combine(seed, exp);
+
+ return seed;
+ }
+#endif
+
+ template <class T>
+ inline std::size_t float_hash_value(T v)
+ {
+#if defined(BOOST_HASH_USE_FPCLASSIFY)
+ using namespace std;
+ switch (fpclassify(v)) {
+ case FP_ZERO:
+ return 0;
+ case FP_INFINITE:
+ return (std::size_t)(v > 0 ? -1 : -2);
+ case FP_NAN:
+ return (std::size_t)(-3);
+ case FP_NORMAL:
+ case FP_SUBNORMAL:
+ return float_hash_impl(v);
+ default:
+ BOOST_ASSERT(0);
+ return 0;
+ }
+#else
+ return v == 0 ? 0 : float_hash_impl(v);
+#endif
+ }
+ }
+}
+
+#if defined(BOOST_MSVC)
+#pragma warning(pop)
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/functional/hash/extensions.hpp b/3rdParty/Boost/boost/functional/hash/extensions.hpp
new file mode 100644
index 0000000..d173314
--- /dev/null
+++ b/3rdParty/Boost/boost/functional/hash/extensions.hpp
@@ -0,0 +1,182 @@
+
+// Copyright 2005-2009 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// Based on Peter Dimov's proposal
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
+// issue 6.18.
+
+#if !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP)
+#define BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+namespace boost
+{
+
+#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+ namespace hash_detail
+ {
+ template <bool IsArray>
+ struct call_hash_impl
+ {
+ template <class T>
+ struct inner
+ {
+ static std::size_t call(T const& v)
+ {
+ using namespace boost;
+ return hash_value(v);
+ }
+ };
+ };
+
+ template <>
+ struct call_hash_impl<true>
+ {
+ template <class Array>
+ struct inner
+ {
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ static std::size_t call(Array const& v)
+#else
+ static std::size_t call(Array& v)
+#endif
+ {
+ const int size = sizeof(v) / sizeof(*v);
+ return boost::hash_range(v, v + size);
+ }
+ };
+ };
+
+ template <class T>
+ struct call_hash
+ : public call_hash_impl<boost::is_array<T>::value>
+ ::BOOST_NESTED_TEMPLATE inner<T>
+ {
+ };
+ }
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+ template <class T> struct hash
+ : std::unary_function<T, std::size_t>
+ {
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+ std::size_t operator()(T const& val) const
+ {
+ return hash_value(val);
+ }
+#else
+ std::size_t operator()(T const& val) const
+ {
+ return hash_detail::call_hash<T>::call(val);
+ }
+#endif
+ };
+
+#if BOOST_WORKAROUND(__DMC__, <= 0x848)
+ template <class T, unsigned int n> struct hash<T[n]>
+ : std::unary_function<T[n], std::size_t>
+ {
+ std::size_t operator()(const T* val) const
+ {
+ return boost::hash_range(val, val+n);
+ }
+ };
+#endif
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ // On compilers without partial specialization, boost::hash<T>
+ // has already been declared to deal with pointers, so just
+ // need to supply the non-pointer version.
+
+ namespace hash_detail
+ {
+ template <bool IsPointer>
+ struct hash_impl;
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+ template <>
+ struct hash_impl<false>
+ {
+ template <class T>
+ struct inner
+ : std::unary_function<T, std::size_t>
+ {
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+ std::size_t operator()(T const& val) const
+ {
+ return hash_value(val);
+ }
+#else
+ std::size_t operator()(T const& val) const
+ {
+ return hash_detail::call_hash<T>::call(val);
+ }
+#endif
+ };
+ };
+
+#else // Visual C++ 6.5
+
+ // There's probably a more elegant way to Visual C++ 6.5 to work
+ // but I don't know what it is.
+
+ template <bool IsConst>
+ struct hash_impl_msvc
+ {
+ template <class T>
+ struct inner
+ : public std::unary_function<T, std::size_t>
+ {
+ std::size_t operator()(T const& val) const
+ {
+ return hash_detail::call_hash<T const>::call(val);
+ }
+
+ std::size_t operator()(T& val) const
+ {
+ return hash_detail::call_hash<T>::call(val);
+ }
+ };
+ };
+
+ template <>
+ struct hash_impl_msvc<true>
+ {
+ template <class T>
+ struct inner
+ : public std::unary_function<T, std::size_t>
+ {
+ std::size_t operator()(T& val) const
+ {
+ return hash_detail::call_hash<T>::call(val);
+ }
+ };
+ };
+
+ template <class T>
+ struct hash_impl_msvc2
+ : public hash_impl_msvc<boost::is_const<T>::value>
+ ::BOOST_NESTED_TEMPLATE inner<T> {};
+
+ template <>
+ struct hash_impl<false>
+ {
+ template <class T>
+ struct inner : public hash_impl_msvc2<T> {};
+ };
+
+#endif // Visual C++ 6.5
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/functional/hash/hash.hpp b/3rdParty/Boost/boost/functional/hash/hash.hpp
new file mode 100644
index 0000000..67284fc
--- /dev/null
+++ b/3rdParty/Boost/boost/functional/hash/hash.hpp
@@ -0,0 +1,529 @@
+
+// Copyright 2005-2009 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// Based on Peter Dimov's proposal
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
+// issue 6.18.
+
+#if !defined(BOOST_FUNCTIONAL_HASH_HASH_HPP)
+#define BOOST_FUNCTIONAL_HASH_HASH_HPP
+
+#include <boost/functional/hash/hash_fwd.hpp>
+#include <functional>
+#include <boost/functional/hash/detail/hash_float.hpp>
+#include <boost/detail/container_fwd.hpp>
+#include <string>
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#include <boost/type_traits/is_pointer.hpp>
+#endif
+
+#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+#include <boost/type_traits/is_array.hpp>
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#include <boost/type_traits/is_const.hpp>
+#endif
+
+namespace boost
+{
+ std::size_t hash_value(bool);
+ std::size_t hash_value(char);
+ std::size_t hash_value(unsigned char);
+ std::size_t hash_value(signed char);
+ std::size_t hash_value(short);
+ std::size_t hash_value(unsigned short);
+ std::size_t hash_value(int);
+ std::size_t hash_value(unsigned int);
+ std::size_t hash_value(long);
+ std::size_t hash_value(unsigned long);
+
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ std::size_t hash_value(wchar_t);
+#endif
+
+#if defined(BOOST_HAS_LONG_LONG)
+ std::size_t hash_value(boost::long_long_type);
+ std::size_t hash_value(boost::ulong_long_type);
+#endif
+
+#if !BOOST_WORKAROUND(__DMC__, <= 0x848)
+ template <class T> std::size_t hash_value(T* const&);
+#else
+ template <class T> std::size_t hash_value(T*);
+#endif
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+ template< class T, unsigned N >
+ std::size_t hash_value(const T (&x)[N]);
+
+ template< class T, unsigned N >
+ std::size_t hash_value(T (&x)[N]);
+#endif
+
+ std::size_t hash_value(float v);
+ std::size_t hash_value(double v);
+ std::size_t hash_value(long double v);
+
+ template <class Ch, class A>
+ std::size_t hash_value(std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const&);
+
+ template <class A, class B>
+ std::size_t hash_value(std::pair<A, B> const&);
+ template <class T, class A>
+ std::size_t hash_value(std::vector<T, A> const&);
+ template <class T, class A>
+ std::size_t hash_value(std::list<T, A> const& v);
+ template <class T, class A>
+ std::size_t hash_value(std::deque<T, A> const& v);
+ template <class K, class C, class A>
+ std::size_t hash_value(std::set<K, C, A> const& v);
+ template <class K, class C, class A>
+ std::size_t hash_value(std::multiset<K, C, A> const& v);
+ template <class K, class T, class C, class A>
+ std::size_t hash_value(std::map<K, T, C, A> const& v);
+ template <class K, class T, class C, class A>
+ std::size_t hash_value(std::multimap<K, T, C, A> const& v);
+
+ template <class T>
+ std::size_t hash_value(std::complex<T> const&);
+
+ // Implementation
+
+ namespace hash_detail
+ {
+ template <class T>
+ inline std::size_t hash_value_signed(T val)
+ {
+ const int size_t_bits = std::numeric_limits<std::size_t>::digits;
+ // ceiling(std::numeric_limits<T>::digits / size_t_bits) - 1
+ const int length = (std::numeric_limits<T>::digits - 1)
+ / size_t_bits;
+
+ std::size_t seed = 0;
+ T positive = val < 0 ? -1 - val : val;
+
+ // Hopefully, this loop can be unrolled.
+ for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
+ {
+ seed ^= (std::size_t) (positive >> i) + (seed<<6) + (seed>>2);
+ }
+ seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
+
+ return seed;
+ }
+
+ template <class T>
+ inline std::size_t hash_value_unsigned(T val)
+ {
+ const int size_t_bits = std::numeric_limits<std::size_t>::digits;
+ // ceiling(std::numeric_limits<T>::digits / size_t_bits) - 1
+ const int length = (std::numeric_limits<T>::digits - 1)
+ / size_t_bits;
+
+ std::size_t seed = 0;
+
+ // Hopefully, this loop can be unrolled.
+ for(unsigned int i = length * size_t_bits; i > 0; i -= size_t_bits)
+ {
+ seed ^= (std::size_t) (val >> i) + (seed<<6) + (seed>>2);
+ }
+ seed ^= (std::size_t) val + (seed<<6) + (seed>>2);
+
+ return seed;
+ }
+ }
+
+ inline std::size_t hash_value(bool v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(char v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(unsigned char v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(signed char v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(short v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(unsigned short v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(int v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(unsigned int v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(long v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+ inline std::size_t hash_value(unsigned long v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ inline std::size_t hash_value(wchar_t v)
+ {
+ return static_cast<std::size_t>(v);
+ }
+#endif
+
+#if defined(BOOST_HAS_LONG_LONG)
+ inline std::size_t hash_value(boost::long_long_type v)
+ {
+ return hash_detail::hash_value_signed(v);
+ }
+
+ inline std::size_t hash_value(boost::ulong_long_type v)
+ {
+ return hash_detail::hash_value_unsigned(v);
+ }
+#endif
+
+ // Implementation by Alberto Barbati and Dave Harris.
+#if !BOOST_WORKAROUND(__DMC__, <= 0x848)
+ template <class T> std::size_t hash_value(T* const& v)
+#else
+ template <class T> std::size_t hash_value(T* v)
+#endif
+ {
+ std::size_t x = static_cast<std::size_t>(
+ reinterpret_cast<std::ptrdiff_t>(v));
+
+ return x + (x >> 3);
+ }
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <class T>
+ inline void hash_combine(std::size_t& seed, T& v)
+#else
+ template <class T>
+ inline void hash_combine(std::size_t& seed, T const& v)
+#endif
+ {
+ boost::hash<T> hasher;
+ seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
+ }
+
+ template <class It>
+ inline std::size_t hash_range(It first, It last)
+ {
+ std::size_t seed = 0;
+
+ for(; first != last; ++first)
+ {
+ hash_combine(seed, *first);
+ }
+
+ return seed;
+ }
+
+ template <class It>
+ inline void hash_range(std::size_t& seed, It first, It last)
+ {
+ for(; first != last; ++first)
+ {
+ hash_combine(seed, *first);
+ }
+ }
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+ template <class T>
+ inline std::size_t hash_range(T* first, T* last)
+ {
+ std::size_t seed = 0;
+
+ for(; first != last; ++first)
+ {
+ boost::hash<T> hasher;
+ seed ^= hasher(*first) + 0x9e3779b9 + (seed<<6) + (seed>>2);
+ }
+
+ return seed;
+ }
+
+ template <class T>
+ inline void hash_range(std::size_t& seed, T* first, T* last)
+ {
+ for(; first != last; ++first)
+ {
+ boost::hash<T> hasher;
+ seed ^= hasher(*first) + 0x9e3779b9 + (seed<<6) + (seed>>2);
+ }
+ }
+#endif
+
+#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+ template< class T, unsigned N >
+ inline std::size_t hash_value(const T (&x)[N])
+ {
+ return hash_range(x, x + N);
+ }
+
+ template< class T, unsigned N >
+ inline std::size_t hash_value(T (&x)[N])
+ {
+ return hash_range(x, x + N);
+ }
+#endif
+
+ template <class Ch, class A>
+ inline std::size_t hash_value(std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ inline std::size_t hash_value(float v)
+ {
+ return boost::hash_detail::float_hash_value(v);
+ }
+
+ inline std::size_t hash_value(double v)
+ {
+ return boost::hash_detail::float_hash_value(v);
+ }
+
+ inline std::size_t hash_value(long double v)
+ {
+ return boost::hash_detail::float_hash_value(v);
+ }
+
+ template <class A, class B>
+ std::size_t hash_value(std::pair<A, B> const& v)
+ {
+ std::size_t seed = 0;
+ hash_combine(seed, v.first);
+ hash_combine(seed, v.second);
+ return seed;
+ }
+
+ template <class T, class A>
+ std::size_t hash_value(std::vector<T, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class T, class A>
+ std::size_t hash_value(std::list<T, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class T, class A>
+ std::size_t hash_value(std::deque<T, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class K, class C, class A>
+ std::size_t hash_value(std::set<K, C, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class K, class C, class A>
+ std::size_t hash_value(std::multiset<K, C, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class K, class T, class C, class A>
+ std::size_t hash_value(std::map<K, T, C, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class K, class T, class C, class A>
+ std::size_t hash_value(std::multimap<K, T, C, A> const& v)
+ {
+ return hash_range(v.begin(), v.end());
+ }
+
+ template <class T>
+ std::size_t hash_value(std::complex<T> const& v)
+ {
+ boost::hash<T> hasher;
+ std::size_t seed = hasher(v.imag());
+ seed ^= hasher(v.real()) + (seed<<6) + (seed>>2);
+ return seed;
+ }
+
+ //
+ // boost::hash
+ //
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#define BOOST_HASH_SPECIALIZE(type) \
+ template <> struct hash<type> \
+ : public std::unary_function<type, std::size_t> \
+ { \
+ std::size_t operator()(type v) const \
+ { \
+ return boost::hash_value(v); \
+ } \
+ };
+
+#define BOOST_HASH_SPECIALIZE_REF(type) \
+ template <> struct hash<type> \
+ : public std::unary_function<type, std::size_t> \
+ { \
+ std::size_t operator()(type const& v) const \
+ { \
+ return boost::hash_value(v); \
+ } \
+ };
+#else
+#define BOOST_HASH_SPECIALIZE(type) \
+ template <> struct hash<type> \
+ : public std::unary_function<type, std::size_t> \
+ { \
+ std::size_t operator()(type v) const \
+ { \
+ return boost::hash_value(v); \
+ } \
+ }; \
+ \
+ template <> struct hash<const type> \
+ : public std::unary_function<const type, std::size_t> \
+ { \
+ std::size_t operator()(const type v) const \
+ { \
+ return boost::hash_value(v); \
+ } \
+ };
+
+#define BOOST_HASH_SPECIALIZE_REF(type) \
+ template <> struct hash<type> \
+ : public std::unary_function<type, std::size_t> \
+ { \
+ std::size_t operator()(type const& v) const \
+ { \
+ return boost::hash_value(v); \
+ } \
+ }; \
+ \
+ template <> struct hash<const type> \
+ : public std::unary_function<const type, std::size_t> \
+ { \
+ std::size_t operator()(type const& v) const \
+ { \
+ return boost::hash_value(v); \
+ } \
+ };
+#endif
+
+ BOOST_HASH_SPECIALIZE(bool)
+ BOOST_HASH_SPECIALIZE(char)
+ BOOST_HASH_SPECIALIZE(signed char)
+ BOOST_HASH_SPECIALIZE(unsigned char)
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ BOOST_HASH_SPECIALIZE(wchar_t)
+#endif
+ BOOST_HASH_SPECIALIZE(short)
+ BOOST_HASH_SPECIALIZE(unsigned short)
+ BOOST_HASH_SPECIALIZE(int)
+ BOOST_HASH_SPECIALIZE(unsigned int)
+ BOOST_HASH_SPECIALIZE(long)
+ BOOST_HASH_SPECIALIZE(unsigned long)
+
+ BOOST_HASH_SPECIALIZE(float)
+ BOOST_HASH_SPECIALIZE(double)
+ BOOST_HASH_SPECIALIZE(long double)
+
+ BOOST_HASH_SPECIALIZE_REF(std::string)
+#if !defined(BOOST_NO_STD_WSTRING)
+ BOOST_HASH_SPECIALIZE_REF(std::wstring)
+#endif
+
+#undef BOOST_HASH_SPECIALIZE
+#undef BOOST_HASH_SPECIALIZE_REF
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ template <class T>
+ struct hash<T*>
+ : public std::unary_function<T*, std::size_t>
+ {
+ std::size_t operator()(T* v) const
+ {
+#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590)
+ return boost::hash_value(v);
+#else
+ std::size_t x = static_cast<std::size_t>(
+ reinterpret_cast<std::ptrdiff_t>(v));
+
+ return x + (x >> 3);
+#endif
+ }
+ };
+#else
+ namespace hash_detail
+ {
+ template <bool IsPointer>
+ struct hash_impl;
+
+ template <>
+ struct hash_impl<true>
+ {
+ template <class T>
+ struct inner
+ : public std::unary_function<T, std::size_t>
+ {
+ std::size_t operator()(T val) const
+ {
+#if !BOOST_WORKAROUND(__SUNPRO_CC, <= 590)
+ return boost::hash_value(val);
+#else
+ std::size_t x = static_cast<std::size_t>(
+ reinterpret_cast<std::ptrdiff_t>(val));
+
+ return x + (x >> 3);
+#endif
+ }
+ };
+ };
+ }
+
+ template <class T> struct hash
+ : public boost::hash_detail::hash_impl<boost::is_pointer<T>::value>
+ ::BOOST_NESTED_TEMPLATE inner<T>
+ {
+ };
+#endif
+}
+
+#endif // BOOST_FUNCTIONAL_HASH_HASH_HPP
+
+// Include this outside of the include guards in case the file is included
+// twice - once with BOOST_HASH_NO_EXTENSIONS defined, and then with it
+// undefined.
+
+#if !defined(BOOST_HASH_NO_EXTENSIONS) \
+ && !defined(BOOST_FUNCTIONAL_HASH_EXTENSIONS_HPP)
+#include <boost/functional/hash/extensions.hpp>
+#endif
diff --git a/3rdParty/Boost/boost/functional/hash/hash_fwd.hpp b/3rdParty/Boost/boost/functional/hash/hash_fwd.hpp
new file mode 100644
index 0000000..1d51b07
--- /dev/null
+++ b/3rdParty/Boost/boost/functional/hash/hash_fwd.hpp
@@ -0,0 +1,40 @@
+
+// Copyright 2005-2009 Daniel James.
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// Based on Peter Dimov's proposal
+// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
+// issue 6.18.
+
+#if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP)
+#define BOOST_FUNCTIONAL_HASH_FWD_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+#include <cstddef>
+#include <boost/detail/workaround.hpp>
+
+namespace boost
+{
+ template <class T> struct hash;
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <class T> void hash_combine(std::size_t& seed, T& v);
+#else
+ template <class T> void hash_combine(std::size_t& seed, T const& v);
+#endif
+
+ template <class It> std::size_t hash_range(It, It);
+ template <class It> void hash_range(std::size_t&, It, It);
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+ template <class T> inline std::size_t hash_range(T*, T*);
+ template <class T> inline void hash_range(std::size_t&, T*, T*);
+#endif
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/get_pointer.hpp b/3rdParty/Boost/boost/get_pointer.hpp
new file mode 100644
index 0000000..a0cd5c0
--- /dev/null
+++ b/3rdParty/Boost/boost/get_pointer.hpp
@@ -0,0 +1,33 @@
+// Copyright Peter Dimov and David Abrahams 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)
+#ifndef GET_POINTER_DWA20021219_HPP
+# define GET_POINTER_DWA20021219_HPP
+
+// In order to avoid circular dependencies with Boost.TR1
+// we make sure that our include of <memory> doesn't try to
+// pull in the TR1 headers: that's why we use this header
+// rather than including <memory> directly:
+# include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
+
+namespace boost {
+
+// get_pointer(p) extracts a ->* capable pointer from p
+
+template<class T> T * get_pointer(T * p)
+{
+ return p;
+}
+
+// get_pointer(shared_ptr<T> const & p) has been moved to shared_ptr.hpp
+
+template<class T> T * get_pointer(std::auto_ptr<T> const& p)
+{
+ return p.get();
+}
+
+
+} // namespace boost
+
+#endif // GET_POINTER_DWA20021219_HPP
diff --git a/3rdParty/Boost/boost/implicit_cast.hpp b/3rdParty/Boost/boost/implicit_cast.hpp
new file mode 100644
index 0000000..5b1cd92
--- /dev/null
+++ b/3rdParty/Boost/boost/implicit_cast.hpp
@@ -0,0 +1,29 @@
+// 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)
+#ifndef IMPLICIT_CAST_DWA200356_HPP
+# define IMPLICIT_CAST_DWA200356_HPP
+
+# include <boost/mpl/identity.hpp>
+
+namespace boost {
+
+// implementation originally suggested by C. Green in
+// http://lists.boost.org/MailArchives/boost/msg00886.php
+
+// The use of identity creates a non-deduced form, so that the
+// explicit template argument must be supplied
+template <typename T>
+inline T implicit_cast (typename mpl::identity<T>::type x) {
+ return x;
+}
+
+// incomplete return type now is here
+//template <typename T>
+//void implicit_cast (...);
+
+} // namespace boost
+
+
+#endif // IMPLICIT_CAST_DWA200356_HPP
diff --git a/3rdParty/Boost/boost/integer/static_log2.hpp b/3rdParty/Boost/boost/integer/static_log2.hpp
new file mode 100644
index 0000000..19e048b
--- /dev/null
+++ b/3rdParty/Boost/boost/integer/static_log2.hpp
@@ -0,0 +1,132 @@
+// -------------- Boost static_log2.hpp header file ----------------------- //
+//
+// Copyright (C) 2001 Daryle Walker.
+// Copyright (C) 2003 Vesa Karvonen.
+// Copyright (C) 2003 Gennaro Prota.
+//
+// Distributed under the 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/integer for documentation.
+// ------------------------------------------------------------------------- //
+
+
+#ifndef BOOST_INTEGER_STATIC_LOG2_HPP
+#define BOOST_INTEGER_STATIC_LOG2_HPP
+
+#include "boost/config.hpp" // for BOOST_STATIC_CONSTANT
+
+namespace boost {
+
+ namespace detail {
+
+ namespace static_log2_impl {
+
+ // choose_initial_n<>
+ //
+ // Recursively doubles its integer argument, until it
+ // becomes >= of the "width" (C99, 6.2.6.2p4) of
+ // static_log2_argument_type.
+ //
+ // Used to get the maximum power of two less then the width.
+ //
+ // Example: if on your platform argument_type has 48 value
+ // bits it yields n=32.
+ //
+ // It's easy to prove that, starting from such a value
+ // of n, the core algorithm works correctly for any width
+ // of static_log2_argument_type and that recursion always
+ // terminates with x = 1 and n = 0 (see the algorithm's
+ // invariant).
+
+ typedef unsigned long argument_type;
+ typedef int result_type;
+
+
+ template <result_type n>
+ struct choose_initial_n {
+
+ enum { c = (argument_type(1) << n << n) != 0 };
+ BOOST_STATIC_CONSTANT(
+ result_type,
+ value = !c*n + choose_initial_n<2*c*n>::value
+ );
+
+ };
+
+ template <>
+ struct choose_initial_n<0> {
+ BOOST_STATIC_CONSTANT(result_type, value = 0);
+ };
+
+
+
+ // start computing from n_zero - must be a power of two
+ const result_type n_zero = 16;
+ const result_type initial_n = choose_initial_n<n_zero>::value;
+
+ // static_log2_impl<>
+ //
+ // * Invariant:
+ // 2n
+ // 1 <= x && x < 2 at the start of each recursion
+ // (see also choose_initial_n<>)
+ //
+ // * Type requirements:
+ //
+ // argument_type maybe any unsigned type with at least n_zero + 1
+ // value bits. (Note: If larger types will be standardized -e.g.
+ // unsigned long long- then the argument_type typedef can be
+ // changed without affecting the rest of the code.)
+ //
+
+ template <argument_type x, result_type n = initial_n>
+ struct static_log2_impl {
+
+ enum { c = (x >> n) > 0 }; // x >= 2**n ?
+ BOOST_STATIC_CONSTANT(
+ result_type,
+ value = c*n + (static_log2_impl< (x>>c*n), n/2 >::value)
+ );
+
+ };
+
+ template <>
+ struct static_log2_impl<1, 0> {
+ BOOST_STATIC_CONSTANT(result_type, value = 0);
+ };
+
+ }
+ } // detail
+
+
+
+ // --------------------------------------
+ // static_log2<x>
+ // ----------------------------------------
+
+ typedef detail::static_log2_impl::argument_type static_log2_argument_type;
+ typedef detail::static_log2_impl::result_type static_log2_result_type;
+
+
+ template <static_log2_argument_type x>
+ struct static_log2 {
+
+ BOOST_STATIC_CONSTANT(
+ static_log2_result_type,
+ value = detail::static_log2_impl::static_log2_impl<x>::value
+ );
+
+ };
+
+
+ template <>
+ struct static_log2<0> { };
+
+}
+
+
+
+#endif // include guard
diff --git a/3rdParty/Boost/boost/integer_traits.hpp b/3rdParty/Boost/boost/integer_traits.hpp
new file mode 100644
index 0000000..ac4ef32
--- /dev/null
+++ b/3rdParty/Boost/boost/integer_traits.hpp
@@ -0,0 +1,236 @@
+/* boost integer_traits.hpp header file
+ *
+ * Copyright Jens Maurer 2000
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * $Id: integer_traits.hpp 32576 2006-02-05 10:19:42Z johnmaddock $
+ *
+ * Idea by Beman Dawes, Ed Brey, Steve Cleary, and Nathan Myers
+ */
+
+// See http://www.boost.org/libs/integer for documentation.
+
+
+#ifndef BOOST_INTEGER_TRAITS_HPP
+#define BOOST_INTEGER_TRAITS_HPP
+
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+
+// These are an implementation detail and not part of the interface
+#include <limits.h>
+// we need wchar.h for WCHAR_MAX/MIN but not all platforms provide it,
+// and some may have <wchar.h> but not <cwchar> ...
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) && (!defined(BOOST_NO_CWCHAR) || defined(sun) || defined(__sun) || defined(__QNX__))
+#include <wchar.h>
+#endif
+
+
+namespace boost {
+template<class T>
+class integer_traits : public std::numeric_limits<T>
+{
+public:
+ BOOST_STATIC_CONSTANT(bool, is_integral = false);
+};
+
+namespace detail {
+template<class T, T min_val, T max_val>
+class integer_traits_base
+{
+public:
+ BOOST_STATIC_CONSTANT(bool, is_integral = true);
+ BOOST_STATIC_CONSTANT(T, const_min = min_val);
+ BOOST_STATIC_CONSTANT(T, const_max = max_val);
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+// A definition is required even for integral static constants
+template<class T, T min_val, T max_val>
+const bool integer_traits_base<T, min_val, max_val>::is_integral;
+
+template<class T, T min_val, T max_val>
+const T integer_traits_base<T, min_val, max_val>::const_min;
+
+template<class T, T min_val, T max_val>
+const T integer_traits_base<T, min_val, max_val>::const_max;
+#endif
+
+} // namespace detail
+
+template<>
+class integer_traits<bool>
+ : public std::numeric_limits<bool>,
+ public detail::integer_traits_base<bool, false, true>
+{ };
+
+template<>
+class integer_traits<char>
+ : public std::numeric_limits<char>,
+ public detail::integer_traits_base<char, CHAR_MIN, CHAR_MAX>
+{ };
+
+template<>
+class integer_traits<signed char>
+ : public std::numeric_limits<signed char>,
+ public detail::integer_traits_base<signed char, SCHAR_MIN, SCHAR_MAX>
+{ };
+
+template<>
+class integer_traits<unsigned char>
+ : public std::numeric_limits<unsigned char>,
+ public detail::integer_traits_base<unsigned char, 0, UCHAR_MAX>
+{ };
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+template<>
+class integer_traits<wchar_t>
+ : public std::numeric_limits<wchar_t>,
+ // Don't trust WCHAR_MIN and WCHAR_MAX with Mac OS X's native
+ // library: they are wrong!
+#if defined(WCHAR_MIN) && defined(WCHAR_MAX) && !defined(__APPLE__)
+ public detail::integer_traits_base<wchar_t, WCHAR_MIN, WCHAR_MAX>
+#elif defined(__BORLANDC__) || defined(__CYGWIN__) || defined(__MINGW32__) || (defined(__BEOS__) && defined(__GNUC__))
+ // No WCHAR_MIN and WCHAR_MAX, whar_t is short and unsigned:
+ public detail::integer_traits_base<wchar_t, 0, 0xffff>
+#elif (defined(__sgi) && (!defined(__SGI_STL_PORT) || __SGI_STL_PORT < 0x400))\
+ || (defined __APPLE__)\
+ || (defined(__OpenBSD__) && defined(__GNUC__))\
+ || (defined(__NetBSD__) && defined(__GNUC__))\
+ || (defined(__FreeBSD__) && defined(__GNUC__))\
+ || (defined(__DragonFly__) && defined(__GNUC__))\
+ || (defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 3) && !defined(__SGI_STL_PORT))
+ // No WCHAR_MIN and WCHAR_MAX, wchar_t has the same range as int.
+ // - SGI MIPSpro with native library
+ // - gcc 3.x on HP-UX
+ // - Mac OS X with native library
+ // - gcc on FreeBSD, OpenBSD and NetBSD
+ public detail::integer_traits_base<wchar_t, INT_MIN, INT_MAX>
+#elif defined(__hpux) && defined(__GNUC__) && (__GNUC__ == 2) && !defined(__SGI_STL_PORT)
+ // No WCHAR_MIN and WCHAR_MAX, wchar_t has the same range as unsigned int.
+ // - gcc 2.95.x on HP-UX
+ // (also, std::numeric_limits<wchar_t> appears to return the wrong values).
+ public detail::integer_traits_base<wchar_t, 0, UINT_MAX>
+#else
+#error No WCHAR_MIN and WCHAR_MAX present, please adjust integer_traits<> for your compiler.
+#endif
+{ };
+#endif // BOOST_NO_INTRINSIC_WCHAR_T
+
+template<>
+class integer_traits<short>
+ : public std::numeric_limits<short>,
+ public detail::integer_traits_base<short, SHRT_MIN, SHRT_MAX>
+{ };
+
+template<>
+class integer_traits<unsigned short>
+ : public std::numeric_limits<unsigned short>,
+ public detail::integer_traits_base<unsigned short, 0, USHRT_MAX>
+{ };
+
+template<>
+class integer_traits<int>
+ : public std::numeric_limits<int>,
+ public detail::integer_traits_base<int, INT_MIN, INT_MAX>
+{ };
+
+template<>
+class integer_traits<unsigned int>
+ : public std::numeric_limits<unsigned int>,
+ public detail::integer_traits_base<unsigned int, 0, UINT_MAX>
+{ };
+
+template<>
+class integer_traits<long>
+ : public std::numeric_limits<long>,
+ public detail::integer_traits_base<long, LONG_MIN, LONG_MAX>
+{ };
+
+template<>
+class integer_traits<unsigned long>
+ : public std::numeric_limits<unsigned long>,
+ public detail::integer_traits_base<unsigned long, 0, ULONG_MAX>
+{ };
+
+#if !defined(BOOST_NO_INTEGRAL_INT64_T) && !defined(BOOST_NO_INT64_T)
+#if defined(ULLONG_MAX) && defined(BOOST_HAS_LONG_LONG)
+
+template<>
+class integer_traits< ::boost::long_long_type>
+ : public std::numeric_limits< ::boost::long_long_type>,
+ public detail::integer_traits_base< ::boost::long_long_type, LLONG_MIN, LLONG_MAX>
+{ };
+
+template<>
+class integer_traits< ::boost::ulong_long_type>
+ : public std::numeric_limits< ::boost::ulong_long_type>,
+ public detail::integer_traits_base< ::boost::ulong_long_type, 0, ULLONG_MAX>
+{ };
+
+#elif defined(ULONG_LONG_MAX) && defined(BOOST_HAS_LONG_LONG)
+
+template<>
+class integer_traits< ::boost::long_long_type> : public std::numeric_limits< ::boost::long_long_type>, public detail::integer_traits_base< ::boost::long_long_type, LONG_LONG_MIN, LONG_LONG_MAX>{ };
+template<>
+class integer_traits< ::boost::ulong_long_type>
+ : public std::numeric_limits< ::boost::ulong_long_type>,
+ public detail::integer_traits_base< ::boost::ulong_long_type, 0, ULONG_LONG_MAX>
+{ };
+
+#elif defined(ULONGLONG_MAX) && defined(BOOST_HAS_LONG_LONG)
+
+template<>
+class integer_traits< ::boost::long_long_type>
+ : public std::numeric_limits< ::boost::long_long_type>,
+ public detail::integer_traits_base< ::boost::long_long_type, LONGLONG_MIN, LONGLONG_MAX>
+{ };
+
+template<>
+class integer_traits< ::boost::ulong_long_type>
+ : public std::numeric_limits< ::boost::ulong_long_type>,
+ public detail::integer_traits_base< ::boost::ulong_long_type, 0, ULONGLONG_MAX>
+{ };
+
+#elif defined(_LLONG_MAX) && defined(_C2) && defined(BOOST_HAS_LONG_LONG)
+
+template<>
+class integer_traits< ::boost::long_long_type>
+ : public std::numeric_limits< ::boost::long_long_type>,
+ public detail::integer_traits_base< ::boost::long_long_type, -_LLONG_MAX - _C2, _LLONG_MAX>
+{ };
+
+template<>
+class integer_traits< ::boost::ulong_long_type>
+ : public std::numeric_limits< ::boost::ulong_long_type>,
+ public detail::integer_traits_base< ::boost::ulong_long_type, 0, _ULLONG_MAX>
+{ };
+
+#elif defined(BOOST_HAS_LONG_LONG)
+//
+// we have long long but no constants, this happens for example with gcc in -ansi mode,
+// we'll just have to work out the values for ourselves (assumes 2's compliment representation):
+//
+template<>
+class integer_traits< ::boost::long_long_type>
+ : public std::numeric_limits< ::boost::long_long_type>,
+ public detail::integer_traits_base< ::boost::long_long_type, (1LL << (sizeof(::boost::long_long_type) - 1)), ~(1LL << (sizeof(::boost::long_long_type) - 1))>
+{ };
+
+template<>
+class integer_traits< ::boost::ulong_long_type>
+ : public std::numeric_limits< ::boost::ulong_long_type>,
+ public detail::integer_traits_base< ::boost::ulong_long_type, 0, ~0uLL>
+{ };
+
+#endif
+#endif
+
+} // namespace boost
+
+#endif /* BOOST_INTEGER_TRAITS_HPP */
+
+
+
diff --git a/3rdParty/Boost/boost/intrusive_ptr.hpp b/3rdParty/Boost/boost/intrusive_ptr.hpp
new file mode 100644
index 0000000..63036dc
--- /dev/null
+++ b/3rdParty/Boost/boost/intrusive_ptr.hpp
@@ -0,0 +1,18 @@
+#ifndef BOOST_INTRUSIVE_PTR_HPP_INCLUDED
+#define BOOST_INTRUSIVE_PTR_HPP_INCLUDED
+
+//
+// intrusive_ptr.hpp
+//
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://www.boost.org/libs/smart_ptr/intrusive_ptr.html for documentation.
+//
+
+#include <boost/smart_ptr/intrusive_ptr.hpp>
+
+#endif // #ifndef BOOST_INTRUSIVE_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/io/ios_state.hpp b/3rdParty/Boost/boost/io/ios_state.hpp
new file mode 100644
index 0000000..9c45c0b
--- /dev/null
+++ b/3rdParty/Boost/boost/io/ios_state.hpp
@@ -0,0 +1,431 @@
+// Boost io/ios_state.hpp header file --------------------------------------//
+
+// Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution
+// are subject to the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+// See <http://www.boost.org/libs/io/> for the library's home page.
+
+#ifndef BOOST_IO_IOS_STATE_HPP
+#define BOOST_IO_IOS_STATE_HPP
+
+#include <boost/io_fwd.hpp> // self include
+#include <boost/detail/workaround.hpp>
+
+#include <ios> // for std::ios_base, std::basic_ios, etc.
+#ifndef BOOST_NO_STD_LOCALE
+#include <locale> // for std::locale
+#endif
+#include <ostream> // for std::basic_ostream
+#include <streambuf> // for std::basic_streambuf
+#include <string> // for std::char_traits
+
+
+namespace boost
+{
+namespace io
+{
+
+
+// Basic stream state saver class declarations -----------------------------//
+
+class ios_flags_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+ typedef ::std::ios_base::fmtflags aspect_type;
+
+ explicit ios_flags_saver( state_type &s )
+ : s_save_( s ), a_save_( s.flags() )
+ {}
+ ios_flags_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.flags(a) )
+ {}
+ ~ios_flags_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.flags( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+
+ ios_flags_saver& operator=(const ios_flags_saver&);
+};
+
+class ios_precision_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+ typedef ::std::streamsize aspect_type;
+
+ explicit ios_precision_saver( state_type &s )
+ : s_save_( s ), a_save_( s.precision() )
+ {}
+ ios_precision_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.precision(a) )
+ {}
+ ~ios_precision_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.precision( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+
+ ios_precision_saver& operator=(const ios_precision_saver&);
+};
+
+class ios_width_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+ typedef ::std::streamsize aspect_type;
+
+ explicit ios_width_saver( state_type &s )
+ : s_save_( s ), a_save_( s.width() )
+ {}
+ ios_width_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.width(a) )
+ {}
+ ~ios_width_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.width( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+ ios_width_saver& operator=(const ios_width_saver&);
+};
+
+
+// Advanced stream state saver class template declarations -----------------//
+
+template < typename Ch, class Tr >
+class basic_ios_iostate_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+ typedef ::std::ios_base::iostate aspect_type;
+
+ explicit basic_ios_iostate_saver( state_type &s )
+ : s_save_( s ), a_save_( s.rdstate() )
+ {}
+ basic_ios_iostate_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.rdstate() )
+ { s.clear(a); }
+ ~basic_ios_iostate_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.clear( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+};
+
+template < typename Ch, class Tr >
+class basic_ios_exception_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+ typedef ::std::ios_base::iostate aspect_type;
+
+ explicit basic_ios_exception_saver( state_type &s )
+ : s_save_( s ), a_save_( s.exceptions() )
+ {}
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+ basic_ios_exception_saver( state_type &s, aspect_type a )
+#else
+ basic_ios_exception_saver( state_type &s, aspect_type const &a )
+#endif
+ : s_save_( s ), a_save_( s.exceptions() )
+ { s.exceptions(a); }
+ ~basic_ios_exception_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.exceptions( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+};
+
+template < typename Ch, class Tr >
+class basic_ios_tie_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+ typedef ::std::basic_ostream<Ch, Tr> * aspect_type;
+
+ explicit basic_ios_tie_saver( state_type &s )
+ : s_save_( s ), a_save_( s.tie() )
+ {}
+ basic_ios_tie_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.tie(a) )
+ {}
+ ~basic_ios_tie_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.tie( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+};
+
+template < typename Ch, class Tr >
+class basic_ios_rdbuf_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+ typedef ::std::basic_streambuf<Ch, Tr> * aspect_type;
+
+ explicit basic_ios_rdbuf_saver( state_type &s )
+ : s_save_( s ), a_save_( s.rdbuf() )
+ {}
+ basic_ios_rdbuf_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.rdbuf(a) )
+ {}
+ ~basic_ios_rdbuf_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.rdbuf( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+};
+
+template < typename Ch, class Tr >
+class basic_ios_fill_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+ typedef typename state_type::char_type aspect_type;
+
+ explicit basic_ios_fill_saver( state_type &s )
+ : s_save_( s ), a_save_( s.fill() )
+ {}
+ basic_ios_fill_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.fill(a) )
+ {}
+ ~basic_ios_fill_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.fill( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+};
+
+#ifndef BOOST_NO_STD_LOCALE
+template < typename Ch, class Tr >
+class basic_ios_locale_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+ typedef ::std::locale aspect_type;
+
+ explicit basic_ios_locale_saver( state_type &s )
+ : s_save_( s ), a_save_( s.getloc() )
+ {}
+ basic_ios_locale_saver( state_type &s, aspect_type const &a )
+ : s_save_( s ), a_save_( s.imbue(a) )
+ {}
+ ~basic_ios_locale_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.imbue( a_save_ ); }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+};
+#endif
+
+
+// User-defined stream state saver class declarations ----------------------//
+
+class ios_iword_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+ typedef int index_type;
+ typedef long aspect_type;
+
+ explicit ios_iword_saver( state_type &s, index_type i )
+ : s_save_( s ), a_save_( s.iword(i) ), i_save_( i )
+ {}
+ ios_iword_saver( state_type &s, index_type i, aspect_type const &a )
+ : s_save_( s ), a_save_( s.iword(i) ), i_save_( i )
+ { s.iword(i) = a; }
+ ~ios_iword_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.iword( i_save_ ) = a_save_; }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+ index_type const i_save_;
+
+ ios_iword_saver& operator=(const ios_iword_saver&);
+};
+
+class ios_pword_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+ typedef int index_type;
+ typedef void * aspect_type;
+
+ explicit ios_pword_saver( state_type &s, index_type i )
+ : s_save_( s ), a_save_( s.pword(i) ), i_save_( i )
+ {}
+ ios_pword_saver( state_type &s, index_type i, aspect_type const &a )
+ : s_save_( s ), a_save_( s.pword(i) ), i_save_( i )
+ { s.pword(i) = a; }
+ ~ios_pword_saver()
+ { this->restore(); }
+
+ void restore()
+ { s_save_.pword( i_save_ ) = a_save_; }
+
+private:
+ state_type & s_save_;
+ aspect_type const a_save_;
+ index_type const i_save_;
+
+ ios_pword_saver operator=(const ios_pword_saver&);
+};
+
+
+// Combined stream state saver class (template) declarations ---------------//
+
+class ios_base_all_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+
+ explicit ios_base_all_saver( state_type &s )
+ : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() )
+ , a3_save_( s.width() )
+ {}
+
+ ~ios_base_all_saver()
+ { this->restore(); }
+
+ void restore()
+ {
+ s_save_.width( a3_save_ );
+ s_save_.precision( a2_save_ );
+ s_save_.flags( a1_save_ );
+ }
+
+private:
+ state_type & s_save_;
+ state_type::fmtflags const a1_save_;
+ ::std::streamsize const a2_save_;
+ ::std::streamsize const a3_save_;
+
+ ios_base_all_saver& operator=(const ios_base_all_saver&);
+};
+
+template < typename Ch, class Tr >
+class basic_ios_all_saver
+{
+public:
+ typedef ::std::basic_ios<Ch, Tr> state_type;
+
+ explicit basic_ios_all_saver( state_type &s )
+ : s_save_( s ), a1_save_( s.flags() ), a2_save_( s.precision() )
+ , a3_save_( s.width() ), a4_save_( s.rdstate() )
+ , a5_save_( s.exceptions() ), a6_save_( s.tie() )
+ , a7_save_( s.rdbuf() ), a8_save_( s.fill() )
+ #ifndef BOOST_NO_STD_LOCALE
+ , a9_save_( s.getloc() )
+ #endif
+ {}
+
+ ~basic_ios_all_saver()
+ { this->restore(); }
+
+ void restore()
+ {
+ #ifndef BOOST_NO_STD_LOCALE
+ s_save_.imbue( a9_save_ );
+ #endif
+ s_save_.fill( a8_save_ );
+ s_save_.rdbuf( a7_save_ );
+ s_save_.tie( a6_save_ );
+ s_save_.exceptions( a5_save_ );
+ s_save_.clear( a4_save_ );
+ s_save_.width( a3_save_ );
+ s_save_.precision( a2_save_ );
+ s_save_.flags( a1_save_ );
+ }
+
+private:
+ state_type & s_save_;
+ typename state_type::fmtflags const a1_save_;
+ ::std::streamsize const a2_save_;
+ ::std::streamsize const a3_save_;
+ typename state_type::iostate const a4_save_;
+ typename state_type::iostate const a5_save_;
+ ::std::basic_ostream<Ch, Tr> * const a6_save_;
+ ::std::basic_streambuf<Ch, Tr> * const a7_save_;
+ typename state_type::char_type const a8_save_;
+ #ifndef BOOST_NO_STD_LOCALE
+ ::std::locale const a9_save_;
+ #endif
+};
+
+class ios_all_word_saver
+{
+public:
+ typedef ::std::ios_base state_type;
+ typedef int index_type;
+
+ ios_all_word_saver( state_type &s, index_type i )
+ : s_save_( s ), i_save_( i ), a1_save_( s.iword(i) )
+ , a2_save_( s.pword(i) )
+ {}
+
+ ~ios_all_word_saver()
+ { this->restore(); }
+
+ void restore()
+ {
+ s_save_.pword( i_save_ ) = a2_save_;
+ s_save_.iword( i_save_ ) = a1_save_;
+ }
+
+private:
+ state_type & s_save_;
+ index_type const i_save_;
+ long const a1_save_;
+ void * const a2_save_;
+
+ ios_all_word_saver& operator=(const ios_all_word_saver&);
+};
+
+
+} // namespace io
+} // namespace boost
+
+
+#endif // BOOST_IO_IOS_STATE_HPP
diff --git a/3rdParty/Boost/boost/io_fwd.hpp b/3rdParty/Boost/boost/io_fwd.hpp
new file mode 100644
index 0000000..417b81e
--- /dev/null
+++ b/3rdParty/Boost/boost/io_fwd.hpp
@@ -0,0 +1,67 @@
+// Boost io_fwd.hpp header file --------------------------------------------//
+
+// Copyright 2002 Daryle Walker. Use, modification, and distribution are subject
+// to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+// See <http://www.boost.org/libs/io/> for the library's home page.
+
+#ifndef BOOST_IO_FWD_HPP
+#define BOOST_IO_FWD_HPP
+
+#include <iosfwd> // for std::char_traits (declaration)
+
+
+namespace boost
+{
+namespace io
+{
+
+
+// From <boost/io/ios_state.hpp> -------------------------------------------//
+
+class ios_flags_saver;
+class ios_precision_saver;
+class ios_width_saver;
+class ios_base_all_saver;
+
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_iostate_saver;
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_exception_saver;
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_tie_saver;
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_rdbuf_saver;
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_fill_saver;
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_locale_saver;
+template < typename Ch, class Tr = ::std::char_traits<Ch> >
+ class basic_ios_all_saver;
+
+typedef basic_ios_iostate_saver<char> ios_iostate_saver;
+typedef basic_ios_iostate_saver<wchar_t> wios_iostate_saver;
+typedef basic_ios_exception_saver<char> ios_exception_saver;
+typedef basic_ios_exception_saver<wchar_t> wios_exception_saver;
+typedef basic_ios_tie_saver<char> ios_tie_saver;
+typedef basic_ios_tie_saver<wchar_t> wios_tie_saver;
+typedef basic_ios_rdbuf_saver<char> ios_rdbuf_saver;
+typedef basic_ios_rdbuf_saver<wchar_t> wios_rdbuf_saver;
+typedef basic_ios_fill_saver<char> ios_fill_saver;
+typedef basic_ios_fill_saver<wchar_t> wios_fill_saver;
+typedef basic_ios_locale_saver<char> ios_locale_saver;
+typedef basic_ios_locale_saver<wchar_t> wios_locale_saver;
+typedef basic_ios_all_saver<char> ios_all_saver;
+typedef basic_ios_all_saver<wchar_t> wios_all_saver;
+
+class ios_iword_saver;
+class ios_pword_saver;
+class ios_all_word_saver;
+
+
+} // namespace io
+} // namespace boost
+
+
+#endif // BOOST_IO_FWD_HPP
diff --git a/3rdParty/Boost/boost/is_placeholder.hpp b/3rdParty/Boost/boost/is_placeholder.hpp
new file mode 100644
index 0000000..5f1b544
--- /dev/null
+++ b/3rdParty/Boost/boost/is_placeholder.hpp
@@ -0,0 +1,31 @@
+#ifndef BOOST_IS_PLACEHOLDER_HPP_INCLUDED
+#define BOOST_IS_PLACEHOLDER_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined( _MSC_VER ) && ( _MSC_VER >= 1020 )
+# pragma once
+#endif
+
+
+// is_placeholder.hpp - TR1 is_placeholder metafunction
+//
+// Copyright (c) 2006 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+
+namespace boost
+{
+
+template< class T > struct is_placeholder
+{
+ enum _vt { value = 0 };
+};
+
+} // namespace boost
+
+#endif // #ifndef BOOST_IS_PLACEHOLDER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/iterator.hpp b/3rdParty/Boost/boost/iterator.hpp
new file mode 100644
index 0000000..a43cfe1
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator.hpp
@@ -0,0 +1,59 @@
+// interator.hpp workarounds for non-conforming standard libraries ---------//
+
+// (C) Copyright Beman Dawes 2000. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/utility for documentation.
+
+// Revision History
+// 12 Jan 01 added <cstddef> for std::ptrdiff_t (Jens Maurer)
+// 28 Jun 00 Workarounds to deal with known MSVC bugs (David Abrahams)
+// 26 Jun 00 Initial version (Jeremy Siek)
+
+#ifndef BOOST_ITERATOR_HPP
+#define BOOST_ITERATOR_HPP
+
+#include <iterator>
+#include <cstddef> // std::ptrdiff_t
+#include <boost/config.hpp>
+
+namespace boost
+{
+# if defined(BOOST_NO_STD_ITERATOR) && !defined(BOOST_MSVC_STD_ITERATOR)
+ template <class Category, class T,
+ class Distance = std::ptrdiff_t,
+ class Pointer = T*, class Reference = T&>
+ struct iterator
+ {
+ typedef T value_type;
+ typedef Distance difference_type;
+ typedef Pointer pointer;
+ typedef Reference reference;
+ typedef Category iterator_category;
+ };
+# else
+
+ // declare iterator_base in namespace detail to work around MSVC bugs which
+ // prevent derivation from an identically-named class in a different namespace.
+ namespace detail {
+ template <class Category, class T, class Distance, class Pointer, class Reference>
+# if !defined(BOOST_MSVC_STD_ITERATOR)
+ struct iterator_base : std::iterator<Category, T, Distance, Pointer, Reference> {};
+# else
+ struct iterator_base : std::iterator<Category, T, Distance>
+ {
+ typedef Reference reference;
+ typedef Pointer pointer;
+ typedef Distance difference_type;
+ };
+# endif
+ }
+
+ template <class Category, class T, class Distance = std::ptrdiff_t,
+ class Pointer = T*, class Reference = T&>
+ struct iterator : boost::detail::iterator_base<Category, T, Distance, Pointer, Reference> {};
+# endif
+} // namespace boost
+
+#endif // BOOST_ITERATOR_HPP
diff --git a/3rdParty/Boost/boost/iterator/detail/config_def.hpp b/3rdParty/Boost/boost/iterator/detail/config_def.hpp
new file mode 100644
index 0000000..fa8d667
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/detail/config_def.hpp
@@ -0,0 +1,137 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+
+// no include guard multiple inclusion intended
+
+//
+// This is a temporary workaround until the bulk of this is
+// available in boost config.
+// 23/02/03 thw
+//
+
+#include <boost/config.hpp> // for prior
+#include <boost/detail/workaround.hpp>
+
+#ifdef BOOST_ITERATOR_CONFIG_DEF
+# error you have nested config_def #inclusion.
+#else
+# define BOOST_ITERATOR_CONFIG_DEF
+#endif
+
+// We enable this always now. Otherwise, the simple case in
+// libs/iterator/test/constant_iterator_arrow.cpp fails to compile
+// because the operator-> return is improperly deduced as a non-const
+// pointer.
+#if 1 || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x531))
+
+// Recall that in general, compilers without partial specialization
+// can't strip constness. Consider counting_iterator, which normally
+// passes a const Value to iterator_facade. As a result, any code
+// which makes a std::vector of the iterator's value_type will fail
+// when its allocator declares functions overloaded on reference and
+// const_reference (the same type).
+//
+// Furthermore, Borland 5.5.1 drops constness in enough ways that we
+// end up using a proxy for operator[] when we otherwise shouldn't.
+// Using reference constness gives it an extra hint that it can
+// return the value_type from operator[] directly, but is not
+// strictly necessary. Not sure how best to resolve this one.
+
+# define BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY 1
+
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x5A0)) \
+ || (BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 700) && defined(_MSC_VER)) \
+ || BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042)) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
+
+# define BOOST_NO_LVALUE_RETURN_DETECTION
+
+# if 0 // test code
+ struct v {};
+
+ typedef char (&no)[3];
+
+ template <class T>
+ no foo(T const&, ...);
+
+ template <class T>
+ char foo(T&, int);
+
+
+ struct value_iterator
+ {
+ v operator*() const;
+ };
+
+ template <class T>
+ struct lvalue_deref_helper
+ {
+ static T& x;
+ enum { value = (sizeof(foo(*x,0)) == 1) };
+ };
+
+ int z2[(lvalue_deref_helper<v*>::value == 1) ? 1 : -1];
+ int z[(lvalue_deref_helper<value_iterator>::value) == 1 ? -1 : 1 ];
+# endif
+
+#endif
+
+#if BOOST_WORKAROUND(__MWERKS__, <=0x2407)
+# define BOOST_NO_IS_CONVERTIBLE // "is_convertible doesn't work for simple types"
+#endif
+
+#if BOOST_WORKAROUND(__GNUC__, == 2) \
+ || BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4) && !defined(__EDG_VERSION__) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
+# define BOOST_NO_IS_CONVERTIBLE_TEMPLATE // The following program fails to compile:
+
+# if 0 // test code
+ #include <boost/type_traits/is_convertible.hpp>
+ template <class T>
+ struct foo
+ {
+ foo(T);
+
+ template <class U>
+ foo(foo<U> const& other) : p(other.p) { }
+
+ T p;
+ };
+
+ bool x = boost::is_convertible<foo<int const*>, foo<int*> >::value;
+# endif
+
+#endif
+
+
+#if !defined(BOOST_MSVC) && (defined(BOOST_NO_SFINAE) || defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_IS_CONVERTIBLE_TEMPLATE))
+# define BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+#endif
+
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+# define BOOST_ARG_DEPENDENT_TYPENAME typename
+# else
+# define BOOST_ARG_DEPENDENT_TYPENAME
+# endif
+
+# if BOOST_WORKAROUND(__GNUC__, == 2) && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(95)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+
+// GCC-2.95 eagerly instantiates templated constructors and conversion
+// operators in convertibility checks, causing premature errors.
+//
+// Borland's problems are harder to diagnose due to lack of an
+// instantiation stack backtrace. They may be due in part to the fact
+// that it drops cv-qualification willy-nilly in templates.
+# define BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+# endif
+
+// no include guard; multiple inclusion intended
diff --git a/3rdParty/Boost/boost/iterator/detail/config_undef.hpp b/3rdParty/Boost/boost/iterator/detail/config_undef.hpp
new file mode 100644
index 0000000..9dcd1d5
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/detail/config_undef.hpp
@@ -0,0 +1,25 @@
+// (C) Copyright Thomas Witt 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)
+
+// no include guard multiple inclusion intended
+
+//
+// This is a temporary workaround until the bulk of this is
+// available in boost config.
+// 23/02/03 thw
+//
+
+#undef BOOST_NO_IS_CONVERTIBLE
+#undef BOOST_NO_IS_CONVERTIBLE_TEMPLATE
+#undef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+#undef BOOST_ARG_DEPENDENT_TYPENAME
+#undef BOOST_NO_LVALUE_RETURN_DETECTION
+#undef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+
+#ifdef BOOST_ITERATOR_CONFIG_DEF
+# undef BOOST_ITERATOR_CONFIG_DEF
+#else
+# error missing or nested #include config_def
+#endif
diff --git a/3rdParty/Boost/boost/iterator/detail/enable_if.hpp b/3rdParty/Boost/boost/iterator/detail/enable_if.hpp
new file mode 100644
index 0000000..0fd36fc
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/detail/enable_if.hpp
@@ -0,0 +1,86 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+#ifndef BOOST_ENABLE_IF_23022003THW_HPP
+#define BOOST_ENABLE_IF_23022003THW_HPP
+
+#include <boost/detail/workaround.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/iterator/detail/config_def.hpp>
+
+//
+// Boost iterators uses its own enable_if cause we need
+// special semantics for deficient compilers.
+// 23/02/03 thw
+//
+
+namespace boost
+{
+
+ namespace iterators
+ {
+ //
+ // Base machinery for all kinds of enable if
+ //
+ template<bool>
+ struct enabled
+ {
+ template<typename T>
+ struct base
+ {
+ typedef T type;
+ };
+ };
+
+ //
+ // For compilers that don't support "Substitution Failure Is Not An Error"
+ // enable_if falls back to always enabled. See comments
+ // on operator implementation for consequences.
+ //
+ template<>
+ struct enabled<false>
+ {
+ template<typename T>
+ struct base
+ {
+#ifdef BOOST_NO_SFINAE
+
+ typedef T type;
+
+ // This way to do it would give a nice error message containing
+ // invalid overload, but has the big disadvantage that
+ // there is no reference to user code in the error message.
+ //
+ // struct invalid_overload;
+ // typedef invalid_overload type;
+ //
+#endif
+ };
+ };
+
+
+ template <class Cond,
+ class Return>
+ struct enable_if
+# if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_IS_CONVERTIBLE)
+ : enabled<(Cond::value)>::template base<Return>
+# else
+ : mpl::identity<Return>
+# endif
+ {
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ typedef Return type;
+# endif
+ };
+
+ } // namespace iterators
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ENABLE_IF_23022003THW_HPP
diff --git a/3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp b/3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp
new file mode 100644
index 0000000..2c4771d
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/detail/facade_iterator_category.hpp
@@ -0,0 +1,200 @@
+// Copyright David Abrahams 2003. 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)
+#ifndef FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
+# define FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
+
+# include <boost/iterator/iterator_categories.hpp>
+
+# include <boost/mpl/or.hpp> // used in iterator_tag inheritance logic
+# include <boost/mpl/and.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/identity.hpp>
+# include <boost/mpl/assert.hpp>
+
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_const.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_convertible.hpp>
+
+# include <boost/type_traits/is_same.hpp>
+
+# include <boost/iterator/detail/config_def.hpp> // try to keep this last
+
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+# include <boost/detail/indirect_traits.hpp>
+# endif
+
+//
+// iterator_category deduction for iterator_facade
+//
+
+// forward declaration
+namespace boost { struct use_default; }
+
+namespace boost { namespace detail {
+
+struct input_output_iterator_tag
+ : std::input_iterator_tag
+{
+ // Using inheritance for only input_iterator_tag helps to avoid
+ // ambiguities when a stdlib implementation dispatches on a
+ // function which is overloaded on both input_iterator_tag and
+ // output_iterator_tag, as STLPort does, in its __valid_range
+ // function. I claim it's better to avoid the ambiguity in these
+ // cases.
+ operator std::output_iterator_tag() const
+ {
+ return std::output_iterator_tag();
+ }
+};
+
+//
+// True iff the user has explicitly disabled writability of this
+// iterator. Pass the iterator_facade's Value parameter and its
+// nested ::reference type.
+//
+template <class ValueParam, class Reference>
+struct iterator_writability_disabled
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY // Adding Thomas' logic?
+ : mpl::or_<
+ is_const<Reference>
+ , boost::detail::indirect_traits::is_reference_to_const<Reference>
+ , is_const<ValueParam>
+ >
+# else
+ : is_const<ValueParam>
+# endif
+{};
+
+
+//
+// Convert an iterator_facade's traversal category, Value parameter,
+// and ::reference type to an appropriate old-style category.
+//
+// If writability has been disabled per the above metafunction, the
+// result will not be convertible to output_iterator_tag.
+//
+// Otherwise, if Traversal == single_pass_traversal_tag, the following
+// conditions will result in a tag that is convertible both to
+// input_iterator_tag and output_iterator_tag:
+//
+// 1. Reference is a reference to non-const
+// 2. Reference is not a reference and is convertible to Value
+//
+template <class Traversal, class ValueParam, class Reference>
+struct iterator_facade_default_category
+ : mpl::eval_if<
+ mpl::and_<
+ is_reference<Reference>
+ , is_convertible<Traversal,forward_traversal_tag>
+ >
+ , mpl::eval_if<
+ is_convertible<Traversal,random_access_traversal_tag>
+ , mpl::identity<std::random_access_iterator_tag>
+ , mpl::if_<
+ is_convertible<Traversal,bidirectional_traversal_tag>
+ , std::bidirectional_iterator_tag
+ , std::forward_iterator_tag
+ >
+ >
+ , typename mpl::eval_if<
+ mpl::and_<
+ is_convertible<Traversal, single_pass_traversal_tag>
+
+ // check for readability
+ , is_convertible<Reference, ValueParam>
+ >
+ , mpl::identity<std::input_iterator_tag>
+ , mpl::identity<Traversal>
+ >
+ >
+{
+};
+
+// True iff T is convertible to an old-style iterator category.
+template <class T>
+struct is_iterator_category
+ : mpl::or_<
+ is_convertible<T,std::input_iterator_tag>
+ , is_convertible<T,std::output_iterator_tag>
+ >
+{
+};
+
+template <class T>
+struct is_iterator_traversal
+ : is_convertible<T,incrementable_traversal_tag>
+{};
+
+//
+// A composite iterator_category tag convertible to Category (a pure
+// old-style category) and Traversal (a pure traversal tag).
+// Traversal must be a strict increase of the traversal power given by
+// Category.
+//
+template <class Category, class Traversal>
+struct iterator_category_with_traversal
+ : Category, Traversal
+{
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ // Make sure this isn't used to build any categories where
+ // convertibility to Traversal is redundant. Should just use the
+ // Category element in that case.
+ BOOST_MPL_ASSERT_NOT((
+ is_convertible<
+ typename iterator_category_to_traversal<Category>::type
+ , Traversal
+ >));
+
+ BOOST_MPL_ASSERT((is_iterator_category<Category>));
+ BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>));
+ BOOST_MPL_ASSERT_NOT((is_iterator_traversal<Category>));
+# if !BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
+ BOOST_MPL_ASSERT((is_iterator_traversal<Traversal>));
+# endif
+# endif
+};
+
+// Computes an iterator_category tag whose traversal is Traversal and
+// which is appropriate for an iterator
+template <class Traversal, class ValueParam, class Reference>
+struct facade_iterator_category_impl
+{
+# if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ BOOST_MPL_ASSERT_NOT((is_iterator_category<Traversal>));
+# endif
+
+ typedef typename iterator_facade_default_category<
+ Traversal,ValueParam,Reference
+ >::type category;
+
+ typedef typename mpl::if_<
+ is_same<
+ Traversal
+ , typename iterator_category_to_traversal<category>::type
+ >
+ , category
+ , iterator_category_with_traversal<category,Traversal>
+ >::type type;
+};
+
+//
+// Compute an iterator_category for iterator_facade
+//
+template <class CategoryOrTraversal, class ValueParam, class Reference>
+struct facade_iterator_category
+ : mpl::eval_if<
+ is_iterator_category<CategoryOrTraversal>
+ , mpl::identity<CategoryOrTraversal> // old-style categories are fine as-is
+ , facade_iterator_category_impl<CategoryOrTraversal,ValueParam,Reference>
+ >
+{
+};
+
+}} // namespace boost::detail
+
+# include <boost/iterator/detail/config_undef.hpp>
+
+#endif // FACADE_ITERATOR_CATEGORY_DWA20031118_HPP
diff --git a/3rdParty/Boost/boost/iterator/detail/minimum_category.hpp b/3rdParty/Boost/boost/iterator/detail/minimum_category.hpp
new file mode 100644
index 0000000..96501dd
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/detail/minimum_category.hpp
@@ -0,0 +1,116 @@
+// Copyright David Abrahams 2003. 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)
+#ifndef MINIMUM_CATEGORY_DWA20031119_HPP
+# define MINIMUM_CATEGORY_DWA20031119_HPP
+
+# include <boost/type_traits/is_convertible.hpp>
+# include <boost/type_traits/is_same.hpp>
+
+# include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace detail {
+//
+// Returns the minimum category type or error_type
+// if T1 and T2 are unrelated.
+//
+// For compilers not supporting is_convertible this only
+// works with the new boost return and traversal category
+// types. The exact boost _types_ are required. No derived types
+// will work.
+//
+//
+template <bool GreaterEqual, bool LessEqual>
+struct minimum_category_impl
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+{
+ template <class T1, class T2> struct apply
+ {
+ typedef T2 type;
+ };
+ typedef void type;
+}
+# endif
+;
+
+template <class T1, class T2>
+struct error_not_related_by_convertibility;
+
+template <>
+struct minimum_category_impl<true,false>
+{
+ template <class T1, class T2> struct apply
+ {
+ typedef T2 type;
+ };
+};
+
+template <>
+struct minimum_category_impl<false,true>
+{
+ template <class T1, class T2> struct apply
+ {
+ typedef T1 type;
+ };
+};
+
+template <>
+struct minimum_category_impl<true,true>
+{
+ template <class T1, class T2> struct apply
+ {
+ BOOST_STATIC_ASSERT((is_same<T1,T2>::value));
+ typedef T1 type;
+ };
+};
+
+template <>
+struct minimum_category_impl<false,false>
+{
+ template <class T1, class T2> struct apply
+ : error_not_related_by_convertibility<T1,T2>
+ {
+ };
+};
+
+template <class T1 = mpl::_1, class T2 = mpl::_2>
+struct minimum_category
+{
+ typedef minimum_category_impl<
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
+ is_same<T2,int>::value ||
+# endif
+ ::boost::is_convertible<T1,T2>::value
+ , ::boost::is_convertible<T2,T1>::value
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
+ || is_same<T1,int>::value
+# endif
+ > outer;
+
+ typedef typename outer::template apply<T1,T2> inner;
+ typedef typename inner::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,minimum_category,(T1,T2))
+};
+
+template <>
+struct minimum_category<mpl::_1,mpl::_2>
+{
+ template <class T1, class T2>
+ struct apply : minimum_category<T1,T2>
+ {};
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2))
+};
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
+template <>
+struct minimum_category<int,int>
+{
+ typedef int type;
+};
+# endif
+
+}} // namespace boost::detail
+
+#endif // MINIMUM_CATEGORY_DWA20031119_HPP
diff --git a/3rdParty/Boost/boost/iterator/interoperable.hpp b/3rdParty/Boost/boost/iterator/interoperable.hpp
new file mode 100644
index 0000000..c13dd9b
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/interoperable.hpp
@@ -0,0 +1,50 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+#ifndef BOOST_INTEROPERABLE_23022003THW_HPP
+# define BOOST_INTEROPERABLE_23022003THW_HPP
+
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/or.hpp>
+
+# include <boost/type_traits/is_convertible.hpp>
+
+# include <boost/iterator/detail/config_def.hpp> // must appear last
+
+namespace boost
+{
+
+ //
+ // Meta function that determines whether two
+ // iterator types are considered interoperable.
+ //
+ // Two iterator types A,B are considered interoperable if either
+ // A is convertible to B or vice versa.
+ // This interoperability definition is in sync with the
+ // standards requirements on constant/mutable container
+ // iterators (23.1 [lib.container.requirements]).
+ //
+ // For compilers that don't support is_convertible
+ // is_interoperable gives false positives. See comments
+ // on operator implementation for consequences.
+ //
+ template <typename A, typename B>
+ struct is_interoperable
+# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+ : mpl::true_
+# else
+ : mpl::or_<
+ is_convertible< A, B >
+ , is_convertible< B, A > >
+# endif
+ {
+ };
+
+} // namespace boost
+
+# include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_INTEROPERABLE_23022003THW_HPP
diff --git a/3rdParty/Boost/boost/iterator/iterator_adaptor.hpp b/3rdParty/Boost/boost/iterator/iterator_adaptor.hpp
new file mode 100644
index 0000000..27b08ff
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/iterator_adaptor.hpp
@@ -0,0 +1,371 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+#ifndef BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
+#define BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
+
+#include <boost/static_assert.hpp>
+#include <boost/iterator.hpp>
+#include <boost/detail/iterator.hpp>
+
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/iterator/detail/enable_if.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/or.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+#ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+# include <boost/type_traits/remove_reference.hpp>
+
+# if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+# include <boost/type_traits/add_reference.hpp>
+# endif
+
+#else
+# include <boost/type_traits/add_reference.hpp>
+#endif
+
+#include <boost/iterator/detail/config_def.hpp>
+
+#include <boost/iterator/iterator_traits.hpp>
+
+namespace boost
+{
+ // Used as a default template argument internally, merely to
+ // indicate "use the default", this can also be passed by users
+ // explicitly in order to specify that the default should be used.
+ struct use_default;
+
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ // the incompleteness of use_default causes massive problems for
+ // is_convertible (naturally). This workaround is fortunately not
+ // needed for vc6/vc7.
+ template<class To>
+ struct is_convertible<use_default,To>
+ : mpl::false_ {};
+# endif
+
+ namespace detail
+ {
+
+ //
+ // Result type used in enable_if_convertible meta function.
+ // This can be an incomplete type, as only pointers to
+ // enable_if_convertible< ... >::type are used.
+ // We could have used void for this, but conversion to
+ // void* is just to easy.
+ //
+ struct enable_type;
+ }
+
+
+ //
+ // enable_if for use in adapted iterators constructors.
+ //
+ // In order to provide interoperability between adapted constant and
+ // mutable iterators, adapted iterators will usually provide templated
+ // conversion constructors of the following form
+ //
+ // template <class BaseIterator>
+ // class adapted_iterator :
+ // public iterator_adaptor< adapted_iterator<Iterator>, Iterator >
+ // {
+ // public:
+ //
+ // ...
+ //
+ // template <class OtherIterator>
+ // adapted_iterator(
+ // OtherIterator const& it
+ // , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0);
+ //
+ // ...
+ // };
+ //
+ // enable_if_convertible is used to remove those overloads from the overload
+ // set that cannot be instantiated. For all practical purposes only overloads
+ // for constant/mutable interaction will remain. This has the advantage that
+ // meta functions like boost::is_convertible do not return false positives,
+ // as they can only look at the signature of the conversion constructor
+ // and not at the actual instantiation.
+ //
+ // enable_if_interoperable can be safely used in user code. It falls back to
+ // always enabled for compilers that don't support enable_if or is_convertible.
+ // There is no need for compiler specific workarounds in user code.
+ //
+ // The operators implementation relies on boost::is_convertible not returning
+ // false positives for user/library defined iterator types. See comments
+ // on operator implementation for consequences.
+ //
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+ template<typename From, typename To>
+ struct enable_if_convertible
+ {
+ typedef typename mpl::if_<
+ mpl::or_<
+ is_same<From,To>
+ , is_convertible<From, To>
+ >
+ , boost::detail::enable_type
+ , int&
+ >::type type;
+ };
+
+# elif defined(BOOST_NO_IS_CONVERTIBLE) || defined(BOOST_NO_SFINAE)
+
+ template <class From, class To>
+ struct enable_if_convertible
+ {
+ typedef boost::detail::enable_type type;
+ };
+
+# elif BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292)) && BOOST_MSVC > 1300
+
+ // For some reason vc7.1 needs us to "cut off" instantiation
+ // of is_convertible in a few cases.
+ template<typename From, typename To>
+ struct enable_if_convertible
+ : iterators::enable_if<
+ mpl::or_<
+ is_same<From,To>
+ , is_convertible<From, To>
+ >
+ , boost::detail::enable_type
+ >
+ {};
+
+# else
+
+ template<typename From, typename To>
+ struct enable_if_convertible
+ : iterators::enable_if<
+ is_convertible<From, To>
+ , boost::detail::enable_type
+ >
+ {};
+
+# endif
+
+ //
+ // Default template argument handling for iterator_adaptor
+ //
+ namespace detail
+ {
+ // If T is use_default, return the result of invoking
+ // DefaultNullaryFn, otherwise return T.
+ template <class T, class DefaultNullaryFn>
+ struct ia_dflt_help
+ : mpl::eval_if<
+ is_same<T, use_default>
+ , DefaultNullaryFn
+ , mpl::identity<T>
+ >
+ {
+ };
+
+ // A metafunction which computes an iterator_adaptor's base class,
+ // a specialization of iterator_facade.
+ template <
+ class Derived
+ , class Base
+ , class Value
+ , class Traversal
+ , class Reference
+ , class Difference
+ >
+ struct iterator_adaptor_base
+ {
+ typedef iterator_facade<
+ Derived
+
+# ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY
+ , typename boost::detail::ia_dflt_help<
+ Value
+ , mpl::eval_if<
+ is_same<Reference,use_default>
+ , iterator_value<Base>
+ , remove_reference<Reference>
+ >
+ >::type
+# else
+ , typename boost::detail::ia_dflt_help<
+ Value, iterator_value<Base>
+ >::type
+# endif
+
+ , typename boost::detail::ia_dflt_help<
+ Traversal
+ , iterator_traversal<Base>
+ >::type
+
+ , typename boost::detail::ia_dflt_help<
+ Reference
+ , mpl::eval_if<
+ is_same<Value,use_default>
+ , iterator_reference<Base>
+ , add_reference<Value>
+ >
+ >::type
+
+ , typename boost::detail::ia_dflt_help<
+ Difference, iterator_difference<Base>
+ >::type
+ >
+ type;
+ };
+
+ // workaround for aC++ CR JAGaf33512
+ template <class Tr1, class Tr2>
+ inline void iterator_adaptor_assert_traversal ()
+ {
+ BOOST_STATIC_ASSERT((is_convertible<Tr1, Tr2>::value));
+ }
+ }
+
+ //
+ // Iterator Adaptor
+ //
+ // The parameter ordering changed slightly with respect to former
+ // versions of iterator_adaptor The idea is that when the user needs
+ // to fiddle with the reference type it is highly likely that the
+ // iterator category has to be adjusted as well. Any of the
+ // following four template arguments may be ommitted or explicitly
+ // replaced by use_default.
+ //
+ // Value - if supplied, the value_type of the resulting iterator, unless
+ // const. If const, a conforming compiler strips constness for the
+ // value_type. If not supplied, iterator_traits<Base>::value_type is used
+ //
+ // Category - the traversal category of the resulting iterator. If not
+ // supplied, iterator_traversal<Base>::type is used.
+ //
+ // Reference - the reference type of the resulting iterator, and in
+ // particular, the result type of operator*(). If not supplied but
+ // Value is supplied, Value& is used. Otherwise
+ // iterator_traits<Base>::reference is used.
+ //
+ // Difference - the difference_type of the resulting iterator. If not
+ // supplied, iterator_traits<Base>::difference_type is used.
+ //
+ template <
+ class Derived
+ , class Base
+ , class Value = use_default
+ , class Traversal = use_default
+ , class Reference = use_default
+ , class Difference = use_default
+ >
+ class iterator_adaptor
+ : public boost::detail::iterator_adaptor_base<
+ Derived, Base, Value, Traversal, Reference, Difference
+ >::type
+ {
+ friend class iterator_core_access;
+
+ protected:
+ typedef typename boost::detail::iterator_adaptor_base<
+ Derived, Base, Value, Traversal, Reference, Difference
+ >::type super_t;
+ public:
+ iterator_adaptor() {}
+
+ explicit iterator_adaptor(Base const &iter)
+ : m_iterator(iter)
+ {
+ }
+
+ typedef Base base_type;
+
+ Base const& base() const
+ { return m_iterator; }
+
+ protected:
+ // for convenience in derived classes
+ typedef iterator_adaptor<Derived,Base,Value,Traversal,Reference,Difference> iterator_adaptor_;
+
+ //
+ // lvalue access to the Base object for Derived
+ //
+ Base const& base_reference() const
+ { return m_iterator; }
+
+ Base& base_reference()
+ { return m_iterator; }
+
+ private:
+ //
+ // Core iterator interface for iterator_facade. This is private
+ // to prevent temptation for Derived classes to use it, which
+ // will often result in an error. Derived classes should use
+ // base_reference(), above, to get direct access to m_iterator.
+ //
+ typename super_t::reference dereference() const
+ { return *m_iterator; }
+
+ template <
+ class OtherDerived, class OtherIterator, class V, class C, class R, class D
+ >
+ bool equal(iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& x) const
+ {
+ // Maybe readd with same_distance
+ // BOOST_STATIC_ASSERT(
+ // (detail::same_category_and_difference<Derived,OtherDerived>::value)
+ // );
+ return m_iterator == x.base();
+ }
+
+ typedef typename iterator_category_to_traversal<
+ typename super_t::iterator_category
+ >::type my_traversal;
+
+# define BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(cat) \
+ boost::detail::iterator_adaptor_assert_traversal<my_traversal, cat>();
+
+ void advance(typename super_t::difference_type n)
+ {
+ BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag)
+ m_iterator += n;
+ }
+
+ void increment() { ++m_iterator; }
+
+ void decrement()
+ {
+ BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(bidirectional_traversal_tag)
+ --m_iterator;
+ }
+
+ template <
+ class OtherDerived, class OtherIterator, class V, class C, class R, class D
+ >
+ typename super_t::difference_type distance_to(
+ iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> const& y) const
+ {
+ BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL(random_access_traversal_tag)
+ // Maybe readd with same_distance
+ // BOOST_STATIC_ASSERT(
+ // (detail::same_category_and_difference<Derived,OtherDerived>::value)
+ // );
+ return y.base() - m_iterator;
+ }
+
+# undef BOOST_ITERATOR_ADAPTOR_ASSERT_TRAVERSAL
+
+ private: // data members
+ Base m_iterator;
+ };
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ITERATOR_ADAPTOR_23022003THW_HPP
diff --git a/3rdParty/Boost/boost/iterator/iterator_categories.hpp b/3rdParty/Boost/boost/iterator/iterator_categories.hpp
new file mode 100644
index 0000000..1740d98
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/iterator_categories.hpp
@@ -0,0 +1,188 @@
+// (C) Copyright Jeremy Siek 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)
+
+#ifndef BOOST_ITERATOR_CATEGORIES_HPP
+# define BOOST_ITERATOR_CATEGORIES_HPP
+
+# include <boost/config.hpp>
+# include <boost/detail/iterator.hpp>
+# include <boost/iterator/detail/config_def.hpp>
+
+# include <boost/detail/workaround.hpp>
+
+# include <boost/mpl/eval_if.hpp>
+# include <boost/mpl/identity.hpp>
+# include <boost/mpl/placeholders.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+
+# include <boost/type_traits/is_convertible.hpp>
+
+# include <boost/static_assert.hpp>
+
+namespace boost {
+
+//
+// Traversal Categories
+//
+
+struct no_traversal_tag {};
+
+struct incrementable_traversal_tag
+ : no_traversal_tag
+{
+// incrementable_traversal_tag() {}
+// incrementable_traversal_tag(std::output_iterator_tag const&) {};
+};
+
+struct single_pass_traversal_tag
+ : incrementable_traversal_tag
+{
+// single_pass_traversal_tag() {}
+// single_pass_traversal_tag(std::input_iterator_tag const&) {};
+};
+
+struct forward_traversal_tag
+ : single_pass_traversal_tag
+{
+// forward_traversal_tag() {}
+// forward_traversal_tag(std::forward_iterator_tag const&) {};
+};
+
+struct bidirectional_traversal_tag
+ : forward_traversal_tag
+{
+// bidirectional_traversal_tag() {};
+// bidirectional_traversal_tag(std::bidirectional_iterator_tag const&) {};
+};
+
+struct random_access_traversal_tag
+ : bidirectional_traversal_tag
+{
+// random_access_traversal_tag() {};
+// random_access_traversal_tag(std::random_access_iterator_tag const&) {};
+};
+
+namespace detail
+{
+ //
+ // Convert a "strictly old-style" iterator category to a traversal
+ // tag. This is broken out into a separate metafunction to reduce
+ // the cost of instantiating iterator_category_to_traversal, below,
+ // for new-style types.
+ //
+ template <class Cat>
+ struct old_category_to_traversal
+ : mpl::eval_if<
+ is_convertible<Cat,std::random_access_iterator_tag>
+ , mpl::identity<random_access_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::bidirectional_iterator_tag>
+ , mpl::identity<bidirectional_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::forward_iterator_tag>
+ , mpl::identity<forward_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::input_iterator_tag>
+ , mpl::identity<single_pass_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Cat,std::output_iterator_tag>
+ , mpl::identity<incrementable_traversal_tag>
+ , void
+ >
+ >
+ >
+ >
+ >
+ {};
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <>
+ struct old_category_to_traversal<int>
+ {
+ typedef int type;
+ };
+# endif
+
+ template <class Traversal>
+ struct pure_traversal_tag
+ : mpl::eval_if<
+ is_convertible<Traversal,random_access_traversal_tag>
+ , mpl::identity<random_access_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,bidirectional_traversal_tag>
+ , mpl::identity<bidirectional_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,forward_traversal_tag>
+ , mpl::identity<forward_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,single_pass_traversal_tag>
+ , mpl::identity<single_pass_traversal_tag>
+ , mpl::eval_if<
+ is_convertible<Traversal,incrementable_traversal_tag>
+ , mpl::identity<incrementable_traversal_tag>
+ , void
+ >
+ >
+ >
+ >
+ >
+ {
+ };
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <>
+ struct pure_traversal_tag<int>
+ {
+ typedef int type;
+ };
+# endif
+
+} // namespace detail
+
+
+//
+// Convert an iterator category into a traversal tag
+//
+template <class Cat>
+struct iterator_category_to_traversal
+ : mpl::eval_if< // if already convertible to a traversal tag, we're done.
+ is_convertible<Cat,incrementable_traversal_tag>
+ , mpl::identity<Cat>
+ , boost::detail::old_category_to_traversal<Cat>
+ >
+{};
+
+// Trait to get an iterator's traversal category
+template <class Iterator = mpl::_1>
+struct iterator_traversal
+ : iterator_category_to_traversal<
+ typename boost::detail::iterator_traits<Iterator>::iterator_category
+ >
+{};
+
+# ifdef BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+// Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work
+// out well. Instantiating the nested apply template also
+// requires instantiating iterator_traits on the
+// placeholder. Instead we just specialize it as a metafunction
+// class.
+template <>
+struct iterator_traversal<mpl::_1>
+{
+ template <class T>
+ struct apply : iterator_traversal<T>
+ {};
+};
+template <>
+struct iterator_traversal<mpl::_>
+ : iterator_traversal<mpl::_1>
+{};
+# endif
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ITERATOR_CATEGORIES_HPP
diff --git a/3rdParty/Boost/boost/iterator/iterator_facade.hpp b/3rdParty/Boost/boost/iterator/iterator_facade.hpp
new file mode 100644
index 0000000..967d60f
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/iterator_facade.hpp
@@ -0,0 +1,878 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+#ifndef BOOST_ITERATOR_FACADE_23022003THW_HPP
+#define BOOST_ITERATOR_FACADE_23022003THW_HPP
+
+#include <boost/iterator.hpp>
+#include <boost/iterator/interoperable.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+
+#include <boost/iterator/detail/facade_iterator_category.hpp>
+#include <boost/iterator/detail/enable_if.hpp>
+
+#include <boost/implicit_cast.hpp>
+#include <boost/static_assert.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_pointer.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/iterator/detail/config_def.hpp> // this goes last
+
+namespace boost
+{
+ // This forward declaration is required for the friend declaration
+ // in iterator_core_access
+ template <class I, class V, class TC, class R, class D> class iterator_facade;
+
+ namespace detail
+ {
+ // A binary metafunction class that always returns bool. VC6
+ // ICEs on mpl::always<bool>, probably because of the default
+ // parameters.
+ struct always_bool2
+ {
+ template <class T, class U>
+ struct apply
+ {
+ typedef bool type;
+ };
+ };
+
+ //
+ // enable if for use in operator implementation.
+ //
+ template <
+ class Facade1
+ , class Facade2
+ , class Return
+ >
+ struct enable_if_interoperable
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ {
+ typedef typename mpl::if_<
+ mpl::or_<
+ is_convertible<Facade1, Facade2>
+ , is_convertible<Facade2, Facade1>
+ >
+ , Return
+ , int[3]
+ >::type type;
+ };
+#else
+ : ::boost::iterators::enable_if<
+ mpl::or_<
+ is_convertible<Facade1, Facade2>
+ , is_convertible<Facade2, Facade1>
+ >
+ , Return
+ >
+ {};
+#endif
+
+ //
+ // Generates associated types for an iterator_facade with the
+ // given parameters.
+ //
+ template <
+ class ValueParam
+ , class CategoryOrTraversal
+ , class Reference
+ , class Difference
+ >
+ struct iterator_facade_types
+ {
+ typedef typename facade_iterator_category<
+ CategoryOrTraversal, ValueParam, Reference
+ >::type iterator_category;
+
+ typedef typename remove_const<ValueParam>::type value_type;
+
+ typedef typename mpl::eval_if<
+ boost::detail::iterator_writability_disabled<ValueParam,Reference>
+ , add_pointer<const value_type>
+ , add_pointer<value_type>
+ >::type pointer;
+
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && (BOOST_WORKAROUND(_STLPORT_VERSION, BOOST_TESTED_AT(0x452)) \
+ || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, BOOST_TESTED_AT(310))) \
+ || BOOST_WORKAROUND(BOOST_RWSTD_VER, BOOST_TESTED_AT(0x20101)) \
+ || BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, <= 310)
+
+ // To interoperate with some broken library/compiler
+ // combinations, user-defined iterators must be derived from
+ // std::iterator. It is possible to implement a standard
+ // library for broken compilers without this limitation.
+# define BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE 1
+
+ typedef
+ iterator<iterator_category, value_type, Difference, pointer, Reference>
+ base;
+# endif
+ };
+
+ // iterators whose dereference operators reference the same value
+ // for all iterators into the same sequence (like many input
+ // iterators) need help with their postfix ++: the referenced
+ // value must be read and stored away before the increment occurs
+ // so that *a++ yields the originally referenced element and not
+ // the next one.
+ template <class Iterator>
+ class postfix_increment_proxy
+ {
+ typedef typename iterator_value<Iterator>::type value_type;
+ public:
+ explicit postfix_increment_proxy(Iterator const& x)
+ : stored_value(*x)
+ {}
+
+ // Returning a mutable reference allows nonsense like
+ // (*r++).mutate(), but it imposes fewer assumptions about the
+ // behavior of the value_type. In particular, recall taht
+ // (*r).mutate() is legal if operator* returns by value.
+ value_type&
+ operator*() const
+ {
+ return this->stored_value;
+ }
+ private:
+ mutable value_type stored_value;
+ };
+
+ //
+ // In general, we can't determine that such an iterator isn't
+ // writable -- we also need to store a copy of the old iterator so
+ // that it can be written into.
+ template <class Iterator>
+ class writable_postfix_increment_proxy
+ {
+ typedef typename iterator_value<Iterator>::type value_type;
+ public:
+ explicit writable_postfix_increment_proxy(Iterator const& x)
+ : stored_value(*x)
+ , stored_iterator(x)
+ {}
+
+ // Dereferencing must return a proxy so that both *r++ = o and
+ // value_type(*r++) can work. In this case, *r is the same as
+ // *r++, and the conversion operator below is used to ensure
+ // readability.
+ writable_postfix_increment_proxy const&
+ operator*() const
+ {
+ return *this;
+ }
+
+ // Provides readability of *r++
+ operator value_type&() const
+ {
+ return stored_value;
+ }
+
+ // Provides writability of *r++
+ template <class T>
+ T const& operator=(T const& x) const
+ {
+ *this->stored_iterator = x;
+ return x;
+ }
+
+ // This overload just in case only non-const objects are writable
+ template <class T>
+ T& operator=(T& x) const
+ {
+ *this->stored_iterator = x;
+ return x;
+ }
+
+ // Provides X(r++)
+ operator Iterator const&() const
+ {
+ return stored_iterator;
+ }
+
+ private:
+ mutable value_type stored_value;
+ Iterator stored_iterator;
+ };
+
+# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <class Reference, class Value>
+ struct is_non_proxy_reference_impl
+ {
+ static Reference r;
+
+ template <class R>
+ static typename mpl::if_<
+ is_convertible<
+ R const volatile*
+ , Value const volatile*
+ >
+ , char[1]
+ , char[2]
+ >::type& helper(R const&);
+
+ BOOST_STATIC_CONSTANT(bool, value = sizeof(helper(r)) == 1);
+ };
+
+ template <class Reference, class Value>
+ struct is_non_proxy_reference
+ : mpl::bool_<
+ is_non_proxy_reference_impl<Reference, Value>::value
+ >
+ {};
+# else
+ template <class Reference, class Value>
+ struct is_non_proxy_reference
+ : is_convertible<
+ typename remove_reference<Reference>::type
+ const volatile*
+ , Value const volatile*
+ >
+ {};
+# endif
+
+ // A metafunction to choose the result type of postfix ++
+ //
+ // Because the C++98 input iterator requirements say that *r++ has
+ // type T (value_type), implementations of some standard
+ // algorithms like lexicographical_compare may use constructions
+ // like:
+ //
+ // *r++ < *s++
+ //
+ // If *r++ returns a proxy (as required if r is writable but not
+ // multipass), this sort of expression will fail unless the proxy
+ // supports the operator<. Since there are any number of such
+ // operations, we're not going to try to support them. Therefore,
+ // even if r++ returns a proxy, *r++ will only return a proxy if
+ // *r also returns a proxy.
+ template <class Iterator, class Value, class Reference, class CategoryOrTraversal>
+ struct postfix_increment_result
+ : mpl::eval_if<
+ mpl::and_<
+ // A proxy is only needed for readable iterators
+ is_convertible<Reference,Value const&>
+
+ // No multipass iterator can have values that disappear
+ // before positions can be re-visited
+ , mpl::not_<
+ is_convertible<
+ typename iterator_category_to_traversal<CategoryOrTraversal>::type
+ , forward_traversal_tag
+ >
+ >
+ >
+ , mpl::if_<
+ is_non_proxy_reference<Reference,Value>
+ , postfix_increment_proxy<Iterator>
+ , writable_postfix_increment_proxy<Iterator>
+ >
+ , mpl::identity<Iterator>
+ >
+ {};
+
+ // operator->() needs special support for input iterators to strictly meet the
+ // standard's requirements. If *i is not a reference type, we must still
+ // produce a lvalue to which a pointer can be formed. We do that by
+ // returning an instantiation of this special proxy class template.
+ template <class T>
+ struct operator_arrow_proxy
+ {
+ operator_arrow_proxy(T const* px) : m_value(*px) {}
+ T* operator->() const { return &m_value; }
+ // This function is needed for MWCW and BCC, which won't call operator->
+ // again automatically per 13.3.1.2 para 8
+ operator T*() const { return &m_value; }
+ mutable T m_value;
+ };
+
+ // A metafunction that gets the result type for operator->. Also
+ // has a static function make() which builds the result from a
+ // Reference
+ template <class ValueType, class Reference, class Pointer>
+ struct operator_arrow_result
+ {
+ // CWPro8.3 won't accept "operator_arrow_result::type", and we
+ // need that type below, so metafunction forwarding would be a
+ // losing proposition here.
+ typedef typename mpl::if_<
+ is_reference<Reference>
+ , Pointer
+ , operator_arrow_proxy<ValueType>
+ >::type type;
+
+ static type make(Reference x)
+ {
+ return implicit_cast<type>(&x);
+ }
+ };
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // Deal with ETI
+ template<>
+ struct operator_arrow_result<int, int, int>
+ {
+ typedef int type;
+ };
+# endif
+
+ // A proxy return type for operator[], needed to deal with
+ // iterators that may invalidate referents upon destruction.
+ // Consider the temporary iterator in *(a + n)
+ template <class Iterator>
+ class operator_brackets_proxy
+ {
+ // Iterator is actually an iterator_facade, so we do not have to
+ // go through iterator_traits to access the traits.
+ typedef typename Iterator::reference reference;
+ typedef typename Iterator::value_type value_type;
+
+ public:
+ operator_brackets_proxy(Iterator const& iter)
+ : m_iter(iter)
+ {}
+
+ operator reference() const
+ {
+ return *m_iter;
+ }
+
+ operator_brackets_proxy& operator=(value_type const& val)
+ {
+ *m_iter = val;
+ return *this;
+ }
+
+ private:
+ Iterator m_iter;
+ };
+
+ // A metafunction that determines whether operator[] must return a
+ // proxy, or whether it can simply return a copy of the value_type.
+ template <class ValueType, class Reference>
+ struct use_operator_brackets_proxy
+ : mpl::not_<
+ mpl::and_<
+ // Really we want an is_copy_constructible trait here,
+ // but is_POD will have to suffice in the meantime.
+ boost::is_POD<ValueType>
+ , iterator_writability_disabled<ValueType,Reference>
+ >
+ >
+ {};
+
+ template <class Iterator, class Value, class Reference>
+ struct operator_brackets_result
+ {
+ typedef typename mpl::if_<
+ use_operator_brackets_proxy<Value,Reference>
+ , operator_brackets_proxy<Iterator>
+ , Value
+ >::type type;
+ };
+
+ template <class Iterator>
+ operator_brackets_proxy<Iterator> make_operator_brackets_result(Iterator const& iter, mpl::true_)
+ {
+ return operator_brackets_proxy<Iterator>(iter);
+ }
+
+ template <class Iterator>
+ typename Iterator::value_type make_operator_brackets_result(Iterator const& iter, mpl::false_)
+ {
+ return *iter;
+ }
+
+ struct choose_difference_type
+ {
+ template <class I1, class I2>
+ struct apply
+ :
+# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+ iterator_difference<I1>
+# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ mpl::if_<
+ is_convertible<I2,I1>
+ , typename I1::difference_type
+ , typename I2::difference_type
+ >
+# else
+ mpl::eval_if<
+ is_convertible<I2,I1>
+ , iterator_difference<I1>
+ , iterator_difference<I2>
+ >
+# endif
+ {};
+
+ };
+ } // namespace detail
+
+
+ // Macros which describe the declarations of binary operators
+# ifdef BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
+# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \
+ template < \
+ class Derived1, class V1, class TC1, class Reference1, class Difference1 \
+ , class Derived2, class V2, class TC2, class Reference2, class Difference2 \
+ > \
+ prefix typename mpl::apply2<result_type,Derived1,Derived2>::type \
+ operator op( \
+ iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
+ , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
+# else
+# define BOOST_ITERATOR_FACADE_INTEROP_HEAD(prefix, op, result_type) \
+ template < \
+ class Derived1, class V1, class TC1, class Reference1, class Difference1 \
+ , class Derived2, class V2, class TC2, class Reference2, class Difference2 \
+ > \
+ prefix typename boost::detail::enable_if_interoperable< \
+ Derived1, Derived2 \
+ , typename mpl::apply2<result_type,Derived1,Derived2>::type \
+ >::type \
+ operator op( \
+ iterator_facade<Derived1, V1, TC1, Reference1, Difference1> const& lhs \
+ , iterator_facade<Derived2, V2, TC2, Reference2, Difference2> const& rhs)
+# endif
+
+# define BOOST_ITERATOR_FACADE_PLUS_HEAD(prefix,args) \
+ template <class Derived, class V, class TC, class R, class D> \
+ prefix Derived operator+ args
+
+ //
+ // Helper class for granting access to the iterator core interface.
+ //
+ // The simple core interface is used by iterator_facade. The core
+ // interface of a user/library defined iterator type should not be made public
+ // so that it does not clutter the public interface. Instead iterator_core_access
+ // should be made friend so that iterator_facade can access the core
+ // interface through iterator_core_access.
+ //
+ class iterator_core_access
+ {
+# if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
+ // Tasteless as this may seem, making all members public allows member templates
+ // to work in the absence of member template friends.
+ public:
+# else
+
+ template <class I, class V, class TC, class R, class D> friend class iterator_facade;
+
+# define BOOST_ITERATOR_FACADE_RELATION(op) \
+ BOOST_ITERATOR_FACADE_INTEROP_HEAD(friend,op, boost::detail::always_bool2);
+
+ BOOST_ITERATOR_FACADE_RELATION(==)
+ BOOST_ITERATOR_FACADE_RELATION(!=)
+
+ BOOST_ITERATOR_FACADE_RELATION(<)
+ BOOST_ITERATOR_FACADE_RELATION(>)
+ BOOST_ITERATOR_FACADE_RELATION(<=)
+ BOOST_ITERATOR_FACADE_RELATION(>=)
+# undef BOOST_ITERATOR_FACADE_RELATION
+
+ BOOST_ITERATOR_FACADE_INTEROP_HEAD(
+ friend, -, boost::detail::choose_difference_type)
+ ;
+
+ BOOST_ITERATOR_FACADE_PLUS_HEAD(
+ friend inline
+ , (iterator_facade<Derived, V, TC, R, D> const&
+ , typename Derived::difference_type)
+ )
+ ;
+
+ BOOST_ITERATOR_FACADE_PLUS_HEAD(
+ friend inline
+ , (typename Derived::difference_type
+ , iterator_facade<Derived, V, TC, R, D> const&)
+ )
+ ;
+
+# endif
+
+ template <class Facade>
+ static typename Facade::reference dereference(Facade const& f)
+ {
+ return f.dereference();
+ }
+
+ template <class Facade>
+ static void increment(Facade& f)
+ {
+ f.increment();
+ }
+
+ template <class Facade>
+ static void decrement(Facade& f)
+ {
+ f.decrement();
+ }
+
+ template <class Facade1, class Facade2>
+ static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::true_)
+ {
+ return f1.equal(f2);
+ }
+
+ template <class Facade1, class Facade2>
+ static bool equal(Facade1 const& f1, Facade2 const& f2, mpl::false_)
+ {
+ return f2.equal(f1);
+ }
+
+ template <class Facade>
+ static void advance(Facade& f, typename Facade::difference_type n)
+ {
+ f.advance(n);
+ }
+
+ template <class Facade1, class Facade2>
+ static typename Facade1::difference_type distance_from(
+ Facade1 const& f1, Facade2 const& f2, mpl::true_)
+ {
+ return -f1.distance_to(f2);
+ }
+
+ template <class Facade1, class Facade2>
+ static typename Facade2::difference_type distance_from(
+ Facade1 const& f1, Facade2 const& f2, mpl::false_)
+ {
+ return f2.distance_to(f1);
+ }
+
+ //
+ // Curiously Recurring Template interface.
+ //
+ template <class I, class V, class TC, class R, class D>
+ static I& derived(iterator_facade<I,V,TC,R,D>& facade)
+ {
+ return *static_cast<I*>(&facade);
+ }
+
+ template <class I, class V, class TC, class R, class D>
+ static I const& derived(iterator_facade<I,V,TC,R,D> const& facade)
+ {
+ return *static_cast<I const*>(&facade);
+ }
+
+ private:
+ // objects of this class are useless
+ iterator_core_access(); //undefined
+ };
+
+ //
+ // iterator_facade - use as a public base class for defining new
+ // standard-conforming iterators.
+ //
+ template <
+ class Derived // The derived iterator type being constructed
+ , class Value
+ , class CategoryOrTraversal
+ , class Reference = Value&
+ , class Difference = std::ptrdiff_t
+ >
+ class iterator_facade
+# ifdef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE
+ : public boost::detail::iterator_facade_types<
+ Value, CategoryOrTraversal, Reference, Difference
+ >::base
+# undef BOOST_ITERATOR_FACADE_NEEDS_ITERATOR_BASE
+# endif
+ {
+ private:
+ //
+ // Curiously Recurring Template interface.
+ //
+ Derived& derived()
+ {
+ return *static_cast<Derived*>(this);
+ }
+
+ Derived const& derived() const
+ {
+ return *static_cast<Derived const*>(this);
+ }
+
+ typedef boost::detail::iterator_facade_types<
+ Value, CategoryOrTraversal, Reference, Difference
+ > associated_types;
+
+ protected:
+ // For use by derived classes
+ typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
+
+ public:
+
+ typedef typename associated_types::value_type value_type;
+ typedef Reference reference;
+ typedef Difference difference_type;
+ typedef typename associated_types::pointer pointer;
+ typedef typename associated_types::iterator_category iterator_category;
+
+ reference operator*() const
+ {
+ return iterator_core_access::dereference(this->derived());
+ }
+
+ typename boost::detail::operator_arrow_result<
+ value_type
+ , reference
+ , pointer
+ >::type
+ operator->() const
+ {
+ return boost::detail::operator_arrow_result<
+ value_type
+ , reference
+ , pointer
+ >::make(*this->derived());
+ }
+
+ typename boost::detail::operator_brackets_result<Derived,Value,reference>::type
+ operator[](difference_type n) const
+ {
+ typedef boost::detail::use_operator_brackets_proxy<Value,Reference> use_proxy;
+
+ return boost::detail::make_operator_brackets_result<Derived>(
+ this->derived() + n
+ , use_proxy()
+ );
+ }
+
+ Derived& operator++()
+ {
+ iterator_core_access::increment(this->derived());
+ return this->derived();
+ }
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ typename boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
+ operator++(int)
+ {
+ typename boost::detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
+ tmp(this->derived());
+ ++*this;
+ return tmp;
+ }
+# endif
+
+ Derived& operator--()
+ {
+ iterator_core_access::decrement(this->derived());
+ return this->derived();
+ }
+
+ Derived operator--(int)
+ {
+ Derived tmp(this->derived());
+ --*this;
+ return tmp;
+ }
+
+ Derived& operator+=(difference_type n)
+ {
+ iterator_core_access::advance(this->derived(), n);
+ return this->derived();
+ }
+
+ Derived& operator-=(difference_type n)
+ {
+ iterator_core_access::advance(this->derived(), -n);
+ return this->derived();
+ }
+
+ Derived operator-(difference_type x) const
+ {
+ Derived result(this->derived());
+ return result -= x;
+ }
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // There appears to be a bug which trashes the data of classes
+ // derived from iterator_facade when they are assigned unless we
+ // define this assignment operator. This bug is only revealed
+ // (so far) in STLPort debug mode, but it's clearly a codegen
+ // problem so we apply the workaround for all MSVC6.
+ iterator_facade& operator=(iterator_facade const&)
+ {
+ return *this;
+ }
+# endif
+ };
+
+# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ template <class I, class V, class TC, class R, class D>
+ inline typename boost::detail::postfix_increment_result<I,V,R,TC>::type
+ operator++(
+ iterator_facade<I,V,TC,R,D>& i
+ , int
+ )
+ {
+ typename boost::detail::postfix_increment_result<I,V,R,TC>::type
+ tmp(*static_cast<I*>(&i));
+
+ ++i;
+
+ return tmp;
+ }
+# endif
+
+
+ //
+ // Comparison operator implementation. The library supplied operators
+ // enables the user to provide fully interoperable constant/mutable
+ // iterator types. I.e. the library provides all operators
+ // for all mutable/constant iterator combinations.
+ //
+ // Note though that this kind of interoperability for constant/mutable
+ // iterators is not required by the standard for container iterators.
+ // All the standard asks for is a conversion mutable -> constant.
+ // Most standard library implementations nowadays provide fully interoperable
+ // iterator implementations, but there are still heavily used implementations
+ // that do not provide them. (Actually it's even worse, they do not provide
+ // them for only a few iterators.)
+ //
+ // ?? Maybe a BOOST_ITERATOR_NO_FULL_INTEROPERABILITY macro should
+ // enable the user to turn off mixed type operators
+ //
+ // The library takes care to provide only the right operator overloads.
+ // I.e.
+ //
+ // bool operator==(Iterator, Iterator);
+ // bool operator==(ConstIterator, Iterator);
+ // bool operator==(Iterator, ConstIterator);
+ // bool operator==(ConstIterator, ConstIterator);
+ //
+ // ...
+ //
+ // In order to do so it uses c++ idioms that are not yet widely supported
+ // by current compiler releases. The library is designed to degrade gracefully
+ // in the face of compiler deficiencies. In general compiler
+ // deficiencies result in less strict error checking and more obscure
+ // error messages, functionality is not affected.
+ //
+ // For full operation compiler support for "Substitution Failure Is Not An Error"
+ // (aka. enable_if) and boost::is_convertible is required.
+ //
+ // The following problems occur if support is lacking.
+ //
+ // Pseudo code
+ //
+ // ---------------
+ // AdaptorA<Iterator1> a1;
+ // AdaptorA<Iterator2> a2;
+ //
+ // // This will result in a no such overload error in full operation
+ // // If enable_if or is_convertible is not supported
+ // // The instantiation will fail with an error hopefully indicating that
+ // // there is no operator== for Iterator1, Iterator2
+ // // The same will happen if no enable_if is used to remove
+ // // false overloads from the templated conversion constructor
+ // // of AdaptorA.
+ //
+ // a1 == a2;
+ // ----------------
+ //
+ // AdaptorA<Iterator> a;
+ // AdaptorB<Iterator> b;
+ //
+ // // This will result in a no such overload error in full operation
+ // // If enable_if is not supported the static assert used
+ // // in the operator implementation will fail.
+ // // This will accidently work if is_convertible is not supported.
+ //
+ // a == b;
+ // ----------------
+ //
+
+# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
+# define BOOST_ITERATOR_CONVERTIBLE(a,b) mpl::true_()
+# else
+# define BOOST_ITERATOR_CONVERTIBLE(a,b) is_convertible<a,b>()
+# endif
+
+# define BOOST_ITERATOR_FACADE_INTEROP(op, result_type, return_prefix, base_op) \
+ BOOST_ITERATOR_FACADE_INTEROP_HEAD(inline, op, result_type) \
+ { \
+ /* For those compilers that do not support enable_if */ \
+ BOOST_STATIC_ASSERT(( \
+ is_interoperable< Derived1, Derived2 >::value \
+ )); \
+ return_prefix iterator_core_access::base_op( \
+ *static_cast<Derived1 const*>(&lhs) \
+ , *static_cast<Derived2 const*>(&rhs) \
+ , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \
+ ); \
+ }
+
+# define BOOST_ITERATOR_FACADE_RELATION(op, return_prefix, base_op) \
+ BOOST_ITERATOR_FACADE_INTEROP( \
+ op \
+ , boost::detail::always_bool2 \
+ , return_prefix \
+ , base_op \
+ )
+
+ BOOST_ITERATOR_FACADE_RELATION(==, return, equal)
+ BOOST_ITERATOR_FACADE_RELATION(!=, return !, equal)
+
+ BOOST_ITERATOR_FACADE_RELATION(<, return 0 >, distance_from)
+ BOOST_ITERATOR_FACADE_RELATION(>, return 0 <, distance_from)
+ BOOST_ITERATOR_FACADE_RELATION(<=, return 0 >=, distance_from)
+ BOOST_ITERATOR_FACADE_RELATION(>=, return 0 <=, distance_from)
+# undef BOOST_ITERATOR_FACADE_RELATION
+
+ // operator- requires an additional part in the static assertion
+ BOOST_ITERATOR_FACADE_INTEROP(
+ -
+ , boost::detail::choose_difference_type
+ , return
+ , distance_from
+ )
+# undef BOOST_ITERATOR_FACADE_INTEROP
+# undef BOOST_ITERATOR_FACADE_INTEROP_HEAD
+
+# define BOOST_ITERATOR_FACADE_PLUS(args) \
+ BOOST_ITERATOR_FACADE_PLUS_HEAD(inline, args) \
+ { \
+ Derived tmp(static_cast<Derived const&>(i)); \
+ return tmp += n; \
+ }
+
+BOOST_ITERATOR_FACADE_PLUS((
+ iterator_facade<Derived, V, TC, R, D> const& i
+ , typename Derived::difference_type n
+))
+
+BOOST_ITERATOR_FACADE_PLUS((
+ typename Derived::difference_type n
+ , iterator_facade<Derived, V, TC, R, D> const& i
+))
+# undef BOOST_ITERATOR_FACADE_PLUS
+# undef BOOST_ITERATOR_FACADE_PLUS_HEAD
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_ITERATOR_FACADE_23022003THW_HPP
diff --git a/3rdParty/Boost/boost/iterator/iterator_traits.hpp b/3rdParty/Boost/boost/iterator/iterator_traits.hpp
new file mode 100644
index 0000000..960970e
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/iterator_traits.hpp
@@ -0,0 +1,92 @@
+// 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)
+#ifndef ITERATOR_TRAITS_DWA200347_HPP
+# define ITERATOR_TRAITS_DWA200347_HPP
+
+# include <boost/detail/iterator.hpp>
+# include <boost/detail/workaround.hpp>
+
+namespace boost {
+
+// Unfortunately, g++ 2.95.x chokes when we define a class template
+// iterator_category which has the same name as its
+// std::iterator_category() function, probably due in part to the
+// "std:: is visible globally" hack it uses. Use
+// BOOST_ITERATOR_CATEGORY to write code that's portable to older
+// GCCs.
+
+# if BOOST_WORKAROUND(__GNUC__, <= 2)
+# define BOOST_ITERATOR_CATEGORY iterator_category_
+# else
+# define BOOST_ITERATOR_CATEGORY iterator_category
+# endif
+
+
+template <class Iterator>
+struct iterator_value
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::value_type type;
+};
+
+template <class Iterator>
+struct iterator_reference
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::reference type;
+};
+
+
+template <class Iterator>
+struct iterator_pointer
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::pointer type;
+};
+
+template <class Iterator>
+struct iterator_difference
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::difference_type type;
+};
+
+template <class Iterator>
+struct BOOST_ITERATOR_CATEGORY
+{
+ typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;
+};
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template <>
+struct iterator_value<int>
+{
+ typedef void type;
+};
+
+template <>
+struct iterator_reference<int>
+{
+ typedef void type;
+};
+
+template <>
+struct iterator_pointer<int>
+{
+ typedef void type;
+};
+
+template <>
+struct iterator_difference<int>
+{
+ typedef void type;
+};
+
+template <>
+struct BOOST_ITERATOR_CATEGORY<int>
+{
+ typedef void type;
+};
+# endif
+
+} // namespace boost::iterator
+
+#endif // ITERATOR_TRAITS_DWA200347_HPP
diff --git a/3rdParty/Boost/boost/iterator/reverse_iterator.hpp b/3rdParty/Boost/boost/iterator/reverse_iterator.hpp
new file mode 100644
index 0000000..97b6b48
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/reverse_iterator.hpp
@@ -0,0 +1,69 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP
+#define BOOST_REVERSE_ITERATOR_23022003THW_HPP
+
+#include <boost/iterator.hpp>
+#include <boost/utility.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+
+namespace boost
+{
+
+ //
+ //
+ //
+ template <class Iterator>
+ class reverse_iterator
+ : public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
+ {
+ typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
+
+ friend class iterator_core_access;
+
+ public:
+ reverse_iterator() {}
+
+ explicit reverse_iterator(Iterator x)
+ : super_t(x) {}
+
+ template<class OtherIterator>
+ reverse_iterator(
+ reverse_iterator<OtherIterator> const& r
+ , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
+ )
+ : super_t(r.base())
+ {}
+
+ private:
+ typename super_t::reference dereference() const { return *boost::prior(this->base()); }
+
+ void increment() { --this->base_reference(); }
+ void decrement() { ++this->base_reference(); }
+
+ void advance(typename super_t::difference_type n)
+ {
+ this->base_reference() += -n;
+ }
+
+ template <class OtherIterator>
+ typename super_t::difference_type
+ distance_to(reverse_iterator<OtherIterator> const& y) const
+ {
+ return this->base_reference() - y.base();
+ }
+ };
+
+ template <class BidirectionalIterator>
+ reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
+ {
+ return reverse_iterator<BidirectionalIterator>(x);
+ }
+
+} // namespace boost
+
+#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP
diff --git a/3rdParty/Boost/boost/iterator/transform_iterator.hpp b/3rdParty/Boost/boost/iterator/transform_iterator.hpp
new file mode 100644
index 0000000..e449a8b
--- /dev/null
+++ b/3rdParty/Boost/boost/iterator/transform_iterator.hpp
@@ -0,0 +1,188 @@
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Jeremy Siek 2002.
+// (C) Copyright Thomas Witt 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)
+#ifndef BOOST_TRANSFORM_ITERATOR_23022003THW_HPP
+#define BOOST_TRANSFORM_ITERATOR_23022003THW_HPP
+
+#include <boost/function.hpp>
+#include <boost/iterator.hpp>
+#include <boost/iterator/detail/enable_if.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/function_traits.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
+# include <boost/type_traits/is_base_and_derived.hpp>
+
+#endif
+#include <boost/iterator/detail/config_def.hpp>
+
+
+namespace boost
+{
+ template <class UnaryFunction, class Iterator, class Reference = use_default, class Value = use_default>
+ class transform_iterator;
+
+ namespace detail
+ {
+
+ template <class UnaryFunc>
+ struct function_object_result
+ {
+ typedef typename UnaryFunc::result_type type;
+ };
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <class Return, class Argument>
+ struct function_object_result<Return(*)(Argument)>
+ {
+ typedef Return type;
+ };
+#endif
+
+ // Compute the iterator_adaptor instantiation to be used for transform_iterator
+ template <class UnaryFunc, class Iterator, class Reference, class Value>
+ struct transform_iterator_base
+ {
+ private:
+ // By default, dereferencing the iterator yields the same as
+ // the function. Do we need to adjust the way
+ // function_object_result is computed for the standard
+ // proposal (e.g. using Doug's result_of)?
+ typedef typename ia_dflt_help<
+ Reference
+ , function_object_result<UnaryFunc>
+ >::type reference;
+
+ // To get the default for Value: remove any reference on the
+ // result type, but retain any constness to signal
+ // non-writability. Note that if we adopt Thomas' suggestion
+ // to key non-writability *only* on the Reference argument,
+ // we'd need to strip constness here as well.
+ typedef typename ia_dflt_help<
+ Value
+ , remove_reference<reference>
+ >::type cv_value_type;
+
+ public:
+ typedef iterator_adaptor<
+ transform_iterator<UnaryFunc, Iterator, Reference, Value>
+ , Iterator
+ , cv_value_type
+ , use_default // Leave the traversal category alone
+ , reference
+ > type;
+ };
+ }
+
+ template <class UnaryFunc, class Iterator, class Reference, class Value>
+ class transform_iterator
+ : public boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
+ {
+ typedef typename
+ boost::detail::transform_iterator_base<UnaryFunc, Iterator, Reference, Value>::type
+ super_t;
+
+ friend class iterator_core_access;
+
+ public:
+ transform_iterator() { }
+
+ transform_iterator(Iterator const& x, UnaryFunc f)
+ : super_t(x), m_f(f) { }
+
+ explicit transform_iterator(Iterator const& x)
+ : super_t(x)
+ {
+ // Pro8 is a little too aggressive about instantiating the
+ // body of this function.
+#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
+ // don't provide this constructor if UnaryFunc is a
+ // function pointer type, since it will be 0. Too dangerous.
+ BOOST_STATIC_ASSERT(is_class<UnaryFunc>::value);
+#endif
+ }
+
+ template<
+ class OtherUnaryFunction
+ , class OtherIterator
+ , class OtherReference
+ , class OtherValue>
+ transform_iterator(
+ transform_iterator<OtherUnaryFunction, OtherIterator, OtherReference, OtherValue> const& t
+ , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
+#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+ , typename enable_if_convertible<OtherUnaryFunction, UnaryFunc>::type* = 0
+#endif
+ )
+ : super_t(t.base()), m_f(t.functor())
+ {}
+
+ UnaryFunc functor() const
+ { return m_f; }
+
+ private:
+ typename super_t::reference dereference() const
+ { return m_f(*this->base()); }
+
+ // Probably should be the initial base class so it can be
+ // optimized away via EBO if it is an empty class.
+ UnaryFunc m_f;
+ };
+
+ template <class UnaryFunc, class Iterator>
+ transform_iterator<UnaryFunc, Iterator>
+ make_transform_iterator(Iterator it, UnaryFunc fun)
+ {
+ return transform_iterator<UnaryFunc, Iterator>(it, fun);
+ }
+
+ // Version which allows explicit specification of the UnaryFunc
+ // type.
+ //
+ // This generator is not provided if UnaryFunc is a function
+ // pointer type, because it's too dangerous: the default-constructed
+ // function pointer in the iterator be 0, leading to a runtime
+ // crash.
+ template <class UnaryFunc, class Iterator>
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ typename mpl::if_<
+#else
+ typename iterators::enable_if<
+#endif
+ is_class<UnaryFunc> // We should probably find a cheaper test than is_class<>
+ , transform_iterator<UnaryFunc, Iterator>
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ , int[3]
+#endif
+ >::type
+ make_transform_iterator(Iterator it)
+ {
+ return transform_iterator<UnaryFunc, Iterator>(it, UnaryFunc());
+ }
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
+ template <class Return, class Argument, class Iterator>
+ transform_iterator< Return (*)(Argument), Iterator, Return>
+ make_transform_iterator(Iterator it, Return (*fun)(Argument))
+ {
+ return transform_iterator<Return (*)(Argument), Iterator, Return>(it, fun);
+ }
+#endif
+
+} // namespace boost
+
+#include <boost/iterator/detail/config_undef.hpp>
+
+#endif // BOOST_TRANSFORM_ITERATOR_23022003THW_HPP
diff --git a/3rdParty/Boost/boost/last_value.hpp b/3rdParty/Boost/boost/last_value.hpp
new file mode 100644
index 0000000..183a739
--- /dev/null
+++ b/3rdParty/Boost/boost/last_value.hpp
@@ -0,0 +1,54 @@
+// last_value function object (documented as part of Boost.Signals)
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org/libs/signals
+
+#ifndef BOOST_LAST_VALUE_HPP
+#define BOOST_LAST_VALUE_HPP
+
+#include <cassert>
+#include <boost/config.hpp>
+
+namespace boost {
+ template<typename T>
+ struct last_value {
+ typedef T result_type;
+
+ template<typename InputIterator>
+ T operator()(InputIterator first, InputIterator last) const
+ {
+ assert(first != last);
+ T value = *first++;
+ while (first != last)
+ value = *first++;
+ return value;
+ }
+ };
+
+ template<>
+ struct last_value<void> {
+#ifdef BOOST_NO_VOID_RETURNS
+ struct unusable {};
+
+ public:
+ typedef unusable result_type;
+#else
+ public:
+ typedef void result_type;
+#endif // BOOST_NO_VOID_RETURNS
+
+ template<typename InputIterator>
+ result_type
+ operator()(InputIterator first, InputIterator last) const
+ {
+ while (first != last)
+ *first++;
+ return result_type();
+ }
+ };
+}
+#endif // BOOST_SIGNALS_LAST_VALUE_HPP
diff --git a/3rdParty/Boost/boost/lexical_cast.hpp b/3rdParty/Boost/boost/lexical_cast.hpp
new file mode 100644
index 0000000..0da0d3d
--- /dev/null
+++ b/3rdParty/Boost/boost/lexical_cast.hpp
@@ -0,0 +1,1216 @@
+#ifndef BOOST_LEXICAL_CAST_INCLUDED
+#define BOOST_LEXICAL_CAST_INCLUDED
+
+// Boost lexical_cast.hpp header -------------------------------------------//
+//
+// See http://www.boost.org/libs/conversion for documentation.
+// See end of this header for rights and permissions.
+//
+// what: lexical_cast custom keyword cast
+// who: contributed by Kevlin Henney,
+// enhanced with contributions from Terje Slettebo,
+// with additional fixes and suggestions from Gennaro Prota,
+// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
+// Alexander Nasonov and other Boosters
+// when: November 2000, March 2003, June 2005, June 2006
+
+#include <climits>
+#include <cstddef>
+#include <istream>
+#include <string>
+#include <typeinfo>
+#include <exception>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/call_traits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/detail/lcast_precision.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifndef BOOST_NO_STD_LOCALE
+#include <locale>
+#endif
+
+#ifdef BOOST_NO_STRINGSTREAM
+#include <strstream>
+#else
+#include <sstream>
+#endif
+
+#if defined(BOOST_NO_STRINGSTREAM) || \
+ defined(BOOST_NO_STD_WSTRING) || \
+ defined(BOOST_NO_STD_LOCALE)
+#define BOOST_LCAST_NO_WCHAR_T
+#endif
+
+namespace boost
+{
+ // exception used to indicate runtime lexical_cast failure
+ class bad_lexical_cast : public std::bad_cast
+
+#if defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x560 )
+ // under bcc32 5.5.1 bad_cast doesn't derive from exception
+ , public std::exception
+#endif
+
+ {
+ public:
+ bad_lexical_cast() :
+#ifndef BOOST_NO_TYPEID
+ source(&typeid(void)), target(&typeid(void))
+#else
+ source(0), target(0) // this breaks getters
+#endif
+ {
+ }
+
+ bad_lexical_cast(
+ const std::type_info &source_type_arg,
+ const std::type_info &target_type_arg) :
+ source(&source_type_arg), target(&target_type_arg)
+ {
+ }
+
+ const std::type_info &source_type() const
+ {
+ return *source;
+ }
+ const std::type_info &target_type() const
+ {
+ return *target;
+ }
+
+ virtual const char *what() const throw()
+ {
+ return "bad lexical cast: "
+ "source type value could not be interpreted as target";
+ }
+ virtual ~bad_lexical_cast() throw()
+ {
+ }
+ private:
+ const std::type_info *source;
+ const std::type_info *target;
+ };
+
+ namespace detail // selectors for choosing stream character type
+ {
+ template<typename Type>
+ struct stream_char
+ {
+ typedef char type;
+ };
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<class CharT, class Traits, class Alloc>
+ struct stream_char< std::basic_string<CharT,Traits,Alloc> >
+ {
+ typedef CharT type;
+ };
+#endif
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ template<>
+ struct stream_char<wchar_t>
+ {
+ typedef wchar_t type;
+ };
+#endif
+
+ template<>
+ struct stream_char<wchar_t *>
+ {
+ typedef wchar_t type;
+ };
+
+ template<>
+ struct stream_char<const wchar_t *>
+ {
+ typedef wchar_t type;
+ };
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<>
+ struct stream_char<std::wstring>
+ {
+ typedef wchar_t type;
+ };
+#endif
+#endif
+
+ template<typename TargetChar, typename SourceChar>
+ struct widest_char
+ {
+ typedef TargetChar type;
+ };
+
+ template<>
+ struct widest_char<char, wchar_t>
+ {
+ typedef wchar_t type;
+ };
+ }
+
+ namespace detail // deduce_char_traits template
+ {
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<class CharT, class Target, class Source>
+ struct deduce_char_traits
+ {
+ typedef std::char_traits<CharT> type;
+ };
+
+ template<class CharT, class Traits, class Alloc, class Source>
+ struct deduce_char_traits< CharT
+ , std::basic_string<CharT,Traits,Alloc>
+ , Source
+ >
+ {
+ typedef Traits type;
+ };
+
+ template<class CharT, class Target, class Traits, class Alloc>
+ struct deduce_char_traits< CharT
+ , Target
+ , std::basic_string<CharT,Traits,Alloc>
+ >
+ {
+ typedef Traits type;
+ };
+
+ template<class CharT, class Traits, class Alloc1, class Alloc2>
+ struct deduce_char_traits< CharT
+ , std::basic_string<CharT,Traits,Alloc1>
+ , std::basic_string<CharT,Traits,Alloc2>
+ >
+ {
+ typedef Traits type;
+ };
+#endif
+ }
+
+ namespace detail // lcast_src_length
+ {
+ // Return max. length of string representation of Source;
+ // 0 if unlimited (with exceptions for some types, see below).
+ // Values with limited string representation are placed to
+ // the buffer locally defined in lexical_cast function.
+ // 1 is returned for few types such as CharT const* or
+ // std::basic_string<CharT> that already have an internal
+ // buffer ready to be reused by lexical_stream_limited_src.
+ // Each specialization should have a correspondent operator<<
+ // defined in lexical_stream_limited_src.
+ template< class CharT // A result of widest_char transformation.
+ , class Source // Source type of lexical_cast.
+ >
+ struct lcast_src_length
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
+ // To check coverage, build the test with
+ // bjam --v2 profile optimization=off
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<char, bool>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<char, char>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+ // No specializations for:
+ // lcast_src_length<char, signed char>
+ // lcast_src_length<char, unsigned char>
+ // lcast_src_length<char, signed char*>
+ // lcast_src_length<char, unsigned char*>
+ // lcast_src_length<char, signed char const*>
+ // lcast_src_length<char, unsigned char const*>
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<>
+ struct lcast_src_length<wchar_t, bool>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<wchar_t, char>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ template<>
+ struct lcast_src_length<wchar_t, wchar_t>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+#endif
+#endif
+
+ template<>
+ struct lcast_src_length<char, char const*>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<char, char*>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<>
+ struct lcast_src_length<wchar_t, wchar_t const*>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<wchar_t, wchar_t*>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+#endif
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<class CharT, class Traits, class Alloc>
+ struct lcast_src_length< CharT, std::basic_string<CharT,Traits,Alloc> >
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+#else
+ template<>
+ struct lcast_src_length< char, std::basic_string<char> >
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<>
+ struct lcast_src_length< wchar_t, std::basic_string<wchar_t> >
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = 1);
+ static void check_coverage() {}
+ };
+#endif
+#endif
+
+ // Helper for integral types.
+ // Notes on length calculation:
+ // Max length for 32bit int with grouping "\1" and thousands_sep ',':
+ // "-2,1,4,7,4,8,3,6,4,7"
+ // ^ - is_signed
+ // ^ - 1 digit not counted by digits10
+ // ^^^^^^^^^^^^^^^^^^ - digits10 * 2
+ //
+ // Constant is_specialized is used instead of constant 1
+ // to prevent buffer overflow in a rare case when
+ // <boost/limits.hpp> doesn't add missing specialization for
+ // numeric_limits<T> for some integral type T.
+ // When is_specialized is false, the whole expression is 0.
+ template<class Source>
+ struct lcast_src_length_integral
+ {
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ BOOST_STATIC_CONSTANT(std::size_t, value =
+ std::numeric_limits<Source>::is_signed +
+ std::numeric_limits<Source>::is_specialized + // == 1
+ std::numeric_limits<Source>::digits10 * 2
+ );
+#else
+ BOOST_STATIC_CONSTANT(std::size_t, value = 156);
+ BOOST_STATIC_ASSERT(sizeof(Source) * CHAR_BIT <= 256);
+#endif
+ };
+
+#define BOOST_LCAST_DEF1(CharT, T) \
+ template<> struct lcast_src_length<CharT, T> \
+ : lcast_src_length_integral<T> \
+ { static void check_coverage() {} };
+
+#ifdef BOOST_LCAST_NO_WCHAR_T
+#define BOOST_LCAST_DEF(T) BOOST_LCAST_DEF1(char, T)
+#else
+#define BOOST_LCAST_DEF(T) \
+ BOOST_LCAST_DEF1(char, T) \
+ BOOST_LCAST_DEF1(wchar_t, T)
+#endif
+
+ BOOST_LCAST_DEF(short)
+ BOOST_LCAST_DEF(unsigned short)
+ BOOST_LCAST_DEF(int)
+ BOOST_LCAST_DEF(unsigned int)
+ BOOST_LCAST_DEF(long)
+ BOOST_LCAST_DEF(unsigned long)
+#if defined(BOOST_HAS_LONG_LONG)
+ BOOST_LCAST_DEF(boost::ulong_long_type)
+ BOOST_LCAST_DEF(boost::long_long_type )
+#elif defined(BOOST_HAS_MS_INT64)
+ BOOST_LCAST_DEF(unsigned __int64)
+ BOOST_LCAST_DEF( __int64)
+#endif
+
+#undef BOOST_LCAST_DEF
+#undef BOOST_LCAST_DEF1
+
+#ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+ // Helper for floating point types.
+ // -1.23456789e-123456
+ // ^ sign
+ // ^ leading digit
+ // ^ decimal point
+ // ^^^^^^^^ lcast_precision<Source>::value
+ // ^ "e"
+ // ^ exponent sign
+ // ^^^^^^ exponent (assumed 6 or less digits)
+ // sign + leading digit + decimal point + "e" + exponent sign == 5
+ template<class Source>
+ struct lcast_src_length_floating
+ {
+ BOOST_STATIC_ASSERT(
+ std::numeric_limits<Source>::max_exponent10 <= 999999L &&
+ std::numeric_limits<Source>::min_exponent10 >= -999999L
+ );
+ BOOST_STATIC_CONSTANT(std::size_t, value =
+ 5 + lcast_precision<Source>::value + 6
+ );
+ };
+
+ template<>
+ struct lcast_src_length<char,float>
+ : lcast_src_length_floating<float>
+ {
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<char,double>
+ : lcast_src_length_floating<double>
+ {
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<char,long double>
+ : lcast_src_length_floating<long double>
+ {
+ static void check_coverage() {}
+ };
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<>
+ struct lcast_src_length<wchar_t,float>
+ : lcast_src_length_floating<float>
+ {
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<wchar_t,double>
+ : lcast_src_length_floating<double>
+ {
+ static void check_coverage() {}
+ };
+
+ template<>
+ struct lcast_src_length<wchar_t,long double>
+ : lcast_src_length_floating<long double>
+ {
+ static void check_coverage() {}
+ };
+
+#endif // #ifndef BOOST_LCAST_NO_WCHAR_T
+#endif // #ifndef BOOST_LCAST_NO_COMPILE_TIME_PRECISION
+ }
+
+ namespace detail // '0' and '-' constants
+ {
+ template<typename CharT> struct lcast_char_constants;
+
+ template<>
+ struct lcast_char_constants<char>
+ {
+ BOOST_STATIC_CONSTANT(char, zero = '0');
+ BOOST_STATIC_CONSTANT(char, minus = '-');
+ };
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<>
+ struct lcast_char_constants<wchar_t>
+ {
+ BOOST_STATIC_CONSTANT(wchar_t, zero = L'0');
+ BOOST_STATIC_CONSTANT(wchar_t, minus = L'-');
+ };
+#endif
+ }
+
+ namespace detail // lexical_streambuf_fake
+ {
+ struct lexical_streambuf_fake
+ {
+ };
+ }
+
+ namespace detail // lcast_to_unsigned
+ {
+#if (defined _MSC_VER)
+# pragma warning( push )
+// C4146: unary minus operator applied to unsigned type, result still unsigned
+# pragma warning( disable : 4146 )
+#elif defined( __BORLANDC__ )
+# pragma option push -w-8041
+#endif
+ template<class T>
+ inline
+ BOOST_DEDUCED_TYPENAME make_unsigned<T>::type lcast_to_unsigned(T value)
+ {
+ typedef BOOST_DEDUCED_TYPENAME make_unsigned<T>::type result_type;
+ result_type uvalue = static_cast<result_type>(value);
+ return value < 0 ? -uvalue : uvalue;
+ }
+#if (defined _MSC_VER)
+# pragma warning( pop )
+#elif defined( __BORLANDC__ )
+# pragma option pop
+#endif
+ }
+
+ namespace detail // lcast_put_unsigned
+ {
+ template<class Traits, class T, class CharT>
+ CharT* lcast_put_unsigned(T n, CharT* finish)
+ {
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ BOOST_STATIC_ASSERT(!std::numeric_limits<T>::is_signed);
+#endif
+
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ // TODO: use BOOST_NO_STD_LOCALE
+ std::locale loc;
+ typedef std::numpunct<CharT> numpunct;
+ numpunct const& np = BOOST_USE_FACET(numpunct, loc);
+ std::string const& grouping = np.grouping();
+ std::string::size_type const grouping_size = grouping.size();
+ CharT thousands_sep = grouping_size ? np.thousands_sep() : 0;
+ std::string::size_type group = 0; // current group number
+ char last_grp_size = grouping[0] <= 0 ? CHAR_MAX : grouping[0];
+ // a) Since grouping is const, grouping[grouping.size()] returns 0.
+ // b) It's safe to assume here and below that CHAR_MAX
+ // is equivalent to unlimited grouping:
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ BOOST_STATIC_ASSERT(std::numeric_limits<T>::digits10 < CHAR_MAX);
+#endif
+
+ char left = last_grp_size;
+#endif
+
+ typedef typename Traits::int_type int_type;
+ CharT const czero = lcast_char_constants<CharT>::zero;
+ int_type const zero = Traits::to_int_type(czero);
+
+ do
+ {
+#ifndef BOOST_LEXICAL_CAST_ASSUME_C_LOCALE
+ if(left == 0)
+ {
+ ++group;
+ if(group < grouping_size)
+ {
+ char const grp_size = grouping[group];
+ last_grp_size = grp_size <= 0 ? CHAR_MAX : grp_size;
+ }
+
+ left = last_grp_size;
+ --finish;
+ Traits::assign(*finish, thousands_sep);
+ }
+
+ --left;
+#endif
+
+ --finish;
+ int_type const digit = static_cast<int_type>(n % 10U);
+ Traits::assign(*finish, Traits::to_char_type(zero + digit));
+ n /= 10;
+ } while(n);
+
+ return finish;
+ }
+ }
+
+ namespace detail // stream wrapper for handling lexical conversions
+ {
+ template<typename Target, typename Source, typename Traits>
+ class lexical_stream
+ {
+ private:
+ typedef typename widest_char<
+ typename stream_char<Target>::type,
+ typename stream_char<Source>::type>::type char_type;
+
+ typedef Traits traits_type;
+
+ public:
+ lexical_stream(char_type* = 0, char_type* = 0)
+ {
+ stream.unsetf(std::ios::skipws);
+ lcast_set_precision(stream, (Source*)0, (Target*)0);
+ }
+ ~lexical_stream()
+ {
+ #if defined(BOOST_NO_STRINGSTREAM)
+ stream.freeze(false);
+ #endif
+ }
+ bool operator<<(const Source &input)
+ {
+ return !(stream << input).fail();
+ }
+ template<typename InputStreamable>
+ bool operator>>(InputStreamable &output)
+ {
+ return !is_pointer<InputStreamable>::value &&
+ stream >> output &&
+ stream.get() ==
+#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
+// GCC 2.9x lacks std::char_traits<>::eof().
+// We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
+// configurations, which do provide std::char_traits<>::eof().
+
+ EOF;
+#else
+ traits_type::eof();
+#endif
+ }
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ bool operator>>(std::string &output)
+ {
+ #if defined(BOOST_NO_STRINGSTREAM)
+ stream << '\0';
+ #endif
+ stream.str().swap(output);
+ return true;
+ }
+ #ifndef BOOST_LCAST_NO_WCHAR_T
+ bool operator>>(std::wstring &output)
+ {
+ stream.str().swap(output);
+ return true;
+ }
+ #endif
+
+#else
+ bool operator>>(std::basic_string<char_type,traits_type>& output)
+ {
+ stream.str().swap(output);
+ return true;
+ }
+
+ template<class Alloc>
+ bool operator>>(std::basic_string<char_type,traits_type,Alloc>& out)
+ {
+ std::basic_string<char_type,traits_type> str(stream.str());
+ out.assign(str.begin(), str.end());
+ return true;
+ }
+#endif
+ private:
+ #if defined(BOOST_NO_STRINGSTREAM)
+ std::strstream stream;
+ #elif defined(BOOST_NO_STD_LOCALE)
+ std::stringstream stream;
+ #else
+ std::basic_stringstream<char_type,traits_type> stream;
+ #endif
+ };
+ }
+
+ namespace detail // optimized stream wrapper
+ {
+ // String representation of Source has an upper limit.
+ template< class CharT // a result of widest_char transformation
+ , class Base // lexical_streambuf_fake or basic_streambuf<CharT>
+ , class Traits // usually char_traits<CharT>
+ >
+ class lexical_stream_limited_src : public Base
+ {
+ // A string representation of Source is written to [start, finish).
+ // Currently, it is assumed that [start, finish) is big enough
+ // to hold a string representation of any Source value.
+ CharT* start;
+ CharT* finish;
+
+ private:
+
+ static void widen_and_assign(char*p, char ch)
+ {
+ Traits::assign(*p, ch);
+ }
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ static void widen_and_assign(wchar_t* p, char ch)
+ {
+ // TODO: use BOOST_NO_STD_LOCALE
+ std::locale loc;
+ wchar_t w = BOOST_USE_FACET(std::ctype<wchar_t>, loc).widen(ch);
+ Traits::assign(*p, w);
+ }
+
+ static void widen_and_assign(wchar_t* p, wchar_t ch)
+ {
+ Traits::assign(*p, ch);
+ }
+
+ static void widen_and_assign(char*, wchar_t ch); // undefined
+#endif
+
+ template<class OutputStreamable>
+ bool lcast_put(const OutputStreamable& input)
+ {
+ this->setp(start, finish);
+ std::basic_ostream<CharT> stream(static_cast<Base*>(this));
+ lcast_set_precision(stream, (OutputStreamable*)0);
+ bool const result = !(stream << input).fail();
+ finish = this->pptr();
+ return result;
+ }
+
+ // Undefined:
+ lexical_stream_limited_src(lexical_stream_limited_src const&);
+ void operator=(lexical_stream_limited_src const&);
+
+ public:
+
+ lexical_stream_limited_src(CharT* sta, CharT* fin)
+ : start(sta)
+ , finish(fin)
+ {}
+
+ public: // output
+
+ template<class Alloc>
+ bool operator<<(std::basic_string<CharT,Traits,Alloc> const& str)
+ {
+ start = const_cast<CharT*>(str.data());
+ finish = start + str.length();
+ return true;
+ }
+
+ bool operator<<(bool);
+ bool operator<<(char);
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ bool operator<<(wchar_t);
+#endif
+ bool operator<<(CharT const*);
+ bool operator<<(short);
+ bool operator<<(int);
+ bool operator<<(long);
+ bool operator<<(unsigned short);
+ bool operator<<(unsigned int);
+ bool operator<<(unsigned long);
+#if defined(BOOST_HAS_LONG_LONG)
+ bool operator<<(boost::ulong_long_type);
+ bool operator<<(boost::long_long_type );
+#elif defined(BOOST_HAS_MS_INT64)
+ bool operator<<(unsigned __int64);
+ bool operator<<( __int64);
+#endif
+ // These three operators use ostream and streambuf.
+ // lcast_streambuf_for_source<T>::value is true.
+ bool operator<<(float);
+ bool operator<<(double);
+ bool operator<<(long double);
+
+ public: // input
+
+ // Generic istream-based algorithm.
+ // lcast_streambuf_for_target<InputStreamable>::value is true.
+ template<typename InputStreamable>
+ bool operator>>(InputStreamable& output)
+ {
+#if (defined _MSC_VER)
+# pragma warning( push )
+ // conditional expression is constant
+# pragma warning( disable : 4127 )
+#endif
+ if(is_pointer<InputStreamable>::value)
+ return false;
+
+ this->setg(start, start, finish);
+ std::basic_istream<CharT> stream(static_cast<Base*>(this));
+ stream.unsetf(std::ios::skipws);
+ lcast_set_precision(stream, (InputStreamable*)0);
+#if (defined _MSC_VER)
+# pragma warning( pop )
+#endif
+ return stream >> output &&
+ stream.get() ==
+#if defined(__GNUC__) && (__GNUC__<3) && defined(BOOST_NO_STD_WSTRING)
+ // GCC 2.9x lacks std::char_traits<>::eof().
+ // We use BOOST_NO_STD_WSTRING to filter out STLport and libstdc++-v3
+ // configurations, which do provide std::char_traits<>::eof().
+
+ EOF;
+#else
+ Traits::eof();
+#endif
+ }
+
+ bool operator>>(CharT&);
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+// This #if is in sync with lcast_streambuf_for_target
+
+ bool operator>>(std::string&);
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ bool operator>>(std::wstring&);
+#endif
+
+#else
+ template<class Alloc>
+ bool operator>>(std::basic_string<CharT,Traits,Alloc>& str)
+ {
+ str.assign(start, finish);
+ return true;
+ }
+#endif
+ };
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ bool value)
+ {
+ typedef typename Traits::int_type int_type;
+ CharT const czero = lcast_char_constants<CharT>::zero;
+ int_type const zero = Traits::to_int_type(czero);
+ Traits::assign(*start, Traits::to_char_type(zero + value));
+ finish = start + 1;
+ return true;
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ char ch)
+ {
+ widen_and_assign(start, ch);
+ finish = start + 1;
+ return true;
+ }
+
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ wchar_t ch)
+ {
+ widen_and_assign(start, ch);
+ finish = start + 1;
+ return true;
+ }
+#endif
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ short n)
+ {
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ if(n < 0)
+ {
+ --start;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ Traits::assign(*start, minus);
+ }
+ return true;
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ int n)
+ {
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ if(n < 0)
+ {
+ --start;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ Traits::assign(*start, minus);
+ }
+ return true;
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ long n)
+ {
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ if(n < 0)
+ {
+ --start;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ Traits::assign(*start, minus);
+ }
+ return true;
+ }
+
+#if defined(BOOST_HAS_LONG_LONG)
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ boost::long_long_type n)
+ {
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ if(n < 0)
+ {
+ --start;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ Traits::assign(*start, minus);
+ }
+ return true;
+ }
+#elif defined(BOOST_HAS_MS_INT64)
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ __int64 n)
+ {
+ start = lcast_put_unsigned<Traits>(lcast_to_unsigned(n), finish);
+ if(n < 0)
+ {
+ --start;
+ CharT const minus = lcast_char_constants<CharT>::minus;
+ Traits::assign(*start, minus);
+ }
+ return true;
+ }
+#endif
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ unsigned short n)
+ {
+ start = lcast_put_unsigned<Traits>(n, finish);
+ return true;
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ unsigned int n)
+ {
+ start = lcast_put_unsigned<Traits>(n, finish);
+ return true;
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ unsigned long n)
+ {
+ start = lcast_put_unsigned<Traits>(n, finish);
+ return true;
+ }
+
+#if defined(BOOST_HAS_LONG_LONG)
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ boost::ulong_long_type n)
+ {
+ start = lcast_put_unsigned<Traits>(n, finish);
+ return true;
+ }
+#elif defined(BOOST_HAS_MS_INT64)
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ unsigned __int64 n)
+ {
+ start = lcast_put_unsigned<Traits>(n, finish);
+ return true;
+ }
+#endif
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ float val)
+ {
+ return this->lcast_put(val);
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ double val)
+ {
+ return this->lcast_put(val);
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ long double val)
+ {
+ return this->lcast_put(val);
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator<<(
+ CharT const* str)
+ {
+ start = const_cast<CharT*>(str);
+ finish = start + Traits::length(str);
+ return true;
+ }
+
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
+ CharT& output)
+ {
+ bool const ok = (finish - start == 1);
+ if(ok)
+ Traits::assign(output, *start);
+ return ok;
+ }
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
+ std::string& str)
+ {
+ str.assign(start, finish);
+ return true;
+ }
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<typename CharT, class Base, class Traits>
+ inline bool lexical_stream_limited_src<CharT,Base,Traits>::operator>>(
+ std::wstring& str)
+ {
+ str.assign(start, finish);
+ return true;
+ }
+#endif
+#endif
+ }
+
+ namespace detail // lcast_streambuf_for_source
+ {
+ // Returns true if optimized stream wrapper needs ostream for writing.
+ template<class Source>
+ struct lcast_streambuf_for_source
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+
+ template<>
+ struct lcast_streambuf_for_source<float>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ template<>
+ struct lcast_streambuf_for_source<double>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ template<>
+ struct lcast_streambuf_for_source<long double>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+ }
+
+ namespace detail // lcast_streambuf_for_target
+ {
+ // Returns true if optimized stream wrapper needs istream for reading.
+ template<class Target>
+ struct lcast_streambuf_for_target
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ template<>
+ struct lcast_streambuf_for_target<char>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+
+#if !defined(BOOST_LCAST_NO_WCHAR_T) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ template<>
+ struct lcast_streambuf_for_target<wchar_t>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+#endif
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<class Traits, class Alloc>
+ struct lcast_streambuf_for_target<
+ std::basic_string<char,Traits,Alloc> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<class Traits, class Alloc>
+ struct lcast_streambuf_for_target<
+ std::basic_string<wchar_t,Traits,Alloc> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+#endif
+#else
+ template<>
+ struct lcast_streambuf_for_target<std::string>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+
+#ifndef BOOST_LCAST_NO_WCHAR_T
+ template<>
+ struct lcast_streambuf_for_target<std::wstring>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+#endif
+#endif
+ }
+
+ #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ // call-by-const reference version
+
+ namespace detail
+ {
+ template<class T>
+ struct array_to_pointer_decay
+ {
+ typedef T type;
+ };
+
+ template<class T, std::size_t N>
+ struct array_to_pointer_decay<T[N]>
+ {
+ typedef const T * type;
+ };
+
+ template< typename Target
+ , typename Source
+ , bool Unlimited // string representation of Source is unlimited
+ , typename CharT
+ >
+ Target lexical_cast(
+ BOOST_DEDUCED_TYPENAME boost::call_traits<Source>::param_type arg,
+ CharT* buf, std::size_t src_len)
+ {
+ typedef BOOST_DEDUCED_TYPENAME
+ deduce_char_traits<CharT,Target,Source>::type traits;
+
+ typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ lcast_streambuf_for_target<Target>::value ||
+ lcast_streambuf_for_source<Source>::value
+ , std::basic_streambuf<CharT>
+ , lexical_streambuf_fake
+ >::type base;
+
+ BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
+ Unlimited
+ , detail::lexical_stream<Target,Source,traits>
+ , detail::lexical_stream_limited_src<CharT,base,traits>
+ >::type interpreter(buf, buf + src_len);
+
+ // The original form, reproduced below, is more elegant
+ // but yields a spurious C4701 warning ("possible use of
+ // "result" before initialization") with VC7.1 (/W4).
+//
+// Target result;
+//
+// if(!(interpreter << arg && interpreter >> result))
+// throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
+// return result;
+
+ if(interpreter << arg) {
+ Target result;
+ if (interpreter >> result)
+ return result;
+ }
+#ifndef BOOST_NO_TYPEID
+ throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
+#else
+ throw_exception(bad_lexical_cast());
+#endif
+ return Target(); // normally never reached (throw_exception)
+ }
+ }
+
+ template<typename Target, typename Source>
+ inline Target lexical_cast(const Source &arg)
+ {
+ typedef typename detail::array_to_pointer_decay<Source>::type src;
+
+ typedef typename detail::widest_char<
+ typename detail::stream_char<Target>::type
+ , typename detail::stream_char<src>::type
+ >::type char_type;
+
+ typedef detail::lcast_src_length<char_type, src> lcast_src_length;
+ std::size_t const src_len = lcast_src_length::value;
+ char_type buf[src_len + 1];
+ lcast_src_length::check_coverage();
+ return detail::lexical_cast<Target, src, !src_len>(arg, buf, src_len);
+ }
+
+ #else
+
+ // call-by-value fallback version (deprecated)
+
+ template<typename Target, typename Source>
+ Target lexical_cast(Source arg)
+ {
+ typedef typename detail::widest_char<
+ BOOST_DEDUCED_TYPENAME detail::stream_char<Target>::type
+ , BOOST_DEDUCED_TYPENAME detail::stream_char<Source>::type
+ >::type char_type;
+
+ typedef std::char_traits<char_type> traits;
+ detail::lexical_stream<Target, Source, traits> interpreter;
+ Target result;
+
+ if(!(interpreter << arg && interpreter >> result))
+#ifndef BOOST_NO_TYPEID
+ throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
+#else
+ throw_exception(bad_lexical_cast());
+#endif
+ return result;
+ }
+
+ #endif
+}
+
+// Copyright Kevlin Henney, 2000-2005.
+// Copyright Alexander Nasonov, 2006-2007.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#undef BOOST_LCAST_NO_WCHAR_T
+#endif
diff --git a/3rdParty/Boost/boost/limits.hpp b/3rdParty/Boost/boost/limits.hpp
new file mode 100644
index 0000000..d3747a1
--- /dev/null
+++ b/3rdParty/Boost/boost/limits.hpp
@@ -0,0 +1,146 @@
+
+// (C) Copyright John maddock 1999.
+// (C) David Abrahams 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)
+//
+// use this header as a workaround for missing <limits>
+
+// See http://www.boost.org/libs/compatibility/index.html for documentation.
+
+#ifndef BOOST_LIMITS
+#define BOOST_LIMITS
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_LIMITS
+# include <boost/detail/limits.hpp>
+#else
+# include <limits>
+#endif
+
+#if (defined(BOOST_HAS_LONG_LONG) && defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)) \
+ || (defined(BOOST_HAS_MS_INT64) && defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS))
+// Add missing specializations for numeric_limits:
+#ifdef BOOST_HAS_MS_INT64
+# define BOOST_LLT __int64
+# define BOOST_ULLT unsigned __int64
+#else
+# define BOOST_LLT ::boost::long_long_type
+# define BOOST_ULLT ::boost::ulong_long_type
+#endif
+
+#include <climits> // for CHAR_BIT
+
+namespace std
+{
+ template<>
+ class numeric_limits<BOOST_LLT>
+ {
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+#ifdef BOOST_HAS_MS_INT64
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x8000000000000000i64; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x7FFFFFFFFFFFFFFFi64; }
+#elif defined(LLONG_MAX)
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MIN; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MAX; }
+#elif defined(LONGLONG_MAX)
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MIN; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MAX; }
+#else
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 1LL << (sizeof(BOOST_LLT) * CHAR_BIT - 1); }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~(min)(); }
+#endif
+ BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT -1);
+ BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT) - 1) * 301L / 1000);
+ BOOST_STATIC_CONSTANT(bool, is_signed = true);
+ BOOST_STATIC_CONSTANT(bool, is_integer = true);
+ BOOST_STATIC_CONSTANT(bool, is_exact = true);
+ BOOST_STATIC_CONSTANT(int, radix = 2);
+ static BOOST_LLT epsilon() throw() { return 0; };
+ static BOOST_LLT round_error() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(int, min_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, min_exponent10 = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent10 = 0);
+
+ BOOST_STATIC_CONSTANT(bool, has_infinity = false);
+ BOOST_STATIC_CONSTANT(bool, has_quiet_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false);
+ static BOOST_LLT infinity() throw() { return 0; };
+ static BOOST_LLT quiet_NaN() throw() { return 0; };
+ static BOOST_LLT signaling_NaN() throw() { return 0; };
+ static BOOST_LLT denorm_min() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
+ BOOST_STATIC_CONSTANT(bool, is_bounded = true);
+ BOOST_STATIC_CONSTANT(bool, is_modulo = true);
+
+ BOOST_STATIC_CONSTANT(bool, traps = false);
+ BOOST_STATIC_CONSTANT(bool, tinyness_before = false);
+ BOOST_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero);
+
+ };
+
+ template<>
+ class numeric_limits<BOOST_ULLT>
+ {
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+#ifdef BOOST_HAS_MS_INT64
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0ui64; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0xFFFFFFFFFFFFFFFFui64; }
+#elif defined(ULLONG_MAX) && defined(ULLONG_MIN)
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MIN; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MAX; }
+#elif defined(ULONGLONG_MAX) && defined(ULONGLONG_MIN)
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MIN; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MAX; }
+#else
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0uLL; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~0uLL; }
+#endif
+ BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT);
+ BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT)) * 301L / 1000);
+ BOOST_STATIC_CONSTANT(bool, is_signed = false);
+ BOOST_STATIC_CONSTANT(bool, is_integer = true);
+ BOOST_STATIC_CONSTANT(bool, is_exact = true);
+ BOOST_STATIC_CONSTANT(int, radix = 2);
+ static BOOST_ULLT epsilon() throw() { return 0; };
+ static BOOST_ULLT round_error() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(int, min_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, min_exponent10 = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent10 = 0);
+
+ BOOST_STATIC_CONSTANT(bool, has_infinity = false);
+ BOOST_STATIC_CONSTANT(bool, has_quiet_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false);
+ static BOOST_ULLT infinity() throw() { return 0; };
+ static BOOST_ULLT quiet_NaN() throw() { return 0; };
+ static BOOST_ULLT signaling_NaN() throw() { return 0; };
+ static BOOST_ULLT denorm_min() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
+ BOOST_STATIC_CONSTANT(bool, is_bounded = true);
+ BOOST_STATIC_CONSTANT(bool, is_modulo = true);
+
+ BOOST_STATIC_CONSTANT(bool, traps = false);
+ BOOST_STATIC_CONSTANT(bool, tinyness_before = false);
+ BOOST_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero);
+
+ };
+}
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/mem_fn.hpp b/3rdParty/Boost/boost/mem_fn.hpp
new file mode 100644
index 0000000..3bcd2c5
--- /dev/null
+++ b/3rdParty/Boost/boost/mem_fn.hpp
@@ -0,0 +1,24 @@
+#ifndef BOOST_MEM_FN_HPP_INCLUDED
+#define BOOST_MEM_FN_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// mem_fn.hpp - a generalization of std::mem_fun[_ref]
+//
+// Copyright (c) 2009 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://www.boost.org/libs/bind/mem_fn.html for documentation.
+//
+
+#include <boost/bind/mem_fn.hpp>
+
+#endif // #ifndef BOOST_MEM_FN_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/memory_order.hpp b/3rdParty/Boost/boost/memory_order.hpp
new file mode 100644
index 0000000..2524e8a
--- /dev/null
+++ b/3rdParty/Boost/boost/memory_order.hpp
@@ -0,0 +1,35 @@
+#ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED
+#define BOOST_MEMORY_ORDER_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// boost/memory_order.hpp
+//
+// Defines enum boost::memory_order per the C++0x working draft
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+namespace boost
+{
+
+enum memory_order
+{
+ memory_order_relaxed = 0,
+ memory_order_acquire = 1,
+ memory_order_release = 2,
+ memory_order_acq_rel = 3, // acquire | release
+ memory_order_seq_cst = 7 // acq_rel | 4
+};
+
+} // namespace boost
+
+#endif // #ifndef BOOST_MEMORY_ORDER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/O1_size_fwd.hpp b/3rdParty/Boost/boost/mpl/O1_size_fwd.hpp
new file mode 100644
index 0000000..281fcaf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/O1_size_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
+#define BOOST_MPL_O1_SIZE_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: O1_size_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 O1_size_impl;
+template< typename Sequence > struct O1_size;
+
+}}
+
+#endif // BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/advance.hpp b/3rdParty/Boost/boost/mpl/advance.hpp
new file mode 100644
index 0000000..c8b5ae8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/advance.hpp
@@ -0,0 +1,76 @@
+
+#ifndef BOOST_MPL_ADVANCE_HPP_INCLUDED
+#define BOOST_MPL_ADVANCE_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: advance.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/advance_fwd.hpp>
+#include <boost/mpl/less.hpp>
+#include <boost/mpl/negate.hpp>
+#include <boost/mpl/long.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/tag.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/aux_/advance_forward.hpp>
+#include <boost/mpl/aux_/advance_backward.hpp>
+#include <boost/mpl/aux_/value_wknd.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+
+namespace boost { namespace mpl {
+
+// default implementation for forward/bidirectional iterators
+template< typename Tag >
+struct advance_impl
+{
+ template< typename Iterator, typename N > struct apply
+ {
+ typedef typename less< N,long_<0> >::type backward_;
+ typedef typename if_< backward_, negate<N>, N >::type offset_;
+
+ typedef typename if_<
+ backward_
+ , aux::advance_backward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value >
+ , aux::advance_forward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value >
+ >::type f_;
+
+ typedef typename apply_wrap1<f_,Iterator>::type type;
+ };
+};
+
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Iterator)
+ , typename BOOST_MPL_AUX_NA_PARAM(N)
+ >
+struct advance
+ : advance_impl< typename tag<Iterator>::type >
+ ::template apply<Iterator,N>
+{
+};
+
+template<
+ typename Iterator
+ , BOOST_MPL_AUX_NTTP_DECL(long, N)
+ >
+struct advance_c
+ : advance_impl< typename tag<Iterator>::type >
+ ::template apply<Iterator,long_<N> >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, advance)
+
+}}
+
+#endif // BOOST_MPL_ADVANCE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/advance_fwd.hpp b/3rdParty/Boost/boost/mpl/advance_fwd.hpp
new file mode 100644
index 0000000..daf0c91
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/advance_fwd.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
+#define BOOST_MPL_ADVANCE_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: advance_fwd.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_/common_name_wknd.hpp>
+
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_COMMON_NAME_WKND(advance)
+
+template< typename Tag > struct advance_impl;
+template< typename Iterator, typename N > struct advance;
+
+}}
+
+#endif // BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/always.hpp b/3rdParty/Boost/boost/mpl/always.hpp
new file mode 100644
index 0000000..f984231
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/always.hpp
@@ -0,0 +1,39 @@
+
+#ifndef BOOST_MPL_ALWAYS_HPP_INCLUDED
+#define BOOST_MPL_ALWAYS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: always.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_/preprocessor/def_params_tail.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/aux_/arity_spec.hpp>
+
+namespace boost { namespace mpl {
+
+template< typename Value > struct always
+{
+ template<
+ typename T
+ BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(1, typename T, na)
+ >
+ struct apply
+ {
+ typedef Value type;
+ };
+};
+
+BOOST_MPL_AUX_ARITY_SPEC(1, always)
+
+}}
+
+#endif // BOOST_MPL_ALWAYS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/and.hpp b/3rdParty/Boost/boost/mpl/and.hpp
new file mode 100644
index 0000000..1b3ede2
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/and.hpp
@@ -0,0 +1,60 @@
+
+#ifndef BOOST_MPL_AND_HPP_INCLUDED
+#define BOOST_MPL_AND_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: and.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/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/nested_type_wknd.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+
+// agurt, 19/may/04: workaround a conflict with <iso646.h> header's
+// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
+// has to be checked in a separate condition, otherwise GCC complains
+// about 'and' being an alternative token
+#if defined(_MSC_VER)
+#ifndef __GCCXML__
+#if defined(and)
+# pragma push_macro("and")
+# undef and
+# define and(x)
+#endif
+#endif
+#endif
+
+# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#if defined(_MSC_VER)
+#ifndef __GCCXML__
+#if defined(and)
+# pragma pop_macro("and")
+#endif
+#endif
+#endif
+
+#else
+
+# define AUX778076_OP_NAME and_
+# define AUX778076_OP_VALUE1 false
+# define AUX778076_OP_VALUE2 true
+# include <boost/mpl/aux_/logical_op.hpp>
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/apply.hpp b/3rdParty/Boost/boost/mpl/apply.hpp
new file mode 100644
index 0000000..944619e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/apply.hpp
@@ -0,0 +1,229 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_APPLY_HPP_INCLUDED
+#define BOOST_MPL_APPLY_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: apply.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/apply_fwd.hpp>
+# include <boost/mpl/apply_wrap.hpp>
+# include <boost/mpl/placeholders.hpp>
+# include <boost/mpl/lambda.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+#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 apply.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/config/lambda.hpp>
+# include <boost/mpl/aux_/config/dtp.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+# include <boost/mpl/aux_/config/eti.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+// local macros, #undef-ined at the end of the header
+# define AUX778076_APPLY_PARAMS(param) \
+ BOOST_MPL_PP_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ ) \
+ /**/
+
+# define AUX778076_APPLY_DEF_PARAMS(param, value) \
+ BOOST_MPL_PP_DEFAULT_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ , value \
+ ) \
+ /**/
+
+# define AUX778076_APPLY_N_PARAMS(n, param) \
+ BOOST_MPL_PP_PARAMS(n, param) \
+ /**/
+
+# define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_MPL_PP_PARAMS(n, param) \
+ /**/
+
+# define AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(n, param, def) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+ /**/
+
+# define AUX778076_APPLY_N_SPEC_PARAMS(n, param) \
+ BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
+ /**/
+
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply.hpp>))
+#include BOOST_PP_ITERATE()
+
+# if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+// real C++ version is already taken care of
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+namespace aux {
+// apply_count_args
+#define AUX778076_COUNT_ARGS_PREFIX apply
+#define AUX778076_COUNT_ARGS_DEFAULT na
+#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#include <boost/mpl/aux_/count_args.hpp>
+}
+
+
+template<
+ typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
+ >
+struct apply
+ : aux::apply_chooser<
+ aux::apply_count_args< AUX778076_APPLY_PARAMS(T) >::value
+ >::template result_< F, AUX778076_APPLY_PARAMS(T) >::type
+{
+};
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+
+# undef AUX778076_APPLY_N_SPEC_PARAMS
+# undef AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS
+# undef AUX778076_APPLY_N_COMMA_PARAMS
+# undef AUX778076_APPLY_N_PARAMS
+# undef AUX778076_APPLY_DEF_PARAMS
+# undef AUX778076_APPLY_PARAMS
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_APPLY_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+
+# define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply,i_)
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ : BOOST_PP_CAT(apply_wrap,i_)<
+ typename lambda<F>::type
+ AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
+ >
+{
+#else
+{
+ typedef typename BOOST_PP_CAT(apply_wrap,i_)<
+ typename lambda<F>::type
+ AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
+ >::type type;
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ BOOST_PP_INC(i_)
+ , BOOST_PP_CAT(apply,i_)
+ , (F AUX778076_APPLY_N_COMMA_PARAMS(i_,T))
+ )
+};
+
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+/// workaround for ETI bug
+template<>
+struct BOOST_PP_CAT(apply,i_)<AUX778076_APPLY_N_SPEC_PARAMS(i_, int)>
+{
+ typedef int type;
+};
+#endif
+
+# if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+/// primary template (not a specialization!)
+template<
+ typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
+ >
+struct apply
+ : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
+{
+};
+#else
+template<
+ typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
+ >
+struct apply< F AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(i_, T, na) >
+ : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
+{
+};
+#endif
+
+# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+namespace aux {
+
+template<>
+struct apply_chooser<i_>
+{
+ template<
+ typename F, AUX778076_APPLY_PARAMS(typename T)
+ >
+ struct result_
+ {
+ typedef BOOST_PP_CAT(apply,i_)<
+ F AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
+ > type;
+ };
+};
+
+} // namespace aux
+#endif
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+
+# undef i_
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/apply_fwd.hpp
new file mode 100644
index 0000000..a78ae8b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/apply_fwd.hpp
@@ -0,0 +1,107 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_APPLY_FWD_HPP_INCLUDED
+#define BOOST_MPL_APPLY_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: apply_fwd.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/aux_/na.hpp>
+#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 apply_fwd.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+// agurt, 15/jan/02: top-level 'apply' template gives an ICE on MSVC
+// (for known reasons)
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# define BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+#endif
+
+namespace boost { namespace mpl {
+
+// local macro, #undef-ined at the end of the header
+# define AUX778076_APPLY_DEF_PARAMS(param, value) \
+ BOOST_MPL_PP_DEFAULT_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ , value \
+ ) \
+ /**/
+
+# define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_MPL_PP_PARAMS(n, param) \
+ /**/
+
+# if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+// forward declaration
+template<
+ typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
+ >
+struct apply;
+#else
+namespace aux {
+template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
+}
+#endif
+
+# endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply_fwd.hpp>))
+#include BOOST_PP_ITERATE()
+
+
+# undef AUX778076_APPLY_N_COMMA_PARAMS
+# undef AUX778076_APPLY_DEF_PARAMS
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_APPLY_FWD_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply,i_);
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/apply_wrap.hpp
new file mode 100644
index 0000000..b3cb12b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/apply_wrap.hpp
@@ -0,0 +1,234 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
+#define BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the 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: apply_wrap.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
+// $Date: 2008-10-11 02:50:46 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49272 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+# include <boost/mpl/aux_/arity.hpp>
+# include <boost/mpl/aux_/has_apply.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/msvc_never_true.hpp>
+#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 apply_wrap.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/preprocessor/add.hpp>
+# include <boost/mpl/aux_/config/bcc.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/dtp.hpp>
+# include <boost/mpl/aux_/config/eti.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/logical/and.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+
+namespace boost { namespace mpl {
+
+// local macros, #undef-ined at the end of the header
+# define AUX778076_APPLY_WRAP_PARAMS(n, param) \
+ BOOST_MPL_PP_PARAMS(n, param) \
+ /**/
+
+# define AUX778076_APPLY_WRAP_SPEC_PARAMS(n, param) \
+ BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
+ /**/
+
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply_wrap.hpp>))
+#include BOOST_PP_ITERATE()
+
+
+# undef AUX778076_APPLY_WRAP_SPEC_PARAMS
+# undef AUX778076_APPLY_WRAP_PARAMS
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+
+# define i_ BOOST_PP_FRAME_ITERATION(1)
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// MSVC version
+
+#define AUX778076_MSVC_DTW_NAME BOOST_PP_CAT(msvc_apply,i_)
+#define AUX778076_MSVC_DTW_ORIGINAL_NAME apply
+#define AUX778076_MSVC_DTW_ARITY i_
+#include <boost/mpl/aux_/msvc_dtw.hpp>
+
+template<
+ typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply_wrap,i_)
+{
+ // Metafunction forwarding confuses vc6
+ typedef typename BOOST_PP_CAT(msvc_apply,i_)<F>::template result_<
+ AUX778076_APPLY_WRAP_PARAMS(i_, T)
+ >::type type;
+};
+
+# elif defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+// MWCW/Borland version
+
+template<
+ int N, typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply_wrap_impl,i_);
+
+#define BOOST_PP_ITERATION_PARAMS_2 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY - i_, <boost/mpl/apply_wrap.hpp>))
+#include BOOST_PP_ITERATE()
+
+template<
+ typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply_wrap,i_)
+ : BOOST_PP_CAT(apply_wrap_impl,i_)<
+ ::boost::mpl::aux::arity<F,i_>::value
+ , F
+ BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
+ >::type
+{
+};
+
+# else
+// ISO98 C++, with minor concession to vc7
+
+template<
+ typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+#if i_ == 0
+ , typename has_apply_ = typename aux::has_apply<F>::type
+#endif
+ >
+struct BOOST_PP_CAT(apply_wrap,i_)
+// metafunction forwarding confuses MSVC 7.0
+#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+ : F::template apply< AUX778076_APPLY_WRAP_PARAMS(i_, T) >
+{
+#else
+{
+ typedef typename F::template apply<
+ AUX778076_APPLY_WRAP_PARAMS(i_, T)
+ >::type type;
+#endif
+};
+
+#if i_ == 0 && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+template< typename F >
+struct BOOST_PP_CAT(apply_wrap,i_)<F,true_>
+ : F::apply
+{
+};
+#endif
+
+# endif // workarounds
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+/// workaround for ETI bug
+template<>
+struct BOOST_PP_CAT(apply_wrap,i_)<AUX778076_APPLY_WRAP_SPEC_PARAMS(i_, int)>
+{
+ typedef int type;
+};
+#endif
+
+# undef i_
+
+///// iteration, depth == 2
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+# define j_ BOOST_PP_FRAME_ITERATION(2)
+
+#if i_ == 0 && j_ == 0 \
+ && defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
+ && !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
+
+template< typename F, bool F_has_apply >
+struct apply_wrap_impl0_bcb {
+ typedef typename F::template apply< na > type;
+};
+
+template< typename F >
+struct apply_wrap_impl0_bcb< F, true > {
+ typedef typename F::apply type;
+};
+
+template<
+ typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply_wrap_impl,i_)<
+ BOOST_MPL_PP_ADD(i_, j_)
+ , F
+ BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
+ >
+{
+ typedef apply_wrap_impl0_bcb< F, aux::has_apply< F >::value >::type type;
+};
+#else
+
+template<
+ typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(apply_wrap_impl,i_)<
+ BOOST_MPL_PP_ADD(i_, j_)
+ , F
+ BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
+ >
+{
+ typedef typename F::template apply<
+ AUX778076_APPLY_WRAP_PARAMS(i_, T)
+#if i_ == 0 && j_ == 0
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+ na
+#else
+ BOOST_PP_COMMA_IF(BOOST_PP_AND(i_, j_)) BOOST_MPL_PP_ENUM(j_, na)
+#endif
+ > type;
+};
+
+#endif
+
+# undef j_
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/arg.hpp b/3rdParty/Boost/boost/mpl/arg.hpp
new file mode 100644
index 0000000..c1c7072
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/arg.hpp
@@ -0,0 +1,131 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_ARG_HPP_INCLUDED
+#define BOOST_MPL_ARG_HPP_INCLUDED
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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: arg.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/arg_fwd.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/na_assert.hpp>
+# include <boost/mpl/aux_/arity_spec.hpp>
+# include <boost/mpl/aux_/arg_typedef.hpp>
+#endif
+
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#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 arg.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/config/lambda.hpp>
+# include <boost/mpl/aux_/config/dtp.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+// local macro, #undef-ined at the end of the header
+#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
+ BOOST_MPL_PP_DEFAULT_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ , value \
+ ) \
+ /**/
+#else
+# define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
+ BOOST_MPL_PP_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ ) \
+ /**/
+#endif
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/arg.hpp>))
+#include BOOST_PP_ITERATE()
+
+
+# undef AUX778076_ARG_N_DEFAULT_PARAMS
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int,arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_ARG_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#if i_ > 0
+
+template<> struct arg<i_>
+{
+ BOOST_STATIC_CONSTANT(int, value = i_);
+ typedef arg<BOOST_PP_INC(i_)> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
+ >
+ struct apply
+ {
+ typedef BOOST_PP_CAT(U,i_) type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+#else
+
+template<> struct arg<-1>
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+#endif // i_ > 0
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/arg_fwd.hpp b/3rdParty/Boost/boost/mpl/arg_fwd.hpp
new file mode 100644
index 0000000..c96b48f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/arg_fwd.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_ARG_FWD_HPP_INCLUDED
+#define BOOST_MPL_ARG_FWD_HPP_INCLUDED
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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: arg_fwd.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_/adl_barrier.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arg;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(arg)
+
+#endif // BOOST_MPL_ARG_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/assert.hpp b/3rdParty/Boost/boost/mpl/assert.hpp
new file mode 100644
index 0000000..33b82f3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/assert.hpp
@@ -0,0 +1,370 @@
+
+#ifndef BOOST_MPL_ASSERT_HPP_INCLUDED
+#define BOOST_MPL_ASSERT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: assert.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/not.hpp>
+#include <boost/mpl/aux_/value_wknd.hpp>
+#include <boost/mpl/aux_/nested_type_wknd.hpp>
+#include <boost/mpl/aux_/yes_no.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/aux_/adl_barrier.hpp>
+
+#include <boost/mpl/aux_/config/nttp.hpp>
+#include <boost/mpl/aux_/config/dtp.hpp>
+#include <boost/mpl/aux_/config/gcc.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#include <boost/mpl/aux_/config/pp_counter.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+#include <boost/config.hpp> // make sure 'size_t' is placed into 'std'
+#include <cstddef>
+
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || (BOOST_MPL_CFG_GCC != 0) \
+ || BOOST_WORKAROUND(__IBMCPP__, <= 600)
+# define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
+#endif
+
+#if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \
+ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+# define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
+#endif
+
+// agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants)
+// and GCC (which issues "unused variable" warnings when static constants are used
+// at a function scope)
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || (BOOST_MPL_CFG_GCC != 0)
+# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
+#else
+# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr)
+#endif
+
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+struct failed {};
+
+// agurt, 24/aug/04: MSVC 7.1 workaround here and below: return/accept
+// 'assert<false>' by reference; can't apply it unconditionally -- apparently it
+// degrades the quality of GCC diagnostics
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+# define AUX778076_ASSERT_ARG(x) x&
+#else
+# define AUX778076_ASSERT_ARG(x) x
+#endif
+
+template< bool C > struct assert { typedef void* type; };
+template<> struct assert<false> { typedef AUX778076_ASSERT_ARG(assert) type; };
+
+template< bool C >
+int assertion_failed( typename assert<C>::type );
+
+template< bool C >
+struct assertion
+{
+ static int failed( assert<false> );
+};
+
+template<>
+struct assertion<true>
+{
+ static int failed( void* );
+};
+
+struct assert_
+{
+#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+ template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
+#endif
+ static assert_ const arg;
+ enum relations { equal = 1, not_equal, greater, greater_equal, less, less_equal };
+};
+
+
+#if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
+
+bool operator==( failed, failed );
+bool operator!=( failed, failed );
+bool operator>( failed, failed );
+bool operator>=( failed, failed );
+bool operator<( failed, failed );
+bool operator<=( failed, failed );
+
+#if defined(__EDG_VERSION__)
+template< bool (*)(failed, failed), long x, long y > struct assert_relation {};
+# define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<r,x,y>
+#else
+template< BOOST_MPL_AUX_NTTP_DECL(long, x), BOOST_MPL_AUX_NTTP_DECL(long, y), bool (*)(failed, failed) >
+struct assert_relation {};
+# define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<x,y,r>
+#endif
+
+#else // BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
+
+boost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ );
+boost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ );
+boost::mpl::aux::weighted_tag<3>::type operator>( assert_, assert_ );
+boost::mpl::aux::weighted_tag<4>::type operator>=( assert_, assert_ );
+boost::mpl::aux::weighted_tag<5>::type operator<( assert_, assert_ );
+boost::mpl::aux::weighted_tag<6>::type operator<=( assert_, assert_ );
+
+template< assert_::relations r, long x, long y > struct assert_relation {};
+
+#endif
+
+
+#if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+
+template< bool > struct assert_arg_pred_impl { typedef int type; };
+template<> struct assert_arg_pred_impl<true> { typedef void* type; };
+
+template< typename P > struct assert_arg_pred
+{
+ typedef typename P::type p_type;
+ typedef typename assert_arg_pred_impl< p_type::value >::type type;
+};
+
+template< typename P > struct assert_arg_pred_not
+{
+ typedef typename P::type p_type;
+ BOOST_MPL_AUX_ASSERT_CONSTANT( bool, p = !p_type::value );
+ typedef typename assert_arg_pred_impl<p>::type type;
+};
+
+template< typename Pred >
+failed ************ (Pred::************
+ assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
+ );
+
+template< typename Pred >
+failed ************ (boost::mpl::not_<Pred>::************
+ assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
+ );
+
+template< typename Pred >
+AUX778076_ASSERT_ARG(assert<false>)
+assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
+
+template< typename Pred >
+AUX778076_ASSERT_ARG(assert<false>)
+assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
+
+
+#else // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
+
+template< bool c, typename Pred > struct assert_arg_type_impl
+{
+ typedef failed ************ Pred::* mwcw83_wknd;
+ typedef mwcw83_wknd ************* type;
+};
+
+template< typename Pred > struct assert_arg_type_impl<true,Pred>
+{
+ typedef AUX778076_ASSERT_ARG(assert<false>) type;
+};
+
+template< typename Pred > struct assert_arg_type
+ : assert_arg_type_impl< BOOST_MPL_AUX_VALUE_WKND(BOOST_MPL_AUX_NESTED_TYPE_WKND(Pred))::value, Pred >
+{
+};
+
+template< typename Pred >
+typename assert_arg_type<Pred>::type
+assert_arg(void (*)(Pred), int);
+
+template< typename Pred >
+typename assert_arg_type< boost::mpl::not_<Pred> >::type
+assert_not_arg(void (*)(Pred), int);
+
+# if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
+template< long x, long y, bool (*r)(failed, failed) >
+typename assert_arg_type_impl< false,BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) >::type
+assert_rel_arg( BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) );
+# else
+template< assert_::relations r, long x, long y >
+typename assert_arg_type_impl< false,assert_relation<r,x,y> >::type
+assert_rel_arg( assert_relation<r,x,y> );
+# endif
+
+#endif // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
+
+#undef AUX778076_ASSERT_ARG
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+
+// BOOST_MPL_ASSERT((pred<x,...>))
+
+#define BOOST_MPL_ASSERT(pred) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion_failed<false>( \
+ boost::mpl::assert_arg( (void (*) pred)0, 1 ) \
+ ) \
+ ) \
+ ) \
+/**/
+
+// BOOST_MPL_ASSERT_NOT((pred<x,...>))
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+# define BOOST_MPL_ASSERT_NOT(pred) \
+enum { \
+ BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion<false>::failed( \
+ boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
+ ) \
+ ) \
+}\
+/**/
+#else
+# define BOOST_MPL_ASSERT_NOT(pred) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion_failed<false>( \
+ boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
+ ) \
+ ) \
+ ) \
+/**/
+#endif
+
+// BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
+
+#if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
+
+# if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+// agurt, 9/nov/06: 'enum' below is a workaround for gcc 4.0.4/4.1.1 bugs #29522 and #29518
+# define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y) \
+enum { BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) }; \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+ boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
+ (boost::mpl::failed ************ ( boost::mpl::assert_relation< \
+ boost::mpl::assert_::relations( sizeof( \
+ boost::mpl::assert_::arg rel boost::mpl::assert_::arg \
+ ) ) \
+ , x \
+ , y \
+ >::************)) 0 ) \
+ ) \
+ ) \
+/**/
+# else
+# define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assert_rel,counter) = sizeof( \
+ boost::mpl::assert_::arg rel boost::mpl::assert_::arg \
+ ) \
+ ); \
+BOOST_MPL_AUX_ASSERT_CONSTANT( bool, BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) ); \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+ boost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
+ boost::mpl::assert_rel_arg( boost::mpl::assert_relation< \
+ boost::mpl::assert_::relations(BOOST_PP_CAT(mpl_assert_rel,counter)) \
+ , x \
+ , y \
+ >() ) \
+ ) \
+ ) \
+ ) \
+/**/
+# endif
+
+# define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
+BOOST_MPL_ASSERT_RELATION_IMPL(BOOST_MPL_AUX_PP_COUNTER(), x, rel, y) \
+/**/
+
+#else // !BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
+
+# if defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+# define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion_failed<(x rel y)>( boost::mpl::assert_rel_arg( \
+ boost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&boost::mpl::operator rel))() \
+ ) ) \
+ ) \
+ ) \
+/**/
+# else
+# define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+ boost::mpl::assertion_failed<(x rel y)>( (boost::mpl::failed ************ ( \
+ boost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&boost::mpl::operator rel))::************))0 ) \
+ ) \
+ ) \
+/**/
+# endif
+
+#endif
+
+
+// BOOST_MPL_ASSERT_MSG( (pred<x,...>::value), USER_PROVIDED_MESSAGE, (types<x,...>) )
+
+#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202))
+# define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \
+struct msg; \
+typedef struct BOOST_PP_CAT(msg,counter) : boost::mpl::assert_ \
+{ \
+ using boost::mpl::assert_::types; \
+ static boost::mpl::failed ************ (msg::************ assert_arg()) types_ \
+ { return 0; } \
+} BOOST_PP_CAT(mpl_assert_arg,counter); \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+ boost::mpl::assertion<(c)>::failed( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
+ ) \
+ ) \
+/**/
+#else
+# define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \
+struct msg; \
+typedef struct BOOST_PP_CAT(msg,counter) : boost::mpl::assert_ \
+{ \
+ static boost::mpl::failed ************ (msg::************ assert_arg()) types_ \
+ { return 0; } \
+} BOOST_PP_CAT(mpl_assert_arg,counter); \
+BOOST_MPL_AUX_ASSERT_CONSTANT( \
+ std::size_t \
+ , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+ boost::mpl::assertion_failed<(c)>( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
+ ) \
+ ) \
+/**/
+#endif
+
+#define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
+BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \
+/**/
+
+#endif // BOOST_MPL_ASSERT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/at.hpp b/3rdParty/Boost/boost/mpl/at.hpp
new file mode 100644
index 0000000..caa3462
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/at.hpp
@@ -0,0 +1,52 @@
+
+#ifndef BOOST_MPL_AT_HPP_INCLUDED
+#define BOOST_MPL_AT_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: at.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/aux_/at_impl.hpp>
+#include <boost/mpl/long.hpp>
+#include <boost/mpl/sequence_tag.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+ , typename BOOST_MPL_AUX_NA_PARAM(N)
+ >
+struct at
+ : at_impl< typename sequence_tag<Sequence>::type >
+ ::template apply< Sequence,N >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,at,(Sequence,N))
+};
+
+template<
+ typename Sequence
+ , BOOST_MPL_AUX_NTTP_DECL(long, N)
+ >
+struct at_c
+ : at_impl< typename sequence_tag<Sequence>::type >
+ ::template apply< Sequence,mpl::long_<N> >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, at)
+
+}}
+
+#endif // BOOST_MPL_AT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/at_fwd.hpp b/3rdParty/Boost/boost/mpl/at_fwd.hpp
new file mode 100644
index 0000000..6bce275
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/at_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_AT_FWD_HPP_INCLUDED
+#define BOOST_MPL_AT_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: at_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 at_impl;
+template< typename Sequence, typename N > struct at;
+
+}}
+
+#endif // BOOST_MPL_AT_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/adl_barrier.hpp b/3rdParty/Boost/boost/mpl/aux_/adl_barrier.hpp
new file mode 100644
index 0000000..7d9eaea
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/adl_barrier.hpp
@@ -0,0 +1,48 @@
+
+#ifndef BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
+#define BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: adl_barrier.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/adl.hpp>
+#include <boost/mpl/aux_/config/gcc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
+
+# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE mpl_
+# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace mpl_ {
+# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }
+# define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) \
+ namespace boost { namespace mpl { \
+ using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
+ } } \
+/**/
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE { namespace aux {} }
+namespace boost { namespace mpl { using namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE;
+namespace aux { using namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux; }
+}}
+#endif
+
+#else // BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
+
+# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE boost::mpl
+# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace boost { namespace mpl {
+# define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }}
+# define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/advance_backward.hpp
new file mode 100644
index 0000000..169202a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/advance_backward.hpp
@@ -0,0 +1,128 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+#define BOOST_MPL_AUX778076_ADVANCE_BACKWARD_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: advance_backward.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/prior.hpp>
+# include <boost/mpl/apply_wrap.hpp>
+#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 advance_backward.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/unrolling.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+# include <boost/mpl/aux_/config/eti.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/inc.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+// forward declaration
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_backward;
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_UNROLLING, <boost/mpl/aux_/advance_backward.hpp>))
+# include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<BOOST_MPL_LIMIT_UNROLLING>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - BOOST_MPL_LIMIT_UNROLLING) < 0
+ ? 0
+ : N - BOOST_MPL_LIMIT_UNROLLING
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<>
+struct advance_backward< BOOST_PP_FRAME_ITERATION(1) >
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+
+#if i_ > 0
+# define BOOST_PP_ITERATION_PARAMS_2 \
+ (3,(1, BOOST_PP_FRAME_ITERATION(1), <boost/mpl/aux_/advance_backward.hpp>))
+# include BOOST_PP_ITERATE()
+#endif
+
+ typedef BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(1)) type;
+ };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+#endif
+};
+
+#undef i_
+
+///// iteration, depth == 2
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+# define AUX778076_ITER_0 BOOST_PP_CAT(iter,BOOST_PP_DEC(BOOST_PP_FRAME_ITERATION(2)))
+# define AUX778076_ITER_1 BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(2))
+
+ typedef typename prior<AUX778076_ITER_0>::type AUX778076_ITER_1;
+
+# undef AUX778076_ITER_1
+# undef AUX778076_ITER_0
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/advance_forward.hpp
new file mode 100644
index 0000000..058f765
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/advance_forward.hpp
@@ -0,0 +1,127 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+#define BOOST_MPL_AUX_ADVANCE_FORWARD_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: advance_forward.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.hpp>
+# include <boost/mpl/apply_wrap.hpp>
+#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 advance_forward.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/unrolling.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+# include <boost/mpl/aux_/config/eti.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/inc.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+// forward declaration
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_forward;
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_UNROLLING, <boost/mpl/aux_/advance_forward.hpp>))
+# include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<BOOST_MPL_LIMIT_UNROLLING>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - BOOST_MPL_LIMIT_UNROLLING) < 0
+ ? 0
+ : N - BOOST_MPL_LIMIT_UNROLLING
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<>
+struct advance_forward< BOOST_PP_FRAME_ITERATION(1) >
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+
+#if i_ > 0
+# define BOOST_PP_ITERATION_PARAMS_2 \
+ (3,(1, i_, <boost/mpl/aux_/advance_forward.hpp>))
+# include BOOST_PP_ITERATE()
+#endif
+ typedef BOOST_PP_CAT(iter,i_) type;
+ };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+#endif
+};
+
+#undef i_
+
+///// iteration, depth == 2
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+# define AUX778076_ITER_0 BOOST_PP_CAT(iter,BOOST_PP_DEC(BOOST_PP_FRAME_ITERATION(2)))
+# define AUX778076_ITER_1 BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(2))
+
+ typedef typename next<AUX778076_ITER_0>::type AUX778076_ITER_1;
+
+# undef AUX778076_ITER_1
+# undef AUX778076_ITER_0
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/arg_typedef.hpp b/3rdParty/Boost/boost/mpl/aux_/arg_typedef.hpp
new file mode 100644
index 0000000..e4737b9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/arg_typedef.hpp
@@ -0,0 +1,31 @@
+
+#ifndef BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+#define BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: arg_typedef.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/lambda.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+
+# define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) typedef T name;
+
+#else
+
+# define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/arithmetic_op.hpp b/3rdParty/Boost/boost/mpl/aux_/arithmetic_op.hpp
new file mode 100644
index 0000000..9546e8e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/arithmetic_op.hpp
@@ -0,0 +1,92 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// 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: arithmetic_op.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/integral_c.hpp>
+# include <boost/mpl/aux_/largest_int.hpp>
+# include <boost/mpl/aux_/value_wknd.hpp>
+#endif
+
+#if !defined(AUX778076_OP_PREFIX)
+# define AUX778076_OP_PREFIX AUX778076_OP_NAME
+#endif
+
+#include <boost/mpl/aux_/numeric_op.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#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 AUX778076_OP_PREFIX.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/workaround.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+namespace aux {
+template< typename T, T n1, T n2 >
+struct BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 AUX778076_OP_TOKEN n2));
+ typedef integral_c<T,value> type;
+};
+}
+#endif
+
+template<>
+struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag>
+{
+ template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+#else
+ : aux::BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+#endif
+ {
+ };
+};
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#undef AUX778076_OP_TAG_NAME
+#undef AUX778076_OP_IMPL_NAME
+#undef AUX778076_OP_ARITY
+#undef AUX778076_OP_PREFIX
+#undef AUX778076_OP_NAME
+#undef AUX778076_OP_TOKEN
diff --git a/3rdParty/Boost/boost/mpl/aux_/arity.hpp b/3rdParty/Boost/boost/mpl/aux_/arity.hpp
new file mode 100644
index 0000000..f639a10
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/arity.hpp
@@ -0,0 +1,39 @@
+
+#ifndef BOOST_MPL_AUX_ARITY_HPP_INCLUDED
+#define BOOST_MPL_AUX_ARITY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: arity.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/dtp.hpp>
+
+#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+
+# include <boost/mpl/aux_/nttp_decl.hpp>
+# include <boost/mpl/aux_/config/static_constant.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+// agurt, 15/mar/02: it's possible to implement the template so that it will
+// "just work" and do not require any specialization, but not on the compilers
+// that require the arity workaround in the first place
+template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
+struct arity
+{
+ BOOST_STATIC_CONSTANT(int, value = N);
+};
+
+}}}
+
+#endif // BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
+
+#endif // BOOST_MPL_AUX_ARITY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/arity_spec.hpp b/3rdParty/Boost/boost/mpl/aux_/arity_spec.hpp
new file mode 100644
index 0000000..ea164a6
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/arity_spec.hpp
@@ -0,0 +1,67 @@
+
+#ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: arity_spec.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/int.hpp>
+#include <boost/mpl/limits/arity.hpp>
+#include <boost/mpl/aux_/config/dtp.hpp>
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/arity.hpp>
+#include <boost/mpl/aux_/template_arity_fwd.hpp>
+#include <boost/mpl/aux_/config/ttp.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) \
+namespace aux { \
+template< BOOST_MPL_AUX_NTTP_DECL(int, N), BOOST_MPL_PP_PARAMS(i,type T) > \
+struct arity< \
+ name< BOOST_MPL_PP_PARAMS(i,T) > \
+ , N \
+ > \
+{ \
+ BOOST_STATIC_CONSTANT(int \
+ , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ ); \
+}; \
+} \
+/**/
+#else
+# define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/
+#endif
+
+# define BOOST_MPL_AUX_ARITY_SPEC(i,name) \
+ BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name) \
+/**/
+
+
+#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+ && !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+# define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) \
+namespace aux { \
+template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > \
+ : int_<i> \
+{ \
+}; \
+} \
+/**/
+#else
+# define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
+#endif
+
+
+#endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/at_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/at_impl.hpp
new file mode 100644
index 0000000..120738f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/at_impl.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_AT_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: 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/begin_end.hpp>
+#include <boost/mpl/advance.hpp>
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/aux_/traits_lambda_spec.hpp>
+
+namespace boost { namespace mpl {
+
+// default implementation; conrete sequences might override it by
+// specializing either the 'at_impl' or the primary 'at' template
+
+template< typename Tag >
+struct at_impl
+{
+ template< typename Sequence, typename N > struct apply
+ {
+ typedef typename advance<
+ typename begin<Sequence>::type
+ , N
+ >::type iter_;
+
+ typedef typename deref<iter_>::type type;
+ };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, at_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/begin_end_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/begin_end_impl.hpp
new file mode 100644
index 0000000..d3b9682
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/begin_end_impl.hpp
@@ -0,0 +1,101 @@
+
+#ifndef BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_BEGIN_END_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: 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/sequence_tag_fwd.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/has_begin.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/aux_/traits_lambda_spec.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+
+namespace boost { namespace mpl {
+
+
+namespace aux {
+
+template< typename Sequence >
+struct begin_type
+{
+ typedef typename Sequence::begin type;
+};
+template< typename Sequence >
+struct end_type
+{
+ typedef typename Sequence::end type;
+};
+
+}
+
+// default implementation; conrete sequences might override it by
+// specializing either the 'begin_impl/end_impl' or the primary
+// 'begin/end' templates
+
+template< typename Tag >
+struct begin_impl
+{
+ template< typename Sequence > struct apply
+ {
+ typedef typename eval_if<aux::has_begin<Sequence, true_>,
+ aux::begin_type<Sequence>, void_>::type type;
+ };
+};
+
+template< typename Tag >
+struct end_impl
+{
+ template< typename Sequence > struct apply
+ {
+ typedef typename eval_if<aux::has_begin<Sequence, true_>,
+ aux::end_type<Sequence>, void_>::type type;
+ };
+};
+
+// specialize 'begin_trait/end_trait' for two pre-defined tags
+
+# define AUX778076_IMPL_SPEC(name, tag, result) \
+template<> \
+struct name##_impl<tag> \
+{ \
+ template< typename Sequence > struct apply \
+ { \
+ typedef result type; \
+ }; \
+}; \
+/**/
+
+// a sequence with nested 'begin/end' typedefs; just query them
+AUX778076_IMPL_SPEC(begin, nested_begin_end_tag, typename Sequence::begin)
+AUX778076_IMPL_SPEC(end, nested_begin_end_tag, typename Sequence::end)
+
+// if a type 'T' does not contain 'begin/end' or 'tag' members
+// and doesn't specialize either 'begin/end' or 'begin_impl/end_impl'
+// templates, then we end up here
+AUX778076_IMPL_SPEC(begin, non_sequence_tag, void_)
+AUX778076_IMPL_SPEC(end, non_sequence_tag, void_)
+AUX778076_IMPL_SPEC(begin, na, void_)
+AUX778076_IMPL_SPEC(end, na, void_)
+
+# undef AUX778076_IMPL_SPEC
+
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,begin_impl)
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,end_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/common_name_wknd.hpp b/3rdParty/Boost/boost/mpl/aux_/common_name_wknd.hpp
new file mode 100644
index 0000000..9d0b4b4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/common_name_wknd.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+#define BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: common_name_wknd.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/workaround.hpp>
+
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x561)
+// agurt, 12/nov/02: to suppress the bogus "Cannot have both a template class
+// and function named 'xxx'" diagnostic
+# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
+namespace name_##wknd { \
+template< typename > void name(); \
+} \
+/**/
+
+#else
+
+# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
+
+#endif // __BORLANDC__
+
+#endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/comparison_op.hpp b/3rdParty/Boost/boost/mpl/aux_/comparison_op.hpp
new file mode 100644
index 0000000..7d0fa20
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/comparison_op.hpp
@@ -0,0 +1,83 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// 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_op.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/bool.hpp>
+# include <boost/mpl/aux_/value_wknd.hpp>
+#endif
+
+#if !defined(AUX778076_OP_PREFIX)
+# define AUX778076_OP_PREFIX AUX778076_OP_NAME
+#endif
+
+#define AUX778076_OP_ARITY 2
+
+#include <boost/mpl/aux_/numeric_op.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#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 AUX778076_OP_PREFIX.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/integral.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+// MSVC workaround: implement less in terms of greater
+#if 0 AUX778076_OP_TOKEN 1 && !(1 AUX778076_OP_TOKEN 0) && !(0 AUX778076_OP_TOKEN 0)
+# define AUX778076_OP(N1, N2) \
+ ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) \
+/**/
+#else
+# define AUX778076_OP(N1, N2) \
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value \
+ AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(N2)::value \
+ ) \
+/**/
+#endif
+
+template<>
+struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag>
+{
+ template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+ : bool_< AUX778076_OP(N1, N2) >
+ {
+#else
+ {
+ BOOST_STATIC_CONSTANT(bool, value = AUX778076_OP(N1, N2));
+ typedef bool_<value> type;
+#endif
+ };
+};
+
+#undef AUX778076_OP
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#undef AUX778076_OP_TAG_NAME
+#undef AUX778076_OP_IMPL_NAME
+#undef AUX778076_OP_ARITY
+#undef AUX778076_OP_PREFIX
+#undef AUX778076_OP_NAME
+#undef AUX778076_OP_TOKEN
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/adl.hpp b/3rdParty/Boost/boost/mpl/aux_/config/adl.hpp
new file mode 100644
index 0000000..130ee9f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/adl.hpp
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: adl.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/msvc.hpp>
+#include <boost/mpl/aux_/config/intel.hpp>
+#include <boost/mpl/aux_/config/gcc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+// agurt, 25/apr/04: technically, the ADL workaround is only needed for GCC,
+// but putting everything expect public, user-specializable metafunctions into
+// a separate global namespace has a nice side effect of reducing the length
+// of template instantiation symbols, so we apply the workaround on all
+// platforms that can handle it
+
+#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \
+ && ( BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
+ || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+ )
+
+# define BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/arrays.hpp b/3rdParty/Boost/boost/mpl/aux_/config/arrays.hpp
new file mode 100644
index 0000000..56ee0a3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/arrays.hpp
@@ -0,0 +1,30 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_ARRAYS_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: arrays.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ )
+
+# define BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/bcc.hpp b/3rdParty/Boost/boost/mpl/aux_/config/bcc.hpp
new file mode 100644
index 0000000..f4817ca
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/bcc.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2008
+//
+// Distributed under the 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: bcc.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
+// $Date: 2004-09-02 10:41:37 -0500 (Thu, 02 Sep 2004) $
+// $Revision: 24874 $
+
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(__BORLANDC__, >= 0x590) \
+ && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+
+# define BOOST_MPL_CFG_BCC590_WORKAROUNDS
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/config/bind.hpp
new file mode 100644
index 0000000..d0450e6
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/bind.hpp
@@ -0,0 +1,33 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+
+// Copyright David Abrahams 2002
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: bind.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ )
+
+# define BOOST_MPL_CFG_NO_BIND_TEMPLATE
+
+#endif
+
+//#define BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+
+#endif // BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/compiler.hpp b/3rdParty/Boost/boost/mpl/aux_/config/compiler.hpp
new file mode 100644
index 0000000..01ff8b8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/compiler.hpp
@@ -0,0 +1,66 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2008
+//
+// Distributed under the 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: compiler.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
+// $Date: 2008-10-11 02:50:46 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49272 $
+
+#if !defined(BOOST_MPL_CFG_COMPILER_DIR)
+
+# include <boost/mpl/aux_/config/dtp.hpp>
+# include <boost/mpl/aux_/config/ttp.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+# include <boost/mpl/aux_/config/gcc.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# define BOOST_MPL_CFG_COMPILER_DIR msvc60
+
+# elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+# define BOOST_MPL_CFG_COMPILER_DIR msvc70
+
+# elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
+# define BOOST_MPL_CFG_COMPILER_DIR gcc
+
+# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+# if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define BOOST_MPL_CFG_COMPILER_DIR bcc551
+# elseif BOOST_WORKAROUND(__BORLANDC__, >= 0x590)
+# define BOOST_MPL_CFG_COMPILER_DIR bcc
+# else
+# define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590
+# endif
+
+# elif BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+# define BOOST_MPL_CFG_COMPILER_DIR dmc
+
+# elif defined(__MWERKS__)
+# if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define BOOST_MPL_CFG_COMPILER_DIR mwcw
+# else
+# define BOOST_MPL_CFG_COMPILER_DIR plain
+# endif
+
+# elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+# define BOOST_MPL_CFG_COMPILER_DIR no_ctps
+
+# elif defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
+# define BOOST_MPL_CFG_COMPILER_DIR no_ttp
+
+# else
+# define BOOST_MPL_CFG_COMPILER_DIR plain
+# endif
+
+#endif // BOOST_MPL_CFG_COMPILER_DIR
+
+#endif // BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/config/ctps.hpp
new file mode 100644
index 0000000..b908cee
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/ctps.hpp
@@ -0,0 +1,30 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_CTPS_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: ctps.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/workaround.hpp>
+#include <boost/config.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(__BORLANDC__, < 0x582)
+
+# define BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC
+
+#endif
+
+// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION is defined in <boost/config.hpp>
+
+#endif // BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
new file mode 100644
index 0000000..682770e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_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: dmc_ambiguous_ctps.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/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+
+# define BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/dtp.hpp b/3rdParty/Boost/boost/mpl/aux_/config/dtp.hpp
new file mode 100644
index 0000000..8f03a83
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/dtp.hpp
@@ -0,0 +1,46 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: dtp.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/workaround.hpp>
+
+// MWCW 7.x-8.0 "losts" default template parameters of nested class
+// templates when their owner classes are passed as arguments to other
+// templates; Borland 5.5.1 "forgets" them from the very beginning (if
+// the owner class is a class template), and Borland 5.6 isn't even
+// able to compile a definition of nested class template with DTP
+
+#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(__BORLANDC__, >= 0x560) \
+ && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+
+# define BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
+
+#endif
+
+
+#if !defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( BOOST_WORKAROUND(__MWERKS__, <= 0x3001) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ || defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
+ )
+
+# define BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/eti.hpp b/3rdParty/Boost/boost/mpl/aux_/config/eti.hpp
new file mode 100644
index 0000000..7328b6d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/eti.hpp
@@ -0,0 +1,47 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: eti.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+// flags for MSVC 6.5's so-called "early template instantiation bug"
+#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+# define BOOST_MPL_CFG_MSVC_60_ETI_BUG
+
+#endif
+
+#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+
+# define BOOST_MPL_CFG_MSVC_70_ETI_BUG
+
+#endif
+
+#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \
+ || defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \
+ )
+
+# define BOOST_MPL_CFG_MSVC_ETI_BUG
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/forwarding.hpp b/3rdParty/Boost/boost/mpl/aux_/config/forwarding.hpp
new file mode 100644
index 0000000..2390bd7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/forwarding.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_FORWARDING_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: forwarding.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/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+
+# define BOOST_MPL_CFG_NO_NESTED_FORWARDING
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/gcc.hpp b/3rdParty/Boost/boost/mpl/aux_/config/gcc.hpp
new file mode 100644
index 0000000..3380d61
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/gcc.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_GCC_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: gcc.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(__GNUC__) && !defined(__EDG_VERSION__)
+# define BOOST_MPL_CFG_GCC ((__GNUC__ << 8) | __GNUC_MINOR__)
+#else
+# define BOOST_MPL_CFG_GCC 0
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/has_apply.hpp b/3rdParty/Boost/boost/mpl/aux_/config/has_apply.hpp
new file mode 100644
index 0000000..fc9176f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/has_apply.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_HAS_APPLY_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: has_apply.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/has_xxx.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY) \
+ && ( defined(BOOST_MPL_CFG_NO_HAS_XXX) \
+ || BOOST_WORKAROUND(__EDG_VERSION__, < 300) \
+ || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
+ )
+
+# define BOOST_MPL_CFG_NO_HAS_APPLY
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/has_xxx.hpp b/3rdParty/Boost/boost/mpl/aux_/config/has_xxx.hpp
new file mode 100644
index 0000000..8f2a46d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/has_xxx.hpp
@@ -0,0 +1,33 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+// Copyright David Abrahams 2002-2003
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_xxx.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/overload_resolution.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+// agurt, 11/jan/03: signals a stub-only 'has_xxx' implementation
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_XXX) \
+ && ( defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
+ || BOOST_WORKAROUND(__GNUC__, <= 2) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
+ )
+
+# define BOOST_MPL_CFG_NO_HAS_XXX
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/integral.hpp b/3rdParty/Boost/boost/mpl/aux_/config/integral.hpp
new file mode 100644
index 0000000..4dec725
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/integral.hpp
@@ -0,0 +1,38 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_INTEGRAL_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: integral.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+
+# define BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
+
+#endif
+
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
+ )
+
+# define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/intel.hpp b/3rdParty/Boost/boost/mpl/aux_/config/intel.hpp
new file mode 100644
index 0000000..8f1de76
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/intel.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_INTEL_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: intel.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+
+// BOOST_INTEL_CXX_VERSION is defined here:
+#include <boost/config.hpp>
+
+#endif // BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/config/lambda.hpp
new file mode 100644
index 0000000..a46b46a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/lambda.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: lambda.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/ttp.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+// agurt, 15/jan/02: full-fledged implementation requires both
+// template template parameters _and_ partial specialization
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+ && ( defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+ || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ )
+
+# define BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/msvc.hpp b/3rdParty/Boost/boost/mpl/aux_/config/msvc.hpp
new file mode 100644
index 0000000..18bed83
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/msvc.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+
+// BOOST_MSVC is defined here:
+#include <boost/config.hpp>
+
+#endif // BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/msvc_typename.hpp b/3rdParty/Boost/boost/mpl/aux_/config/msvc_typename.hpp
new file mode 100644
index 0000000..042c804
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/msvc_typename.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_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: msvc_typename.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+# define BOOST_MSVC_TYPENAME
+#else
+# define BOOST_MSVC_TYPENAME typename
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/nttp.hpp b/3rdParty/Boost/boost/mpl/aux_/config/nttp.hpp
new file mode 100644
index 0000000..4873e20
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/nttp.hpp
@@ -0,0 +1,41 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: nttp.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+// MSVC 6.5 ICE-s on the code as simple as this (see "aux_/nttp_decl.hpp"
+// for a workaround):
+//
+// namespace std {
+// template< typename Char > struct string;
+// }
+//
+// void foo(std::string<char>);
+//
+// namespace boost { namespace mpl {
+// template< int > struct arg;
+// }}
+
+#if !defined(BOOST_MPL_CFG_NTTP_BUG) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+# define BOOST_MPL_CFG_NTTP_BUG
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/overload_resolution.hpp b/3rdParty/Boost/boost/mpl/aux_/config/overload_resolution.hpp
new file mode 100644
index 0000000..88c3d53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/overload_resolution.hpp
@@ -0,0 +1,29 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: overload_resolution.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/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( BOOST_WORKAROUND(__BORLANDC__, < 0x590) \
+ || BOOST_WORKAROUND(__MWERKS__, < 0x3001) \
+ )
+
+# define BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/pp_counter.hpp b/3rdParty/Boost/boost/mpl/aux_/config/pp_counter.hpp
new file mode 100644
index 0000000..a4d0715
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/pp_counter.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: pp_counter.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_AUX_PP_COUNTER)
+# include <boost/mpl/aux_/config/msvc.hpp>
+# if BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
+# define BOOST_MPL_AUX_PP_COUNTER() __COUNTER__
+# else
+# define BOOST_MPL_AUX_PP_COUNTER() __LINE__
+# endif
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/preprocessor.hpp b/3rdParty/Boost/boost/mpl/aux_/config/preprocessor.hpp
new file mode 100644
index 0000000..52229cd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/preprocessor.hpp
@@ -0,0 +1,39 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_PREPROCESSOR_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: preprocessor.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/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \
+ && ( BOOST_WORKAROUND(__MWERKS__, <= 0x3003) \
+ || BOOST_WORKAROUND(__BORLANDC__, < 0x582) \
+ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
+ )
+
+# define BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION
+
+#endif
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+# define BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
+#endif
+
+#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) \
+ && BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+# define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
+#endif
+
+
+#endif // BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/static_constant.hpp b/3rdParty/Boost/boost/mpl/aux_/config/static_constant.hpp
new file mode 100644
index 0000000..855d22f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/static_constant.hpp
@@ -0,0 +1,25 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_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: static_constant.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)
+// BOOST_STATIC_CONSTANT is defined here:
+# include <boost/config.hpp>
+#else
+// undef the macro for the preprocessing mode
+# undef BOOST_STATIC_CONSTANT
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/ttp.hpp b/3rdParty/Boost/boost/mpl/aux_/config/ttp.hpp
new file mode 100644
index 0000000..a5a0c2c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/ttp.hpp
@@ -0,0 +1,41 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_TTP_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: ttp.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/msvc.hpp>
+#include <boost/mpl/aux_/config/gcc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+ && ( defined(BOOST_NO_TEMPLATE_TEMPLATES) \
+ || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x590) ) \
+ )
+
+# define BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS
+
+#endif
+
+
+#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+ )
+
+# define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/typeof.hpp b/3rdParty/Boost/boost/mpl/aux_/config/typeof.hpp
new file mode 100644
index 0000000..aeff9c1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/typeof.hpp
@@ -0,0 +1,38 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_TYPEOF_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: typeof.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>
+
+#if !defined(BOOST_MPL_CFG_HAS_TYPEOF) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && ( defined(BOOST_MPL_CFG_GCC) && BOOST_MPL_CFG_GCC >= 0x0302 \
+ || defined(__MWERKS__) && __MWERKS__ >= 0x3000 \
+ )
+
+# define BOOST_MPL_CFG_HAS_TYPEOF
+
+#endif
+
+
+#if !defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+ && defined(BOOST_MPL_CFG_HAS_TYPEOF)
+
+# define BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/use_preprocessed.hpp b/3rdParty/Boost/boost/mpl/aux_/config/use_preprocessed.hpp
new file mode 100644
index 0000000..3bbc229
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/use_preprocessed.hpp
@@ -0,0 +1,19 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_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: use_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+// #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/config/workaround.hpp b/3rdParty/Boost/boost/mpl/aux_/config/workaround.hpp
new file mode 100644
index 0000000..337bcf7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/config/workaround.hpp
@@ -0,0 +1,19 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: workaround.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/detail/workaround.hpp>
+
+#endif // BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/count_args.hpp b/3rdParty/Boost/boost/mpl/aux_/count_args.hpp
new file mode 100644
index 0000000..85107dd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/count_args.hpp
@@ -0,0 +1,105 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// 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: count_args.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/preprocessor/expr_if.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+#if !defined(AUX778076_COUNT_ARGS_PARAM_NAME)
+# define AUX778076_COUNT_ARGS_PARAM_NAME T
+#endif
+
+#if !defined(AUX778076_COUNT_ARGS_TEMPLATE_PARAM)
+# define AUX778076_COUNT_ARGS_TEMPLATE_PARAM typename AUX778076_COUNT_ARGS_PARAM_NAME
+#endif
+
+// local macros, #undef-ined at the end of the header
+
+#if !defined(AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES)
+
+# include <boost/mpl/aux_/preprocessor/repeat.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+
+# define AUX778076_COUNT_ARGS_REPEAT BOOST_MPL_PP_REPEAT
+# define AUX778076_COUNT_ARGS_PARAMS(param) \
+ BOOST_MPL_PP_PARAMS( \
+ AUX778076_COUNT_ARGS_ARITY \
+ , param \
+ ) \
+ /**/
+
+#else
+
+# include <boost/preprocessor/enum_shifted_params.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/inc.hpp>
+
+# define AUX778076_COUNT_ARGS_REPEAT BOOST_PP_REPEAT
+# define AUX778076_COUNT_ARGS_PARAMS(param) \
+ BOOST_PP_ENUM_SHIFTED_PARAMS( \
+ BOOST_PP_INC(AUX778076_COUNT_ARGS_ARITY) \
+ , param \
+ ) \
+ /**/
+
+#endif // AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
+
+
+#define AUX778076_IS_ARG_TEMPLATE_NAME \
+ BOOST_PP_CAT(is_,BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_arg)) \
+/**/
+
+#define AUX778076_COUNT_ARGS_FUNC(unused, i, param) \
+ BOOST_PP_EXPR_IF(i, +) \
+ AUX778076_IS_ARG_TEMPLATE_NAME<BOOST_PP_CAT(param,BOOST_PP_INC(i))>::value \
+/**/
+
+// is_<xxx>_arg
+template< AUX778076_COUNT_ARGS_TEMPLATE_PARAM >
+struct AUX778076_IS_ARG_TEMPLATE_NAME
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct AUX778076_IS_ARG_TEMPLATE_NAME<AUX778076_COUNT_ARGS_DEFAULT>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// <xxx>_count_args
+template<
+ AUX778076_COUNT_ARGS_PARAMS(AUX778076_COUNT_ARGS_TEMPLATE_PARAM)
+ >
+struct BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_count_args)
+{
+ BOOST_STATIC_CONSTANT(int, value = AUX778076_COUNT_ARGS_REPEAT(
+ AUX778076_COUNT_ARGS_ARITY
+ , AUX778076_COUNT_ARGS_FUNC
+ , AUX778076_COUNT_ARGS_PARAM_NAME
+ ));
+};
+
+#undef AUX778076_COUNT_ARGS_FUNC
+#undef AUX778076_IS_ARG_TEMPLATE_NAME
+#undef AUX778076_COUNT_ARGS_PARAMS
+#undef AUX778076_COUNT_ARGS_REPEAT
+
+#undef AUX778076_COUNT_ARGS_ARITY
+#undef AUX778076_COUNT_ARGS_DEFAULT
+#undef AUX778076_COUNT_ARGS_PREFIX
+#undef AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
+#undef AUX778076_COUNT_ARGS_TEMPLATE_PARAM
+#undef AUX778076_COUNT_ARGS_PARAM_NAME
diff --git a/3rdParty/Boost/boost/mpl/aux_/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/full_lambda.hpp
new file mode 100644
index 0000000..dfaaedb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/full_lambda.hpp
@@ -0,0 +1,354 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+#define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: full_lambda.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/lambda_fwd.hpp>
+# include <boost/mpl/bind_fwd.hpp>
+# include <boost/mpl/protect.hpp>
+# include <boost/mpl/quote.hpp>
+# include <boost/mpl/arg.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/int_fwd.hpp>
+# include <boost/mpl/aux_/template_arity.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/config/ttp.hpp>
+# if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+# include <boost/mpl/if.hpp>
+# endif
+#endif
+
+#include <boost/mpl/aux_/lambda_arity_param.hpp>
+#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 full_lambda.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/preprocessor/repeat.hpp>
+# include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+// local macros, #undef-ined at the end of the header
+# define AUX778076_LAMBDA_PARAMS(i_, param) \
+ BOOST_MPL_PP_PARAMS(i_, param) \
+ /**/
+
+# define AUX778076_BIND_PARAMS(param) \
+ BOOST_MPL_PP_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ ) \
+ /**/
+
+# define AUX778076_BIND_N_PARAMS(i_, param) \
+ BOOST_PP_COMMA_IF(i_) \
+ BOOST_MPL_PP_PARAMS(i_, param) \
+ /**/
+
+# define AUX778076_ARITY_PARAM(param) \
+ BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) \
+ /**/
+
+
+#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+namespace aux {
+
+template<
+ BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
+ : false_
+{
+};
+
+} // namespace aux
+#undef n_
+
+template<
+ typename T
+ , typename Tag
+ AUX778076_ARITY_PARAM(typename Arity)
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag AUX778076_ARITY_PARAM(int_<-1>) >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/aux_/full_lambda.hpp>))
+#include BOOST_PP_ITERATE()
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag AUX778076_ARITY_PARAM(int_<1>) >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+template<
+ typename F, AUX778076_BIND_PARAMS(typename T)
+ , typename Tag
+ >
+struct lambda<
+ bind<F,AUX778076_BIND_PARAMS(T)>
+ , Tag
+ AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)>)
+ >
+{
+ typedef false_ is_le;
+ typedef bind<F, AUX778076_BIND_PARAMS(T)> result_;
+ typedef result_ type;
+};
+
+
+#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ , typename Arity
+ >
+struct lambda<
+ lambda<F,Tag1,Arity>
+ , Tag2
+ , int_<3>
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+
+ typedef typename l1::is_le is_le;
+ typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+ typedef lambda< typename if_<is_le,arity_,Arity>::type,Tag2 > l3;
+
+ typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+#elif !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+#endif
+
+# undef AUX778076_ARITY_PARAM
+# undef AUX778076_BIND_N_PARAMS
+# undef AUX778076_BIND_PARAMS
+# undef AUX778076_LAMBDA_PARAMS
+
+#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+#else
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+#endif
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#if i_ > 0
+
+namespace aux {
+
+# define AUX778076_RESULT(unused, i_, T) \
+ BOOST_PP_COMMA_IF(i_) \
+ typename BOOST_PP_CAT(T, BOOST_PP_INC(i_))::result_ \
+ /**/
+
+# define AUX778076_TYPE(unused, i_, T) \
+ BOOST_PP_COMMA_IF(i_) \
+ typename BOOST_PP_CAT(T, BOOST_PP_INC(i_))::type \
+ /**/
+
+template<
+ typename IsLE, typename Tag
+ , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
+ , AUX778076_LAMBDA_PARAMS(i_, typename L)
+ >
+struct BOOST_PP_CAT(le_result,i_)
+{
+ typedef F<
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_TYPE, L)
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
+ , AUX778076_LAMBDA_PARAMS(i_, typename L)
+ >
+struct BOOST_PP_CAT(le_result,i_)< true_,Tag,F,AUX778076_LAMBDA_PARAMS(i_, L) >
+{
+ typedef BOOST_PP_CAT(bind,i_)<
+ BOOST_PP_CAT(quote,i_)<F,Tag>
+ , BOOST_MPL_PP_REPEAT(i_, AUX778076_RESULT, L)
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+# undef AUX778076_TYPE
+# undef AUX778076_RESULT
+
+} // namespace aux
+
+
+# define AUX778076_LAMBDA_TYPEDEF(unused, i_, T) \
+ typedef lambda< BOOST_PP_CAT(T, BOOST_PP_INC(i_)), Tag > \
+ BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
+/**/
+
+# define AUX778076_IS_LE_TYPEDEF(unused, i_, unused2) \
+ typedef typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::is_le \
+ BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)); \
+/**/
+
+# define AUX778076_IS_LAMBDA_EXPR(unused, i_, unused2) \
+ BOOST_PP_COMMA_IF(i_) \
+ BOOST_PP_CAT(is_le,BOOST_PP_INC(i_))::value \
+/**/
+
+template<
+ template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
+ , AUX778076_LAMBDA_PARAMS(i_, typename T)
+ , typename Tag
+ >
+struct lambda<
+ F<AUX778076_LAMBDA_PARAMS(i_, T)>
+ , Tag
+ AUX778076_ARITY_PARAM(int_<i_>)
+ >
+{
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, T)
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
+
+ typedef typename aux::lambda_or<
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
+ >::type is_le;
+
+ typedef aux::BOOST_PP_CAT(le_result,i_)<
+ is_le, Tag, F, AUX778076_LAMBDA_PARAMS(i_, l)
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+
+# undef AUX778076_IS_LAMBDA_EXPR
+# undef AUX778076_IS_LE_TYPEDEF
+# undef AUX778076_LAMBDA_TYPEDEF
+
+#endif // i_ > 0
+
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T)
+ , typename Tag
+ >
+struct lambda<
+ BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_, T)>
+ , Tag
+ AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(i_)>)
+ >
+{
+ typedef false_ is_le;
+ typedef BOOST_PP_CAT(bind,i_)<
+ F
+ AUX778076_BIND_N_PARAMS(i_, T)
+ > result_;
+
+ typedef result_ type;
+};
+
+#undef i_
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/has_apply.hpp b/3rdParty/Boost/boost/mpl/aux_/has_apply.hpp
new file mode 100644
index 0000000..b77b561
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/has_apply.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_APPLY_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: has_apply.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_xxx.hpp>
+#include <boost/mpl/aux_/config/has_apply.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false)
+#else
+template< typename T, typename fallback_ = false_ >
+struct has_apply
+ : fallback_
+{
+};
+#endif
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/has_begin.hpp b/3rdParty/Boost/boost/mpl/aux_/has_begin.hpp
new file mode 100644
index 0000000..e7403d2
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/has_begin.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_begin.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_xxx.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_begin, begin, true)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/has_rebind.hpp b/3rdParty/Boost/boost/mpl/aux_/has_rebind.hpp
new file mode 100644
index 0000000..32cdb83
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/has_rebind.hpp
@@ -0,0 +1,99 @@
+
+#ifndef BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_rebind.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/msvc.hpp>
+#include <boost/mpl/aux_/config/intel.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+# include <boost/mpl/has_xxx.hpp>
+#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# include <boost/mpl/has_xxx.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/msvc_is_class.hpp>
+#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/yes_no.hpp>
+# include <boost/mpl/aux_/config/static_constant.hpp>
+# include <boost/type_traits/is_class.hpp>
+#else
+# include <boost/mpl/aux_/type_wrapper.hpp>
+# include <boost/mpl/aux_/yes_no.hpp>
+# include <boost/mpl/aux_/config/static_constant.hpp>
+#endif
+
+namespace boost { namespace mpl { namespace aux {
+
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind, rebind, false)
+
+#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind_impl, rebind, false)
+
+template< typename T >
+struct has_rebind
+ : if_<
+ msvc_is_class<T>
+ , has_rebind_impl<T>
+ , bool_<false>
+ >::type
+{
+};
+
+#else // the rest
+
+template< typename T > struct has_rebind_tag {};
+no_tag operator|(has_rebind_tag<int>, void const volatile*);
+
+# if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+template< typename T >
+struct has_rebind
+{
+ static has_rebind_tag<T>* get();
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
+ );
+};
+# else // __BORLANDC__
+template< typename T >
+struct has_rebind_impl
+{
+ static T* get();
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
+ );
+};
+
+template< typename T >
+struct has_rebind
+ : if_<
+ is_class<T>
+ , has_rebind_impl<T>
+ , bool_<false>
+ >::type
+{
+};
+# endif // __BORLANDC__
+
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/has_tag.hpp b/3rdParty/Boost/boost/mpl/aux_/has_tag.hpp
new file mode 100644
index 0000000..c016ec5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/has_tag.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_tag.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_xxx.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_tag, tag, false)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/has_type.hpp b/3rdParty/Boost/boost/mpl/aux_/has_type.hpp
new file mode 100644
index 0000000..1d301a2
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/has_type.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_type.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_xxx.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_type, type, true)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/include_preprocessed.hpp b/3rdParty/Boost/boost/mpl/aux_/include_preprocessed.hpp
new file mode 100644
index 0000000..b214eeb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/include_preprocessed.hpp
@@ -0,0 +1,42 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: include_preprocessed.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/compiler.hpp>
+#include <boost/mpl/aux_/config/preprocessor.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/stringize.hpp>
+
+#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+# define AUX778076_PREPROCESSED_HEADER \
+ BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER \
+/**/
+#else
+# define AUX778076_PREPROCESSED_HEADER \
+ BOOST_PP_CAT(BOOST_MPL_CFG_COMPILER_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
+/**/
+#endif
+
+#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
+# define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
+# include AUX778076_INCLUDE_STRING
+# undef AUX778076_INCLUDE_STRING
+#else
+# include BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
+#endif
+
+# undef AUX778076_PREPROCESSED_HEADER
+
+#undef BOOST_MPL_PREPROCESSED_HEADER
diff --git a/3rdParty/Boost/boost/mpl/aux_/integral_wrapper.hpp b/3rdParty/Boost/boost/mpl/aux_/integral_wrapper.hpp
new file mode 100644
index 0000000..963a738
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/integral_wrapper.hpp
@@ -0,0 +1,93 @@
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: integral_wrapper.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+#include <boost/mpl/integral_c_tag.hpp>
+#include <boost/mpl/aux_/static_cast.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+#if !defined(AUX_WRAPPER_NAME)
+# define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
+#endif
+
+#if !defined(AUX_WRAPPER_PARAMS)
+# define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
+#endif
+
+#if !defined(AUX_WRAPPER_INST)
+# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407)
+# define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< value >
+# else
+# define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
+# endif
+#endif
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< AUX_WRAPPER_PARAMS(N) >
+struct AUX_WRAPPER_NAME
+{
+ BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);
+// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some
+// other compilers (e.g. MSVC) are not particulary happy about it
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+ typedef struct AUX_WRAPPER_NAME type;
+#else
+ typedef AUX_WRAPPER_NAME type;
+#endif
+ typedef AUX_WRAPPER_VALUE_TYPE value_type;
+ typedef integral_c_tag tag;
+
+// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
+// while some other don't like 'value + 1' (Borland), and some don't like
+// either
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
+ private:
+ BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
+ BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
+ public:
+ typedef AUX_WRAPPER_INST(next_value) next;
+ typedef AUX_WRAPPER_INST(prior_value) prior;
+#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
+ || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
+ || (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior;
+#else
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
+ typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
+#endif
+
+ // enables uniform function call syntax for families of overloaded
+ // functions that return objects of both arithmetic ('int', 'long',
+ // 'double', etc.) and wrapped integral types (for an example, see
+ // "mpl/example/power.cpp")
+ operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); }
+};
+
+#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+template< AUX_WRAPPER_PARAMS(N) >
+AUX_WRAPPER_VALUE_TYPE const AUX_WRAPPER_INST(N)::value;
+#endif
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+#undef AUX_WRAPPER_NAME
+#undef AUX_WRAPPER_PARAMS
+#undef AUX_WRAPPER_INST
+#undef AUX_WRAPPER_VALUE_TYPE
diff --git a/3rdParty/Boost/boost/mpl/aux_/is_msvc_eti_arg.hpp b/3rdParty/Boost/boost/mpl/aux_/is_msvc_eti_arg.hpp
new file mode 100644
index 0000000..322a22e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/is_msvc_eti_arg.hpp
@@ -0,0 +1,64 @@
+
+#ifndef BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+#define BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: is_msvc_eti_arg.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_/yes_no.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+
+template< typename T >
+struct is_msvc_eti_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#else // BOOST_MPL_CFG_MSVC_60_ETI_BUG
+
+struct eti_int_convertible
+{
+ eti_int_convertible(int);
+};
+
+template< typename T >
+struct is_msvc_eti_arg
+{
+ static no_tag test(...);
+ static yes_tag test(eti_int_convertible);
+ static T& get();
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(test(get())) == sizeof(yes_tag)
+ );
+};
+
+#endif
+
+template<>
+struct is_msvc_eti_arg<int>
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+#endif // BOOST_MPL_CFG_MSVC_ETI_BUG
+
+}}}
+
+#endif // BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/lambda_arity_param.hpp b/3rdParty/Boost/boost/mpl/aux_/lambda_arity_param.hpp
new file mode 100644
index 0000000..720918e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/lambda_arity_param.hpp
@@ -0,0 +1,25 @@
+
+#ifndef BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: lambda_arity_param.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/ttp.hpp>
+
+#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+# define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param)
+#else
+# define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) , param
+#endif
+
+#endif // BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/lambda_no_ctps.hpp
new file mode 100644
index 0000000..cd55fc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/lambda_no_ctps.hpp
@@ -0,0 +1,193 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_NO_CTPS_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: lambda_no_ctps.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/lambda_fwd.hpp>
+# include <boost/mpl/bind_fwd.hpp>
+# include <boost/mpl/protect.hpp>
+# include <boost/mpl/is_placeholder.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/identity.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+# include <boost/mpl/aux_/template_arity.hpp>
+# include <boost/mpl/aux_/value_wknd.hpp>
+#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 lambda_no_ctps.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/preprocessor/repeat.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+# define AUX778076_LAMBDA_PARAMS(i_, param) \
+ BOOST_MPL_PP_PARAMS(i_, param) \
+ /**/
+
+namespace aux {
+
+#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+template<
+ BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
+ : false_
+{
+};
+#undef n_
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/aux_/lambda_no_ctps.hpp>))
+#include BOOST_PP_ITERATE()
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+# undef AUX778076_LAMBDA_PARAMS
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+#else
+
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+# define AUX778076_LAMBDA_TYPEDEF(unused, i_, F) \
+ typedef lambda< \
+ typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i_)) \
+ , Tag \
+ , false_ \
+ > BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
+ /**/
+
+# define AUX778076_IS_LE_TYPEDEF(unused, i_, unused2) \
+ typedef typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::is_le \
+ BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)); \
+ /**/
+
+# define AUX778076_IS_LAMBDA_EXPR(unused, i_, unused2) \
+ BOOST_PP_COMMA_IF(i_) \
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)))::value \
+ /**/
+
+# define AUX778076_LAMBDA_RESULT(unused, i_, unused2) \
+ , typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::type \
+ /**/
+
+template<> struct lambda_impl< int_<i_> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, F)
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
+
+ typedef aux::lambda_or<
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
+ > is_le;
+
+ typedef BOOST_PP_CAT(bind,i_)<
+ typename F::rebind
+ BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_RESULT, unused)
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+# undef AUX778076_LAMBDA_RESULT
+# undef AUX778076_IS_LAMBDA_EXPR
+# undef AUX778076_IS_LE_TYPEDEF
+# undef AUX778076_LAMBDA_TYPEDEF
+
+#undef i_
+
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/lambda_support.hpp b/3rdParty/Boost/boost/mpl/aux_/lambda_support.hpp
new file mode 100644
index 0000000..fa000d8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/lambda_support.hpp
@@ -0,0 +1,169 @@
+
+#ifndef BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: lambda_support.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/lambda.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) /**/
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/
+
+#else
+
+# include <boost/mpl/int_fwd.hpp>
+# include <boost/mpl/aux_/yes_no.hpp>
+# include <boost/mpl/aux_/na_fwd.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# include <boost/preprocessor/tuple/to_list.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC(R,typedef_,i,param) \
+ typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \
+ /**/
+
+// agurt, 07/mar/03: restore an old revision for the sake of SGI MIPSpro C++
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+ typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
+ BOOST_PP_LIST_FOR_EACH_I_R( \
+ 1 \
+ , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+ , typedef \
+ , BOOST_PP_TUPLE_TO_LIST(i,params) \
+ ) \
+ struct rebind \
+ { \
+ template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+ : name< BOOST_MPL_PP_PARAMS(i,U) > \
+ { \
+ }; \
+ }; \
+ /**/
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+ /**/
+
+#elif BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+// agurt, 18/jan/03: old EDG-based compilers actually enforce 11.4 para 9
+// (in strict mode), so we have to provide an alternative to the
+// MSVC-optimized implementation
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+ typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
+ BOOST_PP_LIST_FOR_EACH_I_R( \
+ 1 \
+ , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+ , typedef \
+ , BOOST_PP_TUPLE_TO_LIST(i,params) \
+ ) \
+ struct rebind; \
+/**/
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+}; \
+template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+struct name<BOOST_MPL_PP_PARAMS(i,T)>::rebind \
+{ \
+ template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+ : name< BOOST_MPL_PP_PARAMS(i,U) > \
+ { \
+ }; \
+/**/
+
+#else // __EDG_VERSION__
+
+namespace boost { namespace mpl { namespace aux {
+template< typename T > struct has_rebind_tag;
+}}}
+
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+ typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
+ BOOST_PP_LIST_FOR_EACH_I_R( \
+ 1 \
+ , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+ , typedef \
+ , BOOST_PP_TUPLE_TO_LIST(i,params) \
+ ) \
+ friend class BOOST_PP_CAT(name,_rebind); \
+ typedef BOOST_PP_CAT(name,_rebind) rebind; \
+/**/
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+::boost::mpl::aux::yes_tag operator|( \
+ ::boost::mpl::aux::has_rebind_tag<int> \
+ , name<BOOST_MPL_PP_PARAMS(i,T)>* \
+ ); \
+::boost::mpl::aux::no_tag operator|( \
+ ::boost::mpl::aux::has_rebind_tag<int> \
+ , name< BOOST_MPL_PP_ENUM(i,::boost::mpl::na) >* \
+ ); \
+/**/
+#elif !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+::boost::mpl::aux::yes_tag operator|( \
+ ::boost::mpl::aux::has_rebind_tag<int> \
+ , ::boost::mpl::aux::has_rebind_tag< name<BOOST_MPL_PP_PARAMS(i,T)> >* \
+ ); \
+/**/
+#else
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/
+#endif
+
+# if !defined(__BORLANDC__)
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+}; \
+BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+class BOOST_PP_CAT(name,_rebind) \
+{ \
+ public: \
+ template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+ : name< BOOST_MPL_PP_PARAMS(i,U) > \
+ { \
+ }; \
+/**/
+# else
+# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+}; \
+BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+class BOOST_PP_CAT(name,_rebind) \
+{ \
+ public: \
+ template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+ { \
+ typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \
+ }; \
+/**/
+# endif // __BORLANDC__
+
+#endif // __EDG_VERSION__
+
+#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+#endif // BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/largest_int.hpp b/3rdParty/Boost/boost/mpl/aux_/largest_int.hpp
new file mode 100644
index 0000000..89e987a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/largest_int.hpp
@@ -0,0 +1,63 @@
+
+#ifndef BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
+#define BOOST_MPL_AUX_LARGEST_INT_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: largest_int.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/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/aux_/config/integral.hpp>
+#include <boost/config.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename T > struct integral_rank;
+
+template<> struct integral_rank<bool> : int_<1> {};
+template<> struct integral_rank<signed char> : int_<2> {};
+template<> struct integral_rank<char> : int_<3> {};
+template<> struct integral_rank<unsigned char> : int_<4> {};
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+template<> struct integral_rank<wchar_t> : int_<5> {};
+#endif
+template<> struct integral_rank<short> : int_<6> {};
+template<> struct integral_rank<unsigned short> : int_<7> {};
+template<> struct integral_rank<int> : int_<8> {};
+template<> struct integral_rank<unsigned int> : int_<9> {};
+template<> struct integral_rank<long> : int_<10> {};
+template<> struct integral_rank<unsigned long> : int_<11> {};
+
+#if defined(BOOST_HAS_LONG_LONG)
+template<> struct integral_rank<long_long_type> : int_<12> {};
+template<> struct integral_rank<ulong_long_type>: int_<13> {};
+#endif
+
+template< typename T1, typename T2 > struct largest_int
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+ : if_c<
+ ( integral_rank<T1>::value >= integral_rank<T2>::value )
+ , T1
+ , T2
+ >
+{
+#else
+{
+ enum { rank1 = integral_rank<T1>::value };
+ enum { rank2 = integral_rank<T2>::value };
+ typedef typename if_c< (rank1 >= rank2),T1,T2 >::type type;
+#endif
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/logical_op.hpp b/3rdParty/Boost/boost/mpl/aux_/logical_op.hpp
new file mode 100644
index 0000000..e4689c9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/logical_op.hpp
@@ -0,0 +1,165 @@
+
+// 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: logical_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/nested_type_wknd.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+#endif
+
+#include <boost/mpl/limits/arity.hpp>
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/preprocessor/ext_params.hpp>
+#include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
+#include <boost/mpl/aux_/preprocessor/enum.hpp>
+#include <boost/mpl/aux_/preprocessor/sub.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+# define AUX778076_PARAMS(param, sub) \
+ BOOST_MPL_PP_PARAMS( \
+ BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, sub) \
+ , param \
+ ) \
+ /**/
+
+# define AUX778076_SHIFTED_PARAMS(param, sub) \
+ BOOST_MPL_PP_EXT_PARAMS( \
+ 2, BOOST_MPL_PP_SUB(BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY), sub) \
+ , param \
+ ) \
+ /**/
+
+# define AUX778076_SPEC_PARAMS(param) \
+ BOOST_MPL_PP_ENUM( \
+ BOOST_PP_DEC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
+ , param \
+ ) \
+ /**/
+
+namespace aux {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< bool C_, AUX778076_PARAMS(typename T, 1) >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
+ : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
+{
+};
+
+template< AUX778076_PARAMS(typename T, 1) >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)< AUX778076_OP_VALUE2,AUX778076_PARAMS(T, 1) >
+ : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , AUX778076_SHIFTED_PARAMS(T, 1)
+ , BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+ >
+{
+};
+
+template<>
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+ AUX778076_OP_VALUE2
+ , AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
+ >
+ : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+{
+};
+
+#else
+
+template< bool C_ > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
+{
+ template< AUX778076_PARAMS(typename T, 1) > struct result_
+ : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
+ {
+ };
+};
+
+template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
+{
+ template< AUX778076_PARAMS(typename T, 1) > struct result_
+ : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< AUX778076_SHIFTED_PARAMS(T,1),BOOST_PP_CAT(AUX778076_OP_VALUE2,_) >
+ {
+ };
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+ template<> struct result_<AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))>
+ : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+ {
+ };
+};
+#else
+};
+
+template<>
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
+ ::result_< AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_)) >
+ : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+{
+};
+#endif // BOOST_MSVC == 1300
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename T, BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
+ >
+struct AUX778076_OP_NAME
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , AUX778076_SHIFTED_PARAMS(T,0)
+ >
+#else
+ : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< AUX778076_SHIFTED_PARAMS(T,0) >
+#endif
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+ , AUX778076_OP_NAME
+ , (AUX778076_PARAMS(T, 0))
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+ , AUX778076_OP_NAME
+ )
+
+}}
+
+#undef AUX778076_SPEC_PARAMS
+#undef AUX778076_SHIFTED_PARAMS
+#undef AUX778076_PARAMS
+#undef AUX778076_OP_NAME
+#undef AUX778076_OP_VALUE1
+#undef AUX778076_OP_VALUE2
diff --git a/3rdParty/Boost/boost/mpl/aux_/msvc_dtw.hpp b/3rdParty/Boost/boost/mpl/aux_/msvc_dtw.hpp
new file mode 100644
index 0000000..222c477
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/msvc_dtw.hpp
@@ -0,0 +1,68 @@
+
+// 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: msvc_dtw.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+
+// local macros, #undef-ined at the end of the header
+#define AUX778076_DTW_PARAMS(param) \
+ BOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \
+/**/
+
+#define AUX778076_DTW_ORIGINAL_NAME \
+ AUX778076_MSVC_DTW_ORIGINAL_NAME \
+/**/
+
+// warning: not a well-formed C++
+// workaround for MSVC 6.5's "dependent template typedef bug"
+
+template< typename F>
+struct AUX778076_MSVC_DTW_NAME
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+#if AUX778076_MSVC_DTW_ARITY > 0
+ template< AUX778076_DTW_PARAMS(typename P) > struct AUX778076_DTW_ORIGINAL_NAME
+ {
+ typedef int type;
+ };
+ };
+
+ template< AUX778076_DTW_PARAMS(typename T) > struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template AUX778076_DTW_ORIGINAL_NAME< AUX778076_DTW_PARAMS(T) >
+ {
+ };
+#else
+ template< typename P = int > struct AUX778076_DTW_ORIGINAL_NAME
+ {
+ typedef int type;
+ };
+ };
+
+ template< typename T = int > struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template AUX778076_DTW_ORIGINAL_NAME<>
+ {
+ };
+#endif
+};
+
+#undef AUX778076_DTW_ORIGINAL_NAME
+#undef AUX778076_DTW_PARAMS
+
+#undef AUX778076_MSVC_DTW_NAME
+#undef AUX778076_MSVC_DTW_ORIGINAL_NAME
+#undef AUX778076_MSVC_DTW_ARITY
diff --git a/3rdParty/Boost/boost/mpl/aux_/msvc_eti_base.hpp b/3rdParty/Boost/boost/mpl/aux_/msvc_eti_base.hpp
new file mode 100644
index 0000000..2c1ada5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/msvc_eti_base.hpp
@@ -0,0 +1,77 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: msvc_eti_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_/is_msvc_eti_arg.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+#include <boost/mpl/aux_/config/gcc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+
+template< bool > struct msvc_eti_base_impl
+{
+ template< typename T > struct result_
+ : T
+ {
+ typedef T type;
+ };
+};
+
+template<> struct msvc_eti_base_impl<true>
+{
+ template< typename T > struct result_
+ {
+ typedef result_ type;
+ typedef result_ first;
+ typedef result_ second;
+ typedef result_ tag;
+ enum { value = 0 };
+ };
+};
+
+template< typename T > struct msvc_eti_base
+ : msvc_eti_base_impl< is_msvc_eti_arg<T>::value >
+ ::template result_<T>
+{
+};
+
+#else // !BOOST_MPL_CFG_MSVC_70_ETI_BUG
+
+template< typename T > struct msvc_eti_base
+ : T
+{
+#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
+ msvc_eti_base();
+#endif
+ typedef T type;
+};
+
+#endif
+
+template<> struct msvc_eti_base<int>
+{
+ typedef msvc_eti_base type;
+ typedef msvc_eti_base first;
+ typedef msvc_eti_base second;
+ typedef msvc_eti_base tag;
+ enum { value = 0 };
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/msvc_is_class.hpp b/3rdParty/Boost/boost/mpl/aux_/msvc_is_class.hpp
new file mode 100644
index 0000000..e0ccb38
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/msvc_is_class.hpp
@@ -0,0 +1,58 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_is_class.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/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/type_wrapper.hpp>
+#include <boost/mpl/aux_/yes_no.hpp>
+
+#include <boost/type_traits/is_reference.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename T > struct is_class_helper
+{
+ typedef int (T::* type)();
+};
+
+// MSVC 6.x-specific lightweight 'is_class' implementation;
+// Distinguishing feature: does not instantiate the type being tested.
+template< typename T >
+struct msvc_is_class_impl
+{
+ template< typename U>
+ static yes_tag test(type_wrapper<U>*, /*typename*/ is_class_helper<U>::type = 0);
+ static no_tag test(void const volatile*, ...);
+
+ enum { value = sizeof(test((type_wrapper<T>*)0)) == sizeof(yes_tag) };
+ typedef bool_<value> type;
+};
+
+// agurt, 17/sep/04: have to check for 'is_reference' upfront to avoid ICEs in
+// complex metaprograms
+template< typename T >
+struct msvc_is_class
+ : if_<
+ is_reference<T>
+ , false_
+ , msvc_is_class_impl<T>
+ >::type
+{
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/msvc_never_true.hpp b/3rdParty/Boost/boost/mpl/aux_/msvc_never_true.hpp
new file mode 100644
index 0000000..93da72e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/msvc_never_true.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_NEVER_TRUE_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: msvc_never_true.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename T >
+struct msvc_never_true
+{
+ enum { value = false };
+};
+
+}}}
+
+#endif // BOOST_MSVC
+
+#endif // BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/msvc_type.hpp b/3rdParty/Boost/boost/mpl/aux_/msvc_type.hpp
new file mode 100644
index 0000000..ab662db
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/msvc_type.hpp
@@ -0,0 +1,62 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: msvc_type.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/eti.hpp>
+#include <boost/mpl/aux_/is_msvc_eti_arg.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+
+template< bool > struct msvc_type_impl
+{
+ template< typename T > struct result_
+ {
+ typedef typename T::type type;
+ };
+};
+
+template<> struct msvc_type_impl<true>
+{
+ template< typename T > struct result_
+ {
+ typedef result_ type;
+ };
+};
+
+template< typename T > struct msvc_type
+ : msvc_type_impl< is_msvc_eti_arg<T>::value >
+ ::template result_<T>
+{
+};
+
+#else // BOOST_MPL_CFG_MSVC_70_ETI_BUG
+
+template< typename T > struct msvc_type
+{
+ typedef typename T::type type;
+};
+
+template<> struct msvc_type<int>
+{
+ typedef int type;
+};
+
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/na.hpp b/3rdParty/Boost/boost/mpl/aux_/na.hpp
new file mode 100644
index 0000000..314250c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/na.hpp
@@ -0,0 +1,95 @@
+
+#ifndef BOOST_MPL_AUX_NA_HPP_INCLUDED
+#define BOOST_MPL_AUX_NA_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: na.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/bool.hpp>
+#include <boost/mpl/aux_/na_fwd.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+template< typename T >
+struct is_na
+ : false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using false_::value;
+#endif
+};
+
+template<>
+struct is_na<na>
+ : true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using true_::value;
+#endif
+};
+
+template< typename T >
+struct is_not_na
+ : true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using true_::value;
+#endif
+};
+
+template<>
+struct is_not_na<na>
+ : false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using false_::value;
+#endif
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+template< typename T, typename U > struct if_na
+{
+ typedef T type;
+};
+
+template< typename U > struct if_na<na,U>
+{
+ typedef U type;
+};
+#else
+template< typename T > struct if_na_impl
+{
+ template< typename U > struct apply
+ {
+ typedef T type;
+ };
+};
+
+template<> struct if_na_impl<na>
+{
+ template< typename U > struct apply
+ {
+ typedef U type;
+ };
+};
+
+template< typename T, typename U > struct if_na
+ : if_na_impl<T>::template apply<U>
+{
+};
+#endif
+
+}}
+
+#endif // BOOST_MPL_AUX_NA_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/na_assert.hpp b/3rdParty/Boost/boost/mpl/aux_/na_assert.hpp
new file mode 100644
index 0000000..ece7f4c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/na_assert.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+#define BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: na_assert.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.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if !BOOST_WORKAROUND(_MSC_FULL_VER, <= 140050601) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
+# include <boost/mpl/assert.hpp>
+# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
+ BOOST_MPL_ASSERT_NOT((boost::mpl::is_na<type>)) \
+/**/
+#else
+# include <boost/static_assert.hpp>
+# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
+ BOOST_STATIC_ASSERT(!boost::mpl::is_na<x>::value) \
+/**/
+#endif
+
+#endif // BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/na_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/na_fwd.hpp
new file mode 100644
index 0000000..dd64fc1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/na_fwd.hpp
@@ -0,0 +1,31 @@
+
+#ifndef BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
+#define BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: na_fwd.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_/adl_barrier.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+// n.a. == not available
+struct na
+{
+ typedef na type;
+ enum { value = 0 };
+};
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(na)
+
+#endif // BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/na_spec.hpp b/3rdParty/Boost/boost/mpl/aux_/na_spec.hpp
new file mode 100644
index 0000000..92b2e5a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/na_spec.hpp
@@ -0,0 +1,175 @@
+
+#ifndef BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: na_spec.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/lambda_fwd.hpp>
+# include <boost/mpl/int.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/arity.hpp>
+# include <boost/mpl/aux_/template_arity_fwd.hpp>
+#endif
+
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/preprocessor/enum.hpp>
+#include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
+#include <boost/mpl/aux_/lambda_arity_param.hpp>
+#include <boost/mpl/aux_/config/dtp.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/config/ttp.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+#include <boost/mpl/aux_/config/overload_resolution.hpp>
+
+
+#define BOOST_MPL_AUX_NA_PARAMS(i) \
+ BOOST_MPL_PP_ENUM(i, na) \
+/**/
+
+#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
+namespace aux { \
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > \
+struct arity< \
+ name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+ , N \
+ > \
+ : int_< BOOST_MPL_LIMIT_METAFUNCTION_ARITY > \
+{ \
+}; \
+} \
+/**/
+#else
+# define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) /**/
+#endif
+
+#define BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
+template<> \
+struct name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+{ \
+ template< \
+ BOOST_MPL_PP_PARAMS(i, typename T) \
+ BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
+ > \
+ struct apply \
+ : name< BOOST_MPL_PP_PARAMS(i, T) > \
+ { \
+ }; \
+}; \
+/**/
+
+#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+# define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+template<> \
+struct lambda< \
+ name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+ , void_ \
+ , true_ \
+ > \
+{ \
+ typedef false_ is_le; \
+ typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
+}; \
+template<> \
+struct lambda< \
+ name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+ , void_ \
+ , false_ \
+ > \
+{ \
+ typedef false_ is_le; \
+ typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
+}; \
+/**/
+#else
+# define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+template< typename Tag > \
+struct lambda< \
+ name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+ , Tag \
+ BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
+ > \
+{ \
+ typedef false_ is_le; \
+ typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > result_; \
+ typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
+}; \
+/**/
+#endif
+
+#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+ || defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+ && defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
+# define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
+namespace aux { \
+template< BOOST_MPL_PP_PARAMS(j, typename T) > \
+struct template_arity< \
+ name< BOOST_MPL_PP_PARAMS(j, T) > \
+ > \
+ : int_<j> \
+{ \
+}; \
+\
+template<> \
+struct template_arity< \
+ name< BOOST_MPL_PP_ENUM(i, na) > \
+ > \
+ : int_<-1> \
+{ \
+}; \
+} \
+/**/
+#else
+# define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) /**/
+#endif
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+# define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
+template<> \
+struct name< BOOST_MPL_PP_ENUM(i, int) > \
+{ \
+ typedef int type; \
+ enum { value = 0 }; \
+}; \
+/**/
+#else
+# define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) /**/
+#endif
+
+#define BOOST_MPL_AUX_NA_PARAM(param) param = na
+
+#define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
+BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, i, name) \
+/**/
+
+#define BOOST_MPL_AUX_NA_SPEC(i, name) \
+BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
+BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
+/**/
+
+#define BOOST_MPL_AUX_NA_SPEC2(i, j, name) \
+BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
+BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
+/**/
+
+
+#endif // BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/nested_type_wknd.hpp b/3rdParty/Boost/boost/mpl/aux_/nested_type_wknd.hpp
new file mode 100644
index 0000000..cee3831
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/nested_type_wknd.hpp
@@ -0,0 +1,48 @@
+
+#ifndef BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
+#define BOOST_MPL_AUX_NESTED_TYPE_WKND_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: nested_type_wknd.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/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530)) \
+ || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+
+namespace boost { namespace mpl { namespace aux {
+template< typename T > struct nested_type_wknd
+ : T::type
+{
+};
+}}}
+
+#if BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+# define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
+ aux::nested_type_wknd<T> \
+/**/
+#else
+# define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
+ ::boost::mpl::aux::nested_type_wknd<T> \
+/**/
+#endif
+
+#else // !BOOST_MPL_CFG_GCC et al.
+
+# define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) T::type
+
+#endif
+
+#endif // BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/nttp_decl.hpp b/3rdParty/Boost/boost/mpl/aux_/nttp_decl.hpp
new file mode 100644
index 0000000..0fa254d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/nttp_decl.hpp
@@ -0,0 +1,35 @@
+
+#ifndef BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
+#define BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: nttp_decl.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/nttp.hpp>
+
+#if defined(BOOST_MPL_CFG_NTTP_BUG)
+
+typedef bool _mpl_nttp_bool;
+typedef int _mpl_nttp_int;
+typedef unsigned _mpl_nttp_unsigned;
+typedef long _mpl_nttp_long;
+
+# include <boost/preprocessor/cat.hpp>
+# define BOOST_MPL_AUX_NTTP_DECL(T, x) BOOST_PP_CAT(_mpl_nttp_,T) x /**/
+
+#else
+
+# define BOOST_MPL_AUX_NTTP_DECL(T, x) T x /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/numeric_cast_utils.hpp b/3rdParty/Boost/boost/mpl/aux_/numeric_cast_utils.hpp
new file mode 100644
index 0000000..cc5ea91
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/numeric_cast_utils.hpp
@@ -0,0 +1,77 @@
+
+#ifndef BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
+#define BOOST_MPL_AUX_NUMERIC_CAST_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: numeric_cast_utils.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/numeric_cast.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/aux_/config/forwarding.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ >
+struct cast1st_impl
+{
+ template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+ : apply_wrap2<
+ F
+ , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
+ , N2
+ >
+ {
+#else
+ {
+ typedef typename apply_wrap2<
+ F
+ , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
+ , N2
+ >::type type;
+#endif
+ };
+};
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ >
+struct cast2nd_impl
+{
+ template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+ : apply_wrap2<
+ F
+ , N1
+ , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
+ >
+ {
+#else
+ {
+ typedef typename apply_wrap2<
+ F
+ , N1
+ , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
+ >::type type;
+#endif
+ };
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/numeric_op.hpp b/3rdParty/Boost/boost/mpl/aux_/numeric_op.hpp
new file mode 100644
index 0000000..2b0d6eb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/numeric_op.hpp
@@ -0,0 +1,315 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+// 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: numeric_op.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/numeric_cast.hpp>
+# include <boost/mpl/apply_wrap.hpp>
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/tag.hpp>
+# include <boost/mpl/aux_/numeric_cast_utils.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+# include <boost/mpl/aux_/msvc_eti_base.hpp>
+# include <boost/mpl/aux_/value_wknd.hpp>
+# include <boost/mpl/aux_/config/eti.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+#endif
+
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+#if defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ || defined(BOOST_MPL_PREPROCESSING_MODE)
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
+# include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
+# include <boost/mpl/aux_/preprocessor/repeat.hpp>
+# include <boost/mpl/aux_/preprocessor/ext_params.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/preprocessor/add.hpp>
+# include <boost/mpl/aux_/preprocessor/sub.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/eti.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# include <boost/preprocessor/dec.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+
+#if !defined(AUX778076_OP_ARITY)
+# define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#endif
+
+#if !defined(AUX778076_OP_IMPL_NAME)
+# define AUX778076_OP_IMPL_NAME BOOST_PP_CAT(AUX778076_OP_PREFIX,_impl)
+#endif
+
+#if !defined(AUX778076_OP_TAG_NAME)
+# define AUX778076_OP_TAG_NAME BOOST_PP_CAT(AUX778076_OP_PREFIX,_tag)
+#endif
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct AUX778076_OP_IMPL_NAME
+ : if_c<
+ ( tag1_ > tag2_ )
+#else
+ >
+struct AUX778076_OP_IMPL_NAME
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+#endif
+ , aux::cast2nd_impl< AUX778076_OP_IMPL_NAME<Tag1,Tag1>,Tag1,Tag2 >
+ , aux::cast1st_impl< AUX778076_OP_IMPL_NAME<Tag2,Tag2>,Tag1,Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct AUX778076_OP_IMPL_NAME<na,na>
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+template< typename Tag > struct AUX778076_OP_IMPL_NAME<na,Tag>
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct AUX778076_OP_IMPL_NAME<Tag,na>
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+#else
+template<> struct AUX778076_OP_IMPL_NAME<na,integral_c_tag>
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct AUX778076_OP_IMPL_NAME<integral_c_tag,na>
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+#endif
+
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
+template< typename T > struct AUX778076_OP_TAG_NAME
+ : tag<T,na>
+{
+};
+#else
+template< typename T > struct AUX778076_OP_TAG_NAME
+{
+ typedef typename T::tag type;
+};
+#endif
+
+
+#if AUX778076_OP_ARITY != 2
+
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+# define AUX778076_OP_RIGHT_OPERAND(unused, i, N) , BOOST_PP_CAT(N, BOOST_MPL_PP_ADD(i, 2))>
+# define AUX778076_OP_N_CALLS(i, N) \
+ BOOST_MPL_PP_REPEAT( BOOST_PP_DEC(i), BOOST_MPL_PP_REPEAT_IDENTITY_FUNC, AUX778076_OP_NAME< ) \
+ N1 BOOST_MPL_PP_REPEAT( BOOST_MPL_PP_SUB(i, 1), AUX778076_OP_RIGHT_OPERAND, N ) \
+/**/
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename N, na)
+ >
+struct AUX778076_OP_NAME
+ : AUX778076_OP_N_CALLS(AUX778076_OP_ARITY, N)
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ AUX778076_OP_ARITY
+ , AUX778076_OP_NAME
+ , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+ )
+};
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,( BOOST_PP_DEC(AUX778076_OP_ARITY), 2, <boost/mpl/aux_/numeric_op.hpp> ))
+#include BOOST_PP_ITERATE()
+
+# undef AUX778076_OP_N_CALLS
+# undef AUX778076_OP_RIGHT_OPERAND
+
+# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+/// forward declaration
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,2);
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename N, na)
+ >
+struct AUX778076_OP_NAME
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+ : aux::msvc_eti_base< typename if_<
+#else
+ : if_<
+#endif
+ is_na<N3>
+ , BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
+ , AUX778076_OP_NAME<
+ BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
+ , BOOST_MPL_PP_EXT_PARAMS(3, BOOST_PP_INC(AUX778076_OP_ARITY), N)
+ >
+ >::type
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+ >
+#endif
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ AUX778076_OP_ARITY
+ , AUX778076_OP_NAME
+ , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,2)
+
+#endif
+
+#else // AUX778076_OP_ARITY == 2
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct AUX778076_OP_NAME
+
+#endif
+
+#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+ : AUX778076_OP_IMPL_NAME<
+ typename AUX778076_OP_TAG_NAME<N1>::type
+ , typename AUX778076_OP_TAG_NAME<N2>::type
+ >::template apply<N1,N2>::type
+#else
+ : aux::msvc_eti_base< typename apply_wrap2<
+ AUX778076_OP_IMPL_NAME<
+ typename AUX778076_OP_TAG_NAME<N1>::type
+ , typename AUX778076_OP_TAG_NAME<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+#endif
+{
+#if AUX778076_OP_ARITY != 2
+
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ AUX778076_OP_ARITY
+ , AUX778076_OP_NAME
+ , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(2, N, na) )
+ )
+# else
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, BOOST_PP_CAT(AUX778076_OP_NAME,2), (N1, N2))
+# endif
+
+#else
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, AUX778076_OP_NAME, (N1, N2))
+#endif
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, AUX778076_OP_ARITY, AUX778076_OP_NAME)
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+
+# define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ BOOST_MPL_PP_PARAMS(i_, typename N)
+ >
+struct AUX778076_OP_NAME<BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na)>
+#if i_ != 2
+ : AUX778076_OP_N_CALLS(i_, N)
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ AUX778076_OP_ARITY
+ , AUX778076_OP_NAME
+ , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na) )
+ )
+};
+#endif
+
+# undef i_
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp
new file mode 100644
index 0000000..5cb50dc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp
new file mode 100644
index 0000000..9654ee3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/and.hpp
new file mode 100644
index 0000000..f345689
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply.hpp
new file mode 100644
index 0000000..bce7c2c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp
new file mode 100644
index 0000000..1ba706f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp
new file mode 100644
index 0000000..45b75c7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp
@@ -0,0 +1,461 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ int N, typename F
+ >
+struct apply_wrap_impl0;
+
+template< typename F, bool F_has_apply >
+struct apply_wrap_impl0_bcb {
+ typedef typename F::template apply<na> type;
+};
+
+template< typename F >
+struct apply_wrap_impl0_bcb< F,true > {
+ typedef typename F::apply type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 0
+ , F
+
+ >
+{
+ typedef apply_wrap_impl0_bcb< F, aux::has_apply<F>::value >::type type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 1
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 2
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 3
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 4
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 5
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap0
+ : apply_wrap_impl0<
+ ::boost::mpl::aux::arity< F,0 >::value
+ , F
+
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1
+ >
+struct apply_wrap_impl1;
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 1
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 2
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 3
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 4
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 5
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap1
+ : apply_wrap_impl1<
+ ::boost::mpl::aux::arity< F,1 >::value
+ , F
+ , T1
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 2
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 3
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 4
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 5
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap2
+ : apply_wrap_impl2<
+ ::boost::mpl::aux::arity< F,2 >::value
+ , F
+ , T1, T2
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 3
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 4
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 5
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap3
+ : apply_wrap_impl3<
+ ::boost::mpl::aux::arity< F,3 >::value
+ , F
+ , T1, T2, T3
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 4
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 5
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap4
+ : apply_wrap_impl4<
+ ::boost::mpl::aux::arity< F,4 >::value
+ , F
+ , T1, T2, T3, T4
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5<
+ 5
+ , F
+ , T1, T2, T3, T4, T5
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4, T5
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap5
+ : apply_wrap_impl5<
+ ::boost::mpl::aux::arity< F,5 >::value
+ , F
+ , T1, T2, T3, T4, T5
+ >::type
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/arg.hpp
new file mode 100644
index 0000000..3ac4340
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/arg.hpp
@@ -0,0 +1,117 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
new file mode 100644
index 0000000..74b0029
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
@@ -0,0 +1,300 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind.hpp
new file mode 100644
index 0000000..e769a0c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind.hpp
@@ -0,0 +1,397 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp
new file mode 100644
index 0000000..962b5c9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitand.hpp
new file mode 100644
index 0000000..527b689
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitor.hpp
new file mode 100644
index 0000000..3f0d5ca
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp
new file mode 100644
index 0000000..06996c0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/deque.hpp
new file mode 100644
index 0000000..06505c9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/divides.hpp
new file mode 100644
index 0000000..6b4178a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/divides.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp
new file mode 100644
index 0000000..901a93c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp
new file mode 100644
index 0000000..45ab4e7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
new file mode 100644
index 0000000..8b2bf59
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Arity
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ , typename Arity
+ >
+struct lambda<
+ lambda< F,Tag1,Arity >
+ , Tag2
+ , int_<3>
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+ typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+ typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater.hpp
new file mode 100644
index 0000000..3d1c3dc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
new file mode 100644
index 0000000..fb01186
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/inherit.hpp
new file mode 100644
index 0000000..6adcc01
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/inherit.hpp
@@ -0,0 +1,139 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1, typename T2, typename T3, typename T4, typename T5
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b767e95
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// *Preprocessed* version of the main "iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp
new file mode 100644
index 0000000..1dd216c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
new file mode 100644
index 0000000..75b30ce
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less.hpp
new file mode 100644
index 0000000..0b6ce1d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp
new file mode 100644
index 0000000..0010e08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list.hpp
new file mode 100644
index 0000000..cbd58ac
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list_c.hpp
new file mode 100644
index 0000000..495c3f7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/map.hpp
new file mode 100644
index 0000000..80ef156
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/minus.hpp
new file mode 100644
index 0000000..cfddc15
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/minus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/modulus.hpp
new file mode 100644
index 0000000..eb5eff0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
new file mode 100644
index 0000000..68356ee
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/or.hpp
new file mode 100644
index 0000000..ff7ce9f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp
new file mode 100644
index 0000000..b306bbb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// *Preprocessed* version of the main "placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/plus.hpp
new file mode 100644
index 0000000..82539ab
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/plus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/quote.hpp
new file mode 100644
index 0000000..677a3f9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/quote.hpp
@@ -0,0 +1,119 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+
+{
+ typedef typename T::type type;
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+ typedef T type;
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ {
+ typedef typename quote_impl<
+ F<U1>
+ , aux::has_type< F<U1> >::value
+ >::type type;
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ {
+ typedef typename quote_impl<
+ F< U1,U2 >
+ , aux::has_type< F< U1,U2 > >::value
+ >::type type;
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ {
+ typedef typename quote_impl<
+ F< U1,U2,U3 >
+ , aux::has_type< F< U1,U2,U3 > >::value
+ >::type type;
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ {
+ typedef typename quote_impl<
+ F< U1,U2,U3,U4 >
+ , aux::has_type< F< U1,U2,U3,U4 > >::value
+ >::type type;
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ {
+ typedef typename quote_impl<
+ F< U1,U2,U3,U4,U5 >
+ , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+ >::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp
new file mode 100644
index 0000000..372f0d2
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_fold_null_step< Last,State >
+ , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step
+{
+ typedef reverse_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+ : reverse_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..44aadf7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_iter_fold_null_step< Last,State >
+ , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step
+{
+ typedef reverse_iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+ : reverse_iter_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set.hpp
new file mode 100644
index 0000000..ace3a4f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set_c.hpp
new file mode 100644
index 0000000..4e6993c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp
new file mode 100644
index 0000000..6d19e94
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp
new file mode 100644
index 0000000..dd31d97
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp
new file mode 100644
index 0000000..b24a0a7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/times.hpp
new file mode 100644
index 0000000..ab100f1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/times.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
new file mode 100644
index 0000000..f391dc1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+ {
+ typedef typename aux::unpack_args_impl<
+ size<Args>::value
+ , F
+ , Args
+ >::type type;
+
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector.hpp
new file mode 100644
index 0000000..803e217
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp
new file mode 100644
index 0000000..643b7fd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/and.hpp
new file mode 100644
index 0000000..010ad1f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply.hpp
new file mode 100644
index 0000000..e08eacc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp
new file mode 100644
index 0000000..b2ed5d5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp
new file mode 100644
index 0000000..2ffe709
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp
@@ -0,0 +1,456 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ int N, typename F
+ >
+struct apply_wrap_impl0;
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 0
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 1
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 2
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 3
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 4
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 5
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap0
+ : apply_wrap_impl0<
+ ::boost::mpl::aux::arity< F,0 >::value
+ , F
+
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1
+ >
+struct apply_wrap_impl1;
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 1
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 2
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 3
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 4
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 5
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap1
+ : apply_wrap_impl1<
+ ::boost::mpl::aux::arity< F,1 >::value
+ , F
+ , T1
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 2
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 3
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 4
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 5
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap2
+ : apply_wrap_impl2<
+ ::boost::mpl::aux::arity< F,2 >::value
+ , F
+ , T1, T2
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 3
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 4
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 5
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap3
+ : apply_wrap_impl3<
+ ::boost::mpl::aux::arity< F,3 >::value
+ , F
+ , T1, T2, T3
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 4
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 5
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap4
+ : apply_wrap_impl4<
+ ::boost::mpl::aux::arity< F,4 >::value
+ , F
+ , T1, T2, T3, T4
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5<
+ 5
+ , F
+ , T1, T2, T3, T4, T5
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4, T5
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap5
+ : apply_wrap_impl5<
+ ::boost::mpl::aux::arity< F,5 >::value
+ , F
+ , T1, T2, T3, T4, T5
+ >::type
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
new file mode 100644
index 0000000..a29daa0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
@@ -0,0 +1,306 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind.hpp
new file mode 100644
index 0000000..34b1b5c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind.hpp
@@ -0,0 +1,403 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp
new file mode 100644
index 0000000..022cba3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp
new file mode 100644
index 0000000..0bbf54e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp
new file mode 100644
index 0000000..55b31cb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
new file mode 100644
index 0000000..ec19391
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/deque.hpp
new file mode 100644
index 0000000..de67398
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/divides.hpp
new file mode 100644
index 0000000..86f1682
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/divides.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
new file mode 100644
index 0000000..62c9945
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp
new file mode 100644
index 0000000..9e7a293
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
new file mode 100644
index 0000000..e3eef71
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Arity
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ , typename Arity
+ >
+struct lambda<
+ lambda< F,Tag1,Arity >
+ , Tag2
+ , int_<3>
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+ typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+ typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater.hpp
new file mode 100644
index 0000000..14d8e08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
new file mode 100644
index 0000000..2603f91
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp
new file mode 100644
index 0000000..00f31c4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp
new file mode 100644
index 0000000..805790e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less.hpp
new file mode 100644
index 0000000..4fe3cd1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
new file mode 100644
index 0000000..ca2894f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list.hpp
new file mode 100644
index 0000000..4e8ad53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp
new file mode 100644
index 0000000..0b48a7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/map.hpp
new file mode 100644
index 0000000..837e013
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/minus.hpp
new file mode 100644
index 0000000..71d4913
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/minus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp
new file mode 100644
index 0000000..224b349
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
new file mode 100644
index 0000000..98b21b1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/or.hpp
new file mode 100644
index 0000000..31e1aaa
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/plus.hpp
new file mode 100644
index 0000000..a9f6ee7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/plus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/quote.hpp
new file mode 100644
index 0000000..e7a7f00
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/quote.hpp
@@ -0,0 +1,11 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7a07414
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_fold_null_step< Last,State >
+ , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step
+{
+ typedef reverse_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+ : reverse_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..39a4057
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_iter_fold_null_step< Last,State >
+ , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step
+{
+ typedef reverse_iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+ : reverse_iter_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set.hpp
new file mode 100644
index 0000000..5721922
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp
new file mode 100644
index 0000000..cbeb932
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
new file mode 100644
index 0000000..b5b181c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
new file mode 100644
index 0000000..f7a342e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp
new file mode 100644
index 0000000..1164f0f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/times.hpp
new file mode 100644
index 0000000..cb97cc4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/times.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
new file mode 100644
index 0000000..ef7c2b0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+ {
+ typedef typename aux::unpack_args_impl<
+ size<Args>::value
+ , F
+ , Args
+ >::type type;
+
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector.hpp
new file mode 100644
index 0000000..bfa9565
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp
new file mode 100644
index 0000000..0f1560d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp
new file mode 100644
index 0000000..5cb50dc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp
new file mode 100644
index 0000000..9654ee3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
new file mode 100644
index 0000000..f345689
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
new file mode 100644
index 0000000..bce7c2c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp
new file mode 100644
index 0000000..1ba706f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp
new file mode 100644
index 0000000..d88129d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp
@@ -0,0 +1,456 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ int N, typename F
+ >
+struct apply_wrap_impl0;
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 0
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 1
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 2
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 3
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 4
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 5
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap0
+ : apply_wrap_impl0<
+ ::boost::mpl::aux::arity< F,0 >::value
+ , F
+
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1
+ >
+struct apply_wrap_impl1;
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 1
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 2
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 3
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 4
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 5
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap1
+ : apply_wrap_impl1<
+ ::boost::mpl::aux::arity< F,1 >::value
+ , F
+ , T1
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 2
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 3
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 4
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 5
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap2
+ : apply_wrap_impl2<
+ ::boost::mpl::aux::arity< F,2 >::value
+ , F
+ , T1, T2
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 3
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 4
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 5
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap3
+ : apply_wrap_impl3<
+ ::boost::mpl::aux::arity< F,3 >::value
+ , F
+ , T1, T2, T3
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 4
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 5
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap4
+ : apply_wrap_impl4<
+ ::boost::mpl::aux::arity< F,4 >::value
+ , F
+ , T1, T2, T3, T4
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5<
+ 5
+ , F
+ , T1, T2, T3, T4, T5
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4, T5
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap5
+ : apply_wrap_impl5<
+ ::boost::mpl::aux::arity< F,5 >::value
+ , F
+ , T1, T2, T3, T4, T5
+ >::type
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
new file mode 100644
index 0000000..3ac4340
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
@@ -0,0 +1,117 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
new file mode 100644
index 0000000..74b0029
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
@@ -0,0 +1,300 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
new file mode 100644
index 0000000..e769a0c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
@@ -0,0 +1,397 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp
new file mode 100644
index 0000000..962b5c9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
new file mode 100644
index 0000000..527b689
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
new file mode 100644
index 0000000..3f0d5ca
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
new file mode 100644
index 0000000..06996c0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp
new file mode 100644
index 0000000..06505c9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
new file mode 100644
index 0000000..6b4178a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
new file mode 100644
index 0000000..901a93c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp
new file mode 100644
index 0000000..45ab4e7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
new file mode 100644
index 0000000..8b2bf59
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Arity
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ , typename Arity
+ >
+struct lambda<
+ lambda< F,Tag1,Arity >
+ , Tag2
+ , int_<3>
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+ typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+ typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
new file mode 100644
index 0000000..3d1c3dc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
new file mode 100644
index 0000000..fb01186
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
new file mode 100644
index 0000000..6adcc01
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
@@ -0,0 +1,139 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1, typename T2, typename T3, typename T4, typename T5
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b767e95
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// *Preprocessed* version of the main "iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp
new file mode 100644
index 0000000..1dd216c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
new file mode 100644
index 0000000..75b30ce
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
new file mode 100644
index 0000000..0b6ce1d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
new file mode 100644
index 0000000..0010e08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp
new file mode 100644
index 0000000..cbd58ac
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp
new file mode 100644
index 0000000..495c3f7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp
new file mode 100644
index 0000000..80ef156
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
new file mode 100644
index 0000000..cfddc15
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
new file mode 100644
index 0000000..eb5eff0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
new file mode 100644
index 0000000..68356ee
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
new file mode 100644
index 0000000..ff7ce9f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
new file mode 100644
index 0000000..b306bbb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// *Preprocessed* version of the main "placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
new file mode 100644
index 0000000..82539ab
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp
new file mode 100644
index 0000000..7f9d18b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp
new file mode 100644
index 0000000..372f0d2
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_fold_null_step< Last,State >
+ , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step
+{
+ typedef reverse_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+ : reverse_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..44aadf7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_iter_fold_null_step< Last,State >
+ , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step
+{
+ typedef reverse_iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+ : reverse_iter_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp
new file mode 100644
index 0000000..ace3a4f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp
new file mode 100644
index 0000000..4e6993c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
new file mode 100644
index 0000000..6d19e94
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
new file mode 100644
index 0000000..dd31d97
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// *Preprocessed* version of the main "shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp
new file mode 100644
index 0000000..b24a0a7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// *Preprocessed* version of the main "template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
new file mode 100644
index 0000000..ab100f1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
new file mode 100644
index 0000000..f391dc1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+ {
+ typedef typename aux::unpack_args_impl<
+ size<Args>::value
+ , F
+ , Args
+ >::type type;
+
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp
new file mode 100644
index 0000000..803e217
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// *Preprocessed* version of the main "vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp
new file mode 100644
index 0000000..643b7fd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/and.hpp
new file mode 100644
index 0000000..010ad1f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply.hpp
new file mode 100644
index 0000000..e08eacc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp
new file mode 100644
index 0000000..b2ed5d5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp
new file mode 100644
index 0000000..34d51a1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+
+ , typename has_apply_ = typename aux::has_apply<F>::type
+
+ >
+struct apply_wrap0
+
+ : F::template apply< >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+ : F::apply
+{
+};
+
+template<
+ typename F, typename T1
+
+ >
+struct apply_wrap1
+
+ : F::template apply<T1>
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+
+ >
+struct apply_wrap2
+
+ : F::template apply< T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+
+ >
+struct apply_wrap3
+
+ : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+
+ >
+struct apply_wrap4
+
+ : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+
+ >
+struct apply_wrap5
+
+ : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
new file mode 100644
index 0000000..1e73429
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
@@ -0,0 +1,406 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F, int dummy_
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, int dummy_
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1, int dummy_
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, int dummy_
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, int dummy_
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, int dummy_
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, int dummy_
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, int dummy_
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , int dummy_
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , int dummy_
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, int dummy_
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, int dummy_
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind.hpp
new file mode 100644
index 0000000..94bfe1f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind.hpp
@@ -0,0 +1,515 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F, int dummy_
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, int dummy_
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1, int dummy_
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, int dummy_
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, int dummy_
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, int dummy_
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, int dummy_
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, int dummy_
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , int dummy_
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , int dummy_
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, int dummy_
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, int dummy_
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp
new file mode 100644
index 0000000..181bc77
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp
@@ -0,0 +1,53 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, int dummy_ = 0
+ >
+struct bind;
+
+template<
+ typename F, int dummy_ = 0
+ >
+struct bind0;
+
+template<
+ typename F, typename T1, int dummy_ = 0
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2, int dummy_ = 0
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3, int dummy_ = 0
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , int dummy_ = 0
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, int dummy_ = 0
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitand.hpp
new file mode 100644
index 0000000..0bbf54e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitor.hpp
new file mode 100644
index 0000000..55b31cb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp
new file mode 100644
index 0000000..ec19391
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/deque.hpp
new file mode 100644
index 0000000..de67398
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/divides.hpp
new file mode 100644
index 0000000..86f1682
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/divides.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp
new file mode 100644
index 0000000..62c9945
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp
new file mode 100644
index 0000000..9e7a293
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
new file mode 100644
index 0000000..026418c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
@@ -0,0 +1,536 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater.hpp
new file mode 100644
index 0000000..14d8e08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
new file mode 100644
index 0000000..2603f91
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/inherit.hpp
new file mode 100644
index 0000000..00f31c4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp
new file mode 100644
index 0000000..805790e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less.hpp
new file mode 100644
index 0000000..4fe3cd1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp
new file mode 100644
index 0000000..ca2894f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list.hpp
new file mode 100644
index 0000000..4e8ad53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list_c.hpp
new file mode 100644
index 0000000..0b48a7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/map.hpp
new file mode 100644
index 0000000..837e013
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/minus.hpp
new file mode 100644
index 0000000..71d4913
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/minus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/modulus.hpp
new file mode 100644
index 0000000..224b349
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
new file mode 100644
index 0000000..98b21b1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/or.hpp
new file mode 100644
index 0000000..31e1aaa
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/plus.hpp
new file mode 100644
index 0000000..a9f6ee7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/plus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/quote.hpp
new file mode 100644
index 0000000..d7d0420
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/quote.hpp
@@ -0,0 +1,123 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+ : T
+{
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+ typedef T type;
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ : quote_impl<
+ F<U1>
+ , aux::has_type< F<U1> >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ : quote_impl<
+ F< U1,U2 >
+ , aux::has_type< F< U1,U2 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ : quote_impl<
+ F< U1,U2,U3 >
+ , aux::has_type< F< U1,U2,U3 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4 >
+ , aux::has_type< F< U1,U2,U3,U4 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4,U5 >
+ , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+ >
+
+ {
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp
new file mode 100644
index 0000000..c468684
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..658f92a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set.hpp
new file mode 100644
index 0000000..5721922
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set_c.hpp
new file mode 100644
index 0000000..cbeb932
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp
new file mode 100644
index 0000000..b5b181c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp
new file mode 100644
index 0000000..f7a342e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp
new file mode 100644
index 0000000..a23fc23
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/times.hpp
new file mode 100644
index 0000000..cb97cc4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/times.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
new file mode 100644
index 0000000..2194ce9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector.hpp
new file mode 100644
index 0000000..bfa9565
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp
new file mode 100644
index 0000000..0f1560d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/and.hpp
new file mode 100644
index 0000000..010ad1f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply.hpp
new file mode 100644
index 0000000..e08eacc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp
new file mode 100644
index 0000000..b2ed5d5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp
new file mode 100644
index 0000000..34d51a1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+
+ , typename has_apply_ = typename aux::has_apply<F>::type
+
+ >
+struct apply_wrap0
+
+ : F::template apply< >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+ : F::apply
+{
+};
+
+template<
+ typename F, typename T1
+
+ >
+struct apply_wrap1
+
+ : F::template apply<T1>
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+
+ >
+struct apply_wrap2
+
+ : F::template apply< T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+
+ >
+struct apply_wrap3
+
+ : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+
+ >
+struct apply_wrap4
+
+ : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+
+ >
+struct apply_wrap5
+
+ : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
new file mode 100644
index 0000000..b070232
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
@@ -0,0 +1,440 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+template<
+ template< typename T1, typename T2, typename T3 > class F, typename Tag
+ >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< eval_if,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename eval_if<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind.hpp
new file mode 100644
index 0000000..0e9513a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind.hpp
@@ -0,0 +1,561 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+template<
+ template< typename T1, typename T2, typename T3 > class F, typename Tag
+ >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< eval_if,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename eval_if<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp
new file mode 100644
index 0000000..c4a5060
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct bind;
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitand.hpp
new file mode 100644
index 0000000..0bbf54e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitor.hpp
new file mode 100644
index 0000000..55b31cb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp
new file mode 100644
index 0000000..ec19391
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/deque.hpp
new file mode 100644
index 0000000..de67398
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/divides.hpp
new file mode 100644
index 0000000..86f1682
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/divides.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp
new file mode 100644
index 0000000..62c9945
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp
new file mode 100644
index 0000000..9e7a293
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
new file mode 100644
index 0000000..e3eef71
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Arity
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+ , int_<1>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+ , int_<2>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+ , int_<3>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+ , int_<4>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<5>
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+ , int_<6>
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+template<
+ typename F
+ , typename Tag1
+ , typename Tag2
+ , typename Arity
+ >
+struct lambda<
+ lambda< F,Tag1,Arity >
+ , Tag2
+ , int_<3>
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+ typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+ typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater.hpp
new file mode 100644
index 0000000..14d8e08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
new file mode 100644
index 0000000..2603f91
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/inherit.hpp
new file mode 100644
index 0000000..00f31c4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp
new file mode 100644
index 0000000..805790e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less.hpp
new file mode 100644
index 0000000..4fe3cd1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp
new file mode 100644
index 0000000..ca2894f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list.hpp
new file mode 100644
index 0000000..4e8ad53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list_c.hpp
new file mode 100644
index 0000000..0b48a7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/map.hpp
new file mode 100644
index 0000000..837e013
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/minus.hpp
new file mode 100644
index 0000000..71d4913
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/minus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/modulus.hpp
new file mode 100644
index 0000000..224b349
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
new file mode 100644
index 0000000..98b21b1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/or.hpp
new file mode 100644
index 0000000..31e1aaa
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/plus.hpp
new file mode 100644
index 0000000..a9f6ee7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/plus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/quote.hpp
new file mode 100644
index 0000000..020f093
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/quote.hpp
@@ -0,0 +1,123 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+{
+ typedef typename T::type type;
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+ typedef T type;
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ : quote_impl<
+ F<U1>
+ , aux::has_type< F<U1> >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ : quote_impl<
+ F< U1,U2 >
+ , aux::has_type< F< U1,U2 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ : quote_impl<
+ F< U1,U2,U3 >
+ , aux::has_type< F< U1,U2,U3 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4 >
+ , aux::has_type< F< U1,U2,U3,U4 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4,U5 >
+ , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+ >
+
+ {
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp
new file mode 100644
index 0000000..c468684
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..658f92a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set.hpp
new file mode 100644
index 0000000..5721922
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set_c.hpp
new file mode 100644
index 0000000..cbeb932
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp
new file mode 100644
index 0000000..b5b181c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp
new file mode 100644
index 0000000..f7a342e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp
new file mode 100644
index 0000000..3e7bfba
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< int N > struct arity_tag
+{
+ typedef char (&type)[N + 1];
+};
+
+template<
+ int C1, int C2, int C3, int C4, int C5, int C6
+ >
+struct max_arity
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ ( C6 > 0 ? C6 : ( C5 > 0 ? C5 : ( C4 > 0 ? C4 : ( C3 > 0 ? C3 : ( C2 > 0 ? C2 : ( C1 > 0 ? C1 : -1 ) ) ) ) ) )
+
+ );
+};
+
+arity_tag<0>::type arity_helper(...);
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ >
+typename arity_tag<1>::type
+arity_helper(type_wrapper< F<T1> >, arity_tag<1>);
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ >
+typename arity_tag<2>::type
+arity_helper(type_wrapper< F< T1,T2 > >, arity_tag<2>);
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ >
+typename arity_tag<3>::type
+arity_helper(type_wrapper< F< T1,T2,T3 > >, arity_tag<3>);
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ >
+typename arity_tag<4>::type
+arity_helper(type_wrapper< F< T1,T2,T3,T4 > >, arity_tag<4>);
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ >
+typename arity_tag<5>::type
+arity_helper(type_wrapper< F< T1,T2,T3,T4,T5 > >, arity_tag<5>);
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5, typename P6
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6
+ >
+typename arity_tag<6>::type
+arity_helper(type_wrapper< F< T1,T2,T3,T4,T5,T6 > >, arity_tag<6>);
+template< typename F, int N >
+struct template_arity_impl
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ sizeof(arity_helper(type_wrapper<F>(), arity_tag<N>())) - 1
+ );
+};
+
+template< typename F >
+struct template_arity
+{
+ BOOST_STATIC_CONSTANT(int, value = (
+ max_arity< template_arity_impl< F,1 >::value, template_arity_impl< F,2 >::value, template_arity_impl< F,3 >::value, template_arity_impl< F,4 >::value, template_arity_impl< F,5 >::value, template_arity_impl< F,6 >::value >::value
+
+ ));
+
+ typedef mpl::int_<value> type;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/times.hpp
new file mode 100644
index 0000000..cb97cc4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/times.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
new file mode 100644
index 0000000..2194ce9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector.hpp
new file mode 100644
index 0000000..bfa9565
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp
new file mode 100644
index 0000000..0f1560d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp
new file mode 100644
index 0000000..36337c8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp
@@ -0,0 +1,132 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp
new file mode 100644
index 0000000..4ffbe78
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp
@@ -0,0 +1,132 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+
+ /// ETI workaround
+ template<> struct apply<int>
+ {
+ typedef int type;
+ };
+
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/and.hpp
new file mode 100644
index 0000000..555c800
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/and.hpp
@@ -0,0 +1,73 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct and_impl
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : false_
+ {
+ };
+};
+
+template<> struct and_impl<true>
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,true_ >
+ {
+ };
+};
+
+template<>
+struct and_impl<true>
+ ::result_< true_,true_,true_,true_ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,T5 >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply.hpp
new file mode 100644
index 0000000..a3e2929
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply.hpp
@@ -0,0 +1,166 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+{
+ typedef typename apply_wrap0<
+ typename lambda<F>::type
+
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply0<int>
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+{
+ typedef typename apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply1< int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+{
+ typedef typename apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply2< int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+{
+ typedef typename apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply3< int,int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+{
+ typedef typename apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply4< int,int,int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+{
+ typedef typename apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply5< int,int,int,int,int,int >
+{
+ typedef int type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp
new file mode 100644
index 0000000..f0f86c1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp
new file mode 100644
index 0000000..4e89507
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp
@@ -0,0 +1,247 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename F>
+struct msvc_apply0
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+ template< typename P = int > struct apply
+ {
+ typedef int type;
+ };
+ };
+
+ template< typename T = int > struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template apply<>
+ {
+ };
+
+};
+
+template<
+ typename F
+ >
+struct apply_wrap0
+{
+ typedef typename msvc_apply0<F>::template result_<
+
+ >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap0<int>
+{
+ typedef int type;
+};
+
+template< typename F>
+struct msvc_apply1
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+ template< typename P1 > struct apply
+ {
+ typedef int type;
+ };
+ };
+
+ template< typename T1 > struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template apply<T1>
+ {
+ };
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap1
+{
+ typedef typename msvc_apply1<F>::template result_<
+ T1
+ >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap1< int,int >
+{
+ typedef int type;
+};
+
+template< typename F>
+struct msvc_apply2
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+ template< typename P1, typename P2 > struct apply
+ {
+ typedef int type;
+ };
+ };
+
+ template< typename T1, typename T2 > struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template apply< T1,T2 >
+ {
+ };
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap2
+{
+ typedef typename msvc_apply2<F>::template result_<
+ T1, T2
+ >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap2< int,int,int >
+{
+ typedef int type;
+};
+
+template< typename F>
+struct msvc_apply3
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+ template< typename P1, typename P2, typename P3 > struct apply
+ {
+ typedef int type;
+ };
+ };
+
+ template< typename T1, typename T2, typename T3 > struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template apply< T1,T2,T3 >
+ {
+ };
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap3
+{
+ typedef typename msvc_apply3<F>::template result_<
+ T1, T2, T3
+ >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap3< int,int,int,int >
+{
+ typedef int type;
+};
+
+template< typename F>
+struct msvc_apply4
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ >
+ struct apply
+ {
+ typedef int type;
+ };
+ };
+
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template apply< T1,T2,T3,T4 >
+ {
+ };
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap4
+{
+ typedef typename msvc_apply4<F>::template result_<
+ T1, T2, T3, T4
+ >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap4< int,int,int,int,int >
+{
+ typedef int type;
+};
+
+template< typename F>
+struct msvc_apply5
+{
+ template< bool > struct f_ : F {};
+ template<> struct f_<true>
+ {
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ struct apply
+ {
+ typedef int type;
+ };
+ };
+
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ : f_< aux::msvc_never_true<F>::value >
+ ::template apply< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap5
+{
+ typedef typename msvc_apply5<F>::template result_<
+ T1, T2, T3, T4, T5
+ >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap5< int,int,int,int,int,int >
+{
+ typedef int type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
new file mode 100644
index 0000000..4f12a40
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef typename apply_wrap5<
+ T
+ , U1, U2, U3, U4, U5
+ >::type type;
+ };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F
+ >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1
+ >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2
+ >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind.hpp
new file mode 100644
index 0000000..53c76e8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind.hpp
@@ -0,0 +1,432 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef typename apply_wrap5<
+ T
+ , U1, U2, U3, U4, U5
+ >::type type;
+ };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+ template< typename Arg > struct result_
+ {
+ typedef Arg next;
+ typedef T type;
+ };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg< -1 > >
+{
+ template< typename Arg > struct result_
+ {
+ typedef typename next<Arg>::type next;
+ typedef Arg type;
+ };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+ : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F
+ >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1
+ >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2
+ >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp
new file mode 100644
index 0000000..022cba3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp
new file mode 100644
index 0000000..e96cf1a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp
@@ -0,0 +1,149 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct bitand_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitand_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitand_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitand_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+
+ : if_<
+
+ is_na<N3>
+ , bitand_2< N1,N2 >
+ , bitand_<
+ bitand_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitand_2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitand_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 & n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitand_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp
new file mode 100644
index 0000000..bbc96ab
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp
@@ -0,0 +1,149 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct bitor_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitor_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitor_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitor_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+
+ : if_<
+
+ is_na<N3>
+ , bitor_2< N1,N2 >
+ , bitor_<
+ bitor_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitor_2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitor_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 | n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitor_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
new file mode 100644
index 0000000..4c14297
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
@@ -0,0 +1,149 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct bitxor_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitxor_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitxor_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitxor_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+
+ : if_<
+
+ is_na<N3>
+ , bitxor_2< N1,N2 >
+ , bitxor_<
+ bitxor_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitxor_2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitxor_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 ^ n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitxor_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/deque.hpp
new file mode 100644
index 0000000..a0445d9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/deque.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct deque_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct deque_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef vector0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_deque_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_deque_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct deque_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_deque_arg<T1>::value + is_deque_arg<T2>::value
+ + is_deque_arg<T3>::value + is_deque_arg<T4>::value
+ + is_deque_arg<T5>::value + is_deque_arg<T6>::value
+ + is_deque_arg<T7>::value + is_deque_arg<T8>::value
+ + is_deque_arg<T9>::value + is_deque_arg<T10>::value
+ + is_deque_arg<T11>::value + is_deque_arg<T12>::value
+ + is_deque_arg<T13>::value + is_deque_arg<T14>::value
+ + is_deque_arg<T15>::value + is_deque_arg<T16>::value
+ + is_deque_arg<T17>::value + is_deque_arg<T18>::value
+ + is_deque_arg<T19>::value + is_deque_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque_impl
+{
+ typedef aux::deque_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::deque_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque
+ : aux::deque_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::deque_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/divides.hpp
new file mode 100644
index 0000000..7681491
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/divides.hpp
@@ -0,0 +1,148 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct divides_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct divides_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct divides_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct divides2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+
+ : if_<
+
+ is_na<N3>
+ , divides2< N1,N2 >
+ , divides<
+ divides2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct divides2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct divides_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 / n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::divides_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
new file mode 100644
index 0000000..64e9065
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct equal_to_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct equal_to_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct equal_to_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+ : aux::msvc_eti_base< typename apply_wrap2<
+ equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp
new file mode 100644
index 0000000..4b3c690
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp
@@ -0,0 +1,293 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template< int N >
+struct fold_chunk;
+
+template<> struct fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template< int N >
+struct fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , fold_null_step< Last,State >
+ , fold_step< First,Last,State,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_step
+{
+ typedef fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ > chunk_;
+
+ typedef typename chunk_::state state;
+ typedef typename chunk_::iterator iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+ : fold_chunk<N>
+ ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
new file mode 100644
index 0000000..bf81873
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater.hpp
new file mode 100644
index 0000000..5f5662d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct greater_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+ : aux::msvc_eti_base< typename apply_wrap2<
+ greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
new file mode 100644
index 0000000..ae776fc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct greater_equal_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_equal_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_equal_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+ : aux::msvc_eti_base< typename apply_wrap2<
+ greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp
new file mode 100644
index 0000000..233a1ec
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1, T2
+ {
+ typedef Derived type_;
+ };
+};
+
+template<>
+struct inherit2_impl< false,true >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1
+ {
+ typedef T1 type_;
+ };
+};
+
+template<>
+struct inherit2_impl< true,false >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T2
+ {
+ typedef T2 type_;
+ };
+};
+
+template<>
+struct inherit2_impl< true,true >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ {
+ typedef T1 type_;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : aux::inherit2_impl<
+ is_empty_base<T1>::value
+ , is_empty_base<T2>::value
+ >::template result_< inherit2< T1,T2 >,T1, T2 >
+{
+ typedef typename inherit2::type_ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp
new file mode 100644
index 0000000..69aadc4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp
@@ -0,0 +1,293 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template< int N >
+struct iter_fold_chunk;
+
+template<> struct iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template< int N >
+struct iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , iter_fold_null_step< Last,State >
+ , iter_fold_step< First,Last,State,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_step
+{
+ typedef iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ > chunk_;
+
+ typedef typename chunk_::state state;
+ typedef typename chunk_::iterator iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+ : iter_fold_chunk<N>
+ ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less.hpp
new file mode 100644
index 0000000..951f060
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct less_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+ : aux::msvc_eti_base< typename apply_wrap2<
+ less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N2)::value >
+ BOOST_MPL_AUX_VALUE_WKND(N1)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
new file mode 100644
index 0000000..a56e692
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct less_equal_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_equal_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_equal_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+ : aux::msvc_eti_base< typename apply_wrap2<
+ less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list.hpp
new file mode 100644
index 0000000..e5ea456
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef list0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_list_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_list_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct list_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_list_arg<T1>::value + is_list_arg<T2>::value
+ + is_list_arg<T3>::value + is_list_arg<T4>::value
+ + is_list_arg<T5>::value + is_list_arg<T6>::value
+ + is_list_arg<T7>::value + is_list_arg<T8>::value
+ + is_list_arg<T9>::value + is_list_arg<T10>::value
+ + is_list_arg<T11>::value + is_list_arg<T12>::value
+ + is_list_arg<T13>::value + is_list_arg<T14>::value
+ + is_list_arg<T15>::value + is_list_arg<T16>::value
+ + is_list_arg<T17>::value + is_list_arg<T18>::value
+ + is_list_arg<T19>::value + is_list_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list_impl
+{
+ typedef aux::list_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::list_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list
+ : aux::list_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::list_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp
new file mode 100644
index 0000000..ab25482
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list1_c<
+ T, C0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list2_c<
+ T, C0, C1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list3_c<
+ T, C0, C1, C2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list4_c<
+ T, C0, C1, C2, C3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list5_c<
+ T, C0, C1, C2, C3, C4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list6_c<
+ T, C0, C1, C2, C3, C4, C5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list7_c<
+ T, C0, C1, C2, C3, C4, C5, C6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list8_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list9_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list10_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list11_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list12_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list13_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_list_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_list_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct list_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_list_c_arg<C1>::value + is_list_c_arg<C2>::value
+ + is_list_c_arg<C3>::value + is_list_c_arg<C4>::value
+ + is_list_c_arg<C5>::value + is_list_c_arg<C6>::value
+ + is_list_c_arg<C7>::value + is_list_c_arg<C8>::value
+ + is_list_c_arg<C9>::value + is_list_c_arg<C10>::value
+ + is_list_c_arg<C11>::value + is_list_c_arg<C12>::value
+ + is_list_c_arg<C13>::value + is_list_c_arg<C14>::value
+ + is_list_c_arg<C15>::value + is_list_c_arg<C16>::value
+ + is_list_c_arg<C17>::value + is_list_c_arg<C18>::value
+ + is_list_c_arg<C19>::value + is_list_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c_impl
+{
+ typedef aux::list_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::list_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c
+ : aux::list_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::list_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/map.hpp
new file mode 100644
index 0000000..970e0b7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/map.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct map_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct map_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef map0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_map_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_map_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct map_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_map_arg<T1>::value + is_map_arg<T2>::value
+ + is_map_arg<T3>::value + is_map_arg<T4>::value
+ + is_map_arg<T5>::value + is_map_arg<T6>::value
+ + is_map_arg<T7>::value + is_map_arg<T8>::value
+ + is_map_arg<T9>::value + is_map_arg<T10>::value
+ + is_map_arg<T11>::value + is_map_arg<T12>::value
+ + is_map_arg<T13>::value + is_map_arg<T14>::value
+ + is_map_arg<T15>::value + is_map_arg<T16>::value
+ + is_map_arg<T17>::value + is_map_arg<T18>::value
+ + is_map_arg<T19>::value + is_map_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map_impl
+{
+ typedef aux::map_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::map_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map
+ : aux::map_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::map_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/minus.hpp
new file mode 100644
index 0000000..b47f328
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/minus.hpp
@@ -0,0 +1,148 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct minus_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct minus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct minus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct minus2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+
+ : if_<
+
+ is_na<N3>
+ , minus2< N1,N2 >
+ , minus<
+ minus2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct minus2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct minus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 - n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::minus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp
new file mode 100644
index 0000000..c12b3f9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp
@@ -0,0 +1,115 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct modulus_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct modulus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct modulus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+ : aux::msvc_eti_base< typename apply_wrap2<
+ modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct modulus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 % n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::modulus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
new file mode 100644
index 0000000..6e56b1e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct not_equal_to_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct not_equal_to_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+ : aux::msvc_eti_base< typename apply_wrap2<
+ not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/or.hpp
new file mode 100644
index 0000000..3f7394e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/or.hpp
@@ -0,0 +1,73 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct or_impl
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : true_
+ {
+ };
+};
+
+template<> struct or_impl<false>
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,false_ >
+ {
+ };
+};
+
+template<>
+struct or_impl<false>
+ ::result_< false_,false_,false_,false_ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,T5 >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/plus.hpp
new file mode 100644
index 0000000..1052335
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/plus.hpp
@@ -0,0 +1,148 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct plus_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct plus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct plus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct plus2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+
+ : if_<
+
+ is_na<N3>
+ , plus2< N1,N2 >
+ , plus<
+ plus2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct plus2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct plus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 + n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::plus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/quote.hpp
new file mode 100644
index 0000000..e7a7f00
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/quote.hpp
@@ -0,0 +1,11 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp
new file mode 100644
index 0000000..adf15b6
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp
@@ -0,0 +1,343 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_fold_null_step< Last,State >
+ , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step
+{
+ typedef reverse_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+ : reverse_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..208ad97
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp
@@ -0,0 +1,343 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_iter_fold_null_step< Last,State >
+ , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+
+ /// ETI workaround
+ template<> struct result_< int,int,int,int,int >
+ {
+ typedef int state;
+ typedef int iterator;
+ };
+
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step
+{
+ typedef reverse_iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+ : reverse_iter_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set.hpp
new file mode 100644
index 0000000..95aaa5c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef set0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_set_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_set_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct set_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_set_arg<T1>::value + is_set_arg<T2>::value
+ + is_set_arg<T3>::value + is_set_arg<T4>::value
+ + is_set_arg<T5>::value + is_set_arg<T6>::value
+ + is_set_arg<T7>::value + is_set_arg<T8>::value
+ + is_set_arg<T9>::value + is_set_arg<T10>::value
+ + is_set_arg<T11>::value + is_set_arg<T12>::value
+ + is_set_arg<T13>::value + is_set_arg<T14>::value
+ + is_set_arg<T15>::value + is_set_arg<T16>::value
+ + is_set_arg<T17>::value + is_set_arg<T18>::value
+ + is_set_arg<T19>::value + is_set_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set_impl
+{
+ typedef aux::set_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::set_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set
+ : aux::set_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::set_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp
new file mode 100644
index 0000000..1ff34f9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set1_c<
+ T, C0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set2_c<
+ T, C0, C1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set3_c<
+ T, C0, C1, C2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set4_c<
+ T, C0, C1, C2, C3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set5_c<
+ T, C0, C1, C2, C3, C4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set6_c<
+ T, C0, C1, C2, C3, C4, C5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set7_c<
+ T, C0, C1, C2, C3, C4, C5, C6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set8_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set9_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set10_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set11_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set12_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set13_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_set_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_set_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct set_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_set_c_arg<C1>::value + is_set_c_arg<C2>::value
+ + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value
+ + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value
+ + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value
+ + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value
+ + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value
+ + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value
+ + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value
+ + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value
+ + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c_impl
+{
+ typedef aux::set_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::set_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c
+ : aux::set_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::set_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
new file mode 100644
index 0000000..3861ca1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct shift_left_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_left_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_left_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+ : aux::msvc_eti_base< typename apply_wrap2<
+ shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_left_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n << s));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+ : aux::shift_left_wknd<
+ typename N::value_type
+ , typename S::value_type
+ , N::value
+ , S::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
new file mode 100644
index 0000000..24ea094
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct shift_right_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_right_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_right_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+ : aux::msvc_eti_base< typename apply_wrap2<
+ shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_right_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n >> s));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+ : aux::shift_right_wknd<
+ typename N::value_type
+ , typename S::value_type
+ , N::value
+ , S::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp
new file mode 100644
index 0000000..1668771
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+template<>
+struct template_arity<int>
+ : mpl::int_< -1 >
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/times.hpp
new file mode 100644
index 0000000..dee7fd4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/times.hpp
@@ -0,0 +1,148 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct times_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct times_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct times_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct times2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+
+ : if_<
+
+ is_na<N3>
+ , times2< N1,N2 >
+ , times<
+ times2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct times2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct times_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 * n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::times_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
new file mode 100644
index 0000000..26533dd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
@@ -0,0 +1,109 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+{
+ template< typename F, typename Args > struct apply;
+};
+
+template<> struct unpack_args_impl<0>
+{
+ template< typename F, typename Args > struct apply
+ : apply0<
+ F
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<1>
+{
+ template< typename F, typename Args > struct apply
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<2>
+{
+ template< typename F, typename Args > struct apply
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<3>
+{
+ template< typename F, typename Args > struct apply
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<4>
+{
+ template< typename F, typename Args > struct apply
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<5>
+{
+ template< typename F, typename Args > struct apply
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+ {
+ };
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value >
+ ::template apply< F,Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector.hpp
new file mode 100644
index 0000000..a6c7b62
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef vector0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_vector_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_vector_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct vector_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_vector_arg<T1>::value + is_vector_arg<T2>::value
+ + is_vector_arg<T3>::value + is_vector_arg<T4>::value
+ + is_vector_arg<T5>::value + is_vector_arg<T6>::value
+ + is_vector_arg<T7>::value + is_vector_arg<T8>::value
+ + is_vector_arg<T9>::value + is_vector_arg<T10>::value
+ + is_vector_arg<T11>::value + is_vector_arg<T12>::value
+ + is_vector_arg<T13>::value + is_vector_arg<T14>::value
+ + is_vector_arg<T15>::value + is_vector_arg<T16>::value
+ + is_vector_arg<T17>::value + is_vector_arg<T18>::value
+ + is_vector_arg<T19>::value + is_vector_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector_impl
+{
+ typedef aux::vector_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::vector_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector
+ : aux::vector_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::vector_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
new file mode 100644
index 0000000..c522d08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector1_c<
+ T, T(C0)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector2_c<
+ T, T(C0), T(C1)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector3_c<
+ T, T(C0), T(C1), T(C2)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector4_c<
+ T, T(C0), T(C1), T(C2), T(C3)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector5_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector6_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector7_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector8_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector9_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector10_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector11_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector12_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector13_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector14_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector15_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector16_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector17_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector18_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector19_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector20_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_vector_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_vector_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct vector_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value
+ + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value
+ + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value
+ + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value
+ + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value
+ + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value
+ + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value
+ + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value
+ + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value
+ + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c_impl
+{
+ typedef aux::vector_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::vector_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c
+ : aux::vector_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::vector_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/and.hpp
new file mode 100644
index 0000000..e58640a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/and.hpp
@@ -0,0 +1,71 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct and_impl
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : false_
+ {
+ };
+};
+
+template<> struct and_impl<true>
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,true_ >
+ {
+ };
+
+ template<> struct result_< true_,true_,true_,true_ >
+ : true_
+ {
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,T5 >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply.hpp
new file mode 100644
index 0000000..d46d030
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply.hpp
@@ -0,0 +1,160 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply0<int>
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply1< int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply2< int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply3< int,int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply4< int,int,int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply5< int,int,int,int,int,int >
+{
+ typedef int type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp
new file mode 100644
index 0000000..f0f86c1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp
new file mode 100644
index 0000000..d307517
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp
@@ -0,0 +1,138 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+
+ , typename has_apply_ = typename aux::has_apply<F>::type
+
+ >
+struct apply_wrap0
+
+{
+ typedef typename F::template apply<
+
+ >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap0<int>
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1
+
+ >
+struct apply_wrap1
+
+{
+ typedef typename F::template apply<
+ T1
+ >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap1< int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2
+
+ >
+struct apply_wrap2
+
+{
+ typedef typename F::template apply<
+ T1, T2
+ >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap2< int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+
+ >
+struct apply_wrap3
+
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+ >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap3< int,int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+
+ >
+struct apply_wrap4
+
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+ >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap4< int,int,int,int,int >
+{
+ typedef int type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+
+ >
+struct apply_wrap5
+
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4, T5
+ >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap5< int,int,int,int,int,int >
+{
+ typedef int type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
new file mode 100644
index 0000000..4f12a40
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef typename apply_wrap5<
+ T
+ , U1, U2, U3, U4, U5
+ >::type type;
+ };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F
+ >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1
+ >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2
+ >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind.hpp
new file mode 100644
index 0000000..53c76e8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind.hpp
@@ -0,0 +1,432 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef typename apply_wrap5<
+ T
+ , U1, U2, U3, U4, U5
+ >::type type;
+ };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+ template< typename Arg > struct result_
+ {
+ typedef Arg next;
+ typedef T type;
+ };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg< -1 > >
+{
+ template< typename Arg > struct result_
+ {
+ typedef typename next<Arg>::type next;
+ typedef Arg type;
+ };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+ : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F
+ >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1
+ >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2
+ >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp
new file mode 100644
index 0000000..022cba3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp
new file mode 100644
index 0000000..e54b4ce
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp
@@ -0,0 +1,151 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct bitand_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitand_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitand_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitand_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , bitand_2< N1,N2 >
+ , bitand_<
+ bitand_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitand_2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitand_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 & n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitand_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp
new file mode 100644
index 0000000..3b465b3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp
@@ -0,0 +1,151 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct bitor_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitor_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitor_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitor_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , bitor_2< N1,N2 >
+ , bitor_<
+ bitor_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitor_2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitor_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 | n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitor_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
new file mode 100644
index 0000000..f7c5d43
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
@@ -0,0 +1,151 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct bitxor_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitxor_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitxor_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitxor_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , bitxor_2< N1,N2 >
+ , bitxor_<
+ bitxor_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitxor_2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitxor_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 ^ n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitxor_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/deque.hpp
new file mode 100644
index 0000000..a0445d9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/deque.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct deque_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct deque_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef vector0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_deque_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_deque_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct deque_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_deque_arg<T1>::value + is_deque_arg<T2>::value
+ + is_deque_arg<T3>::value + is_deque_arg<T4>::value
+ + is_deque_arg<T5>::value + is_deque_arg<T6>::value
+ + is_deque_arg<T7>::value + is_deque_arg<T8>::value
+ + is_deque_arg<T9>::value + is_deque_arg<T10>::value
+ + is_deque_arg<T11>::value + is_deque_arg<T12>::value
+ + is_deque_arg<T13>::value + is_deque_arg<T14>::value
+ + is_deque_arg<T15>::value + is_deque_arg<T16>::value
+ + is_deque_arg<T17>::value + is_deque_arg<T18>::value
+ + is_deque_arg<T19>::value + is_deque_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque_impl
+{
+ typedef aux::deque_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::deque_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque
+ : aux::deque_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::deque_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/divides.hpp
new file mode 100644
index 0000000..0c60c43
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/divides.hpp
@@ -0,0 +1,150 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct divides_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct divides_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct divides_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct divides2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , divides2< N1,N2 >
+ , divides<
+ divides2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct divides2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct divides_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 / n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::divides_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
new file mode 100644
index 0000000..107912b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct equal_to_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct equal_to_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct equal_to_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+ : aux::msvc_eti_base< typename apply_wrap2<
+ equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp
new file mode 100644
index 0000000..58066d8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template< int N >
+struct fold_chunk;
+
+template<> struct fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< int N >
+struct fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , fold_null_step< Last,State >
+ , fold_step< First,Last,State,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_step
+{
+ typedef fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ > chunk_;
+
+ typedef typename chunk_::state state;
+ typedef typename chunk_::iterator iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+ : fold_chunk<N>
+ ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
new file mode 100644
index 0000000..bf81873
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater.hpp
new file mode 100644
index 0000000..f60a860
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct greater_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+ : aux::msvc_eti_base< typename apply_wrap2<
+ greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
new file mode 100644
index 0000000..2ab09fd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct greater_equal_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_equal_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_equal_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+ : aux::msvc_eti_base< typename apply_wrap2<
+ greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp
new file mode 100644
index 0000000..233a1ec
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1, T2
+ {
+ typedef Derived type_;
+ };
+};
+
+template<>
+struct inherit2_impl< false,true >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1
+ {
+ typedef T1 type_;
+ };
+};
+
+template<>
+struct inherit2_impl< true,false >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T2
+ {
+ typedef T2 type_;
+ };
+};
+
+template<>
+struct inherit2_impl< true,true >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ {
+ typedef T1 type_;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : aux::inherit2_impl<
+ is_empty_base<T1>::value
+ , is_empty_base<T2>::value
+ >::template result_< inherit2< T1,T2 >,T1, T2 >
+{
+ typedef typename inherit2::type_ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp
new file mode 100644
index 0000000..50ea754
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template< int N >
+struct iter_fold_chunk;
+
+template<> struct iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< int N >
+struct iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , iter_fold_null_step< Last,State >
+ , iter_fold_step< First,Last,State,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_step
+{
+ typedef iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ > chunk_;
+
+ typedef typename chunk_::state state;
+ typedef typename chunk_::iterator iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+ : iter_fold_chunk<N>
+ ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less.hpp
new file mode 100644
index 0000000..72338de
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct less_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+ : aux::msvc_eti_base< typename apply_wrap2<
+ less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N2)::value >
+ BOOST_MPL_AUX_VALUE_WKND(N1)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
new file mode 100644
index 0000000..b588697
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct less_equal_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_equal_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_equal_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+ : aux::msvc_eti_base< typename apply_wrap2<
+ less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list.hpp
new file mode 100644
index 0000000..e5ea456
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef list0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_list_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_list_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct list_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_list_arg<T1>::value + is_list_arg<T2>::value
+ + is_list_arg<T3>::value + is_list_arg<T4>::value
+ + is_list_arg<T5>::value + is_list_arg<T6>::value
+ + is_list_arg<T7>::value + is_list_arg<T8>::value
+ + is_list_arg<T9>::value + is_list_arg<T10>::value
+ + is_list_arg<T11>::value + is_list_arg<T12>::value
+ + is_list_arg<T13>::value + is_list_arg<T14>::value
+ + is_list_arg<T15>::value + is_list_arg<T16>::value
+ + is_list_arg<T17>::value + is_list_arg<T18>::value
+ + is_list_arg<T19>::value + is_list_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list_impl
+{
+ typedef aux::list_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::list_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list
+ : aux::list_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::list_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp
new file mode 100644
index 0000000..ab25482
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list1_c<
+ T, C0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list2_c<
+ T, C0, C1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list3_c<
+ T, C0, C1, C2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list4_c<
+ T, C0, C1, C2, C3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list5_c<
+ T, C0, C1, C2, C3, C4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list6_c<
+ T, C0, C1, C2, C3, C4, C5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list7_c<
+ T, C0, C1, C2, C3, C4, C5, C6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list8_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list9_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list10_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list11_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list12_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list13_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_list_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_list_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct list_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_list_c_arg<C1>::value + is_list_c_arg<C2>::value
+ + is_list_c_arg<C3>::value + is_list_c_arg<C4>::value
+ + is_list_c_arg<C5>::value + is_list_c_arg<C6>::value
+ + is_list_c_arg<C7>::value + is_list_c_arg<C8>::value
+ + is_list_c_arg<C9>::value + is_list_c_arg<C10>::value
+ + is_list_c_arg<C11>::value + is_list_c_arg<C12>::value
+ + is_list_c_arg<C13>::value + is_list_c_arg<C14>::value
+ + is_list_c_arg<C15>::value + is_list_c_arg<C16>::value
+ + is_list_c_arg<C17>::value + is_list_c_arg<C18>::value
+ + is_list_c_arg<C19>::value + is_list_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c_impl
+{
+ typedef aux::list_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::list_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c
+ : aux::list_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::list_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/map.hpp
new file mode 100644
index 0000000..970e0b7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/map.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct map_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct map_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef map0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_map_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_map_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct map_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_map_arg<T1>::value + is_map_arg<T2>::value
+ + is_map_arg<T3>::value + is_map_arg<T4>::value
+ + is_map_arg<T5>::value + is_map_arg<T6>::value
+ + is_map_arg<T7>::value + is_map_arg<T8>::value
+ + is_map_arg<T9>::value + is_map_arg<T10>::value
+ + is_map_arg<T11>::value + is_map_arg<T12>::value
+ + is_map_arg<T13>::value + is_map_arg<T14>::value
+ + is_map_arg<T15>::value + is_map_arg<T16>::value
+ + is_map_arg<T17>::value + is_map_arg<T18>::value
+ + is_map_arg<T19>::value + is_map_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map_impl
+{
+ typedef aux::map_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::map_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map
+ : aux::map_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::map_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/minus.hpp
new file mode 100644
index 0000000..3237fa6
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/minus.hpp
@@ -0,0 +1,150 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct minus_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct minus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct minus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct minus2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , minus2< N1,N2 >
+ , minus<
+ minus2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct minus2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct minus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 - n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::minus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp
new file mode 100644
index 0000000..9c672c0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp
@@ -0,0 +1,115 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct modulus_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct modulus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct modulus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+ : aux::msvc_eti_base< typename apply_wrap2<
+ modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct modulus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 % n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::modulus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
new file mode 100644
index 0000000..1e48e7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
@@ -0,0 +1,102 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct not_equal_to_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct not_equal_to_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+ : aux::msvc_eti_base< typename apply_wrap2<
+ not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/or.hpp
new file mode 100644
index 0000000..8d0ba0a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/or.hpp
@@ -0,0 +1,71 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct or_impl
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : true_
+ {
+ };
+};
+
+template<> struct or_impl<false>
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,false_ >
+ {
+ };
+
+ template<> struct result_< false_,false_,false_,false_ >
+ : false_
+ {
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,T5 >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/plus.hpp
new file mode 100644
index 0000000..c8f3355
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/plus.hpp
@@ -0,0 +1,150 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct plus_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct plus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct plus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct plus2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , plus2< N1,N2 >
+ , plus<
+ plus2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct plus2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct plus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 + n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::plus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/quote.hpp
new file mode 100644
index 0000000..b85880f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/quote.hpp
@@ -0,0 +1,116 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+template< bool > struct quote_impl
+{
+ template< typename T > struct result_
+ : T
+ {
+ };
+};
+
+template<> struct quote_impl<false>
+{
+ template< typename T > struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ : quote_impl< aux::has_type< F<U1> >::value >
+ ::template result_< F<U1> >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2 > >::value >
+ ::template result_< F< U1,U2 > >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2,U3 > >::value >
+ ::template result_< F< U1,U2,U3 > >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2,U3,U4 > >::value >
+ ::template result_< F< U1,U2,U3,U4 > >
+
+ {
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2,U3,U4,U5 > >::value >
+ ::template result_< F< U1,U2,U3,U4,U5 > >
+
+ {
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7a07414
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_fold_null_step< Last,State >
+ , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step
+{
+ typedef reverse_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+ : reverse_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..39a4057
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_iter_fold_null_step< Last,State >
+ , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step
+{
+ typedef reverse_iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+ : reverse_iter_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set.hpp
new file mode 100644
index 0000000..95aaa5c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef set0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_set_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_set_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct set_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_set_arg<T1>::value + is_set_arg<T2>::value
+ + is_set_arg<T3>::value + is_set_arg<T4>::value
+ + is_set_arg<T5>::value + is_set_arg<T6>::value
+ + is_set_arg<T7>::value + is_set_arg<T8>::value
+ + is_set_arg<T9>::value + is_set_arg<T10>::value
+ + is_set_arg<T11>::value + is_set_arg<T12>::value
+ + is_set_arg<T13>::value + is_set_arg<T14>::value
+ + is_set_arg<T15>::value + is_set_arg<T16>::value
+ + is_set_arg<T17>::value + is_set_arg<T18>::value
+ + is_set_arg<T19>::value + is_set_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set_impl
+{
+ typedef aux::set_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::set_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set
+ : aux::set_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::set_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp
new file mode 100644
index 0000000..1ff34f9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set1_c<
+ T, C0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set2_c<
+ T, C0, C1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set3_c<
+ T, C0, C1, C2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set4_c<
+ T, C0, C1, C2, C3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set5_c<
+ T, C0, C1, C2, C3, C4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set6_c<
+ T, C0, C1, C2, C3, C4, C5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set7_c<
+ T, C0, C1, C2, C3, C4, C5, C6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set8_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set9_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set10_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set11_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set12_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set13_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_set_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_set_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct set_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_set_c_arg<C1>::value + is_set_c_arg<C2>::value
+ + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value
+ + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value
+ + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value
+ + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value
+ + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value
+ + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value
+ + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value
+ + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value
+ + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c_impl
+{
+ typedef aux::set_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::set_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c
+ : aux::set_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::set_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
new file mode 100644
index 0000000..176fc00
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct shift_left_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_left_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_left_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+ : aux::msvc_eti_base< typename apply_wrap2<
+ shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_left_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n << s));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+ : aux::shift_left_wknd<
+ typename N::value_type
+ , typename S::value_type
+ , N::value
+ , S::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
new file mode 100644
index 0000000..6b6e01f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct shift_right_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_right_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_right_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+ : tag< T,na >
+{
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+ : aux::msvc_eti_base< typename apply_wrap2<
+ shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_right_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n >> s));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+ : aux::shift_right_wknd<
+ typename N::value_type
+ , typename S::value_type
+ , N::value
+ , S::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp
new file mode 100644
index 0000000..1668771
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+template<>
+struct template_arity<int>
+ : mpl::int_< -1 >
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/times.hpp
new file mode 100644
index 0000000..a6ae333
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/times.hpp
@@ -0,0 +1,150 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+ , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+ >
+struct times_impl
+ : if_c<
+ ( tag1_ > tag2_ )
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct times_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct times_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+ : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct times2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+
+ : aux::msvc_eti_base< typename if_<
+
+ is_na<N3>
+ , times2< N1,N2 >
+ , times<
+ times2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct times2
+ : aux::msvc_eti_base< typename apply_wrap2<
+ times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >
+ , N1
+ , N2
+ >::type >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct times_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 * n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::times_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
new file mode 100644
index 0000000..26533dd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
@@ -0,0 +1,109 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+{
+ template< typename F, typename Args > struct apply;
+};
+
+template<> struct unpack_args_impl<0>
+{
+ template< typename F, typename Args > struct apply
+ : apply0<
+ F
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<1>
+{
+ template< typename F, typename Args > struct apply
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<2>
+{
+ template< typename F, typename Args > struct apply
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<3>
+{
+ template< typename F, typename Args > struct apply
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<4>
+{
+ template< typename F, typename Args > struct apply
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<5>
+{
+ template< typename F, typename Args > struct apply
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+ {
+ };
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value >
+ ::template apply< F,Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector.hpp
new file mode 100644
index 0000000..a6c7b62
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef vector0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_vector_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_vector_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct vector_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_vector_arg<T1>::value + is_vector_arg<T2>::value
+ + is_vector_arg<T3>::value + is_vector_arg<T4>::value
+ + is_vector_arg<T5>::value + is_vector_arg<T6>::value
+ + is_vector_arg<T7>::value + is_vector_arg<T8>::value
+ + is_vector_arg<T9>::value + is_vector_arg<T10>::value
+ + is_vector_arg<T11>::value + is_vector_arg<T12>::value
+ + is_vector_arg<T13>::value + is_vector_arg<T14>::value
+ + is_vector_arg<T15>::value + is_vector_arg<T16>::value
+ + is_vector_arg<T17>::value + is_vector_arg<T18>::value
+ + is_vector_arg<T19>::value + is_vector_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector_impl
+{
+ typedef aux::vector_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::vector_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector
+ : aux::vector_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::vector_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
new file mode 100644
index 0000000..c522d08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector1_c<
+ T, T(C0)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector2_c<
+ T, T(C0), T(C1)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector3_c<
+ T, T(C0), T(C1), T(C2)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector4_c<
+ T, T(C0), T(C1), T(C2), T(C3)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector5_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector6_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector7_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector8_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector9_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector10_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector11_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector12_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector13_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector14_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector15_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector16_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector17_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector18_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector19_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector20_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_vector_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_vector_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct vector_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value
+ + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value
+ + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value
+ + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value
+ + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value
+ + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value
+ + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value
+ + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value
+ + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value
+ + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c_impl
+{
+ typedef aux::vector_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::vector_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c
+ : aux::vector_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::vector_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/and.hpp
new file mode 100644
index 0000000..010ad1f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply.hpp
new file mode 100644
index 0000000..e08eacc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp
new file mode 100644
index 0000000..b2ed5d5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp
new file mode 100644
index 0000000..2ffe709
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp
@@ -0,0 +1,456 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ int N, typename F
+ >
+struct apply_wrap_impl0;
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 0
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 1
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 2
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 3
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 4
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap_impl0<
+ 5
+ , F
+
+ >
+{
+ typedef typename F::template apply<
+
+ na, na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F
+ >
+struct apply_wrap0
+ : apply_wrap_impl0<
+ ::boost::mpl::aux::arity< F,0 >::value
+ , F
+
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1
+ >
+struct apply_wrap_impl1;
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 1
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 2
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 3
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 4
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap_impl1<
+ 5
+ , F
+ , T1
+ >
+{
+ typedef typename F::template apply<
+ T1
+ , na, na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply_wrap1
+ : apply_wrap_impl1<
+ ::boost::mpl::aux::arity< F,1 >::value
+ , F
+ , T1
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 2
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 3
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 4
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap_impl2<
+ 5
+ , F
+ , T1, T2
+ >
+{
+ typedef typename F::template apply<
+ T1, T2
+
+ , na, na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply_wrap2
+ : apply_wrap_impl2<
+ ::boost::mpl::aux::arity< F,2 >::value
+ , F
+ , T1, T2
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 3
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 4
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap_impl3<
+ 5
+ , F
+ , T1, T2, T3
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3
+
+ , na, na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply_wrap3
+ : apply_wrap_impl3<
+ ::boost::mpl::aux::arity< F,3 >::value
+ , F
+ , T1, T2, T3
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 4
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap_impl4<
+ 5
+ , F
+ , T1, T2, T3, T4
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4
+
+ , na
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply_wrap4
+ : apply_wrap_impl4<
+ ::boost::mpl::aux::arity< F,4 >::value
+ , F
+ , T1, T2, T3, T4
+ >::type
+{
+};
+
+template<
+ int N, typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap_impl5<
+ 5
+ , F
+ , T1, T2, T3, T4, T5
+ >
+{
+ typedef typename F::template apply<
+ T1, T2, T3, T4, T5
+
+ > type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply_wrap5
+ : apply_wrap_impl5<
+ ::boost::mpl::aux::arity< F,5 >::value
+ , F
+ , T1, T2, T3, T4, T5
+ >::type
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
new file mode 100644
index 0000000..b070232
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
@@ -0,0 +1,440 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+template<
+ template< typename T1, typename T2, typename T3 > class F, typename Tag
+ >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< eval_if,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename eval_if<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind.hpp
new file mode 100644
index 0000000..0e9513a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind.hpp
@@ -0,0 +1,561 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+template<
+ template< typename T1, typename T2, typename T3 > class F, typename Tag
+ >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< eval_if,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename eval_if<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp
new file mode 100644
index 0000000..c4a5060
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct bind;
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp
new file mode 100644
index 0000000..0bbf54e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp
new file mode 100644
index 0000000..55b31cb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
new file mode 100644
index 0000000..ec19391
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/deque.hpp
new file mode 100644
index 0000000..de67398
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/divides.hpp
new file mode 100644
index 0000000..86f1682
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/divides.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
new file mode 100644
index 0000000..62c9945
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp
new file mode 100644
index 0000000..9e7a293
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
new file mode 100644
index 0000000..bf81873
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater.hpp
new file mode 100644
index 0000000..14d8e08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
new file mode 100644
index 0000000..2603f91
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp
new file mode 100644
index 0000000..00f31c4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp
new file mode 100644
index 0000000..805790e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less.hpp
new file mode 100644
index 0000000..4fe3cd1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
new file mode 100644
index 0000000..ca2894f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list.hpp
new file mode 100644
index 0000000..4e8ad53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp
new file mode 100644
index 0000000..0b48a7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/map.hpp
new file mode 100644
index 0000000..837e013
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/minus.hpp
new file mode 100644
index 0000000..71d4913
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/minus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp
new file mode 100644
index 0000000..224b349
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
new file mode 100644
index 0000000..98b21b1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/or.hpp
new file mode 100644
index 0000000..31e1aaa
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/plus.hpp
new file mode 100644
index 0000000..a9f6ee7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/plus.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/quote.hpp
new file mode 100644
index 0000000..d7d0420
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/quote.hpp
@@ -0,0 +1,123 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+ : T
+{
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+ typedef T type;
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ : quote_impl<
+ F<U1>
+ , aux::has_type< F<U1> >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ : quote_impl<
+ F< U1,U2 >
+ , aux::has_type< F< U1,U2 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ : quote_impl<
+ F< U1,U2,U3 >
+ , aux::has_type< F< U1,U2,U3 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4 >
+ , aux::has_type< F< U1,U2,U3,U4 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4,U5 >
+ , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+ >
+
+ {
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp
new file mode 100644
index 0000000..c468684
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..658f92a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set.hpp
new file mode 100644
index 0000000..5721922
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp
new file mode 100644
index 0000000..cbeb932
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
new file mode 100644
index 0000000..b5b181c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
new file mode 100644
index 0000000..f7a342e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp
new file mode 100644
index 0000000..a23fc23
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/times.hpp
new file mode 100644
index 0000000..cb97cc4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/times.hpp
@@ -0,0 +1,146 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
new file mode 100644
index 0000000..2194ce9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector.hpp
new file mode 100644
index 0000000..bfa9565
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp
new file mode 100644
index 0000000..0f1560d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/and.hpp
new file mode 100644
index 0000000..555c800
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/and.hpp
@@ -0,0 +1,73 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct and_impl
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : false_
+ {
+ };
+};
+
+template<> struct and_impl<true>
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,true_ >
+ {
+ };
+};
+
+template<>
+struct and_impl<true>
+ ::result_< true_,true_,true_,true_ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,T5 >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp
new file mode 100644
index 0000000..9838e79
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp
@@ -0,0 +1,268 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<0>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef apply0<
+ F
+ > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<1>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef apply1<
+ F, T1
+ > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<2>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef apply2<
+ F, T1, T2
+ > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<3>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef apply3<
+ F, T1, T2, T3
+ > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<4>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef apply4<
+ F, T1, T2, T3, T4
+ > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<5>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef apply5<
+ F, T1, T2, T3, T4, T5
+ > type;
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_apply_arg
+{
+ static bool const value = true;
+};
+
+template<>
+struct is_apply_arg<na>
+{
+ static bool const value = false;
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ >
+struct apply_count_args
+{
+ static int const value = is_apply_arg<T1>::value + is_apply_arg<T2>::value + is_apply_arg<T3>::value + is_apply_arg<T4>::value + is_apply_arg<T5>::value;
+
+};
+
+}
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply
+ : aux::apply_chooser<
+ aux::apply_count_args< T1,T2,T3,T4,T5 >::value
+ >::template result_< F,T1,T2,T3,T4,T5 >::type
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
new file mode 100644
index 0000000..7de6dad
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
@@ -0,0 +1,50 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
+}
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp
new file mode 100644
index 0000000..efa213d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp
@@ -0,0 +1,78 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+
+ , typename has_apply_ = typename aux::has_apply<F>::type
+
+ >
+struct apply_wrap0
+
+ : F::template apply< >
+{
+};
+
+template<
+ typename F, typename T1
+
+ >
+struct apply_wrap1
+
+ : F::template apply<T1>
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+
+ >
+struct apply_wrap2
+
+ : F::template apply< T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+
+ >
+struct apply_wrap3
+
+ : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+
+ >
+struct apply_wrap4
+
+ : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+
+ >
+struct apply_wrap5
+
+ : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
new file mode 100644
index 0000000..254e5b8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
@@ -0,0 +1,486 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef typename apply_wrap5<
+ T
+ , U1, U2, U3, U4, U5
+ >::type type;
+ };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag is_bind_helper(bind< F,T1,T2,T3,T4,T5 >*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F
+ >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+namespace aux {
+
+template<>
+struct bind_chooser<0>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind0<F> type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1
+ >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+namespace aux {
+
+template<>
+struct bind_chooser<1>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind1< F,T1 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2
+ >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+namespace aux {
+
+template<>
+struct bind_chooser<2>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind2< F,T1,T2 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+namespace aux {
+
+template<>
+struct bind_chooser<3>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind3< F,T1,T2,T3 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+namespace aux {
+
+template<>
+struct bind_chooser<4>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind4< F,T1,T2,T3,T4 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+namespace aux {
+
+template<>
+struct bind_chooser<5>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind5< F,T1,T2,T3,T4,T5 > type;
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_bind_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_bind_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ >
+struct bind_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_bind_arg<T1>::value + is_bind_arg<T2>::value
+ + is_bind_arg<T3>::value + is_bind_arg<T4>::value
+ + is_bind_arg<T5>::value
+ );
+
+};
+
+}
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : aux::bind_chooser<
+ aux::bind_count_args< T1,T2,T3,T4,T5 >::value
+ >::template result_< F,T1,T2,T3,T4,T5 >::type
+{
+};
+
+BOOST_MPL_AUX_ARITY_SPEC(
+ 6
+ , bind
+ )
+
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+ 6
+ , bind
+ )
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp
new file mode 100644
index 0000000..12062b4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp
@@ -0,0 +1,590 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template<
+ typename T, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+ struct result_
+ {
+ typedef typename apply_wrap5<
+ T
+ , U1, U2, U3, U4, U5
+ >::type type;
+ };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+ template< typename Arg > struct result_
+ {
+ typedef Arg next;
+ typedef T type;
+ };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg< -1 > >
+{
+ template< typename Arg > struct result_
+ {
+ typedef typename next<Arg>::type next;
+ typedef Arg type;
+ };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+ : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag is_bind_helper(bind< F,T1,T2,T3,T4,T5 >*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F
+ >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+namespace aux {
+
+template<>
+struct bind_chooser<0>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind0<F> type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1
+ >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+namespace aux {
+
+template<>
+struct bind_chooser<1>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind1< F,T1 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2
+ >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+namespace aux {
+
+template<>
+struct bind_chooser<2>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind2< F,T1,T2 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+namespace aux {
+
+template<>
+struct bind_chooser<3>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind3< F,T1,T2,T3 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+namespace aux {
+
+template<>
+struct bind_chooser<4>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind4< F,T1,T2,T3,T4 > type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+namespace aux {
+
+template<>
+struct bind_chooser<5>
+{
+ template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+ struct result_
+ {
+ typedef bind5< F,T1,T2,T3,T4,T5 > type;
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_bind_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_bind_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ >
+struct bind_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_bind_arg<T1>::value + is_bind_arg<T2>::value
+ + is_bind_arg<T3>::value + is_bind_arg<T4>::value
+ + is_bind_arg<T5>::value
+ );
+
+};
+
+}
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : aux::bind_chooser<
+ aux::bind_count_args< T1,T2,T3,T4,T5 >::value
+ >::template result_< F,T1,T2,T3,T4,T5 >::type
+{
+};
+
+BOOST_MPL_AUX_ARITY_SPEC(
+ 6
+ , bind
+ )
+
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+ 6
+ , bind
+ )
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp
new file mode 100644
index 0000000..c4a5060
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct bind;
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
new file mode 100644
index 0000000..020d6ba
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
@@ -0,0 +1,134 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitand_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitand_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitand_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+
+ : if_<
+
+ is_na<N3>
+ , bitand_2< N1,N2 >
+ , bitand_<
+ bitand_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitand_2
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
new file mode 100644
index 0000000..0474877
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
@@ -0,0 +1,134 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitor_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitor_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitor_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+
+ : if_<
+
+ is_na<N3>
+ , bitor_2< N1,N2 >
+ , bitor_<
+ bitor_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitor_2
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
new file mode 100644
index 0000000..42a9758
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
@@ -0,0 +1,134 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitxor_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct bitxor_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct bitxor_2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+
+ : if_<
+
+ is_na<N3>
+ , bitxor_2< N1,N2 >
+ , bitxor_<
+ bitxor_2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct bitxor_2
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp
new file mode 100644
index 0000000..a0445d9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct deque_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct deque_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef vector0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_deque_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_deque_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct deque_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_deque_arg<T1>::value + is_deque_arg<T2>::value
+ + is_deque_arg<T3>::value + is_deque_arg<T4>::value
+ + is_deque_arg<T5>::value + is_deque_arg<T6>::value
+ + is_deque_arg<T7>::value + is_deque_arg<T8>::value
+ + is_deque_arg<T9>::value + is_deque_arg<T10>::value
+ + is_deque_arg<T11>::value + is_deque_arg<T12>::value
+ + is_deque_arg<T13>::value + is_deque_arg<T14>::value
+ + is_deque_arg<T15>::value + is_deque_arg<T16>::value
+ + is_deque_arg<T17>::value + is_deque_arg<T18>::value
+ + is_deque_arg<T19>::value + is_deque_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque_impl
+{
+ typedef aux::deque_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::deque_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque
+ : aux::deque_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::deque_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp
new file mode 100644
index 0000000..00636dc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp
@@ -0,0 +1,133 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct divides_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct divides_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct divides2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+
+ : if_<
+
+ is_na<N3>
+ , divides2< N1,N2 >
+ , divides<
+ divides2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct divides2
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
new file mode 100644
index 0000000..b14cdda
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct equal_to_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct equal_to_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp
new file mode 100644
index 0000000..58066d8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template< int N >
+struct fold_chunk;
+
+template<> struct fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< int N >
+struct fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , fold_null_step< Last,State >
+ , fold_step< First,Last,State,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_step
+{
+ typedef fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ > chunk_;
+
+ typedef typename chunk_::state state;
+ typedef typename chunk_::iterator iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+ : fold_chunk<N>
+ ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
new file mode 100644
index 0000000..bf81873
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp
new file mode 100644
index 0000000..6fdf8ba
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
new file mode 100644
index 0000000..f848eef
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_equal_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct greater_equal_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
new file mode 100644
index 0000000..233a1ec
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1, T2
+ {
+ typedef Derived type_;
+ };
+};
+
+template<>
+struct inherit2_impl< false,true >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T1
+ {
+ typedef T1 type_;
+ };
+};
+
+template<>
+struct inherit2_impl< true,false >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ : T2
+ {
+ typedef T2 type_;
+ };
+};
+
+template<>
+struct inherit2_impl< true,true >
+{
+ template< typename Derived, typename T1, typename T2 > struct result_
+ {
+ typedef T1 type_;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : aux::inherit2_impl<
+ is_empty_base<T1>::value
+ , is_empty_base<T2>::value
+ >::template result_< inherit2< T1,T2 >,T1, T2 >
+{
+ typedef typename inherit2::type_ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp
new file mode 100644
index 0000000..50ea754
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template< int N >
+struct iter_fold_chunk;
+
+template<> struct iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< int N >
+struct iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , iter_fold_null_step< Last,State >
+ , iter_fold_step< First,Last,State,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_step
+{
+ typedef iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ > chunk_;
+
+ typedef typename chunk_::state state;
+ typedef typename chunk_::iterator iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+ : iter_fold_chunk<N>
+ ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less.hpp
new file mode 100644
index 0000000..7fb35e1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
new file mode 100644
index 0000000..206ecdc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_equal_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct less_equal_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list.hpp
new file mode 100644
index 0000000..e5ea456
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef list0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_list_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_list_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct list_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_list_arg<T1>::value + is_list_arg<T2>::value
+ + is_list_arg<T3>::value + is_list_arg<T4>::value
+ + is_list_arg<T5>::value + is_list_arg<T6>::value
+ + is_list_arg<T7>::value + is_list_arg<T8>::value
+ + is_list_arg<T9>::value + is_list_arg<T10>::value
+ + is_list_arg<T11>::value + is_list_arg<T12>::value
+ + is_list_arg<T13>::value + is_list_arg<T14>::value
+ + is_list_arg<T15>::value + is_list_arg<T16>::value
+ + is_list_arg<T17>::value + is_list_arg<T18>::value
+ + is_list_arg<T19>::value + is_list_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list_impl
+{
+ typedef aux::list_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::list_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list
+ : aux::list_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::list_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
new file mode 100644
index 0000000..ab25482
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list1_c<
+ T, C0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list2_c<
+ T, C0, C1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list3_c<
+ T, C0, C1, C2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list4_c<
+ T, C0, C1, C2, C3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list5_c<
+ T, C0, C1, C2, C3, C4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list6_c<
+ T, C0, C1, C2, C3, C4, C5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list7_c<
+ T, C0, C1, C2, C3, C4, C5, C6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list8_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list9_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list10_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list11_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list12_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list13_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_list_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_list_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct list_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_list_c_arg<C1>::value + is_list_c_arg<C2>::value
+ + is_list_c_arg<C3>::value + is_list_c_arg<C4>::value
+ + is_list_c_arg<C5>::value + is_list_c_arg<C6>::value
+ + is_list_c_arg<C7>::value + is_list_c_arg<C8>::value
+ + is_list_c_arg<C9>::value + is_list_c_arg<C10>::value
+ + is_list_c_arg<C11>::value + is_list_c_arg<C12>::value
+ + is_list_c_arg<C13>::value + is_list_c_arg<C14>::value
+ + is_list_c_arg<C15>::value + is_list_c_arg<C16>::value
+ + is_list_c_arg<C17>::value + is_list_c_arg<C18>::value
+ + is_list_c_arg<C19>::value + is_list_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c_impl
+{
+ typedef aux::list_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::list_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c
+ : aux::list_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::list_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/map.hpp
new file mode 100644
index 0000000..970e0b7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/map.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct map_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct map_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef map0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_map_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_map_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct map_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_map_arg<T1>::value + is_map_arg<T2>::value
+ + is_map_arg<T3>::value + is_map_arg<T4>::value
+ + is_map_arg<T5>::value + is_map_arg<T6>::value
+ + is_map_arg<T7>::value + is_map_arg<T8>::value
+ + is_map_arg<T9>::value + is_map_arg<T10>::value
+ + is_map_arg<T11>::value + is_map_arg<T12>::value
+ + is_map_arg<T13>::value + is_map_arg<T14>::value
+ + is_map_arg<T15>::value + is_map_arg<T16>::value
+ + is_map_arg<T17>::value + is_map_arg<T18>::value
+ + is_map_arg<T19>::value + is_map_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map_impl
+{
+ typedef aux::map_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::map_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map
+ : aux::map_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::map_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp
new file mode 100644
index 0000000..7b49450
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp
@@ -0,0 +1,133 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct minus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct minus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct minus2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+
+ : if_<
+
+ is_na<N3>
+ , minus2< N1,N2 >
+ , minus<
+ minus2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct minus2
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
new file mode 100644
index 0000000..8badbab
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
@@ -0,0 +1,101 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct modulus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct modulus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
new file mode 100644
index 0000000..d87d8cd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct not_equal_to_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct not_equal_to_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/or.hpp
new file mode 100644
index 0000000..3f7394e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/or.hpp
@@ -0,0 +1,73 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct or_impl
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : true_
+ {
+ };
+};
+
+template<> struct or_impl<false>
+{
+ template<
+ typename T1, typename T2, typename T3, typename T4
+ >
+ struct result_
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,false_ >
+ {
+ };
+};
+
+template<>
+struct or_impl<false>
+ ::result_< false_,false_,false_,false_ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ >::template result_< T2,T3,T4,T5 >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp
new file mode 100644
index 0000000..a55b24c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp
@@ -0,0 +1,133 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct plus_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct plus_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct plus2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+
+ : if_<
+
+ is_na<N3>
+ , plus2< N1,N2 >
+ , plus<
+ plus2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct plus2
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp
new file mode 100644
index 0000000..b85880f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp
@@ -0,0 +1,116 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+template< bool > struct quote_impl
+{
+ template< typename T > struct result_
+ : T
+ {
+ };
+};
+
+template<> struct quote_impl<false>
+{
+ template< typename T > struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ : quote_impl< aux::has_type< F<U1> >::value >
+ ::template result_< F<U1> >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2 > >::value >
+ ::template result_< F< U1,U2 > >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2,U3 > >::value >
+ ::template result_< F< U1,U2,U3 > >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2,U3,U4 > >::value >
+ ::template result_< F< U1,U2,U3,U4 > >
+
+ {
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ : quote_impl< aux::has_type< F< U1,U2,U3,U4,U5 > >::value >
+ ::template result_< F< U1,U2,U3,U4,U5 > >
+
+ {
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7a07414
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_fold_null_step< Last,State >
+ , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_step
+{
+ typedef reverse_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+ : reverse_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..39a4057
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+ };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+ };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step;
+
+template<
+ typename Last
+ , typename State
+ >
+struct reverse_iter_fold_null_step
+{
+ typedef Last iterator;
+ typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+ template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+ struct result_
+ {
+ typedef typename if_<
+ typename is_same< First,Last >::type
+ , reverse_iter_fold_null_step< Last,State >
+ , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+ >::type res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+ };
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_step
+{
+ typedef reverse_iter_fold_chunk< -1 >::template result_<
+ typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+ : reverse_iter_fold_chunk<N>
+ ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set.hpp
new file mode 100644
index 0000000..95aaa5c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef set0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_set_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_set_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct set_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_set_arg<T1>::value + is_set_arg<T2>::value
+ + is_set_arg<T3>::value + is_set_arg<T4>::value
+ + is_set_arg<T5>::value + is_set_arg<T6>::value
+ + is_set_arg<T7>::value + is_set_arg<T8>::value
+ + is_set_arg<T9>::value + is_set_arg<T10>::value
+ + is_set_arg<T11>::value + is_set_arg<T12>::value
+ + is_set_arg<T13>::value + is_set_arg<T14>::value
+ + is_set_arg<T15>::value + is_set_arg<T16>::value
+ + is_set_arg<T17>::value + is_set_arg<T18>::value
+ + is_set_arg<T19>::value + is_set_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set_impl
+{
+ typedef aux::set_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::set_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set
+ : aux::set_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::set_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
new file mode 100644
index 0000000..1ff34f9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set1_c<
+ T, C0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set2_c<
+ T, C0, C1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set3_c<
+ T, C0, C1, C2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set4_c<
+ T, C0, C1, C2, C3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set5_c<
+ T, C0, C1, C2, C3, C4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set6_c<
+ T, C0, C1, C2, C3, C4, C5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set7_c<
+ T, C0, C1, C2, C3, C4, C5, C6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set8_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set9_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set10_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set11_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set12_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set13_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_set_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_set_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct set_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_set_c_arg<C1>::value + is_set_c_arg<C2>::value
+ + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value
+ + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value
+ + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value
+ + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value
+ + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value
+ + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value
+ + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value
+ + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value
+ + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c_impl
+{
+ typedef aux::set_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::set_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c
+ : aux::set_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::set_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
new file mode 100644
index 0000000..d14a5e4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_left_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_left_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
new file mode 100644
index 0000000..08c4915
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_right_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct shift_right_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp
new file mode 100644
index 0000000..1164f0f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/times.hpp
new file mode 100644
index 0000000..fd773cc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/times.hpp
@@ -0,0 +1,133 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct times_impl< na,integral_c_tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template<> struct times_impl< integral_c_tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct times2;
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+
+ : if_<
+
+ is_na<N3>
+ , times2< N1,N2 >
+ , times<
+ times2< N1,N2 >
+ , N3, N4, N5
+ >
+ >::type
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1
+ , typename N2
+ >
+struct times2
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
new file mode 100644
index 0000000..26533dd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
@@ -0,0 +1,109 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+{
+ template< typename F, typename Args > struct apply;
+};
+
+template<> struct unpack_args_impl<0>
+{
+ template< typename F, typename Args > struct apply
+ : apply0<
+ F
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<1>
+{
+ template< typename F, typename Args > struct apply
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<2>
+{
+ template< typename F, typename Args > struct apply
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<3>
+{
+ template< typename F, typename Args > struct apply
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<4>
+{
+ template< typename F, typename Args > struct apply
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+ {
+ };
+};
+
+template<> struct unpack_args_impl<5>
+{
+ template< typename F, typename Args > struct apply
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+ {
+ };
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value >
+ ::template apply< F,Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp
new file mode 100644
index 0000000..a6c7b62
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp
@@ -0,0 +1,556 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_chooser<0>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef vector0<
+
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<1>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector1<
+ T0
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<2>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector2<
+ T0, T1
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<3>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector3<
+ T0, T1, T2
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<4>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector4<
+ T0, T1, T2, T3
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<5>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector5<
+ T0, T1, T2, T3, T4
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<6>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector6<
+ T0, T1, T2, T3, T4, T5
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<7>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector7<
+ T0, T1, T2, T3, T4, T5, T6
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<8>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector8<
+ T0, T1, T2, T3, T4, T5, T6, T7
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<9>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector9<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<10>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector10<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<11>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector11<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<12>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector12<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<13>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector13<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<14>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector14<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<15>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<16>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<17>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<18>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<19>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<20>
+{
+ template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+ struct result_
+ {
+ typedef typename vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_vector_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_vector_arg<na>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename T6, typename T7, typename T8, typename T9, typename T10
+ , typename T11, typename T12, typename T13, typename T14, typename T15
+ , typename T16, typename T17, typename T18, typename T19, typename T20
+ >
+struct vector_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_vector_arg<T1>::value + is_vector_arg<T2>::value
+ + is_vector_arg<T3>::value + is_vector_arg<T4>::value
+ + is_vector_arg<T5>::value + is_vector_arg<T6>::value
+ + is_vector_arg<T7>::value + is_vector_arg<T8>::value
+ + is_vector_arg<T9>::value + is_vector_arg<T10>::value
+ + is_vector_arg<T11>::value + is_vector_arg<T12>::value
+ + is_vector_arg<T13>::value + is_vector_arg<T14>::value
+ + is_vector_arg<T15>::value + is_vector_arg<T16>::value
+ + is_vector_arg<T17>::value + is_vector_arg<T18>::value
+ + is_vector_arg<T19>::value + is_vector_arg<T20>::value
+ );
+
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector_impl
+{
+ typedef aux::vector_count_args<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ > arg_num_;
+
+ typedef typename aux::vector_chooser< arg_num_::value >
+ ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector
+ : aux::vector_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type
+{
+ typedef typename aux::vector_impl<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
new file mode 100644
index 0000000..c522d08
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
@@ -0,0 +1,534 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<0>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector0_c<
+ T
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<1>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector1_c<
+ T, T(C0)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<2>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector2_c<
+ T, T(C0), T(C1)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<3>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector3_c<
+ T, T(C0), T(C1), T(C2)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<4>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector4_c<
+ T, T(C0), T(C1), T(C2), T(C3)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<5>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector5_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<6>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector6_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<7>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector7_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<8>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector8_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<9>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector9_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<10>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector10_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<11>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector11_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<12>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector12_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<13>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector13_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<14>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector14_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<15>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector15_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<16>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector16_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<17>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector17_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<18>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector18_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<19>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector19_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<20>
+{
+ template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+ struct result_
+ {
+ typedef typename vector20_c<
+ T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
+ >::type type;
+
+ };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_vector_c_arg
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct is_vector_c_arg<LONG_MAX>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template<
+ long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+ , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+ , long C16, long C17, long C18, long C19, long C20
+ >
+struct vector_c_count_args
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value
+ + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value
+ + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value
+ + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value
+ + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value
+ + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value
+ + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value
+ + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value
+ + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value
+ + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
+ );
+
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c_impl
+{
+ typedef aux::vector_c_count_args<
+ C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ > arg_num_;
+
+ typedef typename aux::vector_c_chooser< arg_num_::value >
+ ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c
+ : aux::vector_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type
+{
+ typedef typename aux::vector_c_impl<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+ >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/and.hpp
new file mode 100644
index 0000000..010ad1f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/and.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , and_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp
new file mode 100644
index 0000000..e08eacc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp
@@ -0,0 +1,169 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 1
+ , apply0
+ , (F )
+ )
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 2
+ , apply1
+ , (F, T1)
+ )
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , apply2
+ , (F, T1, T2)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , apply3
+ , (F, T1, T2, T3)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , apply4
+ , (F, T1, T2, T3, T4)
+ )
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 6
+ , apply5
+ , (F, T1, T2, T3, T4, T5)
+ )
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp
new file mode 100644
index 0000000..b2ed5d5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp
new file mode 100644
index 0000000..34d51a1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+
+ , typename has_apply_ = typename aux::has_apply<F>::type
+
+ >
+struct apply_wrap0
+
+ : F::template apply< >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+ : F::apply
+{
+};
+
+template<
+ typename F, typename T1
+
+ >
+struct apply_wrap1
+
+ : F::template apply<T1>
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+
+ >
+struct apply_wrap2
+
+ : F::template apply< T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+
+ >
+struct apply_wrap3
+
+ : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+
+ >
+struct apply_wrap4
+
+ : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+
+ >
+struct apply_wrap5
+
+ : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
new file mode 100644
index 0000000..095b84d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
@@ -0,0 +1,369 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp
new file mode 100644
index 0000000..2891440
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp
@@ -0,0 +1,466 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp
new file mode 100644
index 0000000..c4a5060
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct bind;
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
new file mode 100644
index 0000000..282771b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
@@ -0,0 +1,157 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitand_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 & n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitand_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
new file mode 100644
index 0000000..bc9c198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
@@ -0,0 +1,157 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitor_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 | n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitor_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
new file mode 100644
index 0000000..76ce540
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
@@ -0,0 +1,157 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitxor_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 ^ n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::bitxor_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp
new file mode 100644
index 0000000..de67398
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp
new file mode 100644
index 0000000..9bc7fb1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp
@@ -0,0 +1,156 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct divides_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 / n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::divides_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
new file mode 100644
index 0000000..fa2dc4a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
@@ -0,0 +1,98 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp
new file mode 100644
index 0000000..9e7a293
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
new file mode 100644
index 0000000..bf81873
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp
new file mode 100644
index 0000000..faa3f2b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp
@@ -0,0 +1,98 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
new file mode 100644
index 0000000..392d142
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
@@ -0,0 +1,98 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
new file mode 100644
index 0000000..00f31c4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 3
+ , inherit3
+ , ( T1, T2, T3)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 4
+ , inherit4
+ , ( T1, T2, T3, T4)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , inherit5
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp
new file mode 100644
index 0000000..805790e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
new file mode 100644
index 0000000..890a198
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less.hpp
new file mode 100644
index 0000000..6451680
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less.hpp
@@ -0,0 +1,98 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N2)::value >
+ BOOST_MPL_AUX_VALUE_WKND(N1)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
new file mode 100644
index 0000000..00ae0d3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
@@ -0,0 +1,98 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list.hpp
new file mode 100644
index 0000000..4e8ad53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp
new file mode 100644
index 0000000..0b48a7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/map.hpp
new file mode 100644
index 0000000..837e013
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp
new file mode 100644
index 0000000..bb67c59
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp
@@ -0,0 +1,156 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct minus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 - n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::minus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
new file mode 100644
index 0000000..6fd0cab
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
@@ -0,0 +1,111 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct modulus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 % n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::modulus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
new file mode 100644
index 0000000..7c940a5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
@@ -0,0 +1,98 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ ( BOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+ );
+ typedef bool_<value> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/or.hpp
new file mode 100644
index 0000000..31e1aaa
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/or.hpp
@@ -0,0 +1,69 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , or_
+ , ( T1, T2, T3, T4, T5)
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp
new file mode 100644
index 0000000..cecead7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp
@@ -0,0 +1,156 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct plus_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 + n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::plus_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp
new file mode 100644
index 0000000..e7a7f00
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp
@@ -0,0 +1,11 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp
new file mode 100644
index 0000000..c468684
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..658f92a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set.hpp
new file mode 100644
index 0000000..5721922
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp
new file mode 100644
index 0000000..cbeb932
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
new file mode 100644
index 0000000..7ef4672
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
@@ -0,0 +1,110 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_left_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n << s));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+ : aux::shift_left_wknd<
+ typename N::value_type
+ , typename S::value_type
+ , N::value
+ , S::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
new file mode 100644
index 0000000..91a98f7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
@@ -0,0 +1,110 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_right_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n >> s));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+ : aux::shift_right_wknd<
+ typename N::value_type
+ , typename S::value_type
+ , N::value
+ , S::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp
new file mode 100644
index 0000000..1164f0f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_< -1 >
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/times.hpp
new file mode 100644
index 0000000..d019b57
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/times.hpp
@@ -0,0 +1,156 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ 5
+ , times
+ , ( N1, N2, N3, N4, N5 )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct times_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = (n1 * n2));
+ typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+ : aux::times_wknd<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , N1::value
+ , N2::value
+ >::type
+
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
new file mode 100644
index 0000000..2194ce9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp
new file mode 100644
index 0000000..bfa9565
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp
new file mode 100644
index 0000000..0f1560d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp
new file mode 100644
index 0000000..26de94c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_backward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_backward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_backward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_backward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename prior<iter0>::type iter1;
+ typedef typename prior<iter1>::type iter2;
+ typedef typename prior<iter2>::type iter3;
+ typedef typename prior<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_backward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_backward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_backward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp
new file mode 100644
index 0000000..b137cc7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef iter0 type;
+ };
+};
+
+template<>
+struct advance_forward<1>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef iter1 type;
+ };
+};
+
+template<>
+struct advance_forward<2>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef iter2 type;
+ };
+};
+
+template<>
+struct advance_forward<3>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef iter3 type;
+ };
+};
+
+template<>
+struct advance_forward<4>
+{
+ template< typename Iterator > struct apply
+ {
+ typedef Iterator iter0;
+ typedef typename next<iter0>::type iter1;
+ typedef typename next<iter1>::type iter2;
+ typedef typename next<iter2>::type iter3;
+ typedef typename next<iter3>::type iter4;
+ typedef iter4 type;
+ };
+};
+
+template< long N >
+struct advance_forward
+{
+ template< typename Iterator > struct apply
+ {
+ typedef typename apply_wrap1<
+ advance_forward<4>
+ , Iterator
+ >::type chunk_result_;
+
+ typedef typename apply_wrap1<
+ advance_forward<(
+ (N - 4) < 0
+ ? 0
+ : N - 4
+ )>
+ , chunk_result_
+ >::type type;
+ };
+};
+
+}}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/and.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/and.hpp
new file mode 100644
index 0000000..163913f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/and.hpp
@@ -0,0 +1,64 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+ : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+ : and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , true_
+ >
+{
+};
+
+template<>
+struct and_impl<
+ true
+ , true_, true_, true_, true_
+ >
+ : true_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = true_, typename T4 = true_, typename T5 = true_
+ >
+struct and_
+
+ : aux::and_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , and_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply.hpp
new file mode 100644
index 0000000..89d9e4b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply.hpp
@@ -0,0 +1,139 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+ >
+struct apply0
+
+ : apply_wrap0<
+ typename lambda<F>::type
+
+ >
+{
+};
+
+template<
+ typename F
+ >
+struct apply< F,na,na,na,na,na >
+ : apply0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply1
+
+ : apply_wrap1<
+ typename lambda<F>::type
+ , T1
+ >
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct apply< F,T1,na,na,na,na >
+ : apply1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2
+
+ : apply_wrap2<
+ typename lambda<F>::type
+ , T1, T2
+ >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply< F,T1,T2,na,na,na >
+ : apply2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3
+
+ : apply_wrap3<
+ typename lambda<F>::type
+ , T1, T2, T3
+ >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply< F,T1,T2,T3,na,na >
+ : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4
+
+ : apply_wrap4<
+ typename lambda<F>::type
+ , T1, T2, T3, T4
+ >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply< F,T1,T2,T3,T4,na >
+ : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5
+
+ : apply_wrap5<
+ typename lambda<F>::type
+ , T1, T2, T3, T4, T5
+ >
+{
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply
+ : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
new file mode 100644
index 0000000..b2ed5d5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct apply;
+
+template<
+ typename F
+ >
+struct apply0;
+
+template<
+ typename F, typename T1
+ >
+struct apply1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct apply2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct apply3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct apply4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct apply5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
new file mode 100644
index 0000000..34d51a1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F
+
+ , typename has_apply_ = typename aux::has_apply<F>::type
+
+ >
+struct apply_wrap0
+
+ : F::template apply< >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+ : F::apply
+{
+};
+
+template<
+ typename F, typename T1
+
+ >
+struct apply_wrap1
+
+ : F::template apply<T1>
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+
+ >
+struct apply_wrap2
+
+ : F::template apply< T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+
+ >
+struct apply_wrap3
+
+ : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+
+ >
+struct apply_wrap4
+
+ : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+
+ >
+struct apply_wrap5
+
+ : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/arg.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/arg.hpp
new file mode 100644
index 0000000..6f2f8a8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+ BOOST_STATIC_CONSTANT(int, value = -1);
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<1>
+{
+ BOOST_STATIC_CONSTANT(int, value = 1);
+ typedef arg<2> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U1 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<2>
+{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+ typedef arg<3> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U2 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<3>
+{
+ BOOST_STATIC_CONSTANT(int, value = 3);
+ typedef arg<4> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U3 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<4>
+{
+ BOOST_STATIC_CONSTANT(int, value = 4);
+ typedef arg<5> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U4 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+template<> struct arg<5>
+{
+ BOOST_STATIC_CONSTANT(int, value = 5);
+ typedef arg<6> next;
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+ BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ typedef U5 type;
+ BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+ };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp
new file mode 100644
index 0000000..b070232
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp
@@ -0,0 +1,440 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+ typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+template<
+ template< typename T1, typename T2, typename T3 > class F, typename Tag
+ >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< eval_if,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+ typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+ typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+ typedef typename eval_if<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind.hpp
new file mode 100644
index 0000000..0e9513a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind.hpp
@@ -0,0 +1,561 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ typename T, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+template<
+ int N, typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+ typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+ typedef bind< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+ typename F
+ >
+struct bind0
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ public:
+ typedef typename apply_wrap0<
+ f_
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind0<F>, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind0<F> f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+ typename F
+ >
+struct bind< F,na,na,na,na,na >
+ : bind0<F>
+{
+};
+
+template<
+ typename F, typename T1
+ >
+struct bind1
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ public:
+ typedef typename apply_wrap1<
+ f_
+ , typename t1::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename U1, typename U2, typename U3
+ , typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind1< F,T1 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind1< F,T1 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+ typename F, typename T1
+ >
+struct bind< F,T1,na,na,na,na >
+ : bind1< F,T1 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ public:
+ typedef typename apply_wrap2<
+ f_
+ , typename t1::type, typename t2::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename U1, typename U2
+ , typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind2< F,T1,T2 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind< F,T1,T2,na,na,na >
+ : bind2< F,T1,T2 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ public:
+ typedef typename apply_wrap3<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename U1
+ , typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind3< F,T1,T2,T3 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind< F,T1,T2,T3,na,na >
+ : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ public:
+ typedef typename apply_wrap4<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename U1, typename U2, typename U3, typename U4, typename U5
+ >
+struct resolve_bind_arg<
+ bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind4< F,T1,T2,T3,T4 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind< F,T1,T2,T3,T4,na >
+ : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+ ///
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef aux::replace_unnamed_arg< T4,n4 > r4;
+ typedef typename r4::type a4;
+ typedef typename r4::next n5;
+ typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+ ///
+ typedef aux::replace_unnamed_arg< T5,n5 > r5;
+ typedef typename r5::type a5;
+ typedef typename r5::next n6;
+ typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+ ///
+ public:
+ typedef typename apply_wrap5<
+ f_
+ , typename t1::type, typename t2::type, typename t3::type
+ , typename t4::type, typename t5::type
+ >::type type;
+
+ };
+};
+
+namespace aux {
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+struct resolve_bind_arg<
+ bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+ >
+{
+ typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+ typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind
+ : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< if_,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename if_<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+template<
+ template< typename T1, typename T2, typename T3 > class F, typename Tag
+ >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+ typename Tag, typename T1, typename T2, typename T3
+ >
+struct bind3<
+ quote3< eval_if,Tag >
+ , T1, T2, T3
+ >
+{
+ template<
+ typename U1 = na, typename U2 = na, typename U3 = na
+ , typename U4 = na, typename U5 = na
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+ typedef aux::replace_unnamed_arg< T1,n1 > r1;
+ typedef typename r1::type a1;
+ typedef typename r1::next n2;
+ typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+ ///
+ typedef aux::replace_unnamed_arg< T2,n2 > r2;
+ typedef typename r2::type a2;
+ typedef typename r2::next n3;
+ typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+ ///
+ typedef aux::replace_unnamed_arg< T3,n3 > r3;
+ typedef typename r3::type a3;
+ typedef typename r3::next n4;
+ typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+ ///
+ typedef typename eval_if<
+ typename t1::type
+ , t2, t3
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp
new file mode 100644
index 0000000..c4a5060
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename F, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na
+ >
+struct bind;
+
+template<
+ typename F
+ >
+struct bind0;
+
+template<
+ typename F, typename T1
+ >
+struct bind1;
+
+template<
+ typename F, typename T1, typename T2
+ >
+struct bind2;
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ >
+struct bind3;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ >
+struct bind4;
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct bind5;
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitand.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitand.hpp
new file mode 100644
index 0000000..ee40fb3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitand.hpp
@@ -0,0 +1,142 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitand_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitand_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitand_
+ : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitand_< N1,N2,N3,N4,na >
+
+ : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitand_< N1,N2,N3,na,na >
+
+ : bitand_< bitand_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitand_< N1,N2,na,na,na >
+ : bitand_impl<
+ typename bitand_tag<N1>::type
+ , typename bitand_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitand_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitor.hpp
new file mode 100644
index 0000000..1e28d3b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitor.hpp
@@ -0,0 +1,142 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitor_
+ : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitor_< N1,N2,N3,N4,na >
+
+ : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitor_< N1,N2,N3,na,na >
+
+ : bitor_< bitor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitor_< N1,N2,na,na,na >
+ : bitor_impl<
+ typename bitor_tag<N1>::type
+ , typename bitor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitxor.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitxor.hpp
new file mode 100644
index 0000000..2ba879d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/bitxor.hpp
@@ -0,0 +1,142 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct bitxor_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct bitxor_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct bitxor_
+ : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct bitxor_< N1,N2,N3,N4,na >
+
+ : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct bitxor_< N1,N2,N3,na,na >
+
+ : bitxor_< bitxor_< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct bitxor_< N1,N2,na,na,na >
+ : bitxor_impl<
+ typename bitxor_tag<N1>::type
+ , typename bitxor_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , bitxor_
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/deque.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/deque.hpp
new file mode 100644
index 0000000..de67398
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/deque.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct deque;
+
+template<
+
+ >
+struct deque<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct deque<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct deque<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct deque<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct deque<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct deque<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct deque<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct deque
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/divides.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/divides.hpp
new file mode 100644
index 0000000..f365d62
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/divides.hpp
@@ -0,0 +1,141 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct divides_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct divides_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct divides
+ : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct divides< N1,N2,N3,N4,na >
+
+ : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct divides< N1,N2,N3,na,na >
+
+ : divides< divides< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct divides< N1,N2,na,na,na >
+ : divides_impl<
+ typename divides_tag<N1>::type
+ , typename divides_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , divides
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/equal_to.hpp
new file mode 100644
index 0000000..bbc6bf0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/equal_to.hpp
@@ -0,0 +1,92 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct equal_to
+
+ : equal_to_impl<
+ typename equal_to_tag<N1>::type
+ , typename equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp
new file mode 100644
index 0000000..9e7a293
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl
+{
+ typedef fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+ : fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp
new file mode 100644
index 0000000..bf81873
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+
+ >
+struct lambda
+{
+ typedef false_ is_le;
+ typedef T result_;
+ typedef T type;
+};
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+ typedef true_ is_le;
+ typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+ typedef mpl::protect<result_> type;
+};
+
+template<
+ typename F
+ , typename Tag
+ >
+struct lambda<
+ bind0<F>
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind0<
+ F
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1
+{
+ typedef F<
+ typename L1::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1 > class F
+ , typename L1
+ >
+struct le_result1< true_,Tag,F,L1 >
+{
+ typedef bind1<
+ quote1< F,Tag >
+ , typename L1::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1 > class F
+ , typename T1
+ , typename Tag
+ >
+struct lambda<
+ F<T1>
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef typename l1::is_le is_le1;
+ typedef typename aux::lambda_or<
+ is_le1::value
+ >::type is_le;
+
+ typedef aux::le_result1<
+ is_le, Tag, F, l1
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1
+ , typename Tag
+ >
+struct lambda<
+ bind1< F,T1 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind1<
+ F
+ , T1
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2
+{
+ typedef F<
+ typename L1::type, typename L2::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2 > class F
+ , typename L1, typename L2
+ >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+ typedef bind2<
+ quote2< F,Tag >
+ , typename L1::result_, typename L2::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value
+ >::type is_le;
+
+ typedef aux::le_result2<
+ is_le, Tag, F, l1, l2
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2
+ , typename Tag
+ >
+struct lambda<
+ bind2< F,T1,T2 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind2<
+ F
+ , T1, T2
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3 > class F
+ , typename L1, typename L2, typename L3
+ >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+ typedef bind3<
+ quote3< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value
+ >::type is_le;
+
+ typedef aux::le_result3<
+ is_le, Tag, F, l1, l2, l3
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3
+ , typename Tag
+ >
+struct lambda<
+ bind3< F,T1,T2,T3 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind3<
+ F
+ , T1, T2, T3
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename L1, typename L2, typename L3, typename L4
+ >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+ typedef bind4<
+ quote4< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ >::type is_le;
+
+ typedef aux::le_result4<
+ is_le, Tag, F, l1, l2, l3, l4
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename Tag
+ >
+struct lambda<
+ bind4< F,T1,T2,T3,T4 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind4<
+ F
+ , T1, T2, T3, T4
+ > result_;
+
+ typedef result_ type;
+};
+
+namespace aux {
+
+template<
+ typename IsLE, typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5
+{
+ typedef F<
+ typename L1::type, typename L2::type, typename L3::type
+ , typename L4::type, typename L5::type
+ > result_;
+
+ typedef result_ type;
+};
+
+template<
+ typename Tag
+ , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+ , typename L1, typename L2, typename L3, typename L4, typename L5
+ >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+ typedef bind5<
+ quote5< F,Tag >
+ , typename L1::result_, typename L2::result_, typename L3::result_
+ , typename L4::result_, typename L5::result_
+ > result_;
+
+ typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename T1, typename T2, typename T3, typename T4, typename T5
+ , typename Tag
+ >
+struct lambda<
+ F< T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef lambda< T1,Tag > l1;
+ typedef lambda< T2,Tag > l2;
+ typedef lambda< T3,Tag > l3;
+ typedef lambda< T4,Tag > l4;
+ typedef lambda< T5,Tag > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef typename aux::lambda_or<
+ is_le1::value, is_le2::value, is_le3::value, is_le4::value
+ , is_le5::value
+ >::type is_le;
+
+ typedef aux::le_result5<
+ is_le, Tag, F, l1, l2, l3, l4, l5
+ > le_result_;
+
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind5< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind5<
+ F
+ , T1, T2, T3, T4, T5
+ > result_;
+
+ typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+ typedef false_ is_le;
+ typedef mpl::protect<T> result_;
+ typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+ typename F, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ , typename Tag
+ >
+struct lambda<
+ bind< F,T1,T2,T3,T4,T5 >
+ , Tag
+
+ >
+{
+ typedef false_ is_le;
+ typedef bind< F,T1,T2,T3,T4,T5 > result_;
+ typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+ typename F, typename Tag1, typename Tag2
+ >
+struct lambda<
+ lambda< F,Tag1 >
+ , Tag2
+ >
+{
+ typedef lambda< F,Tag2 > l1;
+ typedef lambda< Tag1,Tag2 > l2;
+ typedef typename l1::is_le is_le;
+ typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+ typedef typename le_result_::result_ result_;
+ typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater.hpp
new file mode 100644
index 0000000..38c8bb3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater.hpp
@@ -0,0 +1,92 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater
+
+ : greater_impl<
+ typename greater_tag<N1>::type
+ , typename greater_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp
new file mode 100644
index 0000000..2aa8370
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp
@@ -0,0 +1,92 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct greater_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct greater_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct greater_equal
+
+ : greater_equal_impl<
+ typename greater_equal_tag<N1>::type
+ , typename greater_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/inherit.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/inherit.hpp
new file mode 100644
index 0000000..8b34e71
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/inherit.hpp
@@ -0,0 +1,125 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct inherit2
+ : T1, T2
+{
+ typedef inherit2 type;
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+ typedef T1 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+ typedef T2 type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+ typedef empty_base type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na
+ >
+struct inherit3
+ : inherit2<
+ typename inherit2<
+ T1, T2
+ >::type
+ , T3
+ >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ >
+struct inherit4
+ : inherit2<
+ typename inherit3<
+ T1, T2, T3
+ >::type
+ , T4
+ >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+ typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+ , typename T5 = na
+ >
+struct inherit5
+ : inherit2<
+ typename inherit4<
+ T1, T2, T3, T4
+ >::type
+ , T5
+ >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+ >
+struct inherit
+ : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+ template<
+
+ typename T1 = empty_base, typename T2 = empty_base
+ , typename T3 = empty_base, typename T4 = empty_base
+ , typename T5 = empty_base
+
+ >
+ struct apply
+ : inherit< T1,T2,T3,T4,T5 >
+ {
+ };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..6951795
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+ typedef State state;
+ typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef typename apply2< StateOp,State,Iterator >::type state;
+ typedef typename IteratorOp::type iterator;
+ };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+ template<
+ typename Iterator
+ , typename State
+ , typename StateOp
+ , typename IteratorOp
+ >
+ struct result_
+ {
+ typedef State state;
+ typedef Iterator iterator;
+ };
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_forward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename BackwardOp
+ , typename Predicate
+ >
+struct iter_fold_if_backward_step
+{
+ typedef typename apply2< Predicate,State,Iterator >::type not_last;
+ typedef typename iter_fold_if_step_impl<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+ >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+ typedef typename impl_::state state;
+ typedef typename impl_::iterator iterator;
+};
+
+template<
+ typename Iterator
+ , typename State
+ , typename ForwardOp
+ , typename ForwardPredicate
+ , typename BackwardOp
+ , typename BackwardPredicate
+ >
+struct iter_fold_if_impl
+{
+ private:
+ typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+ typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+ typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+ typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+ typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+
+
+ typedef typename if_<
+ typename forward_step4::not_last
+ , iter_fold_if_impl<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ , ForwardOp
+ , ForwardPredicate
+ , BackwardOp
+ , BackwardPredicate
+ >
+ , iter_fold_if_null_step<
+ typename forward_step4::iterator
+ , typename forward_step4::state
+ >
+ >::type backward_step4;
+
+ typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+ typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+ typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+ typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+
+
+ public:
+ typedef typename backward_step0::state state;
+ typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
new file mode 100644
index 0000000..805790e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef state1 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef state2 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef state3 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+ typedef First iter0;
+ typedef State state0;
+ typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef state4 state;
+ typedef iter4 iterator;
+};
+
+template<
+ int N
+ , typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl
+{
+ typedef iter_fold_impl<
+ 4
+ , First
+ , Last
+ , State
+ , ForwardOp
+ > chunk_;
+
+ typedef iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , typename chunk_::iterator
+ , Last
+ , typename chunk_::state
+ , ForwardOp
+ > res_;
+
+ typedef typename res_::state state;
+ typedef typename res_::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+ : iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , ForwardOp
+ >
+{
+};
+
+template<
+ typename Last
+ , typename State
+ , typename ForwardOp
+ >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
new file mode 100644
index 0000000..f8f109c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
@@ -0,0 +1,228 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+ bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+ , bool C5 = false
+ >
+struct lambda_or
+ : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+ : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less.hpp
new file mode 100644
index 0000000..928d0e3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less.hpp
@@ -0,0 +1,92 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less
+
+ : less_impl<
+ typename less_tag<N1>::type
+ , typename less_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less_equal.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less_equal.hpp
new file mode 100644
index 0000000..364cd96
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/less_equal.hpp
@@ -0,0 +1,92 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct less_equal_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct less_equal_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct less_equal
+
+ : less_equal_impl<
+ typename less_equal_tag<N1>::type
+ , typename less_equal_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list.hpp
new file mode 100644
index 0000000..4e8ad53
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct list;
+
+template<
+
+ >
+struct list<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list0< >
+{
+ typedef list0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct list<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list1<T0>
+{
+ typedef typename list1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct list<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list2< T0,T1 >
+{
+ typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct list<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list3< T0,T1,T2 >
+{
+ typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct list<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list4< T0,T1,T2,T3 >
+{
+ typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct list<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list5< T0,T1,T2,T3,T4 >
+{
+ typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : list15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : list16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : list17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : list18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct list<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : list19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct list
+ : list20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list_c.hpp
new file mode 100644
index 0000000..0b48a7f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/list_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct list_c;
+
+template<
+ typename T
+ >
+struct list_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list0_c<T>
+{
+ typedef typename list0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct list_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list1_c< T,C0 >
+{
+ typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct list_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list2_c< T,C0,C1 >
+{
+ typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct list_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list3_c< T,C0,C1,C2 >
+{
+ typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct list_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : list17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : list18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct list_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : list19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct list_c
+ : list20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/map.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/map.hpp
new file mode 100644
index 0000000..837e013
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/map.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct map;
+
+template<
+
+ >
+struct map<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map0< >
+{
+ typedef map0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct map<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map1<T0>
+{
+ typedef typename map1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct map<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map2< T0,T1 >
+{
+ typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct map<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map3< T0,T1,T2 >
+{
+ typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct map<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map4< T0,T1,T2,T3 >
+{
+ typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct map<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map5< T0,T1,T2,T3,T4 >
+{
+ typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : map15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : map16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : map17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : map18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct map<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : map19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct map
+ : map20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/minus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/minus.hpp
new file mode 100644
index 0000000..0b8b5ce
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/minus.hpp
@@ -0,0 +1,141 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct minus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct minus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct minus
+ : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct minus< N1,N2,N3,N4,na >
+
+ : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct minus< N1,N2,N3,na,na >
+
+ : minus< minus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct minus< N1,N2,na,na,na >
+ : minus_impl<
+ typename minus_tag<N1>::type
+ , typename minus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , minus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/modulus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/modulus.hpp
new file mode 100644
index 0000000..6a64e49
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/modulus.hpp
@@ -0,0 +1,99 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct modulus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct modulus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct modulus
+
+ : modulus_impl<
+ typename modulus_tag<N1>::type
+ , typename modulus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
new file mode 100644
index 0000000..c08d7f0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
@@ -0,0 +1,92 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct not_equal_to_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct not_equal_to
+
+ : not_equal_to_impl<
+ typename not_equal_to_tag<N1>::type
+ , typename not_equal_to_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace boost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/or.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/or.hpp
new file mode 100644
index 0000000..986b2e0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/or.hpp
@@ -0,0 +1,64 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+ : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+ : or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4
+ , false_
+ >
+{
+};
+
+template<>
+struct or_impl<
+ false
+ , false_, false_, false_, false_
+ >
+ : false_
+{
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename T3 = false_, typename T4 = false_, typename T5 = false_
+ >
+struct or_
+
+ : aux::or_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+ , T2, T3, T4, T5
+ >
+
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+ 2
+ , 5
+ , or_
+ )
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/placeholders.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/placeholders.hpp
new file mode 100644
index 0000000..ff97364
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/plus.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/plus.hpp
new file mode 100644
index 0000000..ed2e432
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/plus.hpp
@@ -0,0 +1,141 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct plus_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct plus_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct plus
+ : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct plus< N1,N2,N3,N4,na >
+
+ : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct plus< N1,N2,N3,na,na >
+
+ : plus< plus< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct plus< N1,N2,na,na,na >
+ : plus_impl<
+ typename plus_tag<N1>::type
+ , typename plus_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , plus
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/quote.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/quote.hpp
new file mode 100644
index 0000000..d7d0420
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/quote.hpp
@@ -0,0 +1,123 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+ : T
+{
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+ typedef T type;
+};
+
+template<
+ template< typename P1 > class F
+ , typename Tag = void_
+ >
+struct quote1
+{
+ template< typename U1 > struct apply
+
+ : quote_impl<
+ F<U1>
+ , aux::has_type< F<U1> >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2 > class F
+ , typename Tag = void_
+ >
+struct quote2
+{
+ template< typename U1, typename U2 > struct apply
+
+ : quote_impl<
+ F< U1,U2 >
+ , aux::has_type< F< U1,U2 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3 > class F
+ , typename Tag = void_
+ >
+struct quote3
+{
+ template< typename U1, typename U2, typename U3 > struct apply
+
+ : quote_impl<
+ F< U1,U2,U3 >
+ , aux::has_type< F< U1,U2,U3 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template< typename P1, typename P2, typename P3, typename P4 > class F
+ , typename Tag = void_
+ >
+struct quote4
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4 >
+ , aux::has_type< F< U1,U2,U3,U4 > >::value
+ >
+
+ {
+ };
+};
+
+template<
+ template<
+ typename P1, typename P2, typename P3, typename P4
+ , typename P5
+ >
+ class F
+ , typename Tag = void_
+ >
+struct quote5
+{
+ template<
+ typename U1, typename U2, typename U3, typename U4
+ , typename U5
+ >
+ struct apply
+
+ : quote_impl<
+ F< U1,U2,U3,U4,U5 >
+ , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+ >
+
+ {
+ };
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp
new file mode 100644
index 0000000..c468684
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+ typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+ typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+ typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , typename deref<First>::type
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..658f92a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl;
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef fwd_state0 bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter0 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+
+
+ typedef fwd_state1 bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+ typedef bkwd_state0 state;
+ typedef iter1 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+
+
+ typedef fwd_state2 bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter2 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+
+
+ typedef fwd_state3 bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter3 iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef fwd_state4 bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef iter4 iterator;
+};
+
+template<
+ long N
+ , typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl
+{
+ typedef First iter0;
+ typedef State fwd_state0;
+ typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+ typedef typename mpl::next<iter0>::type iter1;
+ typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+ typedef typename mpl::next<iter1>::type iter2;
+ typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+ typedef typename mpl::next<iter2>::type iter3;
+ typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+ typedef typename mpl::next<iter3>::type iter4;
+
+
+ typedef reverse_iter_fold_impl<
+ ( (N - 4) < 0 ? 0 : N - 4 )
+ , iter4
+ , Last
+ , fwd_state4
+ , BackwardOp
+ , ForwardOp
+ > nested_chunk;
+
+ typedef typename nested_chunk::state bkwd_state4;
+ typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+ typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+ typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+ typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+
+
+ typedef bkwd_state0 state;
+ typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+ typename First
+ , typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+ typedef reverse_iter_fold_impl<
+ -1
+ , typename mpl::next<First>::type
+ , Last
+ , typename apply2< ForwardOp,State,First >::type
+ , BackwardOp
+ , ForwardOp
+ > nested_step;
+
+ typedef typename apply2<
+ BackwardOp
+ , typename nested_step::state
+ , First
+ >::type state;
+
+ typedef typename nested_step::iterator iterator;
+};
+
+template<
+ typename Last
+ , typename State
+ , typename BackwardOp
+ , typename ForwardOp
+ >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+ typedef State state;
+ typedef Last iterator;
+};
+
+}}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set.hpp
new file mode 100644
index 0000000..5721922
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct set;
+
+template<
+
+ >
+struct set<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set0< >
+{
+ typedef set0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct set<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set1<T0>
+{
+ typedef typename set1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct set<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set2< T0,T1 >
+{
+ typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct set<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set3< T0,T1,T2 >
+{
+ typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct set<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set4< T0,T1,T2,T3 >
+{
+ typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct set<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set5< T0,T1,T2,T3,T4 >
+{
+ typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : set15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : set16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : set17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : set18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct set<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : set19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct set
+ : set20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set_c.hpp
new file mode 100644
index 0000000..cbeb932
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/set_c.hpp
@@ -0,0 +1,328 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct set_c;
+
+template<
+ typename T
+ >
+struct set_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set0_c<T>
+{
+ typedef typename set0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct set_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set1_c< T,C0 >
+{
+ typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct set_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set2_c< T,C0,C1 >
+{
+ typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct set_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set3_c< T,C0,C1,C2 >
+{
+ typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct set_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set4_c< T,C0,C1,C2,C3 >
+{
+ typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set5_c< T,C0,C1,C2,C3,C4 >
+{
+ typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+ typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+ typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+ typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+ typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+ typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+ typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+ typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+ typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set14_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ >
+{
+ typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set15_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ >
+{
+ typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set16_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15
+ >
+{
+ typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : set17_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16
+ >
+{
+ typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : set18_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17
+ >
+{
+ typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct set_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : set19_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18
+ >
+{
+ typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct set_c
+ : set20_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, C19
+ >
+{
+ typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_left.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_left.hpp
new file mode 100644
index 0000000..cf9c837
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_left.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_left_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_left_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_left
+
+ : shift_left_impl<
+ typename shift_left_tag<N1>::type
+ , typename shift_left_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ << BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_right.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_right.hpp
new file mode 100644
index 0000000..477229f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/shift_right.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 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)
+//
+
+// Preprocessed version of "boost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct shift_right_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct shift_right_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ >
+struct shift_right
+
+ : shift_right_impl<
+ typename shift_right_tag<N1>::type
+ , typename shift_right_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N, typename S > struct apply
+
+ : integral_c<
+ typename N::value_type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/template_arity.hpp
new file mode 100644
index 0000000..a23fc23
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/template_arity.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2001-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)
+//
+
+// Preprocessed version of "boost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/times.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/times.hpp
new file mode 100644
index 0000000..ca88d40
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/times.hpp
@@ -0,0 +1,141 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename Tag1
+ , typename Tag2
+ >
+struct times_impl
+ : if_c<
+ ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+ > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+ )
+
+ , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+ , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+ >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+ template< typename U1, typename U2 > struct apply
+ {
+ typedef apply type;
+ BOOST_STATIC_CONSTANT(int, value = 0);
+ };
+};
+
+template< typename T > struct times_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N1)
+ , typename BOOST_MPL_AUX_NA_PARAM(N2)
+ , typename N3 = na, typename N4 = na, typename N5 = na
+ >
+struct times
+ : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+ typename N1, typename N2, typename N3, typename N4
+ >
+struct times< N1,N2,N3,N4,na >
+
+ : times< times< times< N1,N2 >, N3>, N4>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, N4, na )
+ )
+};
+
+template<
+ typename N1, typename N2, typename N3
+ >
+struct times< N1,N2,N3,na,na >
+
+ : times< times< N1,N2 >, N3>
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, N3, na, na )
+ )
+};
+
+template<
+ typename N1, typename N2
+ >
+struct times< N1,N2,na,na,na >
+ : times_impl<
+ typename times_tag<N1>::type
+ , typename times_tag<N2>::type
+ >::template apply< N1,N2 >::type
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+ 5
+ , times
+ , ( N1, N2, na, na, na )
+ )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace boost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+ template< typename N1, typename N2 > struct apply
+
+ : integral_c<
+ typename aux::largest_int<
+ typename N1::value_type
+ , typename N2::value_type
+ >::type
+ , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+ * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+ )
+ >
+ {
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp
new file mode 100644
index 0000000..2194ce9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "boost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+ : apply0<
+ F
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+ : apply1<
+ F
+ , typename at_c< Args,0 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+ : apply2<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+ : apply3<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+ : apply4<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+ : apply5<
+ F
+ , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+ , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+ , typename at_c< Args,4 >::type
+ >
+{
+};
+
+}
+
+template<
+ typename F
+ >
+struct unpack_args
+{
+ template< typename Args > struct apply
+
+ : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+ {
+ };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector.hpp
new file mode 100644
index 0000000..bfa9565
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector.hpp
@@ -0,0 +1,323 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+ , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+ , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+ , typename T12 = na, typename T13 = na, typename T14 = na
+ , typename T15 = na, typename T16 = na, typename T17 = na
+ , typename T18 = na, typename T19 = na
+ >
+struct vector;
+
+template<
+
+ >
+struct vector<
+ na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector0< >
+{
+ typedef vector0< >::type type;
+};
+
+template<
+ typename T0
+ >
+struct vector<
+ T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector1<T0>
+{
+ typedef typename vector1<T0>::type type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector<
+ T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector2< T0,T1 >
+{
+ typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector<
+ T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector3< T0,T1,T2 >
+{
+ typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector<
+ T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector4< T0,T1,T2,T3 >
+{
+ typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector<
+ T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector5< T0,T1,T2,T3,T4 >
+{
+ typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector6< T0,T1,T2,T3,T4,T5 >
+{
+ typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+ typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+ typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+ typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+ typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+ , na, na, na
+ >
+ : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+ typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+ , na, na, na, na
+ >
+ : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+ typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+ , na, na, na, na
+ >
+ : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+ typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+ , na, na, na, na
+ >
+ : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+ typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+ , na, na, na, na
+ >
+ : vector15<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ >
+{
+ typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, na, na, na, na
+ >
+ : vector16<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15
+ >
+{
+ typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, na, na, na
+ >
+ : vector17<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16
+ >
+{
+ typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, na, na
+ >
+ : vector18<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17
+ >
+{
+ typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, na
+ >
+ : vector19<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18
+ >
+{
+ typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector
+ : vector20<
+ T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+ , T15, T16, T17, T18, T19
+ >
+{
+ typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector_c.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector_c.hpp
new file mode 100644
index 0000000..0f1560d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessed/plain/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+ , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+ , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+ , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+ , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+ , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+ , long C18 = LONG_MAX, long C19 = LONG_MAX
+ >
+struct vector_c;
+
+template<
+ typename T
+ >
+struct vector_c<
+ T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector0_c<T>
+{
+ typedef typename vector0_c<T>::type type;
+};
+
+template<
+ typename T, long C0
+ >
+struct vector_c<
+ T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector1_c< T, T(C0) >
+{
+ typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+ typename T, long C0, long C1
+ >
+struct vector_c<
+ T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector2_c< T, T(C0), T(C1) >
+{
+ typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2
+ >
+struct vector_c<
+ T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+ typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+ typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+ typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+ typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+ typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX
+ >
+ : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+ typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+ typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ , LONG_MAX
+ >
+ : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+ typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+ typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+ typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+ typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+ typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+ typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+ typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+ >
+ : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+ typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, LONG_MAX, LONG_MAX
+ >
+ : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+ typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18
+ >
+struct vector_c<
+ T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+ , C15, C16, C17, C18, LONG_MAX
+ >
+ : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+ typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+ typename T, long C0, long C1, long C2, long C3, long C4, long C5
+ , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+ , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+ >
+struct vector_c
+ : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+ typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/add.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/add.hpp
new file mode 100644
index 0000000..9cf4a9a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/add.hpp
@@ -0,0 +1,65 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: add.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/preprocessor.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/mpl/aux_/preprocessor/tuple.hpp>
+
+#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_ADD(i,j) \
+ BOOST_MPL_PP_ADD_DELAY(i,j) \
+ /**/
+
+# define BOOST_MPL_PP_ADD_DELAY(i,j) \
+ BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_ADD_##j) \
+ /**/
+#else
+# define BOOST_MPL_PP_ADD(i,j) \
+ BOOST_MPL_PP_ADD_DELAY(i,j) \
+ /**/
+
+# define BOOST_MPL_PP_ADD_DELAY(i,j) \
+ BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_ADD_##j \
+ /**/
+#endif
+
+# define BOOST_MPL_PP_ADD_0 (0,1,2,3,4,5,6,7,8,9,10)
+# define BOOST_MPL_PP_ADD_1 (1,2,3,4,5,6,7,8,9,10,0)
+# define BOOST_MPL_PP_ADD_2 (2,3,4,5,6,7,8,9,10,0,0)
+# define BOOST_MPL_PP_ADD_3 (3,4,5,6,7,8,9,10,0,0,0)
+# define BOOST_MPL_PP_ADD_4 (4,5,6,7,8,9,10,0,0,0,0)
+# define BOOST_MPL_PP_ADD_5 (5,6,7,8,9,10,0,0,0,0,0)
+# define BOOST_MPL_PP_ADD_6 (6,7,8,9,10,0,0,0,0,0,0)
+# define BOOST_MPL_PP_ADD_7 (7,8,9,10,0,0,0,0,0,0,0)
+# define BOOST_MPL_PP_ADD_8 (8,9,10,0,0,0,0,0,0,0,0)
+# define BOOST_MPL_PP_ADD_9 (9,10,0,0,0,0,0,0,0,0,0)
+# define BOOST_MPL_PP_ADD_10 (10,0,0,0,0,0,0,0,0,0,0)
+
+#else
+
+# include <boost/preprocessor/arithmetic/add.hpp>
+
+# define BOOST_MPL_PP_ADD(i,j) \
+ BOOST_PP_ADD(i,j) \
+ /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp
new file mode 100644
index 0000000..7b0b0af
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/def_params_tail.hpp
@@ -0,0 +1,105 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_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: def_params_tail.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/limits/arity.hpp>
+#include <boost/mpl/aux_/config/dtp.hpp>
+#include <boost/mpl/aux_/config/preprocessor.hpp>
+
+#include <boost/preprocessor/comma_if.hpp>
+#include <boost/preprocessor/logical/and.hpp>
+#include <boost/preprocessor/identity.hpp>
+#include <boost/preprocessor/empty.hpp>
+
+// BOOST_MPL_PP_DEF_PARAMS_TAIL(1,T,value): , T1 = value, .., Tn = value
+// BOOST_MPL_PP_DEF_PARAMS_TAIL(2,T,value): , T2 = value, .., Tn = value
+// BOOST_MPL_PP_DEF_PARAMS_TAIL(n,T,value): <nothing>
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/mpl/aux_/preprocessor/filter_params.hpp>
+# include <boost/mpl/aux_/preprocessor/sub.hpp>
+
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
+ BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1( \
+ i \
+ , BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,i) \
+ , param \
+ , value_func \
+ ) \
+ /**/
+
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1(i, n, param, value_func) \
+ BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i,n,param,value_func) \
+ /**/
+
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i, n, param, value_func) \
+ BOOST_PP_COMMA_IF(BOOST_PP_AND(i,n)) \
+ BOOST_MPL_PP_DEF_PARAMS_TAIL_##i(n,param,value_func) \
+ /**/
+
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_0(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##1 v(),p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v())
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_1(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_2(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_3(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_4(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_5(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_6(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_7(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6,p7)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_8(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9 v(),p1,p2,p3,p4,p5,p6,p7,p8)
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_9(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p1,p2,p3,p4,p5,p6,p7,p8,p9)
+
+#else
+
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC(unused, i, op) \
+ , BOOST_PP_CAT( \
+ BOOST_PP_TUPLE_ELEM(3, 1, op) \
+ , BOOST_PP_ADD_D(1, i, BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(3, 0, op))) \
+ ) BOOST_PP_TUPLE_ELEM(3, 2, op)() \
+ /**/
+
+# define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
+ BOOST_PP_REPEAT( \
+ BOOST_PP_SUB_D(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, i) \
+ , BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC \
+ , (i, param, value_func) \
+ ) \
+ /**/
+
+
+#endif // BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
+
+#define BOOST_MPL_PP_DEF_PARAMS_TAIL(i, param, value) \
+ BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
+ /**/
+
+#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
+ BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
+ /**/
+#else
+# define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
+ BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_EMPTY) \
+ /**/
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/default_params.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/default_params.hpp
new file mode 100644
index 0000000..63cf92e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/default_params.hpp
@@ -0,0 +1,67 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: default_params.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/preprocessor.hpp>
+
+// BOOST_MPL_PP_DEFAULT_PARAMS(0,T,int): <nothing>
+// BOOST_MPL_PP_DEFAULT_PARAMS(1,T,int): T1 = int
+// BOOST_MPL_PP_DEFAULT_PARAMS(2,T,int): T1 = int, T2 = int
+// BOOST_MPL_PP_DEFAULT_PARAMS(n,T,int): T1 = int, T2 = int, .., Tn = int
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_DEFAULT_PARAMS(n,p,v) \
+ BOOST_PP_CAT(BOOST_MPL_PP_DEFAULT_PARAMS_,n)(p,v) \
+ /**/
+
+# define BOOST_MPL_PP_DEFAULT_PARAMS_0(p,v)
+# define BOOST_MPL_PP_DEFAULT_PARAMS_1(p,v) p##1=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_2(p,v) p##1=v,p##2=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_3(p,v) p##1=v,p##2=v,p##3=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_4(p,v) p##1=v,p##2=v,p##3=v,p##4=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_5(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_6(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_7(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_8(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v,p##8=v
+# define BOOST_MPL_PP_DEFAULT_PARAMS_9(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v,p##8=v,p##9=v
+
+#else
+
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC(unused, i, pv) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_PP_CAT( BOOST_PP_TUPLE_ELEM(2,0,pv), BOOST_PP_INC(i) ) \
+ = BOOST_PP_TUPLE_ELEM(2,1,pv) \
+ /**/
+
+# define BOOST_MPL_PP_DEFAULT_PARAMS(n, param, value) \
+ BOOST_PP_REPEAT( \
+ n \
+ , BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC \
+ , (param,value) \
+ ) \
+ /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/enum.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/enum.hpp
new file mode 100644
index 0000000..a7f95e3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/enum.hpp
@@ -0,0 +1,62 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_ENUM_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: enum.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/preprocessor.hpp>
+
+// BOOST_MPL_PP_ENUM(0,int): <nothing>
+// BOOST_MPL_PP_ENUM(1,int): int
+// BOOST_MPL_PP_ENUM(2,int): int, int
+// BOOST_MPL_PP_ENUM(n,int): int, int, .., int
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_ENUM(n, param) \
+ BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
+ /**/
+
+# define BOOST_MPL_PP_ENUM_0(p)
+# define BOOST_MPL_PP_ENUM_1(p) p
+# define BOOST_MPL_PP_ENUM_2(p) p,p
+# define BOOST_MPL_PP_ENUM_3(p) p,p,p
+# define BOOST_MPL_PP_ENUM_4(p) p,p,p,p
+# define BOOST_MPL_PP_ENUM_5(p) p,p,p,p,p
+# define BOOST_MPL_PP_ENUM_6(p) p,p,p,p,p,p
+# define BOOST_MPL_PP_ENUM_7(p) p,p,p,p,p,p,p
+# define BOOST_MPL_PP_ENUM_8(p) p,p,p,p,p,p,p,p
+# define BOOST_MPL_PP_ENUM_9(p) p,p,p,p,p,p,p,p,p
+
+#else
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/repeat.hpp>
+
+# define BOOST_MPL_PP_AUX_ENUM_FUNC(unused, i, param) \
+ BOOST_PP_COMMA_IF(i) param \
+ /**/
+
+# define BOOST_MPL_PP_ENUM(n, param) \
+ BOOST_PP_REPEAT( \
+ n \
+ , BOOST_MPL_PP_AUX_ENUM_FUNC \
+ , param \
+ ) \
+ /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/ext_params.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/ext_params.hpp
new file mode 100644
index 0000000..6bbb111
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/ext_params.hpp
@@ -0,0 +1,78 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_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: ext_params.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/preprocessor.hpp>
+
+// BOOST_MPL_PP_EXT_PARAMS(2,2,T): <nothing>
+// BOOST_MPL_PP_EXT_PARAMS(2,3,T): T2
+// BOOST_MPL_PP_EXT_PARAMS(2,4,T): T2, T3
+// BOOST_MPL_PP_EXT_PARAMS(2,n,T): T2, T3, .., Tn-1
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/mpl/aux_/preprocessor/filter_params.hpp>
+# include <boost/mpl/aux_/preprocessor/sub.hpp>
+
+# define BOOST_MPL_PP_EXT_PARAMS(i,j,p) \
+ BOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,BOOST_MPL_PP_SUB(j,i),p) \
+ /**/
+
+# define BOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,n,p) \
+ BOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
+ /**/
+
+# define BOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
+ BOOST_MPL_PP_EXT_PARAMS_##i(n,p) \
+ /**/
+
+# define BOOST_MPL_PP_EXT_PARAMS_1(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9)
+# define BOOST_MPL_PP_EXT_PARAMS_2(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1)
+# define BOOST_MPL_PP_EXT_PARAMS_3(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1,p2)
+# define BOOST_MPL_PP_EXT_PARAMS_4(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4,p##5,p##6,p##7,p##8,p##9,p1,p2,p3)
+# define BOOST_MPL_PP_EXT_PARAMS_5(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5,p##6,p##7,p##8,p##9,p1,p2,p3,p4)
+# define BOOST_MPL_PP_EXT_PARAMS_6(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6,p##7,p##8,p##9,p1,p2,p3,p4,p5)
+# define BOOST_MPL_PP_EXT_PARAMS_7(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7,p##8,p##9,p1,p2,p3,p4,p5,p6)
+# define BOOST_MPL_PP_EXT_PARAMS_8(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8,p##9,p1,p2,p3,p4,p5,p6,p7)
+# define BOOST_MPL_PP_EXT_PARAMS_9(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9,p1,p2,p3,p4,p5,p6,p7,p8)
+
+#else
+
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_AUX_EXT_PARAM_FUNC(unused, i, op) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_PP_CAT( \
+ BOOST_PP_TUPLE_ELEM(2,1,op) \
+ , BOOST_PP_ADD_D(1, i, BOOST_PP_TUPLE_ELEM(2,0,op)) \
+ ) \
+ /**/
+
+# define BOOST_MPL_PP_EXT_PARAMS(i, j, param) \
+ BOOST_PP_REPEAT( \
+ BOOST_PP_SUB_D(1,j,i) \
+ , BOOST_MPL_PP_AUX_EXT_PARAM_FUNC \
+ , (i,param) \
+ ) \
+ /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/filter_params.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/filter_params.hpp
new file mode 100644
index 0000000..38f3cbf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/filter_params.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_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: filter_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+#define BOOST_MPL_PP_FILTER_PARAMS_0(p1,p2,p3,p4,p5,p6,p7,p8,p9)
+#define BOOST_MPL_PP_FILTER_PARAMS_1(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1
+#define BOOST_MPL_PP_FILTER_PARAMS_2(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2
+#define BOOST_MPL_PP_FILTER_PARAMS_3(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3
+#define BOOST_MPL_PP_FILTER_PARAMS_4(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4
+#define BOOST_MPL_PP_FILTER_PARAMS_5(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5
+#define BOOST_MPL_PP_FILTER_PARAMS_6(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6
+#define BOOST_MPL_PP_FILTER_PARAMS_7(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7
+#define BOOST_MPL_PP_FILTER_PARAMS_8(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8
+#define BOOST_MPL_PP_FILTER_PARAMS_9(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8,p9
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/params.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/params.hpp
new file mode 100644
index 0000000..410a8d0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/params.hpp
@@ -0,0 +1,65 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_PARAMS_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: params.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/preprocessor.hpp>
+
+// BOOST_MPL_PP_PARAMS(0,T): <nothing>
+// BOOST_MPL_PP_PARAMS(1,T): T1
+// BOOST_MPL_PP_PARAMS(2,T): T1, T2
+// BOOST_MPL_PP_PARAMS(n,T): T1, T2, .., Tn
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_PARAMS(n,p) \
+ BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
+ /**/
+
+# define BOOST_MPL_PP_PARAMS_0(p)
+# define BOOST_MPL_PP_PARAMS_1(p) p##1
+# define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2
+# define BOOST_MPL_PP_PARAMS_3(p) p##1,p##2,p##3
+# define BOOST_MPL_PP_PARAMS_4(p) p##1,p##2,p##3,p##4
+# define BOOST_MPL_PP_PARAMS_5(p) p##1,p##2,p##3,p##4,p##5
+# define BOOST_MPL_PP_PARAMS_6(p) p##1,p##2,p##3,p##4,p##5,p##6
+# define BOOST_MPL_PP_PARAMS_7(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7
+# define BOOST_MPL_PP_PARAMS_8(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8
+# define BOOST_MPL_PP_PARAMS_9(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9
+
+#else
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_AUX_PARAM_FUNC(unused, i, param) \
+ BOOST_PP_COMMA_IF(i) \
+ BOOST_PP_CAT(param, BOOST_PP_INC(i)) \
+ /**/
+
+# define BOOST_MPL_PP_PARAMS(n, param) \
+ BOOST_PP_REPEAT( \
+ n \
+ , BOOST_MPL_PP_AUX_PARAM_FUNC \
+ , param \
+ ) \
+ /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/partial_spec_params.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/partial_spec_params.hpp
new file mode 100644
index 0000000..346d9cd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/partial_spec_params.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_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: partial_spec_params.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/limits/arity.hpp>
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/preprocessor/enum.hpp>
+#include <boost/mpl/aux_/preprocessor/sub.hpp>
+#include <boost/preprocessor/comma_if.hpp>
+
+#define BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+BOOST_MPL_PP_PARAMS(n, param) \
+BOOST_PP_COMMA_IF(BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,n)) \
+BOOST_MPL_PP_ENUM( \
+ BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,n) \
+ , def \
+ ) \
+/**/
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/range.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/range.hpp
new file mode 100644
index 0000000..cd4c511
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/range.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: range.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/preprocessor/seq/subseq.hpp>
+
+#define BOOST_MPL_PP_RANGE(first, length) \
+ BOOST_PP_SEQ_SUBSEQ((0)(1)(2)(3)(4)(5)(6)(7)(8)(9), first, length) \
+/**/
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/repeat.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/repeat.hpp
new file mode 100644
index 0000000..cfebe04
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/repeat.hpp
@@ -0,0 +1,51 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: repeat.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/preprocessor.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_REPEAT(n,f,param) \
+ BOOST_PP_CAT(BOOST_MPL_PP_REPEAT_,n)(f,param) \
+ /**/
+
+# define BOOST_MPL_PP_REPEAT_0(f,p)
+# define BOOST_MPL_PP_REPEAT_1(f,p) f(0,0,p)
+# define BOOST_MPL_PP_REPEAT_2(f,p) f(0,0,p) f(0,1,p)
+# define BOOST_MPL_PP_REPEAT_3(f,p) f(0,0,p) f(0,1,p) f(0,2,p)
+# define BOOST_MPL_PP_REPEAT_4(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p)
+# define BOOST_MPL_PP_REPEAT_5(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p)
+# define BOOST_MPL_PP_REPEAT_6(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p)
+# define BOOST_MPL_PP_REPEAT_7(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p)
+# define BOOST_MPL_PP_REPEAT_8(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p)
+# define BOOST_MPL_PP_REPEAT_9(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p) f(0,8,p)
+# define BOOST_MPL_PP_REPEAT_10(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p) f(0,8,p) f(0,9,p)
+
+#else
+
+# include <boost/preprocessor/repeat.hpp>
+
+# define BOOST_MPL_PP_REPEAT(n,f,param) \
+ BOOST_PP_REPEAT(n,f,param) \
+ /**/
+
+#endif
+
+#define BOOST_MPL_PP_REPEAT_IDENTITY_FUNC(unused1, unused2, x) x
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/sub.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/sub.hpp
new file mode 100644
index 0000000..8ba8132
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/sub.hpp
@@ -0,0 +1,65 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: sub.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/preprocessor.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+# include <boost/mpl/aux_/preprocessor/tuple.hpp>
+
+#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_MPL_PP_SUB(i,j) \
+ BOOST_MPL_PP_SUB_DELAY(i,j) \
+ /**/
+
+# define BOOST_MPL_PP_SUB_DELAY(i,j) \
+ BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_SUB_##j) \
+ /**/
+#else
+# define BOOST_MPL_PP_SUB(i,j) \
+ BOOST_MPL_PP_SUB_DELAY(i,j) \
+ /**/
+
+# define BOOST_MPL_PP_SUB_DELAY(i,j) \
+ BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_SUB_##j \
+ /**/
+#endif
+
+# define BOOST_MPL_PP_SUB_0 (0,1,2,3,4,5,6,7,8,9,10)
+# define BOOST_MPL_PP_SUB_1 (0,0,1,2,3,4,5,6,7,8,9)
+# define BOOST_MPL_PP_SUB_2 (0,0,0,1,2,3,4,5,6,7,8)
+# define BOOST_MPL_PP_SUB_3 (0,0,0,0,1,2,3,4,5,6,7)
+# define BOOST_MPL_PP_SUB_4 (0,0,0,0,0,1,2,3,4,5,6)
+# define BOOST_MPL_PP_SUB_5 (0,0,0,0,0,0,1,2,3,4,5)
+# define BOOST_MPL_PP_SUB_6 (0,0,0,0,0,0,0,1,2,3,4)
+# define BOOST_MPL_PP_SUB_7 (0,0,0,0,0,0,0,0,1,2,3)
+# define BOOST_MPL_PP_SUB_8 (0,0,0,0,0,0,0,0,0,1,2)
+# define BOOST_MPL_PP_SUB_9 (0,0,0,0,0,0,0,0,0,0,1)
+# define BOOST_MPL_PP_SUB_10 (0,0,0,0,0,0,0,0,0,0,0)
+
+#else
+
+# include <boost/preprocessor/arithmetic/sub.hpp>
+
+# define BOOST_MPL_PP_SUB(i,j) \
+ BOOST_PP_SUB(i,j) \
+ /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/preprocessor/tuple.hpp b/3rdParty/Boost/boost/mpl/aux_/preprocessor/tuple.hpp
new file mode 100644
index 0000000..f46d0e9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/preprocessor/tuple.hpp
@@ -0,0 +1,29 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: tuple.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49267 $
+
+#define BOOST_MPL_PP_TUPLE_11_ELEM_0(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0
+#define BOOST_MPL_PP_TUPLE_11_ELEM_1(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e1
+#define BOOST_MPL_PP_TUPLE_11_ELEM_2(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e2
+#define BOOST_MPL_PP_TUPLE_11_ELEM_3(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e3
+#define BOOST_MPL_PP_TUPLE_11_ELEM_4(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e4
+#define BOOST_MPL_PP_TUPLE_11_ELEM_5(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e5
+#define BOOST_MPL_PP_TUPLE_11_ELEM_6(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e6
+#define BOOST_MPL_PP_TUPLE_11_ELEM_7(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e7
+#define BOOST_MPL_PP_TUPLE_11_ELEM_8(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e8
+#define BOOST_MPL_PP_TUPLE_11_ELEM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e9
+#define BOOST_MPL_PP_TUPLE_11_ELEM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e10
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/sequence_wrapper.hpp b/3rdParty/Boost/boost/mpl/aux_/sequence_wrapper.hpp
new file mode 100644
index 0000000..3f9f8ca
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/sequence_wrapper.hpp
@@ -0,0 +1,292 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the 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: sequence_wrapper.hpp 49271 2008-10-11 06:46:00Z agurtovoy $
+// $Date: 2008-10-11 02:46:00 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49271 $
+
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/static_constant.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/enum_params_with_a_default.hpp>
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/enum.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+#if defined(BOOST_MPL_PREPROCESSING_MODE)
+# undef LONG_MAX
+#endif
+
+namespace boost { namespace mpl {
+
+#if !defined(AUX778076_SEQUENCE_BASE_NAME)
+# define AUX778076_SEQUENCE_BASE_NAME AUX778076_SEQUENCE_NAME
+#endif
+
+#if !defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
+
+# define AUX778076_SEQUENCE_PARAM_NAME T
+# define AUX778076_SEQUENCE_TEMPLATE_PARAM typename T
+# define AUX778076_SEQUENCE_DEFAULT na
+
+# define AUX778076_SEQUENCE_NAME_N(n) \
+ BOOST_PP_CAT(AUX778076_SEQUENCE_BASE_NAME,n) \
+ /**/
+
+# define AUX778076_SEQUENCE_PARAMS() \
+ BOOST_PP_ENUM_PARAMS( \
+ AUX778076_SEQUENCE_LIMIT \
+ , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+ ) \
+ /**/
+
+# define AUX778076_SEQUENCE_ARGS() \
+ BOOST_PP_ENUM_PARAMS( \
+ AUX778076_SEQUENCE_LIMIT \
+ , T \
+ ) \
+ /**/
+
+# define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
+ AUX778076_SEQUENCE_LIMIT \
+ , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+ , AUX778076_SEQUENCE_DEFAULT \
+ ) \
+ /**/
+
+# define AUX778076_SEQUENCE_N_PARAMS(n) \
+ BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
+ /**/
+
+# define AUX778076_SEQUENCE_N_ARGS(n) \
+ BOOST_PP_ENUM_PARAMS(n, T) \
+ /**/
+
+# define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \
+ BOOST_PP_ENUM_PARAMS(n, T) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_PP_ENUM( \
+ BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
+ , BOOST_PP_TUPLE_ELEM_3_2 \
+ , AUX778076_SEQUENCE_DEFAULT \
+ ) \
+ /**/
+
+#else // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
+
+# define AUX778076_SEQUENCE_PARAM_NAME C
+# define AUX778076_SEQUENCE_TEMPLATE_PARAM BOOST_MPL_AUX_NTTP_DECL(long, C)
+# define AUX778076_SEQUENCE_DEFAULT LONG_MAX
+
+# define AUX778076_SEQUENCE_PARAMS() \
+ typename T, BOOST_PP_ENUM_PARAMS( \
+ AUX778076_SEQUENCE_LIMIT \
+ , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+ ) \
+ /**/
+
+# define AUX778076_SEQUENCE_ARGS() \
+ T, BOOST_PP_ENUM_PARAMS( \
+ AUX778076_SEQUENCE_LIMIT \
+ , C \
+ ) \
+ /**/
+
+# define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
+ typename T, \
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
+ AUX778076_SEQUENCE_LIMIT \
+ , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+ , AUX778076_SEQUENCE_DEFAULT \
+ ) \
+ /**/
+
+# define AUX778076_SEQUENCE_N_PARAMS(n) \
+ typename T BOOST_PP_COMMA_IF(n) \
+ BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
+ /**/
+
+# if !defined(AUX778076_SEQUENCE_CONVERT_CN_TO)
+# define AUX778076_SEQUENCE_CONVERT_CN_TO(z,n,TARGET) BOOST_PP_CAT(C,n)
+# endif
+
+# define AUX778076_SEQUENCE_N_ARGS(n) \
+ T BOOST_PP_COMMA_IF(n) \
+ BOOST_PP_ENUM(n,AUX778076_SEQUENCE_CONVERT_CN_TO,T) \
+ /**/
+
+# define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \
+ T, BOOST_PP_ENUM_PARAMS(n, C) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_PP_ENUM( \
+ BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
+ , BOOST_PP_TUPLE_ELEM_3_2 \
+ , AUX778076_SEQUENCE_DEFAULT \
+ ) \
+ /**/
+
+#endif // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
+
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+// forward declaration
+template<
+ AUX778076_SEQUENCE_DEFAULT_PARAMS()
+ >
+struct AUX778076_SEQUENCE_NAME;
+#else
+namespace aux {
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser);
+}
+#endif
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, AUX778076_SEQUENCE_LIMIT, <boost/mpl/aux_/sequence_wrapper.hpp>))
+#include BOOST_PP_ITERATE()
+
+// real C++ version is already taken care of
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+namespace aux {
+// ???_count_args
+#define AUX778076_COUNT_ARGS_PREFIX AUX778076_SEQUENCE_NAME
+#define AUX778076_COUNT_ARGS_DEFAULT AUX778076_SEQUENCE_DEFAULT
+#define AUX778076_COUNT_ARGS_PARAM_NAME AUX778076_SEQUENCE_PARAM_NAME
+#define AUX778076_COUNT_ARGS_TEMPLATE_PARAM AUX778076_SEQUENCE_TEMPLATE_PARAM
+#define AUX778076_COUNT_ARGS_ARITY AUX778076_SEQUENCE_LIMIT
+#define AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
+#include <boost/mpl/aux_/count_args.hpp>
+
+template<
+ AUX778076_SEQUENCE_PARAMS()
+ >
+struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)
+{
+ typedef aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_count_args)<
+ BOOST_PP_ENUM_PARAMS(AUX778076_SEQUENCE_LIMIT, AUX778076_SEQUENCE_PARAM_NAME)
+ > arg_num_;
+
+ typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)< arg_num_::value >
+ ::template result_< AUX778076_SEQUENCE_ARGS() >::type type;
+};
+
+} // namespace aux
+
+template<
+ AUX778076_SEQUENCE_DEFAULT_PARAMS()
+ >
+struct AUX778076_SEQUENCE_NAME
+ : aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
+ AUX778076_SEQUENCE_ARGS()
+ >::type
+{
+ typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
+ AUX778076_SEQUENCE_ARGS()
+ >::type type;
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+# undef AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS
+# undef AUX778076_SEQUENCE_N_ARGS
+# undef AUX778076_SEQUENCE_CONVERT_CN_TO
+# undef AUX778076_SEQUENCE_N_PARAMS
+# undef AUX778076_SEQUENCE_DEFAULT_PARAMS
+# undef AUX778076_SEQUENCE_ARGS
+# undef AUX778076_SEQUENCE_PARAMS
+# undef AUX778076_SEQUENCE_NAME_N
+# undef AUX778076_SEQUENCE_DEFAULT
+# undef AUX778076_SEQUENCE_TEMPLATE_PARAM
+# undef AUX778076_SEQUENCE_PARAM_NAME
+# undef AUX778076_SEQUENCE_LIMIT
+# undef AUX778076_SEQUENCE_BASE_NAME
+# undef AUX778076_SEQUENCE_NAME
+# undef AUX778076_SEQUENCE_INTEGRAL_WRAPPER
+
+}}
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#if i_ == AUX778076_SEQUENCE_LIMIT
+
+/// primary template (not a specialization!)
+template<
+ AUX778076_SEQUENCE_N_PARAMS(i_)
+ >
+struct AUX778076_SEQUENCE_NAME
+ : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >
+{
+ typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
+};
+
+#else
+
+template<
+ AUX778076_SEQUENCE_N_PARAMS(i_)
+ >
+struct AUX778076_SEQUENCE_NAME< AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(i_) >
+ : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >
+{
+#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
+ typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
+#else
+ typedef AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
+#endif
+};
+
+#endif // i_ == AUX778076_SEQUENCE_LIMIT
+
+# else
+
+namespace aux {
+
+template<>
+struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)<i_>
+{
+ template<
+ AUX778076_SEQUENCE_PARAMS()
+ >
+ struct result_
+ {
+#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
+ typedef typename AUX778076_SEQUENCE_NAME_N(i_)<
+ AUX778076_SEQUENCE_N_ARGS(i_)
+ >::type type;
+#else
+ typedef AUX778076_SEQUENCE_NAME_N(i_)<
+ AUX778076_SEQUENCE_N_ARGS(i_)
+ >::type type;
+#endif
+ };
+};
+
+} // namespace aux
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/static_cast.hpp b/3rdParty/Boost/boost/mpl/aux_/static_cast.hpp
new file mode 100644
index 0000000..133730d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/static_cast.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
+#define BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: static_cast.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/workaround.hpp>
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
+ || BOOST_WORKAROUND(__GNUC__, < 3) \
+ || BOOST_WORKAROUND(__MWERKS__, <= 0x3001)
+# define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr)
+#else
+# define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
+#endif
+
+#endif // BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/template_arity.hpp b/3rdParty/Boost/boost/mpl/aux_/template_arity.hpp
new file mode 100644
index 0000000..47e4eeb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/template_arity.hpp
@@ -0,0 +1,189 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+#define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: template_arity.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/ttp.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+# include <boost/mpl/aux_/template_arity_fwd.hpp>
+# include <boost/mpl/int.hpp>
+# if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+# if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+# include <boost/mpl/aux_/type_wrapper.hpp>
+# endif
+# else
+# include <boost/mpl/aux_/has_rebind.hpp>
+# endif
+#endif
+
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#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 template_arity.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+# if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/range.hpp>
+# include <boost/mpl/aux_/preprocessor/repeat.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+# define AUX778076_ARITY BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+
+namespace boost { namespace mpl { namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
+{
+ typedef char (&type)[N + 1];
+};
+
+# define AUX778076_MAX_ARITY_OP(unused, state, i_) \
+ ( BOOST_PP_CAT(C,i_) > 0 ? BOOST_PP_CAT(C,i_) : state ) \
+/**/
+
+template<
+ BOOST_MPL_PP_PARAMS(AUX778076_ARITY, BOOST_MPL_AUX_NTTP_DECL(int, C))
+ >
+struct max_arity
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ BOOST_PP_SEQ_FOLD_LEFT(
+ AUX778076_MAX_ARITY_OP
+ , -1
+ , BOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
+ )
+ );
+};
+
+# undef AUX778076_MAX_ARITY_OP
+
+arity_tag<0>::type arity_helper(...);
+
+# define BOOST_PP_ITERATION_LIMITS (1, AUX778076_ARITY)
+# define BOOST_PP_FILENAME_1 <boost/mpl/aux_/template_arity.hpp>
+# include BOOST_PP_ITERATE()
+
+template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
+struct template_arity_impl
+{
+ BOOST_STATIC_CONSTANT(int, value =
+ sizeof(arity_helper(type_wrapper<F>(),arity_tag<N>())) - 1
+ );
+};
+
+# define AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION(unused, i_, F) \
+ BOOST_PP_COMMA_IF(i_) template_arity_impl<F,BOOST_PP_INC(i_)>::value \
+/**/
+
+template< typename F >
+struct template_arity
+{
+ BOOST_STATIC_CONSTANT(int, value = (
+ max_arity< BOOST_MPL_PP_REPEAT(
+ AUX778076_ARITY
+ , AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
+ , F
+ ) >::value
+ ));
+
+ typedef mpl::int_<value> type;
+};
+
+# undef AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
+
+# undef AUX778076_ARITY
+
+}}}
+
+# endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
+# else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+# include <boost/mpl/aux_/config/eti.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+ template< typename F > struct result_
+ : mpl::int_<-1>
+ {
+ };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+ template< typename F > struct result_
+ : F::arity
+ {
+ };
+};
+
+template< typename F >
+struct template_arity
+ : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
+ ::template result_<F>
+{
+};
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+template<>
+struct template_arity<int>
+ : mpl::int_<-1>
+{
+};
+#endif
+
+}}}
+
+# endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
+ , BOOST_MPL_PP_PARAMS(i_, typename T)
+ >
+typename arity_tag<i_>::type
+arity_helper(type_wrapper< F<BOOST_MPL_PP_PARAMS(i_, T)> >, arity_tag<i_>);
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/aux_/template_arity_fwd.hpp b/3rdParty/Boost/boost/mpl/aux_/template_arity_fwd.hpp
new file mode 100644
index 0000000..4b7c8b8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/template_arity_fwd.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+#define BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: template_arity_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 { namespace aux {
+
+template< typename F > struct template_arity;
+
+}}}
+
+#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/traits_lambda_spec.hpp b/3rdParty/Boost/boost/mpl/aux_/traits_lambda_spec.hpp
new file mode 100644
index 0000000..f312f6d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/traits_lambda_spec.hpp
@@ -0,0 +1,63 @@
+
+#ifndef BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the 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: traits_lambda_spec.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/sequence_tag_fwd.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+
+# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) /**/
+
+#elif !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+
+# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+template<> struct trait<void_> \
+{ \
+ template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+ { \
+ }; \
+}; \
+/**/
+
+#else
+
+# define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+template<> struct trait<void_> \
+{ \
+ template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+ { \
+ }; \
+}; \
+template<> struct trait<int> \
+{ \
+ template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+ { \
+ typedef int type; \
+ }; \
+}; \
+/**/
+
+#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+
+#define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i, trait) \
+ BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+ template<> struct trait<non_sequence_tag> {}; \
+/**/
+
+#endif // BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/type_wrapper.hpp b/3rdParty/Boost/boost/mpl/aux_/type_wrapper.hpp
new file mode 100644
index 0000000..0583f72
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/type_wrapper.hpp
@@ -0,0 +1,47 @@
+
+#ifndef BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+#define BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Peter Dimov 2000-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: type_wrapper.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/ctps.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename T > struct type_wrapper
+{
+ typedef T type;
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+// agurt 08/may/03: a complicated way to extract the wrapped type; need it
+// mostly for the sake of GCC (3.2.x), which ICEs if you try to extract the
+// nested 'type' from 'type_wrapper<T>' when the latter was the result of a
+// 'typeof' expression
+template< typename T > struct wrapped_type;
+
+template< typename T > struct wrapped_type< type_wrapper<T> >
+{
+ typedef T type;
+};
+#else
+template< typename W > struct wrapped_type
+{
+ typedef typename W::type type;
+};
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/value_wknd.hpp b/3rdParty/Boost/boost/mpl/aux_/value_wknd.hpp
new file mode 100644
index 0000000..9de1103
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/value_wknd.hpp
@@ -0,0 +1,89 @@
+
+#ifndef BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
+#define BOOST_MPL_AUX_VALUE_WKND_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: value_wknd.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/integral.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
+ || defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+
+# include <boost/mpl/int.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+template< typename C_ > struct value_wknd
+ : C_
+{
+};
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+template<> struct value_wknd<int>
+ : int_<1>
+{
+ using int_<1>::value;
+};
+#endif
+}}}
+
+
+#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+# define BOOST_MPL_AUX_VALUE_WKND(C) \
+ ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \
+/**/
+# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) BOOST_MPL_AUX_VALUE_WKND(C)
+#else
+# define BOOST_MPL_AUX_VALUE_WKND(C) C
+# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) \
+ ::boost::mpl::aux::value_wknd< C > \
+/**/
+#endif
+
+#else // BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
+
+# define BOOST_MPL_AUX_VALUE_WKND(C) C
+# define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
+
+#endif
+
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+# define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
+ BOOST_MPL_AUX_STATIC_CAST(T, C::value) \
+/**/
+#else
+# define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
+ BOOST_MPL_AUX_VALUE_WKND(C)::value \
+/**/
+#endif
+
+
+namespace boost { namespace mpl { namespace aux {
+
+template< typename T > struct value_type_wknd
+{
+ typedef typename T::value_type type;
+};
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+template<> struct value_type_wknd<int>
+{
+ typedef int type;
+};
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/aux_/yes_no.hpp b/3rdParty/Boost/boost/mpl/aux_/yes_no.hpp
new file mode 100644
index 0000000..c3f567d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/aux_/yes_no.hpp
@@ -0,0 +1,58 @@
+
+#ifndef BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
+#define BOOST_MPL_AUX_YES_NO_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: yes_no.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_/nttp_decl.hpp>
+#include <boost/mpl/aux_/config/arrays.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+
+namespace boost { namespace mpl { namespace aux {
+
+typedef char (&no_tag)[1];
+typedef char (&yes_tag)[2];
+
+template< bool C_ > struct yes_no_tag
+{
+ typedef no_tag type;
+};
+
+template<> struct yes_no_tag<true>
+{
+ typedef yes_tag type;
+};
+
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag
+{
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ typedef char (&type)[n];
+#else
+ char buf[n];
+ typedef weighted_tag type;
+#endif
+};
+
+#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES)
+template<> struct weighted_tag<0>
+{
+ typedef char (&type)[1];
+};
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/back_fwd.hpp b/3rdParty/Boost/boost/mpl/back_fwd.hpp
new file mode 100644
index 0000000..cc01e33
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/back_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_BACK_FWD_HPP_INCLUDED
+#define BOOST_MPL_BACK_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: back_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 back_impl;
+template< typename Sequence > struct back;
+
+}}
+
+#endif // BOOST_MPL_BACK_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/begin_end.hpp b/3rdParty/Boost/boost/mpl/begin_end.hpp
new file mode 100644
index 0000000..7d8d9eb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/begin_end.hpp
@@ -0,0 +1,57 @@
+
+#ifndef BOOST_MPL_BEGIN_END_HPP_INCLUDED
+#define BOOST_MPL_BEGIN_END_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: begin_end.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/aux_/begin_end_impl.hpp>
+#include <boost/mpl/sequence_tag.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace mpl {
+
+// agurt, 13/sep/02: switched from inheritance to typedef; MSVC is more
+// happy this way (less ETI-related errors), and it doesn't affect
+// anything else
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+ >
+struct begin
+{
+ typedef typename sequence_tag<Sequence>::type tag_;
+ typedef typename begin_impl< tag_ >
+ ::template apply< Sequence >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,begin,(Sequence))
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+ >
+struct end
+{
+ typedef typename sequence_tag<Sequence>::type tag_;
+ typedef typename end_impl< tag_ >
+ ::template apply< Sequence >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,end,(Sequence))
+};
+
+BOOST_MPL_AUX_NA_SPEC(1, begin)
+BOOST_MPL_AUX_NA_SPEC(1, end)
+
+}}
+
+#endif // BOOST_MPL_BEGIN_END_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/begin_end_fwd.hpp b/3rdParty/Boost/boost/mpl/begin_end_fwd.hpp
new file mode 100644
index 0000000..1ac62c6
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/begin_end_fwd.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
+#define BOOST_MPL_BEGIN_END_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: begin_end_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 begin_impl;
+template< typename Tag > struct end_impl;
+
+template< typename Sequence > struct begin;
+template< typename Sequence > struct end;
+
+}}
+
+#endif // BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/bind.hpp b/3rdParty/Boost/boost/mpl/bind.hpp
new file mode 100644
index 0000000..5d851ef
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/bind.hpp
@@ -0,0 +1,551 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_BIND_HPP_INCLUDED
+#define BOOST_MPL_BIND_HPP_INCLUDED
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-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: bind.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/bind_fwd.hpp>
+# include <boost/mpl/placeholders.hpp>
+# include <boost/mpl/next.hpp>
+# include <boost/mpl/protect.hpp>
+# include <boost/mpl/apply_wrap.hpp>
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/arity_spec.hpp>
+# include <boost/mpl/aux_/type_wrapper.hpp>
+# include <boost/mpl/aux_/yes_no.hpp>
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+# include <boost/type_traits/is_reference.hpp>
+# endif
+#endif
+
+#include <boost/mpl/aux_/config/bind.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#include <boost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+# if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+# define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
+# else
+# define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
+# endif
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
+# include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
+# include <boost/mpl/aux_/preprocessor/ext_params.hpp>
+# include <boost/mpl/aux_/preprocessor/repeat.hpp>
+# include <boost/mpl/aux_/preprocessor/enum.hpp>
+# include <boost/mpl/aux_/preprocessor/add.hpp>
+# include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/ttp.hpp>
+# include <boost/mpl/aux_/config/dtp.hpp>
+# include <boost/mpl/aux_/nttp_decl.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/inc.hpp>
+
+namespace boost { namespace mpl {
+
+// local macros, #undef-ined at the end of the header
+# define AUX778076_APPLY \
+ BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
+ /**/
+
+# if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+# define AUX778076_DMC_PARAM() , int dummy_
+# else
+# define AUX778076_DMC_PARAM()
+# endif
+
+# define AUX778076_BIND_PARAMS(param) \
+ BOOST_MPL_PP_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ ) \
+ /**/
+
+# define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
+ BOOST_MPL_PP_DEFAULT_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ , value \
+ ) \
+ /**/
+
+# define AUX778076_BIND_N_PARAMS(n, param) \
+ BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
+ /**/
+
+# define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+ /**/
+
+#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+# define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
+ AUX778076_BIND_DEFAULT_PARAMS(param, value) \
+ /**/
+#else
+# define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
+ AUX778076_BIND_PARAMS(param) \
+ /**/
+#endif
+
+namespace aux {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+ typename T, AUX778076_BIND_PARAMS(typename U)
+ >
+struct resolve_bind_arg
+{
+ typedef T type;
+};
+
+# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+
+template<
+ typename T
+ , typename Arg
+ >
+struct replace_unnamed_arg
+{
+ typedef Arg next;
+ typedef T type;
+};
+
+template<
+ typename Arg
+ >
+struct replace_unnamed_arg< arg<-1>,Arg >
+{
+ typedef typename Arg::next next;
+ typedef Arg type;
+};
+
+# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+
+template<
+ BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
+ >
+struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
+{
+ typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
+};
+
+#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+template<
+ typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
+ >
+struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(U) >
+{
+ typedef bind<F,AUX778076_BIND_PARAMS(T)> f_;
+ typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
+};
+#endif
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// agurt, 15/jan/02: it's not a intended to be used as a function class, and
+// MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
+// work), so I went with the 'result_' here, and in all other similar cases
+template< bool >
+struct resolve_arg_impl
+{
+ template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
+ {
+ typedef T type;
+ };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+ template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
+ {
+ typedef typename AUX778076_APPLY<
+ T
+ , AUX778076_BIND_PARAMS(U)
+ >::type type;
+ };
+};
+
+// for 'resolve_bind_arg'
+template< typename T > struct is_bind_template;
+
+template<
+ typename T, AUX778076_BIND_PARAMS(typename U)
+ >
+struct resolve_bind_arg
+ : resolve_arg_impl< is_bind_template<T>::value >
+ ::template result_< T,AUX778076_BIND_PARAMS(U) >
+{
+};
+
+# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+ template< typename Arg > struct result_
+ {
+ typedef Arg next;
+ typedef T type;
+ };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg<-1> >
+{
+ template< typename Arg > struct result_
+ {
+ typedef typename next<Arg>::type next;
+ typedef Arg type;
+ };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+ : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+
+// agurt, 10/mar/02: the forward declaration has to appear before any of
+// 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
+template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+// overload for "main" form
+// agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload
+// in case if we use 'aux::type_wrapper< bind<...> >' here, and all
+// 'bind' instantiations form a complete type anyway
+#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+template<
+ typename F, AUX778076_BIND_PARAMS(typename T)
+ >
+aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
+#endif
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_ = true >
+struct is_bind_template_impl
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+ template< typename T > struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+ == sizeof(aux::yes_tag)
+ );
+ };
+};
+
+template< typename T > struct is_bind_template
+ : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
+ ::template result_<T>
+{
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace aux
+
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind.hpp>))
+#include BOOST_PP_ITERATE()
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
+/// if_/eval_if specializations
+# define AUX778076_SPEC_NAME if_
+# define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
+# include BOOST_PP_ITERATE()
+
+#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+# define AUX778076_SPEC_NAME eval_if
+# define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
+# include BOOST_PP_ITERATE()
+#endif
+#endif
+
+// real C++ version is already taken care of
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+
+namespace aux {
+// apply_count_args
+#define AUX778076_COUNT_ARGS_PREFIX bind
+#define AUX778076_COUNT_ARGS_DEFAULT na
+#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#include <boost/mpl/aux_/count_args.hpp>
+}
+
+// bind
+template<
+ typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM()
+ >
+struct bind
+ : aux::bind_chooser<
+ aux::bind_count_args<AUX778076_BIND_PARAMS(T)>::value
+ >::template result_< F,AUX778076_BIND_PARAMS(T) >::type
+{
+};
+
+BOOST_MPL_AUX_ARITY_SPEC(
+ BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+ , bind
+ )
+
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+ BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+ , bind
+ )
+
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+# undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
+# undef AUX778076_BIND_N_SPEC_PARAMS
+# undef AUX778076_BIND_N_PARAMS
+# undef AUX778076_BIND_DEFAULT_PARAMS
+# undef AUX778076_BIND_PARAMS
+# undef AUX778076_DMC_PARAM
+# undef AUX778076_APPLY
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_BIND_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+
+# define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#if defined(AUX778076_SPEC_NAME)
+
+// lazy metafunction specialization
+template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
+struct BOOST_PP_CAT(quote,i_);
+
+template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
+
+template<
+ typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(bind,i_)<
+ BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
+ AUX778076_BIND_N_PARAMS(i_,T)
+ >
+{
+ template<
+ AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
+ >
+ struct apply
+ {
+ private:
+ typedef mpl::arg<1> n1;
+# define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
+# include BOOST_PP_ITERATE()
+
+ typedef typename AUX778076_SPEC_NAME<
+ typename t1::type
+ , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
+ >::type f_;
+
+ public:
+ typedef typename f_::type type;
+ };
+};
+
+#undef AUX778076_SPEC_NAME
+
+#else // AUX778076_SPEC_NAME
+
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
+ >
+struct BOOST_PP_CAT(bind,i_)
+{
+ template<
+ AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
+ >
+ struct apply
+ {
+ private:
+# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+
+ typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
+ typedef typename r0::type a0;
+ typedef typename r0::next n1;
+ typedef typename aux::resolve_bind_arg<a0,AUX778076_BIND_PARAMS(U)>::type f_;
+ ///
+# else
+ typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
+
+# endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+
+# if i_ > 0
+# define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
+# include BOOST_PP_ITERATE()
+# endif
+
+ public:
+
+# define AUX778076_ARG(unused, i_, t) \
+ BOOST_PP_COMMA_IF(i_) \
+ typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
+/**/
+
+ typedef typename BOOST_PP_CAT(apply_wrap,i_)<
+ f_
+ BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
+ >::type type;
+
+# undef AUX778076_ARG
+ };
+};
+
+namespace aux {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
+ >
+struct resolve_bind_arg<
+ BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
+ >
+{
+ typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
+ typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
+};
+
+#else
+
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T)
+ >
+aux::yes_tag
+is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
+
+# if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+/// primary template (not a specialization!)
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
+ >
+struct bind
+ : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
+{
+};
+#else
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
+ >
+struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
+ : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
+{
+};
+#endif
+
+# else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace aux {
+
+template<>
+struct bind_chooser<i_>
+{
+ template<
+ typename F, AUX778076_BIND_PARAMS(typename T)
+ >
+ struct result_
+ {
+ typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
+ };
+};
+
+} // namespace aux
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
+
+#endif // AUX778076_SPEC_NAME
+
+# undef i_
+
+///// iteration, depth == 2
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+# define j_ BOOST_PP_FRAME_ITERATION(2)
+# if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+
+ typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
+ typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
+ typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
+ typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
+ ///
+# else
+ typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
+
+# endif
+# undef j_
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/bind_fwd.hpp b/3rdParty/Boost/boost/mpl/bind_fwd.hpp
new file mode 100644
index 0000000..18ac881
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/bind_fwd.hpp
@@ -0,0 +1,99 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_BIND_FWD_HPP_INCLUDED
+#define BOOST_MPL_BIND_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: bind_fwd.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/aux_/na.hpp>
+#endif
+
+#include <boost/mpl/aux_/config/bind.hpp>
+#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 bind_fwd.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/preprocessor/default_params.hpp>
+# include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
+
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace mpl {
+
+// local macros, #undef-ined at the end of the header
+
+# if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+# define AUX778076_DMC_PARAM() , int dummy_ = 0
+# else
+# define AUX778076_DMC_PARAM()
+# endif
+
+# define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
+ BOOST_MPL_PP_DEFAULT_PARAMS( \
+ BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+ , param \
+ , value \
+ ) \
+ AUX778076_DMC_PARAM() \
+ /**/
+
+# define AUX778076_BIND_N_PARAMS(n, param) \
+ BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
+ AUX778076_DMC_PARAM() \
+ /**/
+
+#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+template<
+ typename F, AUX778076_BIND_DEFAULT_PARAMS(typename T, na)
+ >
+struct bind;
+#endif
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind_fwd.hpp>))
+#include BOOST_PP_ITERATE()
+
+# undef AUX778076_BIND_N_PARAMS
+# undef AUX778076_BIND_DEFAULT_PARAMS
+# undef AUX778076_DMC_PARAM
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_BIND_FWD_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ typename F AUX778076_BIND_N_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(bind,i_);
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/bool.hpp b/3rdParty/Boost/boost/mpl/bool.hpp
new file mode 100644
index 0000000..a815ac5
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/bool.hpp
@@ -0,0 +1,39 @@
+
+#ifndef BOOST_MPL_BOOL_HPP_INCLUDED
+#define BOOST_MPL_BOOL_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: bool.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/bool_fwd.hpp>
+#include <boost/mpl/integral_c_tag.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< bool C_ > struct bool_
+{
+ BOOST_STATIC_CONSTANT(bool, value = C_);
+ typedef integral_c_tag tag;
+ typedef bool_ type;
+ typedef bool value_type;
+ operator bool() const { return this->value; }
+};
+
+#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+template< bool C_ >
+bool const bool_<C_>::value;
+#endif
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+#endif // BOOST_MPL_BOOL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/bool_fwd.hpp b/3rdParty/Boost/boost/mpl/bool_fwd.hpp
new file mode 100644
index 0000000..080d876
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/bool_fwd.hpp
@@ -0,0 +1,33 @@
+
+#ifndef BOOST_MPL_BOOL_FWD_HPP_INCLUDED
+#define BOOST_MPL_BOOL_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: bool_fwd.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_/adl_barrier.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< bool C_ > struct bool_;
+
+// shorcuts
+typedef bool_<true> true_;
+typedef bool_<false> false_;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+BOOST_MPL_AUX_ADL_BARRIER_DECL(bool_)
+BOOST_MPL_AUX_ADL_BARRIER_DECL(true_)
+BOOST_MPL_AUX_ADL_BARRIER_DECL(false_)
+
+#endif // BOOST_MPL_BOOL_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/clear_fwd.hpp b/3rdParty/Boost/boost/mpl/clear_fwd.hpp
new file mode 100644
index 0000000..da5a6eb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/clear_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_CLEAR_FWD_HPP_INCLUDED
+#define BOOST_MPL_CLEAR_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: clear_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 clear_impl;
+template< typename Sequence > struct clear;
+
+}}
+
+#endif // BOOST_MPL_CLEAR_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/deref.hpp b/3rdParty/Boost/boost/mpl/deref.hpp
new file mode 100644
index 0000000..fedf79e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/deref.hpp
@@ -0,0 +1,41 @@
+
+#ifndef BOOST_MPL_DEREF_HPP_INCLUDED
+#define BOOST_MPL_DEREF_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: deref.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_/msvc_type.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Iterator)
+ >
+struct deref
+{
+#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+ typedef typename Iterator::type type;
+#else
+ typedef typename aux::msvc_type<Iterator>::type type;
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,deref,(Iterator))
+};
+
+BOOST_MPL_AUX_NA_SPEC(1, deref)
+
+}}
+
+#endif // BOOST_MPL_DEREF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/distance_fwd.hpp b/3rdParty/Boost/boost/mpl/distance_fwd.hpp
new file mode 100644
index 0000000..ddd8698
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/distance_fwd.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
+#define BOOST_MPL_DISTANCE_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: distance_fwd.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_/common_name_wknd.hpp>
+
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_COMMON_NAME_WKND(distance)
+
+template< typename Tag > struct distance_impl;
+template< typename First, typename Last > struct distance;
+
+}}
+
+#endif // BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/empty_fwd.hpp b/3rdParty/Boost/boost/mpl/empty_fwd.hpp
new file mode 100644
index 0000000..28b2263
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/empty_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_EMPTY_FWD_HPP_INCLUDED
+#define BOOST_MPL_EMPTY_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: empty_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 empty_impl;
+template< typename Sequence > struct empty;
+
+}}
+
+#endif // BOOST_MPL_EMPTY_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/equal_to.hpp b/3rdParty/Boost/boost/mpl/equal_to.hpp
new file mode 100644
index 0000000..dee5f59
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/equal_to.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_EQUAL_TO_HPP_INCLUDED
+#define BOOST_MPL_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: 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 equal_to
+#define AUX778076_OP_TOKEN ==
+#include <boost/mpl/aux_/comparison_op.hpp>
+
+#endif // BOOST_MPL_EQUAL_TO_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/eval_if.hpp b/3rdParty/Boost/boost/mpl/eval_if.hpp
new file mode 100644
index 0000000..3d94caf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/eval_if.hpp
@@ -0,0 +1,71 @@
+
+#ifndef BOOST_MPL_EVAL_IF_HPP_INCLUDED
+#define BOOST_MPL_EVAL_IF_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: eval_if.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/if.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/gcc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(C)
+ , typename BOOST_MPL_AUX_NA_PARAM(F1)
+ , typename BOOST_MPL_AUX_NA_PARAM(F2)
+ >
+struct eval_if
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
+ && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
+ )
+{
+ typedef typename if_<C,F1,F2>::type f_;
+ typedef typename f_::type type;
+#else
+ : if_<C,F1,F2>::type
+{
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
+};
+
+// (almost) copy & paste in order to save one more
+// recursively nested template instantiation to user
+template<
+ bool C
+ , typename F1
+ , typename F2
+ >
+struct eval_if_c
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
+ && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
+ )
+{
+ typedef typename if_c<C,F1,F2>::type f_;
+ typedef typename f_::type type;
+#else
+ : if_c<C,F1,F2>::type
+{
+#endif
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, eval_if)
+
+}}
+
+#endif // BOOST_MPL_EVAL_IF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/front_fwd.hpp b/3rdParty/Boost/boost/mpl/front_fwd.hpp
new file mode 100644
index 0000000..65ffcf2
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/front_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_FRONT_FWD_HPP_INCLUDED
+#define BOOST_MPL_FRONT_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: front_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 front_impl;
+template< typename Sequence > struct front;
+
+}}
+
+#endif // BOOST_MPL_FRONT_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/has_xxx.hpp b/3rdParty/Boost/boost/mpl/has_xxx.hpp
new file mode 100644
index 0000000..39ed909
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/has_xxx.hpp
@@ -0,0 +1,274 @@
+
+#ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED
+#define BOOST_MPL_HAS_XXX_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2006
+// Copyright David Abrahams 2002-2003
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_xxx.hpp 49273 2008-10-11 06:54:06Z agurtovoy $
+// $Date: 2008-10-11 02:54:06 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49273 $
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/type_wrapper.hpp>
+#include <boost/mpl/aux_/yes_no.hpp>
+#include <boost/mpl/aux_/config/has_xxx.hpp>
+#include <boost/mpl/aux_/config/msvc_typename.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
+# include <boost/type_traits/is_class.hpp>
+#endif
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_XXX)
+
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+// agurt, 11/sep/02: MSVC-specific version (< 7.1), based on a USENET
+// newsgroup's posting by John Madsen (comp.lang.c++.moderated,
+// 1999-11-12 19:17:06 GMT); the code is _not_ standard-conforming, but
+// it works way more reliably than the SFINAE-based implementation
+
+// Modified dwa 8/Oct/02 to handle reference types.
+
+# include <boost/mpl/if.hpp>
+# include <boost/mpl/bool.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+struct has_xxx_tag;
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+template< typename U > struct msvc_incomplete_array
+{
+ typedef char (&type)[sizeof(U) + 1];
+};
+#endif
+
+template< typename T >
+struct msvc_is_incomplete
+{
+ // MSVC is capable of some kinds of SFINAE. If U is an incomplete
+ // type, it won't pick the second overload
+ static char tester(...);
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+ template< typename U >
+ static typename msvc_incomplete_array<U>::type tester(type_wrapper<U>);
+#else
+ template< typename U >
+ static char (& tester(type_wrapper<U>) )[sizeof(U)+1];
+#endif
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(tester(type_wrapper<T>())) == 1
+ );
+};
+
+template<>
+struct msvc_is_incomplete<int>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+}}}
+
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, default_) \
+template< typename T, typename name = ::boost::mpl::aux::has_xxx_tag > \
+struct BOOST_PP_CAT(trait,_impl) : T \
+{ \
+ static boost::mpl::aux::no_tag \
+ test(void(*)(::boost::mpl::aux::has_xxx_tag)); \
+ \
+ static boost::mpl::aux::yes_tag test(...); \
+ \
+ BOOST_STATIC_CONSTANT(bool, value = \
+ sizeof(test(static_cast<void(*)(name)>(0))) \
+ != sizeof(boost::mpl::aux::no_tag) \
+ ); \
+ typedef boost::mpl::bool_<value> type; \
+}; \
+\
+template< typename T, typename fallback_ = boost::mpl::bool_<default_> > \
+struct trait \
+ : boost::mpl::if_c< \
+ boost::mpl::aux::msvc_is_incomplete<T>::value \
+ , boost::mpl::bool_<false> \
+ , BOOST_PP_CAT(trait,_impl)<T> \
+ >::type \
+{ \
+}; \
+\
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, void) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, bool) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, char) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed char) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned char) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed short) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned short) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed int) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned int) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed long) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned long) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, float) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, double) \
+BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, long double) \
+/**/
+
+# define BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, T) \
+template<> struct trait<T> \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = false); \
+ typedef boost::mpl::bool_<false> type; \
+}; \
+/**/
+
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
+ BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
+ BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, wchar_t) \
+/**/
+#else
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
+ BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
+/**/
+#endif
+
+
+// SFINAE-based implementations below are derived from a USENET newsgroup's
+// posting by Rani Sharoni (comp.lang.c++.moderated, 2002-03-17 07:45:09 PST)
+
+# elif BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
+ || BOOST_WORKAROUND(__IBMCPP__, <= 700)
+
+// MSVC 7.1+ & VACPP
+
+// agurt, 15/jun/05: replace overload-based SFINAE implementation with SFINAE
+// applied to partial specialization to fix some apparently random failures
+// (thanks to Daniel Wallin for researching this!)
+
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+template< typename T > \
+struct BOOST_PP_CAT(trait, _msvc_sfinae_helper) \
+{ \
+ typedef void type; \
+};\
+\
+template< typename T, typename U = void > \
+struct BOOST_PP_CAT(trait,_impl_) \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = false); \
+ typedef boost::mpl::bool_<value> type; \
+}; \
+\
+template< typename T > \
+struct BOOST_PP_CAT(trait,_impl_)< \
+ T \
+ , typename BOOST_PP_CAT(trait, _msvc_sfinae_helper)< typename T::name >::type \
+ > \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = true); \
+ typedef boost::mpl::bool_<value> type; \
+}; \
+\
+template< typename T, typename fallback_ = boost::mpl::bool_<default_> > \
+struct trait \
+ : BOOST_PP_CAT(trait,_impl_)<T> \
+{ \
+}; \
+/**/
+
+# elif BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
+
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \
+template< typename T, bool IS_CLASS > \
+struct trait_tester \
+{ \
+ BOOST_STATIC_CONSTANT( bool, value = false ); \
+}; \
+template< typename T > \
+struct trait_tester< T, true > \
+{ \
+ struct trait_tester_impl \
+ { \
+ template < class U > \
+ static int resolve( boost::mpl::aux::type_wrapper<U> const volatile * \
+ , boost::mpl::aux::type_wrapper<typename U::name >* = 0 ); \
+ static char resolve( ... ); \
+ }; \
+ typedef boost::mpl::aux::type_wrapper<T> t_; \
+ BOOST_STATIC_CONSTANT( bool, value = ( sizeof( trait_tester_impl::resolve( static_cast< t_ * >(0) ) ) == sizeof(int) ) ); \
+}; \
+template< typename T, typename fallback_ = boost::mpl::bool_<default_> > \
+struct trait \
+{ \
+ BOOST_STATIC_CONSTANT( bool, value = (trait_tester< T, boost::is_class< T >::value >::value) ); \
+ typedef boost::mpl::bool_< trait< T, fallback_ >::value > type; \
+};
+
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+ BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF( trait \
+ , BOOST_PP_CAT(trait,_tester) \
+ , name \
+ , default_ ) \
+/**/
+
+# else // other SFINAE-capable compilers
+
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+template< typename T, typename fallback_ = boost::mpl::bool_<default_> > \
+struct trait \
+{ \
+ struct gcc_3_2_wknd \
+ { \
+ template< typename U > \
+ static boost::mpl::aux::yes_tag test( \
+ boost::mpl::aux::type_wrapper<U> const volatile* \
+ , boost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME U::name>* = 0 \
+ ); \
+ \
+ static boost::mpl::aux::no_tag test(...); \
+ }; \
+ \
+ typedef boost::mpl::aux::type_wrapper<T> t_; \
+ BOOST_STATIC_CONSTANT(bool, value = \
+ sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) \
+ == sizeof(boost::mpl::aux::yes_tag) \
+ ); \
+ typedef boost::mpl::bool_<value> type; \
+}; \
+/**/
+
+# endif // BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+
+#else // BOOST_MPL_CFG_NO_HAS_XXX
+
+// placeholder implementation
+
+# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+template< typename T, typename fallback_ = boost::mpl::bool_<default_> > \
+struct trait \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
+ typedef fallback_ type; \
+}; \
+/**/
+
+#endif
+
+#define BOOST_MPL_HAS_XXX_TRAIT_DEF(name) \
+ BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(has_,name), name, false) \
+/**/
+
+#endif // BOOST_MPL_HAS_XXX_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/identity.hpp b/3rdParty/Boost/boost/mpl/identity.hpp
new file mode 100644
index 0000000..d72540b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/identity.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_IDENTITY_HPP_INCLUDED
+#define BOOST_MPL_IDENTITY_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: identity.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 identity
+{
+ typedef T type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, identity, (T))
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T)
+ >
+struct make_identity
+{
+ typedef identity<T> type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, make_identity, (T))
+};
+
+BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
+BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, make_identity)
+
+}}
+
+#endif // BOOST_MPL_IDENTITY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/if.hpp b/3rdParty/Boost/boost/mpl/if.hpp
new file mode 100644
index 0000000..aa14d88
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/if.hpp
@@ -0,0 +1,135 @@
+
+#ifndef BOOST_MPL_IF_HPP_INCLUDED
+#define BOOST_MPL_IF_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: if.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_/value_wknd.hpp>
+#include <boost/mpl/aux_/static_cast.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/config/integral.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+namespace boost { namespace mpl {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+ bool C
+ , typename T1
+ , typename T2
+ >
+struct if_c
+{
+ typedef T1 type;
+};
+
+template<
+ typename T1
+ , typename T2
+ >
+struct if_c<false,T1,T2>
+{
+ typedef T2 type;
+};
+
+// agurt, 05/sep/04: nondescriptive parameter names for the sake of DigitalMars
+// (and possibly MWCW < 8.0); see http://article.gmane.org/gmane.comp.lib.boost.devel/108959
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ , typename BOOST_MPL_AUX_NA_PARAM(T3)
+ >
+struct if_
+{
+ private:
+ // agurt, 02/jan/03: two-step 'type' definition for the sake of aCC
+ typedef if_c<
+#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS)
+ BOOST_MPL_AUX_VALUE_WKND(T1)::value
+#else
+ BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value)
+#endif
+ , T2
+ , T3
+ > almost_type_;
+
+ public:
+ typedef typename almost_type_::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3))
+};
+
+#else
+
+// no partial class template specialization
+
+namespace aux {
+
+template< bool C >
+struct if_impl
+{
+ template< typename T1, typename T2 > struct result_
+ {
+ typedef T1 type;
+ };
+};
+
+template<>
+struct if_impl<false>
+{
+ template< typename T1, typename T2 > struct result_
+ {
+ typedef T2 type;
+ };
+};
+
+} // namespace aux
+
+template<
+ bool C_
+ , typename T1
+ , typename T2
+ >
+struct if_c
+{
+ typedef typename aux::if_impl< C_ >
+ ::template result_<T1,T2>::type type;
+};
+
+// (almost) copy & paste in order to save one more
+// recursively nested template instantiation to user
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(C_)
+ , typename BOOST_MPL_AUX_NA_PARAM(T1)
+ , typename BOOST_MPL_AUX_NA_PARAM(T2)
+ >
+struct if_
+{
+ enum { msvc_wknd_ = BOOST_MPL_AUX_MSVC_VALUE_WKND(C_)::value };
+
+ typedef typename aux::if_impl< BOOST_MPL_AUX_STATIC_CAST(bool, msvc_wknd_) >
+ ::template result_<T1,T2>::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C_,T1,T2))
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_MPL_AUX_NA_SPEC(3, if_)
+
+}}
+
+#endif // BOOST_MPL_IF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/int.hpp b/3rdParty/Boost/boost/mpl/int.hpp
new file mode 100644
index 0000000..971ca90
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/int.hpp
@@ -0,0 +1,22 @@
+
+#ifndef BOOST_MPL_INT_HPP_INCLUDED
+#define BOOST_MPL_INT_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: int.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/int_fwd.hpp>
+
+#define AUX_WRAPPER_VALUE_TYPE int
+#include <boost/mpl/aux_/integral_wrapper.hpp>
+
+#endif // BOOST_MPL_INT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/int_fwd.hpp b/3rdParty/Boost/boost/mpl/int_fwd.hpp
new file mode 100644
index 0000000..0a0140f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/int_fwd.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_INT_FWD_HPP_INCLUDED
+#define BOOST_MPL_INT_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: int_fwd.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_/adl_barrier.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct int_;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(int_)
+
+#endif // BOOST_MPL_INT_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/integral_c.hpp b/3rdParty/Boost/boost/mpl/integral_c.hpp
new file mode 100644
index 0000000..6c4d2bc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/integral_c.hpp
@@ -0,0 +1,51 @@
+
+#ifndef BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+#define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: integral_c.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/integral_c_fwd.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(__HP_aCC, <= 53800)
+// the type of non-type template arguments may not depend on template arguments
+# define AUX_WRAPPER_PARAMS(N) typename T, long N
+#else
+# define AUX_WRAPPER_PARAMS(N) typename T, T N
+#endif
+
+#define AUX_WRAPPER_NAME integral_c
+#define AUX_WRAPPER_VALUE_TYPE T
+#define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< T, value >
+#include <boost/mpl/aux_/integral_wrapper.hpp>
+
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+// 'bool' constant doesn't have 'next'/'prior' members
+template< bool C >
+struct integral_c<bool, C>
+{
+ BOOST_STATIC_CONSTANT(bool, value = C);
+ typedef integral_c_tag tag;
+ typedef integral_c type;
+ typedef bool value_type;
+ operator bool() const { return this->value; }
+};
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+#endif
+
+#endif // BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/integral_c_fwd.hpp b/3rdParty/Boost/boost/mpl/integral_c_fwd.hpp
new file mode 100644
index 0000000..46da935
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/integral_c_fwd.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
+#define BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: integral_c_fwd.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/workaround.hpp>
+#include <boost/mpl/aux_/adl_barrier.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+#if BOOST_WORKAROUND(__HP_aCC, <= 53800)
+// the type of non-type template arguments may not depend on template arguments
+template< typename T, long N > struct integral_c;
+#else
+template< typename T, T N > struct integral_c;
+#endif
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c)
+
+#endif // BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/integral_c_tag.hpp b/3rdParty/Boost/boost/mpl/integral_c_tag.hpp
new file mode 100644
index 0000000..2b43e79
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/integral_c_tag.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
+#define BOOST_MPL_INTEGRAL_C_TAG_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: integral_c_tag.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_/adl_barrier.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+struct integral_c_tag { BOOST_STATIC_CONSTANT(int, value = 0); };
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c_tag)
+
+#endif // BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/is_placeholder.hpp b/3rdParty/Boost/boost/mpl/is_placeholder.hpp
new file mode 100644
index 0000000..5b28b47
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/is_placeholder.hpp
@@ -0,0 +1,67 @@
+
+#ifndef BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
+#define BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: is_placeholder.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/arg_fwd.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/yes_no.hpp>
+#include <boost/mpl/aux_/type_wrapper.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+namespace boost { namespace mpl {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< typename T >
+struct is_placeholder
+ : bool_<false>
+{
+};
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+struct is_placeholder< arg<N> >
+ : bool_<true>
+{
+};
+
+#else
+
+namespace aux {
+
+aux::no_tag is_placeholder_helper(...);
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+aux::yes_tag is_placeholder_helper(aux::type_wrapper< arg<N> >*);
+
+} // namespace aux
+
+template< typename T >
+struct is_placeholder
+{
+ static aux::type_wrapper<T>* get();
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(aux::is_placeholder_helper(get())) == sizeof(aux::yes_tag)
+ );
+
+ typedef bool_<value> type;
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+}}
+
+#endif // BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/iterator_tags.hpp b/3rdParty/Boost/boost/mpl/iterator_tags.hpp
new file mode 100644
index 0000000..46431a3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/iterator_tags.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
+#define BOOST_MPL_ITERATOR_TAG_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: iterator_tags.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/int.hpp>
+
+namespace boost { namespace mpl {
+
+struct forward_iterator_tag : int_<0> { typedef forward_iterator_tag type; };
+struct bidirectional_iterator_tag : int_<1> { typedef bidirectional_iterator_tag type; };
+struct random_access_iterator_tag : int_<2> { typedef random_access_iterator_tag type; };
+
+}}
+
+#endif // BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/lambda.hpp b/3rdParty/Boost/boost/mpl/lambda.hpp
new file mode 100644
index 0000000..165135f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/lambda.hpp
@@ -0,0 +1,29 @@
+
+#ifndef BOOST_MPL_LAMBDA_HPP_INCLUDED
+#define BOOST_MPL_LAMBDA_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: lambda.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/lambda_fwd.hpp>
+#include <boost/mpl/bind.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+# include <boost/mpl/aux_/full_lambda.hpp>
+#else
+# include <boost/mpl/aux_/lambda_no_ctps.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+# define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
+#endif
+
+#endif // BOOST_MPL_LAMBDA_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/lambda_fwd.hpp b/3rdParty/Boost/boost/mpl/lambda_fwd.hpp
new file mode 100644
index 0000000..f02837b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/lambda_fwd.hpp
@@ -0,0 +1,57 @@
+
+#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: lambda_fwd.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/void_fwd.hpp>
+#include <boost/mpl/aux_/na.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+
+# include <boost/mpl/int.hpp>
+# include <boost/mpl/aux_/lambda_arity_param.hpp>
+# include <boost/mpl/aux_/template_arity_fwd.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename T = na
+ , typename Tag = void_
+ BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(
+ typename Arity = int_< aux::template_arity<T>::value >
+ )
+ >
+struct lambda;
+
+}}
+
+#else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+# include <boost/mpl/bool.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename T = na
+ , typename Tag = void_
+ , typename Protect = true_
+ >
+struct lambda;
+
+}}
+
+#endif
+
+#endif // BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/less.hpp b/3rdParty/Boost/boost/mpl/less.hpp
new file mode 100644
index 0000000..11d860d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/less.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_LESS_HPP_INCLUDED
+#define BOOST_MPL_LESS_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.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
+#define AUX778076_OP_TOKEN <
+#include <boost/mpl/aux_/comparison_op.hpp>
+
+#endif // BOOST_MPL_LESS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/limits/arity.hpp b/3rdParty/Boost/boost/mpl/limits/arity.hpp
new file mode 100644
index 0000000..91e4606
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/limits/arity.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
+#define BOOST_MPL_LIMITS_ARITY_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: arity.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_LIMIT_METAFUNCTION_ARITY)
+# define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
+#endif
+
+#endif // BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/limits/unrolling.hpp b/3rdParty/Boost/boost/mpl/limits/unrolling.hpp
new file mode 100644
index 0000000..4ba3efb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/limits/unrolling.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
+#define BOOST_MPL_LIMITS_UNROLLING_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: unrolling.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_LIMIT_UNROLLING)
+# define BOOST_MPL_LIMIT_UNROLLING 4
+#endif
+
+#endif // BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/limits/vector.hpp b/3rdParty/Boost/boost/mpl/limits/vector.hpp
new file mode 100644
index 0000000..9a0accf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/limits/vector.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
+#define BOOST_MPL_LIMITS_VECTOR_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: vector.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_LIMIT_VECTOR_SIZE)
+# define BOOST_MPL_LIMIT_VECTOR_SIZE 20
+#endif
+
+#endif // BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/logical.hpp b/3rdParty/Boost/boost/mpl/logical.hpp
new file mode 100644
index 0000000..256ea32
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/logical.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_LOGICAL_HPP_INCLUDED
+#define BOOST_MPL_LOGICAL_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: logical.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/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+
+#endif // BOOST_MPL_LOGICAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/long.hpp b/3rdParty/Boost/boost/mpl/long.hpp
new file mode 100644
index 0000000..a3e35b1
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/long.hpp
@@ -0,0 +1,22 @@
+
+#ifndef BOOST_MPL_LONG_HPP_INCLUDED
+#define BOOST_MPL_LONG_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: long.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_fwd.hpp>
+
+#define AUX_WRAPPER_VALUE_TYPE long
+#include <boost/mpl/aux_/integral_wrapper.hpp>
+
+#endif // BOOST_MPL_LONG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/long_fwd.hpp b/3rdParty/Boost/boost/mpl/long_fwd.hpp
new file mode 100644
index 0000000..4c1b604
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/long_fwd.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_LONG_FWD_HPP_INCLUDED
+#define BOOST_MPL_LONG_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: long_fwd.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_/adl_barrier.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct long_;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(long_)
+
+#endif // BOOST_MPL_LONG_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/minus.hpp b/3rdParty/Boost/boost/mpl/minus.hpp
new file mode 100644
index 0000000..a737185
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/minus.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_MINUS_HPP_INCLUDED
+#define BOOST_MPL_MINUS_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: minus.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 minus
+#define AUX778076_OP_TOKEN -
+#include <boost/mpl/aux_/arithmetic_op.hpp>
+
+#endif // BOOST_MPL_MINUS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/multiplies.hpp b/3rdParty/Boost/boost/mpl/multiplies.hpp
new file mode 100644
index 0000000..772b7bd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/multiplies.hpp
@@ -0,0 +1,53 @@
+
+#ifndef BOOST_MPL_MULTIPLIES_HPP_INCLUDED
+#define BOOST_MPL_MULTIPLIES_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: multiplies.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/times.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/preprocessor/default_params.hpp>
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+// backward compatibility header, deprecated
+
+namespace boost { namespace mpl {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+# define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#else
+# define AUX778076_OP_ARITY 2
+#endif
+
+template<
+ BOOST_MPL_PP_DEFAULT_PARAMS(AUX778076_OP_ARITY, typename N, na)
+ >
+struct multiplies
+ : times< BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(
+ AUX778076_OP_ARITY
+ , multiplies
+ , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+ )
+};
+
+BOOST_MPL_AUX_NA_SPEC(AUX778076_OP_ARITY, multiplies)
+
+#undef AUX778076_OP_ARITY
+
+}}
+
+#endif // BOOST_MPL_MULTIPLIES_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/negate.hpp b/3rdParty/Boost/boost/mpl/negate.hpp
new file mode 100644
index 0000000..bb8bcdd
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/negate.hpp
@@ -0,0 +1,81 @@
+
+#ifndef BOOST_MPL_NEGATE_HPP_INCLUDED
+#define BOOST_MPL_NEGATE_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: negate.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/integral_c.hpp>
+#include <boost/mpl/aux_/msvc_eti_base.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+#include <boost/mpl/aux_/config/integral.hpp>
+#include <boost/mpl/aux_/config/static_constant.hpp>
+
+namespace boost { namespace mpl {
+
+template< typename Tag > struct negate_impl;
+
+template< typename T > struct negate_tag
+{
+ typedef typename T::tag type;
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(N)
+ >
+struct negate
+#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+ : negate_impl<
+ typename negate_tag<N>::type
+ >::template apply<N>::type
+#else
+ : aux::msvc_eti_base< typename apply_wrap1<
+ negate_impl< typename negate_tag<N>::type >
+ , N
+ >::type >::type
+#endif
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1, negate, (N))
+};
+
+BOOST_MPL_AUX_NA_SPEC(1, negate)
+
+
+#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+namespace aux {
+template< typename T, T n > struct negate_wknd
+{
+ BOOST_STATIC_CONSTANT(T, value = -n);
+ typedef integral_c<T,value> type;
+};
+}
+#endif
+
+template<>
+struct negate_impl<integral_c_tag>
+{
+#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+ template< typename N > struct apply
+ : aux::negate_wknd< typename N::value_type, N::value >
+#else
+ template< typename N > struct apply
+ : integral_c< typename N::value_type, (-N::value) >
+#endif
+ {
+ };
+};
+
+}}
+
+#endif // BOOST_MPL_NEGATE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/next.hpp b/3rdParty/Boost/boost/mpl/next.hpp
new file mode 100644
index 0000000..3d4e711
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/next.hpp
@@ -0,0 +1,19 @@
+
+#ifndef BOOST_MPL_NEXT_HPP_INCLUDED
+#define BOOST_MPL_NEXT_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: next.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/next_prior.hpp>
+
+#endif // BOOST_MPL_NEXT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/next_prior.hpp b/3rdParty/Boost/boost/mpl/next_prior.hpp
new file mode 100644
index 0000000..4a9655b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/next_prior.hpp
@@ -0,0 +1,49 @@
+
+#ifndef BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
+#define BOOST_MPL_NEXT_PRIOR_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: next_prior.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_/common_name_wknd.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_COMMON_NAME_WKND(next)
+BOOST_MPL_AUX_COMMON_NAME_WKND(prior)
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T)
+ >
+struct next
+{
+ typedef typename T::next type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,next,(T))
+};
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T)
+ >
+struct prior
+{
+ typedef typename T::prior type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,prior,(T))
+};
+
+BOOST_MPL_AUX_NA_SPEC(1, next)
+BOOST_MPL_AUX_NA_SPEC(1, prior)
+
+}}
+
+#endif // BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/not.hpp b/3rdParty/Boost/boost/mpl/not.hpp
new file mode 100644
index 0000000..2abc0db
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/not.hpp
@@ -0,0 +1,51 @@
+
+#ifndef BOOST_MPL_NOT_HPP_INCLUDED
+#define BOOST_MPL_NOT_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.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/bool.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/nested_type_wknd.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, C_) > // 'long' is intentional here
+struct not_impl
+ : bool_<!C_>
+{
+};
+
+} // namespace aux
+
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T)
+ >
+struct not_
+ : aux::not_impl<
+ BOOST_MPL_AUX_NESTED_TYPE_WKND(T)::value
+ >
+{
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,not_,(T))
+};
+
+BOOST_MPL_AUX_NA_SPEC(1,not_)
+
+}}
+
+#endif // BOOST_MPL_NOT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/numeric_cast.hpp b/3rdParty/Boost/boost/mpl/numeric_cast.hpp
new file mode 100644
index 0000000..808ede0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/numeric_cast.hpp
@@ -0,0 +1,41 @@
+
+#ifndef BOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
+#define BOOST_MPL_NUMERIC_CAST_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: numeric_cast.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/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+// agurt 21/sep/04: portability macro for the sake of MSVC 6.x-7.0;
+// resolves conflicts with 'boost::numeric_cast' function template.
+// use it in your own code _only_ if you care about compatibility with
+// these outdated compilers!
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) )
+# define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast_
+#else
+# define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast
+#endif
+
+namespace boost { namespace mpl {
+
+// no default implementation; the definition is needed to make MSVC happy
+
+template< typename SourceTag, typename TargetTag > struct BOOST_MPL_AUX_NUMERIC_CAST
+{
+ template< typename N > struct apply;
+};
+
+}}
+
+#endif // BOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/or.hpp b/3rdParty/Boost/boost/mpl/or.hpp
new file mode 100644
index 0000000..4706449
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/or.hpp
@@ -0,0 +1,61 @@
+
+#ifndef BOOST_MPL_OR_HPP_INCLUDED
+#define BOOST_MPL_OR_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: or.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/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/aux_/nested_type_wknd.hpp>
+# include <boost/mpl/aux_/na_spec.hpp>
+# include <boost/mpl/aux_/lambda_support.hpp>
+# include <boost/mpl/aux_/config/msvc.hpp>
+
+// agurt, 19/may/04: workaround a conflict with <iso646.h> header's
+// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
+// has to be checked in a separate condition, otherwise GCC complains
+// about 'or' being an alternative token
+#if defined(_MSC_VER)
+#ifndef __GCCXML__
+#if defined(or)
+# pragma push_macro("or")
+# undef or
+# define or(x)
+#endif
+#endif
+#endif
+
+# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#if defined(_MSC_VER)
+#ifndef __GCCXML__
+#if defined(or)
+# pragma pop_macro("or")
+#endif
+#endif
+#endif
+
+#else
+
+# define AUX778076_OP_NAME or_
+# define AUX778076_OP_VALUE1 true
+# define AUX778076_OP_VALUE2 false
+# include <boost/mpl/aux_/logical_op.hpp>
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_OR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/placeholders.hpp b/3rdParty/Boost/boost/mpl/placeholders.hpp
new file mode 100644
index 0000000..c1a38d9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/placeholders.hpp
@@ -0,0 +1,100 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+#define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-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: placeholders.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/arg.hpp>
+# include <boost/mpl/aux_/adl_barrier.hpp>
+
+# if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
+# define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
+ using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
+ /**/
+# else
+# define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
+# 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 placeholders.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/nttp_decl.hpp>
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+// watch out for GNU gettext users, who #define _(x)
+#if !defined(_) || defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<-1> _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+#endif
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#'
+/// specialization
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <boost/mpl/placeholders.hpp>))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+typedef arg<i_> BOOST_PP_CAT(_,i_);
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+namespace boost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(BOOST_PP_CAT(_,i_))
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::BOOST_PP_CAT(_,i_);
+}
+
+}}
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/plus.hpp b/3rdParty/Boost/boost/mpl/plus.hpp
new file mode 100644
index 0000000..79642eb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/plus.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_PLUS_HPP_INCLUDED
+#define BOOST_MPL_PLUS_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: plus.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 plus
+#define AUX778076_OP_TOKEN +
+#include <boost/mpl/aux_/arithmetic_op.hpp>
+
+#endif // BOOST_MPL_PLUS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/pop_back_fwd.hpp b/3rdParty/Boost/boost/mpl/pop_back_fwd.hpp
new file mode 100644
index 0000000..4fba829
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/pop_back_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
+#define BOOST_MPL_POP_BACK_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: pop_back_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 pop_back_impl;
+template< typename Sequence > struct pop_back;
+
+}}
+
+#endif // BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/pop_front_fwd.hpp b/3rdParty/Boost/boost/mpl/pop_front_fwd.hpp
new file mode 100644
index 0000000..64d4c58
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/pop_front_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
+#define BOOST_MPL_POP_FRONT_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: pop_front_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 pop_front_impl;
+template< typename Sequence > struct pop_front;
+
+}}
+
+#endif // BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/prior.hpp b/3rdParty/Boost/boost/mpl/prior.hpp
new file mode 100644
index 0000000..e08d967
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/prior.hpp
@@ -0,0 +1,19 @@
+
+#ifndef BOOST_MPL_PRIOR_HPP_INCLUDED
+#define BOOST_MPL_PRIOR_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: prior.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/next_prior.hpp>
+
+#endif // BOOST_MPL_PRIOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/protect.hpp b/3rdParty/Boost/boost/mpl/protect.hpp
new file mode 100644
index 0000000..4fad835
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/protect.hpp
@@ -0,0 +1,55 @@
+
+#ifndef BOOST_MPL_PROTECT_HPP_INCLUDED
+#define BOOST_MPL_PROTECT_HPP_INCLUDED
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: protect.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_/arity.hpp>
+#include <boost/mpl/aux_/config/dtp.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(T)
+ , int not_le_ = 0
+ >
+struct protect : T
+{
+#if BOOST_WORKAROUND(__EDG_VERSION__, == 238)
+ typedef mpl::protect type;
+#else
+ typedef protect type;
+#endif
+};
+
+#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+namespace aux {
+template< BOOST_MPL_AUX_NTTP_DECL(int, N), typename T >
+struct arity< protect<T>, N >
+ : arity<T,N>
+{
+};
+} // namespace aux
+#endif
+
+BOOST_MPL_AUX_NA_SPEC_MAIN(1, protect)
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(1, 1, protect)
+#endif
+
+}}
+
+#endif // BOOST_MPL_PROTECT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/push_back_fwd.hpp b/3rdParty/Boost/boost/mpl/push_back_fwd.hpp
new file mode 100644
index 0000000..381aa29
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/push_back_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
+#define BOOST_MPL_PUSH_BACK_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: push_back_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 push_back_impl;
+template< typename Sequence, typename T > struct push_back;
+
+}}
+
+#endif // BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/push_front_fwd.hpp b/3rdParty/Boost/boost/mpl/push_front_fwd.hpp
new file mode 100644
index 0000000..11123bf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/push_front_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
+#define BOOST_MPL_PUSH_FRONT_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: push_front_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 push_front_impl;
+template< typename Sequence, typename T > struct push_front;
+
+}}
+
+#endif // BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/quote.hpp b/3rdParty/Boost/boost/mpl/quote.hpp
new file mode 100644
index 0000000..52f67bf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/quote.hpp
@@ -0,0 +1,151 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
+#define BOOST_MPL_QUOTE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the 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: quote.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
+// $Date: 2008-10-11 02:50:46 -0400 (Sat, 11 Oct 2008) $
+// $Revision: 49272 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+# include <boost/mpl/void.hpp>
+# include <boost/mpl/aux_/has_type.hpp>
+#endif
+
+#include <boost/mpl/aux_/config/bcc.hpp>
+#include <boost/mpl/aux_/config/ttp.hpp>
+
+#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+ && !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
+# define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
+#endif
+
+#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
+ && defined(BOOST_MPL_CFG_NO_HAS_XXX)
+# define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
+#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 quote.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/arity.hpp>
+# include <boost/mpl/aux_/preprocessor/params.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/mpl/aux_/config/workaround.hpp>
+
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
+
+namespace boost { namespace mpl {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< typename T, bool has_type_ >
+struct quote_impl
+// GCC has a problem with metafunction forwarding when T is a
+// specialization of a template called 'type'.
+# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
+ && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
+ && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2))
+{
+ typedef typename T::type type;
+};
+# else
+ : T
+{
+};
+# endif
+
+template< typename T >
+struct quote_impl<T,false>
+{
+ typedef T type;
+};
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template< bool > struct quote_impl
+{
+ template< typename T > struct result_
+ : T
+ {
+ };
+};
+
+template<> struct quote_impl<false>
+{
+ template< typename T > struct result_
+ {
+ typedef T type;
+ };
+};
+
+#endif
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/quote.hpp>))
+#include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_QUOTE_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+ template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
+ , typename Tag = void_
+ >
+struct BOOST_PP_CAT(quote,i_)
+{
+ template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
+#if defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
+ {
+ typedef typename quote_impl<
+ F< BOOST_MPL_PP_PARAMS(i_, U) >
+ , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
+ >::type type;
+ };
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ : quote_impl<
+ F< BOOST_MPL_PP_PARAMS(i_, U) >
+ , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
+ >
+ {
+ };
+#else
+ : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value >
+ ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > >
+ {
+ };
+#endif
+};
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/sequence_tag.hpp b/3rdParty/Boost/boost/mpl/sequence_tag.hpp
new file mode 100644
index 0000000..41450ed
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/sequence_tag.hpp
@@ -0,0 +1,124 @@
+
+#ifndef BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
+#define BOOST_MPL_SEQUENCE_TAG_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: sequence_tag.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/sequence_tag_fwd.hpp>
+#include <boost/mpl/aux_/has_tag.hpp>
+#include <boost/mpl/aux_/has_begin.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/is_msvc_eti_arg.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+#include <boost/mpl/aux_/yes_no.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+namespace boost { namespace mpl {
+
+// agurt, 27/nov/02: have to use a simplistic 'sequence_tag' implementation
+// on MSVC to avoid dreadful "internal structure overflow" error
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || defined(BOOST_MPL_CFG_NO_HAS_XXX)
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+ >
+struct sequence_tag
+{
+ typedef typename Sequence::tag type;
+};
+
+#elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+
+// agurt, 07/feb/03: workaround for what seems to be MSVC 7.0-specific ETI issue
+
+namespace aux {
+
+template< bool >
+struct sequence_tag_impl
+{
+ template< typename Sequence > struct result_
+ {
+ typedef typename Sequence::tag type;
+ };
+};
+
+template<>
+struct sequence_tag_impl<false>
+{
+ template< typename Sequence > struct result_
+ {
+ typedef int type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+ >
+struct sequence_tag
+ : aux::sequence_tag_impl< !aux::is_msvc_eti_arg<Sequence>::value >
+ ::template result_<Sequence>
+{
+};
+
+#else
+
+namespace aux {
+
+template< bool has_tag_, bool has_begin_ >
+struct sequence_tag_impl
+{
+ // agurt 24/nov/02: MSVC 6.5 gets confused in 'sequence_tag_impl<true>'
+ // specialization below, if we name it 'result_' here
+ template< typename Sequence > struct result2_;
+};
+
+# define AUX_CLASS_SEQUENCE_TAG_SPEC(has_tag, has_begin, result_type) \
+template<> struct sequence_tag_impl<has_tag,has_begin> \
+{ \
+ template< typename Sequence > struct result2_ \
+ { \
+ typedef result_type type; \
+ }; \
+}; \
+/**/
+
+AUX_CLASS_SEQUENCE_TAG_SPEC(true, true, typename Sequence::tag)
+AUX_CLASS_SEQUENCE_TAG_SPEC(true, false, typename Sequence::tag)
+AUX_CLASS_SEQUENCE_TAG_SPEC(false, true, nested_begin_end_tag)
+AUX_CLASS_SEQUENCE_TAG_SPEC(false, false, non_sequence_tag)
+
+# undef AUX_CLASS_SEQUENCE_TAG_SPEC
+
+} // namespace aux
+
+template<
+ typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+ >
+struct sequence_tag
+ : aux::sequence_tag_impl<
+ ::boost::mpl::aux::has_tag<Sequence>::value
+ , ::boost::mpl::aux::has_begin<Sequence>::value
+ >::template result2_<Sequence>
+{
+};
+
+#endif // BOOST_MSVC
+
+BOOST_MPL_AUX_NA_SPEC(1, sequence_tag)
+
+}}
+
+#endif // BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/sequence_tag_fwd.hpp b/3rdParty/Boost/boost/mpl/sequence_tag_fwd.hpp
new file mode 100644
index 0000000..07d54a4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/sequence_tag_fwd.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
+#define BOOST_MPL_SEQUENCE_TAG_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: sequence_tag_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 {
+
+struct nested_begin_end_tag;
+struct non_sequence_tag;
+
+template< typename Sequence > struct sequence_tag;
+
+}}
+
+#endif // BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/size_fwd.hpp b/3rdParty/Boost/boost/mpl/size_fwd.hpp
new file mode 100644
index 0000000..2bab816
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/size_fwd.hpp
@@ -0,0 +1,24 @@
+
+#ifndef BOOST_MPL_SIZE_FWD_HPP_INCLUDED
+#define BOOST_MPL_SIZE_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: size_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 size_impl;
+template< typename Sequence > struct size;
+
+}}
+
+#endif // BOOST_MPL_SIZE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/size_t.hpp b/3rdParty/Boost/boost/mpl/size_t.hpp
new file mode 100644
index 0000000..e72d77f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/size_t.hpp
@@ -0,0 +1,25 @@
+
+#ifndef BOOST_MPL_SIZE_T_HPP_INCLUDED
+#define BOOST_MPL_SIZE_T_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: size_t.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_t_fwd.hpp>
+
+#define AUX_WRAPPER_VALUE_TYPE std::size_t
+#define AUX_WRAPPER_NAME size_t
+#define AUX_WRAPPER_PARAMS(N) std::size_t N
+
+#include <boost/mpl/aux_/integral_wrapper.hpp>
+
+#endif // BOOST_MPL_SIZE_T_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/size_t_fwd.hpp b/3rdParty/Boost/boost/mpl/size_t_fwd.hpp
new file mode 100644
index 0000000..84e903b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/size_t_fwd.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
+#define BOOST_MPL_SIZE_T_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: size_t_fwd.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_/adl_barrier.hpp>
+#include <boost/config.hpp> // make sure 'size_t' is placed into 'std'
+#include <cstddef>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+template< std::size_t N > struct size_t;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(size_t)
+
+#endif // BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/tag.hpp b/3rdParty/Boost/boost/mpl/tag.hpp
new file mode 100644
index 0000000..747646c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/tag.hpp
@@ -0,0 +1,52 @@
+
+#ifndef BOOST_MPL_TAG_HPP_INCLUDED
+#define BOOST_MPL_TAG_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: tag.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/eval_if.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/aux_/has_tag.hpp>
+#include <boost/mpl/aux_/config/eti.hpp>
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template< typename T > struct tag_impl
+{
+ typedef typename T::tag type;
+};
+}
+
+template< typename T, typename Default = void_ > struct tag
+#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+ : if_<
+ aux::has_tag<T>
+ , aux::tag_impl<T>
+ , Default
+ >::type
+{
+#else
+{
+ typedef typename eval_if<
+ aux::has_tag<T>
+ , aux::tag_impl<T>
+ , Default
+ >::type type;
+
+#endif
+};
+
+}}
+
+#endif // BOOST_MPL_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/times.hpp b/3rdParty/Boost/boost/mpl/times.hpp
new file mode 100644
index 0000000..ea61eaf
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/times.hpp
@@ -0,0 +1,21 @@
+
+#ifndef BOOST_MPL_TIMES_HPP_INCLUDED
+#define BOOST_MPL_TIMES_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: times.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 times
+#define AUX778076_OP_TOKEN *
+#include <boost/mpl/aux_/arithmetic_op.hpp>
+
+#endif // BOOST_MPL_TIMES_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector.hpp b/3rdParty/Boost/boost/mpl/vector.hpp
new file mode 100644
index 0000000..94858ff
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector.hpp
@@ -0,0 +1,57 @@
+
+#ifndef BOOST_MPL_VECTOR_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_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: vector.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/limits/vector.hpp>
+# include <boost/mpl/aux_/na.hpp>
+# include <boost/mpl/aux_/config/preprocessor.hpp>
+
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/stringize.hpp>
+
+#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+# define AUX778076_VECTOR_HEADER \
+ BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE).hpp \
+ /**/
+#else
+# define AUX778076_VECTOR_HEADER \
+ BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE)##.hpp \
+ /**/
+#endif
+
+# include BOOST_PP_STRINGIZE(boost/mpl/vector/AUX778076_VECTOR_HEADER)
+# undef AUX778076_VECTOR_HEADER
+#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 vector.hpp
+# include <boost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/limits/vector.hpp>
+
+# define AUX778076_SEQUENCE_NAME vector
+# define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_VECTOR_SIZE
+# include <boost/mpl/aux_/sequence_wrapper.hpp>
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_VECTOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/O1_size.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/O1_size.hpp
new file mode 100644
index 0000000..7697a24
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/O1_size.hpp
@@ -0,0 +1,56 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_O1_SIZE_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: O1_size.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/O1_size_fwd.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/long.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<>
+struct O1_size_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ : Vector::size
+ {
+ };
+};
+
+#else
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< long N >
+struct O1_size_impl< aux::vector_tag<N> >
+{
+ template< typename Vector > struct apply
+ : mpl::long_<N>
+ {
+ };
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/at.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/at.hpp
new file mode 100644
index 0000000..c859f2d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/at.hpp
@@ -0,0 +1,116 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_AT_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: at.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/vector/aux_/tag.hpp>
+#include <boost/mpl/long.hpp>
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/type_wrapper.hpp>
+#include <boost/mpl/aux_/value_wknd.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template< typename Vector, long n_ >
+struct v_at_impl
+{
+ typedef long_< (Vector::lower_bound_::value + n_) > index_;
+ typedef __typeof__( Vector::item_(index_()) ) type;
+};
+
+
+template< typename Vector, long n_ >
+struct v_at
+ : aux::wrapped_type< typename v_at_impl<Vector,n_>::type >
+{
+};
+
+template<>
+struct at_impl< aux::vector_tag >
+{
+ template< typename Vector, typename N > struct apply
+ : v_at<
+ Vector
+ , BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >
+ {
+ };
+};
+
+#else
+
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+
+template< typename Vector, BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at;
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+struct at_impl< aux::vector_tag<n_> >
+{
+ template< typename Vector, typename N > struct apply
+#if !defined(__BORLANDC__)
+ : v_at<
+ Vector
+ , BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >
+ {
+#else
+ {
+ typedef typename v_at<
+ Vector
+ , BOOST_MPL_AUX_VALUE_WKND(N)::value
+ >::type type;
+#endif
+ };
+};
+
+# else
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at_impl
+{
+ template< typename V > struct result_;
+};
+
+// to work around ETI, etc.
+template<> struct v_at_impl<-1>
+{
+ template< typename V > struct result_
+ {
+ typedef void_ type;
+ };
+};
+
+} // namespace aux
+
+template< typename T, BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+struct v_at
+ : aux::v_at_impl<n_>::template result_<T>
+{
+};
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/back.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/back.hpp
new file mode 100644
index 0000000..4969e62
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/back.hpp
@@ -0,0 +1,59 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_BACK_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: back.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/back_fwd.hpp>
+#include <boost/mpl/next_prior.hpp>
+#include <boost/mpl/vector/aux_/at.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<>
+struct back_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ : v_at<
+ Vector
+ , prior<typename Vector::size>::type::value
+ >
+ {
+ };
+};
+
+#else
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< long n_ >
+struct back_impl< aux::vector_tag<n_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/begin_end.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/begin_end.hpp
new file mode 100644
index 0000000..f2bedf3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/begin_end.hpp
@@ -0,0 +1,49 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_BEGIN_END_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: begin_end.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/typeof.hpp>
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# include <boost/mpl/begin_end_fwd.hpp>
+# include <boost/mpl/vector/aux_/iterator.hpp>
+# include <boost/mpl/vector/aux_/tag.hpp>
+
+namespace boost { namespace mpl {
+
+template<>
+struct begin_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ {
+ typedef v_iter<Vector,0> type;
+ };
+};
+
+template<>
+struct end_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ {
+ typedef v_iter<Vector,Vector::size::value> type;
+ };
+};
+
+}}
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#endif // BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/clear.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/clear.hpp
new file mode 100644
index 0000000..5a5d2d0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/clear.hpp
@@ -0,0 +1,55 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_CLEAR_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: clear.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/vector/aux_/vector0.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<>
+struct clear_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+#else
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< long N >
+struct clear_impl< aux::vector_tag<N> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/empty.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/empty.hpp
new file mode 100644
index 0000000..8e76c3e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/empty.hpp
@@ -0,0 +1,68 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_EMPTY_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: empty.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/bool.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<>
+struct empty_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ : is_same<
+ typename Vector::lower_bound_
+ , typename Vector::upper_bound_
+ >
+ {
+ };
+};
+
+#else
+
+template<>
+struct empty_impl< aux::vector_tag<0> >
+{
+ template< typename Vector > struct apply
+ : true_
+ {
+ };
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< long N >
+struct empty_impl< aux::vector_tag<N> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/front.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/front.hpp
new file mode 100644
index 0000000..74b4c50
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/front.hpp
@@ -0,0 +1,56 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the 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: front.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/front_fwd.hpp>
+#include <boost/mpl/vector/aux_/at.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<>
+struct front_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ : v_at<Vector,0>
+ {
+ };
+};
+
+#else
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+struct front_impl< aux::vector_tag<n_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/include_preprocessed.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/include_preprocessed.hpp
new file mode 100644
index 0000000..247b6ed
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/include_preprocessed.hpp
@@ -0,0 +1,55 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: include_preprocessed.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/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/mpl/aux_/config/preprocessor.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/stringize.hpp>
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+# define AUX778076_INCLUDE_DIR typeof_based
+#elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+# define AUX778076_INCLUDE_DIR no_ctps
+#else
+# define AUX778076_INCLUDE_DIR plain
+#endif
+
+#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+# define AUX778076_HEADER \
+ AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER \
+/**/
+#else
+# define AUX778076_HEADER \
+ BOOST_PP_CAT(AUX778076_INCLUDE_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
+/**/
+#endif
+
+
+#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
+# define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
+# include AUX778076_INCLUDE_STRING
+# undef AUX778076_INCLUDE_STRING
+#else
+# include BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
+#endif
+
+# undef AUX778076_HEADER
+# undef AUX778076_INCLUDE_DIR
+
+#undef BOOST_MPL_PREPROCESSED_HEADER
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/item.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/item.hpp
new file mode 100644
index 0000000..96002b9
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/item.hpp
@@ -0,0 +1,103 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_ITEM_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: 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_prior.hpp>
+#include <boost/mpl/aux_/type_wrapper.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<
+ typename T
+ , typename Base
+ , int at_front = 0
+ >
+struct v_item
+ : Base
+{
+ typedef typename Base::upper_bound_ index_;
+ typedef typename next<index_>::type upper_bound_;
+ typedef typename next<typename Base::size>::type size;
+ typedef Base base;
+ typedef v_item type;
+
+ // agurt 10/sep/04: MWCW <= 9.3 workaround here and below; the compiler
+ // breaks if using declaration comes _before_ the new overload
+ static aux::type_wrapper<T> item_(index_);
+ using Base::item_;
+};
+
+template<
+ typename T
+ , typename Base
+ >
+struct v_item<T,Base,1>
+ : Base
+{
+ typedef typename prior<typename Base::lower_bound_>::type index_;
+ typedef index_ lower_bound_;
+ typedef typename next<typename Base::size>::type size;
+ typedef Base base;
+ typedef v_item type;
+
+ static aux::type_wrapper<T> item_(index_);
+ using Base::item_;
+};
+
+// "erasure" item
+template<
+ typename Base
+ , int at_front
+ >
+struct v_mask
+ : Base
+{
+ typedef typename prior<typename Base::upper_bound_>::type index_;
+ typedef index_ upper_bound_;
+ typedef typename prior<typename Base::size>::type size;
+ typedef Base base;
+ typedef v_mask type;
+
+ static aux::type_wrapper<void_> item_(index_);
+ using Base::item_;
+};
+
+template<
+ typename Base
+ >
+struct v_mask<Base,1>
+ : Base
+{
+ typedef typename Base::lower_bound_ index_;
+ typedef typename next<index_>::type lower_bound_;
+ typedef typename prior<typename Base::size>::type size;
+ typedef Base base;
+ typedef v_mask type;
+
+ static aux::type_wrapper<void_> item_(index_);
+ using Base::item_;
+};
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/iterator.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/iterator.hpp
new file mode 100644
index 0000000..5864aff
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/iterator.hpp
@@ -0,0 +1,130 @@
+
+#ifndef BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
+#define BOOST_MPL_AUX_VECTOR_ITERATOR_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: 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/vector/aux_/at.hpp>
+#include <boost/mpl/iterator_tags.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/advance_fwd.hpp>
+#include <boost/mpl/distance_fwd.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/prior.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+#include <boost/mpl/aux_/value_wknd.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+namespace boost { namespace mpl {
+
+template<
+ typename Vector
+ , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+ >
+struct v_iter
+{
+ typedef aux::v_iter_tag tag;
+ typedef random_access_iterator_tag category;
+ typedef typename v_at<Vector,n_>::type type;
+
+ typedef Vector vector_;
+ typedef mpl::long_<n_> pos;
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ enum {
+ next_ = n_ + 1
+ , prior_ = n_ - 1
+ , pos_ = n_
+ };
+
+ typedef v_iter<Vector,next_> next;
+ typedef v_iter<Vector,prior_> prior;
+#endif
+
+};
+
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+ typename Vector
+ , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+ >
+struct next< v_iter<Vector,n_> >
+{
+ typedef v_iter<Vector,(n_ + 1)> type;
+};
+
+template<
+ typename Vector
+ , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+ >
+struct prior< v_iter<Vector,n_> >
+{
+ typedef v_iter<Vector,(n_ - 1)> type;
+};
+
+template<
+ typename Vector
+ , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+ , typename Distance
+ >
+struct advance< v_iter<Vector,n_>,Distance>
+{
+ typedef v_iter<
+ Vector
+ , (n_ + BOOST_MPL_AUX_NESTED_VALUE_WKND(long, Distance))
+ > type;
+};
+
+template<
+ typename Vector
+ , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+ , BOOST_MPL_AUX_NTTP_DECL(long, m_)
+ >
+struct distance< v_iter<Vector,n_>, v_iter<Vector,m_> >
+ : mpl::long_<(m_ - n_)>
+{
+};
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template<> struct advance_impl<aux::v_iter_tag>
+{
+ template< typename Iterator, typename N > struct apply
+ {
+ enum { pos_ = Iterator::pos_, n_ = N::value };
+ typedef v_iter<
+ typename Iterator::vector_
+ , (pos_ + n_)
+ > type;
+ };
+};
+
+template<> struct distance_impl<aux::v_iter_tag>
+{
+ template< typename Iter1, typename Iter2 > struct apply
+ {
+ enum { pos1_ = Iter1::pos_, pos2_ = Iter2::pos_ };
+ typedef long_<( pos2_ - pos1_ )> type;
+ BOOST_STATIC_CONSTANT(long, value = ( pos2_ - pos1_ ));
+ };
+};
+
+#endif
+
+}}
+
+#endif // BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/numbered.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/numbered.hpp
new file mode 100644
index 0000000..0e5acc0
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/numbered.hpp
@@ -0,0 +1,218 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+#if defined(BOOST_PP_IS_ITERATING)
+
+// 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: numbered.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/preprocessor/enum_params.hpp>
+#include <boost/preprocessor/enum_shifted_params.hpp>
+#include <boost/preprocessor/comma_if.hpp>
+#include <boost/preprocessor/repeat.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# define AUX778076_VECTOR_TAIL(vector, i_, T) \
+ BOOST_PP_CAT(vector,i_)< \
+ BOOST_PP_ENUM_PARAMS(i_, T) \
+ > \
+ /**/
+
+#if i_ > 0
+template<
+ BOOST_PP_ENUM_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(vector,i_)
+ : v_item<
+ BOOST_PP_CAT(T,BOOST_PP_DEC(i_))
+ , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),T)
+ >
+{
+ typedef BOOST_PP_CAT(vector,i_) type;
+};
+#endif
+
+# undef AUX778076_VECTOR_TAIL
+
+#else // "brute force" implementation
+
+# if i_ > 0
+
+template<
+ BOOST_PP_ENUM_PARAMS(i_, typename T)
+ >
+struct BOOST_PP_CAT(vector,i_)
+{
+ typedef aux::vector_tag<i_> tag;
+ typedef BOOST_PP_CAT(vector,i_) type;
+
+# define AUX778076_VECTOR_ITEM(unused, i_, unused2) \
+ typedef BOOST_PP_CAT(T,i_) BOOST_PP_CAT(item,i_); \
+ /**/
+
+ BOOST_PP_REPEAT(i_, AUX778076_VECTOR_ITEM, unused)
+# undef AUX778076_VECTOR_ITEM
+ typedef void_ BOOST_PP_CAT(item,i_);
+ typedef BOOST_PP_CAT(T,BOOST_PP_DEC(i_)) back;
+
+ // Borland forces us to use 'type' here (instead of the class name)
+ typedef v_iter<type,0> begin;
+ typedef v_iter<type,i_> end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<BOOST_PP_DEC(i_)> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef BOOST_PP_CAT(vector,i_)<
+ T
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(i_))
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item)
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef BOOST_PP_CAT(vector,BOOST_PP_DEC(i_))<
+ BOOST_PP_ENUM_SHIFTED_PARAMS(i_, typename Vector::item)
+ > type;
+ };
+};
+
+
+template<>
+struct push_back_impl< aux::vector_tag<BOOST_PP_DEC(i_)> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef BOOST_PP_CAT(vector,i_)<
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item)
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(i_))
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef BOOST_PP_CAT(vector,BOOST_PP_DEC(i_))<
+ BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item)
+ > type;
+ };
+};
+
+# endif // i_ > 0
+
+# if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+
+template< typename V >
+struct v_at<V,i_>
+{
+ typedef typename V::BOOST_PP_CAT(item,i_) type;
+};
+
+# else
+
+namespace aux {
+template<> struct v_at_impl<i_>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::BOOST_PP_CAT(item,i_) type;
+ };
+};
+}
+
+template<>
+struct at_impl< aux::vector_tag<i_> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+#if i_ > 0
+template<>
+struct front_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+#endif
+
+template<>
+struct size_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ : long_<i_>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<i_> >
+ : size_impl< aux::vector_tag<i_> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<i_> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#undef i_
+
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/numbered_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/numbered_c.hpp
new file mode 100644
index 0000000..dc13497
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/numbered_c.hpp
@@ -0,0 +1,77 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+#if defined(BOOST_PP_IS_ITERATING)
+
+// 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: numbered_c.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/preprocessor/enum_params.hpp>
+#include <boost/preprocessor/enum_shifted_params.hpp>
+#include <boost/preprocessor/comma_if.hpp>
+#include <boost/preprocessor/repeat.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# define AUX778076_VECTOR_TAIL(vector, i_, C) \
+ BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)<T \
+ BOOST_PP_COMMA_IF(i_) BOOST_PP_ENUM_PARAMS(i_, C) \
+ > \
+ /**/
+
+#if i_ > 0
+template<
+ typename T
+ , BOOST_PP_ENUM_PARAMS(i_, T C)
+ >
+struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
+ : v_item<
+ integral_c<T,BOOST_PP_CAT(C,BOOST_PP_DEC(i_))>
+ , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),C)
+ >
+{
+ typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
+ typedef T value_type;
+};
+#endif
+
+# undef AUX778076_VECTOR_TAIL
+
+#else // "brute force" implementation
+
+# define AUX778076_VECTOR_C_PARAM_FUNC(unused, i_, param) \
+ BOOST_PP_COMMA_IF(i_) \
+ integral_c<T,BOOST_PP_CAT(param,i_)> \
+ /**/
+
+template<
+ typename T
+ , BOOST_PP_ENUM_PARAMS(i_, T C)
+ >
+struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
+ : BOOST_PP_CAT(vector,i_)< BOOST_PP_REPEAT(i_,AUX778076_VECTOR_C_PARAM_FUNC,C) >
+{
+ typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
+ typedef T value_type;
+};
+
+# undef AUX778076_VECTOR_C_PARAM_FUNC
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#undef i_
+
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/pop_back.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/pop_back.hpp
new file mode 100644
index 0000000..aa90216
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/pop_back.hpp
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_POP_BACK_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: pop_back.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/pop_back_fwd.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# include <boost/mpl/vector/aux_/item.hpp>
+# include <boost/mpl/vector/aux_/tag.hpp>
+
+namespace boost { namespace mpl {
+
+template<>
+struct pop_back_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ {
+ typedef v_mask<Vector,0> type;
+ };
+};
+
+}}
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#endif // BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/pop_front.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/pop_front.hpp
new file mode 100644
index 0000000..854d1e7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/pop_front.hpp
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_POP_FRONT_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: pop_front.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/pop_front_fwd.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# include <boost/mpl/vector/aux_/item.hpp>
+# include <boost/mpl/vector/aux_/tag.hpp>
+
+namespace boost { namespace mpl {
+
+template<>
+struct pop_front_impl< aux::vector_tag >
+{
+ template< typename Vector > struct apply
+ {
+ typedef v_mask<Vector,1> type;
+ };
+};
+
+}}
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#endif // BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp
new file mode 100644
index 0000000..c79a1ac
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp
@@ -0,0 +1,1528 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector10.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+template<> struct v_at_impl<0>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item0 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<0> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<0> >
+{
+ template< typename Vector > struct apply
+ : long_<0>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<0> >
+ : size_impl< aux::vector_tag<0> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<0> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0
+ >
+struct vector1
+{
+ typedef aux::vector_tag<1> tag;
+ typedef vector1 type;
+ typedef T0 item0;
+ typedef void_ item1;
+ typedef T0 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,1 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<0> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector1<
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<
+
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<0> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector1<
+
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<
+
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<1>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item1 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<1> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ : long_<1>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<1> >
+ : size_impl< aux::vector_tag<1> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector2
+{
+ typedef aux::vector_tag<2> tag;
+ typedef vector2 type;
+ typedef T0 item0;
+ typedef T1 item1;
+
+
+ typedef void_ item2;
+ typedef T1 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,2 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<1> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector2<
+ T
+ ,
+ typename Vector::item0
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector1<
+ typename Vector::item1
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<1> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector2<
+ typename Vector::item0
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector1<
+ typename Vector::item0
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<2>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item2 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<2> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ : long_<2>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<2> >
+ : size_impl< aux::vector_tag<2> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector3
+{
+ typedef aux::vector_tag<3> tag;
+ typedef vector3 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+
+
+ typedef void_ item3;
+ typedef T2 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,3 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<2> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector3<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector2<
+ typename Vector::item1, typename Vector::item2
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<2> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector3<
+ typename Vector::item0, typename Vector::item1
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector2<
+ typename Vector::item0, typename Vector::item1
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<3>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item3 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<3> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ : long_<3>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<3> >
+ : size_impl< aux::vector_tag<3> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector4
+{
+ typedef aux::vector_tag<4> tag;
+ typedef vector4 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+
+
+ typedef void_ item4;
+ typedef T3 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,4 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<3> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector4<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector3<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<3> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector4<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector3<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<4>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item4 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<4> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ : long_<4>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<4> >
+ : size_impl< aux::vector_tag<4> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector5
+{
+ typedef aux::vector_tag<5> tag;
+ typedef vector5 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+
+
+ typedef void_ item5;
+ typedef T4 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,5 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<4> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector5<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector4<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<4> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector5<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector4<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<5>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item5 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<5> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ : long_<5>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<5> >
+ : size_impl< aux::vector_tag<5> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector6
+{
+ typedef aux::vector_tag<6> tag;
+ typedef vector6 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+
+
+ typedef void_ item6;
+ typedef T5 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,6 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<5> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector6<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector5<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<5> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector6<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector5<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<6>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item6 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<6> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ : long_<6>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<6> >
+ : size_impl< aux::vector_tag<6> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector7
+{
+ typedef aux::vector_tag<7> tag;
+ typedef vector7 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+
+
+ typedef void_ item7;
+ typedef T6 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,7 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<6> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector7<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector6<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<6> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector7<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector6<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<7>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item7 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<7> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ : long_<7>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<7> >
+ : size_impl< aux::vector_tag<7> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector8
+{
+ typedef aux::vector_tag<8> tag;
+ typedef vector8 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+
+
+ typedef void_ item8;
+ typedef T7 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,8 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<7> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector8<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector7<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<7> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector8<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector7<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<8>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item8 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<8> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ : long_<8>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<8> >
+ : size_impl< aux::vector_tag<8> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector9
+{
+ typedef aux::vector_tag<9> tag;
+ typedef vector9 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+
+
+ typedef void_ item9;
+ typedef T8 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,9 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<8> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector9<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector8<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<8> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector9<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector8<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<9>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item9 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<9> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ : long_<9>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<9> >
+ : size_impl< aux::vector_tag<9> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector10
+{
+ typedef aux::vector_tag<10> tag;
+ typedef vector10 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+
+
+ typedef void_ item10;
+ typedef T9 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,10 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<9> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector10<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector9<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<9> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector10<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector9<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<10>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item10 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<10> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ : long_<10>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<10> >
+ : size_impl< aux::vector_tag<10> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp
new file mode 100644
index 0000000..8b36f6a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp
@@ -0,0 +1,149 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector10_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0
+ >
+struct vector1_c
+ : vector1< integral_c< T,C0 > >
+{
+ typedef vector1_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1
+ >
+struct vector2_c
+ : vector2< integral_c< T,C0 >, integral_c< T,C1 > >
+{
+ typedef vector2_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2
+ >
+struct vector3_c
+ : vector3< integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > >
+{
+ typedef vector3_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3
+ >
+struct vector4_c
+ : vector4<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >, integral_c<T
+ , C3>
+ >
+{
+ typedef vector4_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4
+ >
+struct vector5_c
+ : vector5<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >
+ >
+{
+ typedef vector5_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5
+ >
+struct vector6_c
+ : vector6<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >
+ >
+{
+ typedef vector6_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6
+ >
+struct vector7_c
+ : vector7<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c<T
+ , C6>
+ >
+{
+ typedef vector7_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7
+ >
+struct vector8_c
+ : vector8<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >
+ >
+{
+ typedef vector8_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8
+ >
+struct vector9_c
+ : vector9<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >
+ >
+{
+ typedef vector9_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9
+ >
+struct vector10_c
+ : vector10<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ >
+{
+ typedef vector10_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp
new file mode 100644
index 0000000..eb92a78
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp
@@ -0,0 +1,1804 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector20.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector11
+{
+ typedef aux::vector_tag<11> tag;
+ typedef vector11 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+
+
+ typedef void_ item11;
+ typedef T10 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,11 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<10> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector11<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector10<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<10> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector11<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector10<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<11>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item11 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<11> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ : long_<11>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<11> >
+ : size_impl< aux::vector_tag<11> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector12
+{
+ typedef aux::vector_tag<12> tag;
+ typedef vector12 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+
+
+ typedef void_ item12;
+ typedef T11 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,12 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<11> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector12<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector11<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<11> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector12<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector11<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<12>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item12 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<12> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ : long_<12>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<12> >
+ : size_impl< aux::vector_tag<12> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector13
+{
+ typedef aux::vector_tag<13> tag;
+ typedef vector13 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+
+
+ typedef void_ item13;
+ typedef T12 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,13 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<12> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector13<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector12<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<12> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector13<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector12<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<13>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item13 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<13> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ : long_<13>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<13> >
+ : size_impl< aux::vector_tag<13> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector14
+{
+ typedef aux::vector_tag<14> tag;
+ typedef vector14 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+
+
+ typedef void_ item14;
+ typedef T13 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,14 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<13> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector14<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector13<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<13> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector14<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector13<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<14>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item14 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<14> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ : long_<14>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<14> >
+ : size_impl< aux::vector_tag<14> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector15
+{
+ typedef aux::vector_tag<15> tag;
+ typedef vector15 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+
+
+ typedef void_ item15;
+ typedef T14 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,15 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<14> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector15<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector14<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<14> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector15<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector14<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<15>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item15 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<15> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ : long_<15>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<15> >
+ : size_impl< aux::vector_tag<15> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector16
+{
+ typedef aux::vector_tag<16> tag;
+ typedef vector16 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+
+
+ typedef void_ item16;
+ typedef T15 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,16 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<15> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector16<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector15<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<15> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector16<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector15<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<16>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item16 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<16> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ : long_<16>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<16> >
+ : size_impl< aux::vector_tag<16> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector17
+{
+ typedef aux::vector_tag<17> tag;
+ typedef vector17 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+
+
+ typedef void_ item17;
+ typedef T16 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,17 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<16> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector17<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector16<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<16> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector17<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector16<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<17>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item17 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<17> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ : long_<17>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<17> >
+ : size_impl< aux::vector_tag<17> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector18
+{
+ typedef aux::vector_tag<18> tag;
+ typedef vector18 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+
+
+ typedef void_ item18;
+ typedef T17 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,18 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<17> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector18<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector17<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<17> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector18<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector17<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<18>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item18 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<18> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ : long_<18>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<18> >
+ : size_impl< aux::vector_tag<18> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector19
+{
+ typedef aux::vector_tag<19> tag;
+ typedef vector19 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+
+
+ typedef void_ item19;
+ typedef T18 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,19 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<18> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector19<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector18<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<18> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector19<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector18<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<19>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item19 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<19> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ : long_<19>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<19> >
+ : size_impl< aux::vector_tag<19> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector20
+{
+ typedef aux::vector_tag<20> tag;
+ typedef vector20 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+
+
+ typedef void_ item20;
+ typedef T19 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,20 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<19> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector20<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector19<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<19> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector20<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector19<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<20>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item20 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<20> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ : long_<20>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<20> >
+ : size_impl< aux::vector_tag<20> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp
new file mode 100644
index 0000000..56ca53f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp
@@ -0,0 +1,195 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector20_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ >
+struct vector11_c
+ : vector11<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >, integral_c<T
+ , C10>
+ >
+{
+ typedef vector11_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11
+ >
+struct vector12_c
+ : vector12<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >
+ >
+{
+ typedef vector12_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12
+ >
+struct vector13_c
+ : vector13<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ >
+{
+ typedef vector13_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13
+ >
+struct vector14_c
+ : vector14<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >, integral_c<T
+ , C13>
+ >
+{
+ typedef vector14_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14
+ >
+struct vector15_c
+ : vector15<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >
+ >
+{
+ typedef vector15_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15
+ >
+struct vector16_c
+ : vector16<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ >
+{
+ typedef vector16_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16
+ >
+struct vector17_c
+ : vector17<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >, integral_c<T
+ , C16>
+ >
+{
+ typedef vector17_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17
+ >
+struct vector18_c
+ : vector18<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >
+ >
+{
+ typedef vector18_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18
+ >
+struct vector19_c
+ : vector19<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ >
+{
+ typedef vector19_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19
+ >
+struct vector20_c
+ : vector20<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >, integral_c<T
+ , C19>
+ >
+{
+ typedef vector20_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp
new file mode 100644
index 0000000..a685019
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp
@@ -0,0 +1,2124 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector30.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20
+ >
+struct vector21
+{
+ typedef aux::vector_tag<21> tag;
+ typedef vector21 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+
+
+ typedef void_ item21;
+ typedef T20 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,21 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<20> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector21<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector20<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<20> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector21<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector20<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<21>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item21 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<21> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ : long_<21>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<21> >
+ : size_impl< aux::vector_tag<21> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21
+ >
+struct vector22
+{
+ typedef aux::vector_tag<22> tag;
+ typedef vector22 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+
+
+ typedef void_ item22;
+ typedef T21 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,22 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<21> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector22<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector21<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<21> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector22<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector21<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<22>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item22 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<22> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ : long_<22>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<22> >
+ : size_impl< aux::vector_tag<22> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22
+ >
+struct vector23
+{
+ typedef aux::vector_tag<23> tag;
+ typedef vector23 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+
+
+ typedef void_ item23;
+ typedef T22 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,23 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<22> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector23<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector22<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<22> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector23<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector22<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<23>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item23 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<23> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ : long_<23>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<23> >
+ : size_impl< aux::vector_tag<23> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23
+ >
+struct vector24
+{
+ typedef aux::vector_tag<24> tag;
+ typedef vector24 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+
+
+ typedef void_ item24;
+ typedef T23 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,24 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<23> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector24<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector23<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<23> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector24<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector23<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<24>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item24 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<24> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ : long_<24>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<24> >
+ : size_impl< aux::vector_tag<24> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ >
+struct vector25
+{
+ typedef aux::vector_tag<25> tag;
+ typedef vector25 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+
+
+ typedef void_ item25;
+ typedef T24 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,25 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<24> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector25<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector24<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<24> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector25<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector24<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<25>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item25 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<25> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ : long_<25>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<25> >
+ : size_impl< aux::vector_tag<25> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25
+ >
+struct vector26
+{
+ typedef aux::vector_tag<26> tag;
+ typedef vector26 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+
+
+ typedef void_ item26;
+ typedef T25 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,26 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<25> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector26<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector25<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<25> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector26<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector25<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<26>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item26 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<26> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ : long_<26>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<26> >
+ : size_impl< aux::vector_tag<26> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26
+ >
+struct vector27
+{
+ typedef aux::vector_tag<27> tag;
+ typedef vector27 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+
+
+ typedef void_ item27;
+ typedef T26 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,27 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<26> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector27<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector26<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<26> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector27<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector26<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<27>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item27 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<27> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ : long_<27>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<27> >
+ : size_impl< aux::vector_tag<27> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27
+ >
+struct vector28
+{
+ typedef aux::vector_tag<28> tag;
+ typedef vector28 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+
+
+ typedef void_ item28;
+ typedef T27 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,28 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<27> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector28<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector27<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<27> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector28<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector27<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<28>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item28 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<28> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ : long_<28>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<28> >
+ : size_impl< aux::vector_tag<28> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28
+ >
+struct vector29
+{
+ typedef aux::vector_tag<29> tag;
+ typedef vector29 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+
+
+ typedef void_ item29;
+ typedef T28 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,29 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<28> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector29<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector28<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<28> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector29<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector28<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<29>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item29 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<29> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ : long_<29>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<29> >
+ : size_impl< aux::vector_tag<29> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ >
+struct vector30
+{
+ typedef aux::vector_tag<30> tag;
+ typedef vector30 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+
+
+ typedef void_ item30;
+ typedef T29 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,30 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<29> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector30<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector29<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<29> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector30<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector29<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<30>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item30 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<30> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ : long_<30>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<30> >
+ : size_impl< aux::vector_tag<30> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp
new file mode 100644
index 0000000..6251dbc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp
@@ -0,0 +1,238 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector30_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ >
+struct vector21_c
+ : vector21<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >
+ >
+{
+ typedef vector21_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21
+ >
+struct vector22_c
+ : vector22<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ >
+{
+ typedef vector22_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22
+ >
+struct vector23_c
+ : vector23<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >, integral_c<T
+ , C22>
+ >
+{
+ typedef vector23_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23
+ >
+struct vector24_c
+ : vector24<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >
+ >
+{
+ typedef vector24_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24
+ >
+struct vector25_c
+ : vector25<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ >
+{
+ typedef vector25_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25
+ >
+struct vector26_c
+ : vector26<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >, integral_c<T
+ , C25>
+ >
+{
+ typedef vector26_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26
+ >
+struct vector27_c
+ : vector27<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >
+ >
+{
+ typedef vector27_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27
+ >
+struct vector28_c
+ : vector28<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ >
+{
+ typedef vector28_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28
+ >
+struct vector29_c
+ : vector29<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >, integral_c<T
+ , C28>
+ >
+{
+ typedef vector29_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29
+ >
+struct vector30_c
+ : vector30<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >
+ >
+{
+ typedef vector30_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp
new file mode 100644
index 0000000..1ed648a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp
@@ -0,0 +1,2444 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector40.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30
+ >
+struct vector31
+{
+ typedef aux::vector_tag<31> tag;
+ typedef vector31 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+
+
+ typedef void_ item31;
+ typedef T30 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,31 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<30> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector31<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector30<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<30> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector31<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector30<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<31>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item31 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<31> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ : long_<31>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<31> >
+ : size_impl< aux::vector_tag<31> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31
+ >
+struct vector32
+{
+ typedef aux::vector_tag<32> tag;
+ typedef vector32 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+
+
+ typedef void_ item32;
+ typedef T31 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,32 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<31> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector32<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector31<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<31> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector32<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector31<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<32>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item32 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<32> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ : long_<32>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<32> >
+ : size_impl< aux::vector_tag<32> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32
+ >
+struct vector33
+{
+ typedef aux::vector_tag<33> tag;
+ typedef vector33 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+
+
+ typedef void_ item33;
+ typedef T32 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,33 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<32> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector33<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector32<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<32> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector33<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector32<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<33>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item33 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<33> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ : long_<33>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<33> >
+ : size_impl< aux::vector_tag<33> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33
+ >
+struct vector34
+{
+ typedef aux::vector_tag<34> tag;
+ typedef vector34 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+
+
+ typedef void_ item34;
+ typedef T33 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,34 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<33> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector34<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector33<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<33> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector34<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector33<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<34>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item34 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<34> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ : long_<34>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<34> >
+ : size_impl< aux::vector_tag<34> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ >
+struct vector35
+{
+ typedef aux::vector_tag<35> tag;
+ typedef vector35 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+
+
+ typedef void_ item35;
+ typedef T34 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,35 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<34> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector35<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector34<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<34> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector35<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector34<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<35>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item35 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<35> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ : long_<35>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<35> >
+ : size_impl< aux::vector_tag<35> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35
+ >
+struct vector36
+{
+ typedef aux::vector_tag<36> tag;
+ typedef vector36 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+
+
+ typedef void_ item36;
+ typedef T35 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,36 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<35> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector36<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector35<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<35> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector36<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector35<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<36>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item36 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<36> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ : long_<36>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<36> >
+ : size_impl< aux::vector_tag<36> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36
+ >
+struct vector37
+{
+ typedef aux::vector_tag<37> tag;
+ typedef vector37 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+
+
+ typedef void_ item37;
+ typedef T36 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,37 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<36> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector37<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector36<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<36> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector37<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector36<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<37>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item37 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<37> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ : long_<37>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<37> >
+ : size_impl< aux::vector_tag<37> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37
+ >
+struct vector38
+{
+ typedef aux::vector_tag<38> tag;
+ typedef vector38 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+
+
+ typedef void_ item38;
+ typedef T37 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,38 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<37> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector38<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector37<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<37> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector38<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector37<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<38>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item38 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<38> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ : long_<38>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<38> >
+ : size_impl< aux::vector_tag<38> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38
+ >
+struct vector39
+{
+ typedef aux::vector_tag<39> tag;
+ typedef vector39 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+
+
+ typedef void_ item39;
+ typedef T38 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,39 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<38> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector39<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector38<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<38> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector39<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector38<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<39>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item39 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<39> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ : long_<39>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<39> >
+ : size_impl< aux::vector_tag<39> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ >
+struct vector40
+{
+ typedef aux::vector_tag<40> tag;
+ typedef vector40 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+
+
+ typedef void_ item40;
+ typedef T39 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,40 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<39> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector40<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector39<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<39> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector40<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector39<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<40>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item40 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<40> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ : long_<40>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<40> >
+ : size_impl< aux::vector_tag<40> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp
new file mode 100644
index 0000000..ba0ffa8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp
@@ -0,0 +1,281 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ >
+struct vector31_c
+ : vector31<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ >
+{
+ typedef vector31_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31
+ >
+struct vector32_c
+ : vector32<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >, integral_c<T
+ , C31>
+ >
+{
+ typedef vector32_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32
+ >
+struct vector33_c
+ : vector33<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >
+ >
+{
+ typedef vector33_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33
+ >
+struct vector34_c
+ : vector34<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ >
+{
+ typedef vector34_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34
+ >
+struct vector35_c
+ : vector35<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >, integral_c<T
+ , C34>
+ >
+{
+ typedef vector35_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35
+ >
+struct vector36_c
+ : vector36<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >
+ >
+{
+ typedef vector36_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36
+ >
+struct vector37_c
+ : vector37<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ >
+{
+ typedef vector37_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37
+ >
+struct vector38_c
+ : vector38<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >, integral_c<T
+ , C37>
+ >
+{
+ typedef vector38_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38
+ >
+struct vector39_c
+ : vector39<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >
+ >
+{
+ typedef vector39_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39
+ >
+struct vector40_c
+ : vector40<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ >
+{
+ typedef vector40_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp
new file mode 100644
index 0000000..3da323a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp
@@ -0,0 +1,2764 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector50.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40
+ >
+struct vector41
+{
+ typedef aux::vector_tag<41> tag;
+ typedef vector41 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+
+
+ typedef void_ item41;
+ typedef T40 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,41 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<40> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector41<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector40<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<40> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector41<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector40<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<41>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item41 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<41> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ : long_<41>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<41> >
+ : size_impl< aux::vector_tag<41> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41
+ >
+struct vector42
+{
+ typedef aux::vector_tag<42> tag;
+ typedef vector42 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+
+
+ typedef void_ item42;
+ typedef T41 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,42 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<41> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector42<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector41<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<41> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector42<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector41<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<42>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item42 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<42> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ : long_<42>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<42> >
+ : size_impl< aux::vector_tag<42> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42
+ >
+struct vector43
+{
+ typedef aux::vector_tag<43> tag;
+ typedef vector43 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+
+
+ typedef void_ item43;
+ typedef T42 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,43 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<42> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector43<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector42<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<42> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector43<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector42<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<43>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item43 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<43> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ : long_<43>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<43> >
+ : size_impl< aux::vector_tag<43> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43
+ >
+struct vector44
+{
+ typedef aux::vector_tag<44> tag;
+ typedef vector44 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+
+
+ typedef void_ item44;
+ typedef T43 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,44 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<43> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector44<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector43<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<43> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector44<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector43<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<44>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item44 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<44> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ : long_<44>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<44> >
+ : size_impl< aux::vector_tag<44> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ >
+struct vector45
+{
+ typedef aux::vector_tag<45> tag;
+ typedef vector45 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+
+
+ typedef void_ item45;
+ typedef T44 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,45 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<44> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector45<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector44<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<44> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector45<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector44<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<45>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item45 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<45> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ : long_<45>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<45> >
+ : size_impl< aux::vector_tag<45> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45
+ >
+struct vector46
+{
+ typedef aux::vector_tag<46> tag;
+ typedef vector46 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+
+
+ typedef void_ item46;
+ typedef T45 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,46 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<45> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector46<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector45<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<45> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector46<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector45<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<46>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item46 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<46> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ : long_<46>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<46> >
+ : size_impl< aux::vector_tag<46> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46
+ >
+struct vector47
+{
+ typedef aux::vector_tag<47> tag;
+ typedef vector47 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+
+
+ typedef void_ item47;
+ typedef T46 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,47 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<46> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector47<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector46<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<46> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector47<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector46<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<47>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item47 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<47> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ : long_<47>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<47> >
+ : size_impl< aux::vector_tag<47> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47
+ >
+struct vector48
+{
+ typedef aux::vector_tag<48> tag;
+ typedef vector48 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+ typedef T47 item47;
+
+
+ typedef void_ item48;
+ typedef T47 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,48 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<47> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector48<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector47<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ , typename Vector::item47
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<47> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector48<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector47<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<48>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item48 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<48> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ : long_<48>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<48> >
+ : size_impl< aux::vector_tag<48> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47, typename T48
+ >
+struct vector49
+{
+ typedef aux::vector_tag<49> tag;
+ typedef vector49 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+ typedef T47 item47;
+ typedef T48 item48;
+
+
+ typedef void_ item49;
+ typedef T48 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,49 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<48> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector49<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector48<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ , typename Vector::item47, typename Vector::item48
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<48> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector49<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector48<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<49>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item49 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<49> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ : long_<49>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<49> >
+ : size_impl< aux::vector_tag<49> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47, typename T48, typename T49
+ >
+struct vector50
+{
+ typedef aux::vector_tag<50> tag;
+ typedef vector50 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+ typedef T47 item47;
+ typedef T48 item48;
+ typedef T49 item49;
+
+
+ typedef void_ item50;
+ typedef T49 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,50 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<49> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector50<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ , typename Vector::item48
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector49<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ , typename Vector::item47, typename Vector::item48
+ , typename Vector::item49
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<49> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector50<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ , typename Vector::item48
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector49<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ , typename Vector::item48
+ > type;
+ };
+};
+
+namespace aux {
+template<> struct v_at_impl<50>
+{
+ template< typename V_ > struct result_
+ {
+ typedef typename V_::item50 type;
+ };
+};
+
+}
+
+template<>
+struct at_impl< aux::vector_tag<50> >
+{
+ template< typename V_, typename N > struct apply
+ {
+ typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+ ::template result_<V_>::type type;
+ };
+};
+
+template<>
+struct front_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::item0 type;
+ };
+};
+
+template<>
+struct back_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef typename Vector::back type;
+ };
+};
+
+template<>
+struct empty_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ : false_
+ {
+ };
+};
+
+template<>
+struct size_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ : long_<50>
+ {
+ };
+};
+
+template<>
+struct O1_size_impl< aux::vector_tag<50> >
+ : size_impl< aux::vector_tag<50> >
+{
+};
+
+template<>
+struct clear_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<> type;
+ };
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp
new file mode 100644
index 0000000..e07f2b3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp
@@ -0,0 +1,325 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector50_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ >
+struct vector41_c
+ : vector41<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >, integral_c<T
+ , C40>
+ >
+{
+ typedef vector41_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41
+ >
+struct vector42_c
+ : vector42<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >
+ >
+{
+ typedef vector42_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42
+ >
+struct vector43_c
+ : vector43<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ >
+{
+ typedef vector43_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43
+ >
+struct vector44_c
+ : vector44<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >, integral_c<T
+ , C43>
+ >
+{
+ typedef vector44_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44
+ >
+struct vector45_c
+ : vector45<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >
+ >
+{
+ typedef vector45_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45
+ >
+struct vector46_c
+ : vector46<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ >
+{
+ typedef vector46_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46
+ >
+struct vector47_c
+ : vector47<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >, integral_c<T
+ , C46>
+ >
+{
+ typedef vector47_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47
+ >
+struct vector48_c
+ : vector48<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ , integral_c< T,C46 >, integral_c< T,C47 >
+ >
+{
+ typedef vector48_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48
+ >
+struct vector49_c
+ : vector49<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 >
+ >
+{
+ typedef vector49_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49
+ >
+struct vector50_c
+ : vector50<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 >, integral_c<T
+ , C49>
+ >
+{
+ typedef vector50_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp
new file mode 100644
index 0000000..88bbd3b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp
@@ -0,0 +1,829 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector10.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template< typename V >
+struct v_at< V,0 >
+{
+ typedef typename V::item0 type;
+};
+
+template<
+ typename T0
+ >
+struct vector1
+{
+ typedef aux::vector_tag<1> tag;
+ typedef vector1 type;
+ typedef T0 item0;
+ typedef void_ item1;
+ typedef T0 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,1 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<0> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector1<
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<
+
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<0> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector1<
+
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<1> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector0<
+
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,1 >
+{
+ typedef typename V::item1 type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector2
+{
+ typedef aux::vector_tag<2> tag;
+ typedef vector2 type;
+ typedef T0 item0;
+ typedef T1 item1;
+
+
+ typedef void_ item2;
+ typedef T1 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,2 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<1> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector2<
+ T
+ ,
+ typename Vector::item0
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector1<
+ typename Vector::item1
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<1> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector2<
+ typename Vector::item0
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<2> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector1<
+ typename Vector::item0
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,2 >
+{
+ typedef typename V::item2 type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector3
+{
+ typedef aux::vector_tag<3> tag;
+ typedef vector3 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+
+
+ typedef void_ item3;
+ typedef T2 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,3 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<2> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector3<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector2<
+ typename Vector::item1, typename Vector::item2
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<2> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector3<
+ typename Vector::item0, typename Vector::item1
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<3> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector2<
+ typename Vector::item0, typename Vector::item1
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,3 >
+{
+ typedef typename V::item3 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector4
+{
+ typedef aux::vector_tag<4> tag;
+ typedef vector4 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+
+
+ typedef void_ item4;
+ typedef T3 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,4 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<3> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector4<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector3<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<3> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector4<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<4> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector3<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,4 >
+{
+ typedef typename V::item4 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector5
+{
+ typedef aux::vector_tag<5> tag;
+ typedef vector5 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+
+
+ typedef void_ item5;
+ typedef T4 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,5 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<4> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector5<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector4<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<4> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector5<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<5> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector4<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,5 >
+{
+ typedef typename V::item5 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector6
+{
+ typedef aux::vector_tag<6> tag;
+ typedef vector6 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+
+
+ typedef void_ item6;
+ typedef T5 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,6 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<5> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector6<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector5<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<5> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector6<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<6> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector5<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,6 >
+{
+ typedef typename V::item6 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector7
+{
+ typedef aux::vector_tag<7> tag;
+ typedef vector7 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+
+
+ typedef void_ item7;
+ typedef T6 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,7 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<6> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector7<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector6<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<6> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector7<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<7> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector6<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,7 >
+{
+ typedef typename V::item7 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector8
+{
+ typedef aux::vector_tag<8> tag;
+ typedef vector8 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+
+
+ typedef void_ item8;
+ typedef T7 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,8 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<7> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector8<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector7<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<7> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector8<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<8> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector7<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,8 >
+{
+ typedef typename V::item8 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector9
+{
+ typedef aux::vector_tag<9> tag;
+ typedef vector9 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+
+
+ typedef void_ item9;
+ typedef T8 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,9 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<8> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector9<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector8<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<8> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector9<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<9> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector8<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,9 >
+{
+ typedef typename V::item9 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector10
+{
+ typedef aux::vector_tag<10> tag;
+ typedef vector10 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+
+
+ typedef void_ item10;
+ typedef T9 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,10 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<9> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector10<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector9<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<9> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector10<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<10> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector9<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,10 >
+{
+ typedef typename V::item10 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp
new file mode 100644
index 0000000..8b36f6a
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp
@@ -0,0 +1,149 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector10_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0
+ >
+struct vector1_c
+ : vector1< integral_c< T,C0 > >
+{
+ typedef vector1_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1
+ >
+struct vector2_c
+ : vector2< integral_c< T,C0 >, integral_c< T,C1 > >
+{
+ typedef vector2_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2
+ >
+struct vector3_c
+ : vector3< integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 > >
+{
+ typedef vector3_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3
+ >
+struct vector4_c
+ : vector4<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >, integral_c<T
+ , C3>
+ >
+{
+ typedef vector4_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4
+ >
+struct vector5_c
+ : vector5<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >
+ >
+{
+ typedef vector5_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5
+ >
+struct vector6_c
+ : vector6<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >
+ >
+{
+ typedef vector6_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6
+ >
+struct vector7_c
+ : vector7<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c<T
+ , C6>
+ >
+{
+ typedef vector7_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7
+ >
+struct vector8_c
+ : vector8<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >
+ >
+{
+ typedef vector8_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8
+ >
+struct vector9_c
+ : vector9<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >
+ >
+{
+ typedef vector9_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9
+ >
+struct vector10_c
+ : vector10<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ >
+{
+ typedef vector10_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp
new file mode 100644
index 0000000..8c6c8bb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp
@@ -0,0 +1,1144 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector20.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector11
+{
+ typedef aux::vector_tag<11> tag;
+ typedef vector11 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+
+
+ typedef void_ item11;
+ typedef T10 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,11 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<10> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector11<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector10<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<10> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector11<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<11> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector10<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,11 >
+{
+ typedef typename V::item11 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector12
+{
+ typedef aux::vector_tag<12> tag;
+ typedef vector12 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+
+
+ typedef void_ item12;
+ typedef T11 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,12 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<11> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector12<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector11<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<11> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector12<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<12> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector11<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,12 >
+{
+ typedef typename V::item12 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector13
+{
+ typedef aux::vector_tag<13> tag;
+ typedef vector13 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+
+
+ typedef void_ item13;
+ typedef T12 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,13 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<12> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector13<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector12<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<12> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector13<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<13> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector12<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,13 >
+{
+ typedef typename V::item13 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector14
+{
+ typedef aux::vector_tag<14> tag;
+ typedef vector14 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+
+
+ typedef void_ item14;
+ typedef T13 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,14 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<13> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector14<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector13<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<13> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector14<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<14> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector13<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,14 >
+{
+ typedef typename V::item14 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector15
+{
+ typedef aux::vector_tag<15> tag;
+ typedef vector15 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+
+
+ typedef void_ item15;
+ typedef T14 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,15 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<14> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector15<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector14<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<14> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector15<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<15> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector14<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,15 >
+{
+ typedef typename V::item15 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector16
+{
+ typedef aux::vector_tag<16> tag;
+ typedef vector16 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+
+
+ typedef void_ item16;
+ typedef T15 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,16 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<15> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector16<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector15<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<15> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector16<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<16> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector15<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,16 >
+{
+ typedef typename V::item16 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector17
+{
+ typedef aux::vector_tag<17> tag;
+ typedef vector17 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+
+
+ typedef void_ item17;
+ typedef T16 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,17 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<16> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector17<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector16<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<16> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector17<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<17> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector16<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,17 >
+{
+ typedef typename V::item17 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector18
+{
+ typedef aux::vector_tag<18> tag;
+ typedef vector18 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+
+
+ typedef void_ item18;
+ typedef T17 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,18 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<17> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector18<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector17<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<17> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector18<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<18> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector17<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,18 >
+{
+ typedef typename V::item18 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector19
+{
+ typedef aux::vector_tag<19> tag;
+ typedef vector19 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+
+
+ typedef void_ item19;
+ typedef T18 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,19 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<18> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector19<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector18<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<18> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector19<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<19> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector18<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,19 >
+{
+ typedef typename V::item19 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector20
+{
+ typedef aux::vector_tag<20> tag;
+ typedef vector20 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+
+
+ typedef void_ item20;
+ typedef T19 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,20 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<19> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector20<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector19<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<19> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector20<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<20> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector19<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,20 >
+{
+ typedef typename V::item20 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp
new file mode 100644
index 0000000..56ca53f
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp
@@ -0,0 +1,195 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector20_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ >
+struct vector11_c
+ : vector11<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >, integral_c<T
+ , C10>
+ >
+{
+ typedef vector11_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11
+ >
+struct vector12_c
+ : vector12<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >
+ >
+{
+ typedef vector12_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12
+ >
+struct vector13_c
+ : vector13<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ >
+{
+ typedef vector13_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13
+ >
+struct vector14_c
+ : vector14<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >, integral_c<T
+ , C13>
+ >
+{
+ typedef vector14_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14
+ >
+struct vector15_c
+ : vector15<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >
+ >
+{
+ typedef vector15_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15
+ >
+struct vector16_c
+ : vector16<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ >
+{
+ typedef vector16_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16
+ >
+struct vector17_c
+ : vector17<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >, integral_c<T
+ , C16>
+ >
+{
+ typedef vector17_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17
+ >
+struct vector18_c
+ : vector18<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >
+ >
+{
+ typedef vector18_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18
+ >
+struct vector19_c
+ : vector19<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ >
+{
+ typedef vector19_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19
+ >
+struct vector20_c
+ : vector20<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >, integral_c<T
+ , C19>
+ >
+{
+ typedef vector20_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp
new file mode 100644
index 0000000..b7da8e7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp
@@ -0,0 +1,1464 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector30.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20
+ >
+struct vector21
+{
+ typedef aux::vector_tag<21> tag;
+ typedef vector21 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+
+
+ typedef void_ item21;
+ typedef T20 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,21 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<20> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector21<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector20<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<20> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector21<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<21> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector20<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,21 >
+{
+ typedef typename V::item21 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21
+ >
+struct vector22
+{
+ typedef aux::vector_tag<22> tag;
+ typedef vector22 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+
+
+ typedef void_ item22;
+ typedef T21 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,22 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<21> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector22<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector21<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<21> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector22<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<22> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector21<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,22 >
+{
+ typedef typename V::item22 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22
+ >
+struct vector23
+{
+ typedef aux::vector_tag<23> tag;
+ typedef vector23 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+
+
+ typedef void_ item23;
+ typedef T22 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,23 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<22> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector23<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector22<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<22> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector23<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<23> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector22<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,23 >
+{
+ typedef typename V::item23 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23
+ >
+struct vector24
+{
+ typedef aux::vector_tag<24> tag;
+ typedef vector24 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+
+
+ typedef void_ item24;
+ typedef T23 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,24 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<23> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector24<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector23<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<23> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector24<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<24> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector23<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,24 >
+{
+ typedef typename V::item24 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ >
+struct vector25
+{
+ typedef aux::vector_tag<25> tag;
+ typedef vector25 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+
+
+ typedef void_ item25;
+ typedef T24 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,25 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<24> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector25<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector24<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<24> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector25<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<25> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector24<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,25 >
+{
+ typedef typename V::item25 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25
+ >
+struct vector26
+{
+ typedef aux::vector_tag<26> tag;
+ typedef vector26 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+
+
+ typedef void_ item26;
+ typedef T25 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,26 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<25> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector26<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector25<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<25> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector26<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<26> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector25<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,26 >
+{
+ typedef typename V::item26 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26
+ >
+struct vector27
+{
+ typedef aux::vector_tag<27> tag;
+ typedef vector27 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+
+
+ typedef void_ item27;
+ typedef T26 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,27 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<26> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector27<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector26<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<26> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector27<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<27> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector26<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,27 >
+{
+ typedef typename V::item27 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27
+ >
+struct vector28
+{
+ typedef aux::vector_tag<28> tag;
+ typedef vector28 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+
+
+ typedef void_ item28;
+ typedef T27 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,28 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<27> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector28<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector27<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<27> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector28<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<28> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector27<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,28 >
+{
+ typedef typename V::item28 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28
+ >
+struct vector29
+{
+ typedef aux::vector_tag<29> tag;
+ typedef vector29 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+
+
+ typedef void_ item29;
+ typedef T28 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,29 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<28> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector29<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector28<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<28> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector29<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<29> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector28<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,29 >
+{
+ typedef typename V::item29 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ >
+struct vector30
+{
+ typedef aux::vector_tag<30> tag;
+ typedef vector30 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+
+
+ typedef void_ item30;
+ typedef T29 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,30 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<29> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector30<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector29<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<29> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector30<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<30> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector29<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,30 >
+{
+ typedef typename V::item30 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp
new file mode 100644
index 0000000..6251dbc
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp
@@ -0,0 +1,238 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector30_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ >
+struct vector21_c
+ : vector21<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >
+ >
+{
+ typedef vector21_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21
+ >
+struct vector22_c
+ : vector22<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ >
+{
+ typedef vector22_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22
+ >
+struct vector23_c
+ : vector23<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >, integral_c<T
+ , C22>
+ >
+{
+ typedef vector23_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23
+ >
+struct vector24_c
+ : vector24<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >
+ >
+{
+ typedef vector24_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24
+ >
+struct vector25_c
+ : vector25<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ >
+{
+ typedef vector25_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25
+ >
+struct vector26_c
+ : vector26<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >, integral_c<T
+ , C25>
+ >
+{
+ typedef vector26_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26
+ >
+struct vector27_c
+ : vector27<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >
+ >
+{
+ typedef vector27_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27
+ >
+struct vector28_c
+ : vector28<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ >
+{
+ typedef vector28_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28
+ >
+struct vector29_c
+ : vector29<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >, integral_c<T
+ , C28>
+ >
+{
+ typedef vector29_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29
+ >
+struct vector30_c
+ : vector30<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >
+ >
+{
+ typedef vector30_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp
new file mode 100644
index 0000000..7487be4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp
@@ -0,0 +1,1784 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector40.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30
+ >
+struct vector31
+{
+ typedef aux::vector_tag<31> tag;
+ typedef vector31 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+
+
+ typedef void_ item31;
+ typedef T30 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,31 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<30> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector31<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector30<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<30> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector31<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<31> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector30<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,31 >
+{
+ typedef typename V::item31 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31
+ >
+struct vector32
+{
+ typedef aux::vector_tag<32> tag;
+ typedef vector32 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+
+
+ typedef void_ item32;
+ typedef T31 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,32 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<31> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector32<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector31<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<31> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector32<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<32> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector31<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,32 >
+{
+ typedef typename V::item32 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32
+ >
+struct vector33
+{
+ typedef aux::vector_tag<33> tag;
+ typedef vector33 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+
+
+ typedef void_ item33;
+ typedef T32 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,33 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<32> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector33<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector32<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<32> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector33<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<33> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector32<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,33 >
+{
+ typedef typename V::item33 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33
+ >
+struct vector34
+{
+ typedef aux::vector_tag<34> tag;
+ typedef vector34 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+
+
+ typedef void_ item34;
+ typedef T33 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,34 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<33> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector34<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector33<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<33> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector34<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<34> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector33<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,34 >
+{
+ typedef typename V::item34 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ >
+struct vector35
+{
+ typedef aux::vector_tag<35> tag;
+ typedef vector35 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+
+
+ typedef void_ item35;
+ typedef T34 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,35 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<34> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector35<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector34<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<34> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector35<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<35> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector34<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,35 >
+{
+ typedef typename V::item35 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35
+ >
+struct vector36
+{
+ typedef aux::vector_tag<36> tag;
+ typedef vector36 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+
+
+ typedef void_ item36;
+ typedef T35 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,36 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<35> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector36<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector35<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<35> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector36<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<36> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector35<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,36 >
+{
+ typedef typename V::item36 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36
+ >
+struct vector37
+{
+ typedef aux::vector_tag<37> tag;
+ typedef vector37 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+
+
+ typedef void_ item37;
+ typedef T36 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,37 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<36> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector37<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector36<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<36> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector37<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<37> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector36<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,37 >
+{
+ typedef typename V::item37 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37
+ >
+struct vector38
+{
+ typedef aux::vector_tag<38> tag;
+ typedef vector38 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+
+
+ typedef void_ item38;
+ typedef T37 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,38 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<37> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector38<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector37<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<37> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector38<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<38> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector37<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,38 >
+{
+ typedef typename V::item38 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38
+ >
+struct vector39
+{
+ typedef aux::vector_tag<39> tag;
+ typedef vector39 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+
+
+ typedef void_ item39;
+ typedef T38 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,39 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<38> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector39<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector38<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<38> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector39<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<39> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector38<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,39 >
+{
+ typedef typename V::item39 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ >
+struct vector40
+{
+ typedef aux::vector_tag<40> tag;
+ typedef vector40 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+
+
+ typedef void_ item40;
+ typedef T39 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,40 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<39> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector40<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector39<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<39> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector40<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<40> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector39<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,40 >
+{
+ typedef typename V::item40 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp
new file mode 100644
index 0000000..ba0ffa8
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp
@@ -0,0 +1,281 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ >
+struct vector31_c
+ : vector31<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ >
+{
+ typedef vector31_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31
+ >
+struct vector32_c
+ : vector32<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >, integral_c<T
+ , C31>
+ >
+{
+ typedef vector32_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32
+ >
+struct vector33_c
+ : vector33<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >
+ >
+{
+ typedef vector33_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33
+ >
+struct vector34_c
+ : vector34<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ >
+{
+ typedef vector34_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34
+ >
+struct vector35_c
+ : vector35<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >, integral_c<T
+ , C34>
+ >
+{
+ typedef vector35_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35
+ >
+struct vector36_c
+ : vector36<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >
+ >
+{
+ typedef vector36_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36
+ >
+struct vector37_c
+ : vector37<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ >
+{
+ typedef vector37_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37
+ >
+struct vector38_c
+ : vector38<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >, integral_c<T
+ , C37>
+ >
+{
+ typedef vector38_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38
+ >
+struct vector39_c
+ : vector39<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >
+ >
+{
+ typedef vector39_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39
+ >
+struct vector40_c
+ : vector40<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ >
+{
+ typedef vector40_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp
new file mode 100644
index 0000000..5a4c6d7
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp
@@ -0,0 +1,2104 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector50.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40
+ >
+struct vector41
+{
+ typedef aux::vector_tag<41> tag;
+ typedef vector41 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+
+
+ typedef void_ item41;
+ typedef T40 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,41 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<40> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector41<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector40<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<40> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector41<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<41> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector40<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,41 >
+{
+ typedef typename V::item41 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41
+ >
+struct vector42
+{
+ typedef aux::vector_tag<42> tag;
+ typedef vector42 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+
+
+ typedef void_ item42;
+ typedef T41 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,42 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<41> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector42<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector41<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<41> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector42<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<42> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector41<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,42 >
+{
+ typedef typename V::item42 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42
+ >
+struct vector43
+{
+ typedef aux::vector_tag<43> tag;
+ typedef vector43 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+
+
+ typedef void_ item43;
+ typedef T42 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,43 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<42> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector43<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector42<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<42> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector43<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<43> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector42<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,43 >
+{
+ typedef typename V::item43 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43
+ >
+struct vector44
+{
+ typedef aux::vector_tag<44> tag;
+ typedef vector44 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+
+
+ typedef void_ item44;
+ typedef T43 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,44 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<43> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector44<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector43<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<43> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector44<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<44> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector43<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,44 >
+{
+ typedef typename V::item44 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ >
+struct vector45
+{
+ typedef aux::vector_tag<45> tag;
+ typedef vector45 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+
+
+ typedef void_ item45;
+ typedef T44 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,45 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<44> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector45<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector44<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<44> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector45<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<45> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector44<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,45 >
+{
+ typedef typename V::item45 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45
+ >
+struct vector46
+{
+ typedef aux::vector_tag<46> tag;
+ typedef vector46 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+
+
+ typedef void_ item46;
+ typedef T45 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,46 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<45> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector46<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector45<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<45> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector46<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<46> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector45<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,46 >
+{
+ typedef typename V::item46 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46
+ >
+struct vector47
+{
+ typedef aux::vector_tag<47> tag;
+ typedef vector47 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+
+
+ typedef void_ item47;
+ typedef T46 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,47 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<46> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector47<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector46<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<46> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector47<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<47> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector46<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,47 >
+{
+ typedef typename V::item47 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47
+ >
+struct vector48
+{
+ typedef aux::vector_tag<48> tag;
+ typedef vector48 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+ typedef T47 item47;
+
+
+ typedef void_ item48;
+ typedef T47 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,48 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<47> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector48<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector47<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ , typename Vector::item47
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<47> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector48<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<48> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector47<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,48 >
+{
+ typedef typename V::item48 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47, typename T48
+ >
+struct vector49
+{
+ typedef aux::vector_tag<49> tag;
+ typedef vector49 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+ typedef T47 item47;
+ typedef T48 item48;
+
+
+ typedef void_ item49;
+ typedef T48 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,49 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<48> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector49<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector48<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ , typename Vector::item47, typename Vector::item48
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<48> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector49<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<49> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector48<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,49 >
+{
+ typedef typename V::item49 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47, typename T48, typename T49
+ >
+struct vector50
+{
+ typedef aux::vector_tag<50> tag;
+ typedef vector50 type;
+ typedef T0 item0;
+ typedef T1 item1;
+ typedef T2 item2;
+ typedef T3 item3;
+ typedef T4 item4;
+ typedef T5 item5;
+ typedef T6 item6;
+ typedef T7 item7;
+ typedef T8 item8;
+ typedef T9 item9;
+ typedef T10 item10;
+ typedef T11 item11;
+ typedef T12 item12;
+ typedef T13 item13;
+ typedef T14 item14;
+ typedef T15 item15;
+ typedef T16 item16;
+ typedef T17 item17;
+ typedef T18 item18;
+ typedef T19 item19;
+ typedef T20 item20;
+ typedef T21 item21;
+ typedef T22 item22;
+ typedef T23 item23;
+ typedef T24 item24;
+ typedef T25 item25;
+ typedef T26 item26;
+ typedef T27 item27;
+ typedef T28 item28;
+ typedef T29 item29;
+ typedef T30 item30;
+ typedef T31 item31;
+ typedef T32 item32;
+ typedef T33 item33;
+ typedef T34 item34;
+ typedef T35 item35;
+ typedef T36 item36;
+ typedef T37 item37;
+ typedef T38 item38;
+ typedef T39 item39;
+ typedef T40 item40;
+ typedef T41 item41;
+ typedef T42 item42;
+ typedef T43 item43;
+ typedef T44 item44;
+ typedef T45 item45;
+ typedef T46 item46;
+ typedef T47 item47;
+ typedef T48 item48;
+ typedef T49 item49;
+
+
+ typedef void_ item50;
+ typedef T49 back;
+ typedef v_iter< type,0 > begin;
+ typedef v_iter< type,50 > end;
+};
+
+template<>
+struct push_front_impl< aux::vector_tag<49> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector50<
+ T
+ ,
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ , typename Vector::item48
+ > type;
+ };
+};
+
+template<>
+struct pop_front_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector49<
+ typename Vector::item1, typename Vector::item2
+ , typename Vector::item3, typename Vector::item4
+ , typename Vector::item5, typename Vector::item6
+ , typename Vector::item7, typename Vector::item8
+ , typename Vector::item9, typename Vector::item10
+ , typename Vector::item11, typename Vector::item12
+ , typename Vector::item13, typename Vector::item14
+ , typename Vector::item15, typename Vector::item16
+ , typename Vector::item17, typename Vector::item18
+ , typename Vector::item19, typename Vector::item20
+ , typename Vector::item21, typename Vector::item22
+ , typename Vector::item23, typename Vector::item24
+ , typename Vector::item25, typename Vector::item26
+ , typename Vector::item27, typename Vector::item28
+ , typename Vector::item29, typename Vector::item30
+ , typename Vector::item31, typename Vector::item32
+ , typename Vector::item33, typename Vector::item34
+ , typename Vector::item35, typename Vector::item36
+ , typename Vector::item37, typename Vector::item38
+ , typename Vector::item39, typename Vector::item40
+ , typename Vector::item41, typename Vector::item42
+ , typename Vector::item43, typename Vector::item44
+ , typename Vector::item45, typename Vector::item46
+ , typename Vector::item47, typename Vector::item48
+ , typename Vector::item49
+ > type;
+ };
+};
+
+template<>
+struct push_back_impl< aux::vector_tag<49> >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef vector50<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ , typename Vector::item48
+ ,
+ T
+ > type;
+ };
+};
+
+template<>
+struct pop_back_impl< aux::vector_tag<50> >
+{
+ template< typename Vector > struct apply
+ {
+ typedef vector49<
+ typename Vector::item0, typename Vector::item1
+ , typename Vector::item2, typename Vector::item3
+ , typename Vector::item4, typename Vector::item5
+ , typename Vector::item6, typename Vector::item7
+ , typename Vector::item8, typename Vector::item9
+ , typename Vector::item10, typename Vector::item11
+ , typename Vector::item12, typename Vector::item13
+ , typename Vector::item14, typename Vector::item15
+ , typename Vector::item16, typename Vector::item17
+ , typename Vector::item18, typename Vector::item19
+ , typename Vector::item20, typename Vector::item21
+ , typename Vector::item22, typename Vector::item23
+ , typename Vector::item24, typename Vector::item25
+ , typename Vector::item26, typename Vector::item27
+ , typename Vector::item28, typename Vector::item29
+ , typename Vector::item30, typename Vector::item31
+ , typename Vector::item32, typename Vector::item33
+ , typename Vector::item34, typename Vector::item35
+ , typename Vector::item36, typename Vector::item37
+ , typename Vector::item38, typename Vector::item39
+ , typename Vector::item40, typename Vector::item41
+ , typename Vector::item42, typename Vector::item43
+ , typename Vector::item44, typename Vector::item45
+ , typename Vector::item46, typename Vector::item47
+ , typename Vector::item48
+ > type;
+ };
+};
+
+template< typename V >
+struct v_at< V,50 >
+{
+ typedef typename V::item50 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp
new file mode 100644
index 0000000..e07f2b3
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp
@@ -0,0 +1,325 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector50_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ >
+struct vector41_c
+ : vector41<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >, integral_c<T
+ , C40>
+ >
+{
+ typedef vector41_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41
+ >
+struct vector42_c
+ : vector42<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >
+ >
+{
+ typedef vector42_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42
+ >
+struct vector43_c
+ : vector43<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ >
+{
+ typedef vector43_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43
+ >
+struct vector44_c
+ : vector44<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >, integral_c<T
+ , C43>
+ >
+{
+ typedef vector44_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44
+ >
+struct vector45_c
+ : vector45<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >
+ >
+{
+ typedef vector45_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45
+ >
+struct vector46_c
+ : vector46<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ >
+{
+ typedef vector46_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46
+ >
+struct vector47_c
+ : vector47<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >, integral_c<T
+ , C46>
+ >
+{
+ typedef vector47_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47
+ >
+struct vector48_c
+ : vector48<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ , integral_c< T,C46 >, integral_c< T,C47 >
+ >
+{
+ typedef vector48_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48
+ >
+struct vector49_c
+ : vector49<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 >
+ >
+{
+ typedef vector49_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49
+ >
+struct vector50_c
+ : vector50<
+ integral_c< T,C0 >, integral_c< T,C1 >, integral_c< T,C2 >
+ , integral_c< T,C3 >, integral_c< T,C4 >, integral_c< T,C5 >, integral_c< T,C6 >
+ , integral_c< T,C7 >, integral_c< T,C8 >, integral_c< T,C9 >
+ , integral_c< T,C10 >, integral_c< T,C11 >, integral_c< T,C12 >
+ , integral_c< T,C13 >, integral_c< T,C14 >, integral_c< T,C15 >
+ , integral_c< T,C16 >, integral_c< T,C17 >, integral_c< T,C18 >
+ , integral_c< T,C19 >, integral_c< T,C20 >, integral_c< T,C21 >
+ , integral_c< T,C22 >, integral_c< T,C23 >, integral_c< T,C24 >
+ , integral_c< T,C25 >, integral_c< T,C26 >, integral_c< T,C27 >
+ , integral_c< T,C28 >, integral_c< T,C29 >, integral_c< T,C30 >
+ , integral_c< T,C31 >, integral_c< T,C32 >, integral_c< T,C33 >
+ , integral_c< T,C34 >, integral_c< T,C35 >, integral_c< T,C36 >
+ , integral_c< T,C37 >, integral_c< T,C38 >, integral_c< T,C39 >
+ , integral_c< T,C40 >, integral_c< T,C41 >, integral_c< T,C42 >
+ , integral_c< T,C43 >, integral_c< T,C44 >, integral_c< T,C45 >
+ , integral_c< T,C46 >, integral_c< T,C47 >, integral_c< T,C48 >, integral_c<T
+ , C49>
+ >
+{
+ typedef vector50_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp
new file mode 100644
index 0000000..e4c6407
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp
@@ -0,0 +1,139 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector10.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0
+ >
+struct vector1
+ : v_item<
+ T0
+ , vector0< >
+ >
+{
+ typedef vector1 type;
+};
+
+template<
+ typename T0, typename T1
+ >
+struct vector2
+ : v_item<
+ T1
+ , vector1<T0>
+ >
+{
+ typedef vector2 type;
+};
+
+template<
+ typename T0, typename T1, typename T2
+ >
+struct vector3
+ : v_item<
+ T2
+ , vector2< T0,T1 >
+ >
+{
+ typedef vector3 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3
+ >
+struct vector4
+ : v_item<
+ T3
+ , vector3< T0,T1,T2 >
+ >
+{
+ typedef vector4 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ >
+struct vector5
+ : v_item<
+ T4
+ , vector4< T0,T1,T2,T3 >
+ >
+{
+ typedef vector5 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5
+ >
+struct vector6
+ : v_item<
+ T5
+ , vector5< T0,T1,T2,T3,T4 >
+ >
+{
+ typedef vector6 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6
+ >
+struct vector7
+ : v_item<
+ T6
+ , vector6< T0,T1,T2,T3,T4,T5 >
+ >
+{
+ typedef vector7 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7
+ >
+struct vector8
+ : v_item<
+ T7
+ , vector7< T0,T1,T2,T3,T4,T5,T6 >
+ >
+{
+ typedef vector8 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8
+ >
+struct vector9
+ : v_item<
+ T8
+ , vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+ >
+{
+ typedef vector9 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ >
+struct vector10
+ : v_item<
+ T9
+ , vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+ >
+{
+ typedef vector10 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp
new file mode 100644
index 0000000..18eabc6
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp
@@ -0,0 +1,154 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector10_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0
+ >
+struct vector1_c
+ : v_item<
+ integral_c< T,C0 >
+ , vector0_c<T>
+ >
+{
+ typedef vector1_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1
+ >
+struct vector2_c
+ : v_item<
+ integral_c< T,C1 >
+ , vector1_c< T,C0 >
+ >
+{
+ typedef vector2_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2
+ >
+struct vector3_c
+ : v_item<
+ integral_c< T,C2 >
+ , vector2_c< T,C0,C1 >
+ >
+{
+ typedef vector3_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3
+ >
+struct vector4_c
+ : v_item<
+ integral_c< T,C3 >
+ , vector3_c< T,C0,C1,C2 >
+ >
+{
+ typedef vector4_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4
+ >
+struct vector5_c
+ : v_item<
+ integral_c< T,C4 >
+ , vector4_c< T,C0,C1,C2,C3 >
+ >
+{
+ typedef vector5_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5
+ >
+struct vector6_c
+ : v_item<
+ integral_c< T,C5 >
+ , vector5_c< T,C0,C1,C2,C3,C4 >
+ >
+{
+ typedef vector6_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6
+ >
+struct vector7_c
+ : v_item<
+ integral_c< T,C6 >
+ , vector6_c< T,C0,C1,C2,C3,C4,C5 >
+ >
+{
+ typedef vector7_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7
+ >
+struct vector8_c
+ : v_item<
+ integral_c< T,C7 >
+ , vector7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+ >
+{
+ typedef vector8_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8
+ >
+struct vector9_c
+ : v_item<
+ integral_c< T,C8 >
+ , vector8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+ >
+{
+ typedef vector9_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9
+ >
+struct vector10_c
+ : v_item<
+ integral_c< T,C9 >
+ , vector9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+ >
+{
+ typedef vector10_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp
new file mode 100644
index 0000000..78ccac4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp
@@ -0,0 +1,159 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector20.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10
+ >
+struct vector11
+ : v_item<
+ T10
+ , vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+ >
+{
+ typedef vector11 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11
+ >
+struct vector12
+ : v_item<
+ T11
+ , vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+ >
+{
+ typedef vector12 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12
+ >
+struct vector13
+ : v_item<
+ T12
+ , vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+ >
+{
+ typedef vector13 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13
+ >
+struct vector14
+ : v_item<
+ T13
+ , vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+ >
+{
+ typedef vector14 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ >
+struct vector15
+ : v_item<
+ T14
+ , vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+ >
+{
+ typedef vector15 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15
+ >
+struct vector16
+ : v_item<
+ T15
+ , vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >
+ >
+{
+ typedef vector16 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16
+ >
+struct vector17
+ : v_item<
+ T16
+ , vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >
+ >
+{
+ typedef vector17 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17
+ >
+struct vector18
+ : v_item<
+ T17
+ , vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >
+ >
+{
+ typedef vector18 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18
+ >
+struct vector19
+ : v_item<
+ T18
+ , vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >
+ >
+{
+ typedef vector19 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ >
+struct vector20
+ : v_item<
+ T19
+ , vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >
+ >
+{
+ typedef vector20 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp
new file mode 100644
index 0000000..4bf6742
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp
@@ -0,0 +1,163 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector20_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ >
+struct vector11_c
+ : v_item<
+ integral_c< T,C10 >
+ , vector10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+ >
+{
+ typedef vector11_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11
+ >
+struct vector12_c
+ : v_item<
+ integral_c< T,C11 >
+ , vector11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+ >
+{
+ typedef vector12_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12
+ >
+struct vector13_c
+ : v_item<
+ integral_c< T,C12 >
+ , vector12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+ >
+{
+ typedef vector13_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13
+ >
+struct vector14_c
+ : v_item<
+ integral_c< T,C13 >
+ , vector13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+ >
+{
+ typedef vector14_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14
+ >
+struct vector15_c
+ : v_item<
+ integral_c< T,C14 >
+ , vector14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >
+ >
+{
+ typedef vector15_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15
+ >
+struct vector16_c
+ : v_item<
+ integral_c< T,C15 >
+ , vector15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >
+ >
+{
+ typedef vector16_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16
+ >
+struct vector17_c
+ : v_item<
+ integral_c< T,C16 >
+ , vector16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >
+ >
+{
+ typedef vector17_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17
+ >
+struct vector18_c
+ : v_item<
+ integral_c< T,C17 >
+ , vector17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >
+ >
+{
+ typedef vector18_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18
+ >
+struct vector19_c
+ : v_item<
+ integral_c< T,C18 >
+ , vector18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >
+ >
+{
+ typedef vector19_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19
+ >
+struct vector20_c
+ : v_item<
+ integral_c< T,C19 >
+ , vector19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >
+ >
+{
+ typedef vector20_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp
new file mode 100644
index 0000000..c404990
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp
@@ -0,0 +1,179 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector30.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20
+ >
+struct vector21
+ : v_item<
+ T20
+ , vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >
+ >
+{
+ typedef vector21 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21
+ >
+struct vector22
+ : v_item<
+ T21
+ , vector21< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20 >
+ >
+{
+ typedef vector22 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22
+ >
+struct vector23
+ : v_item<
+ T22
+ , vector22< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21 >
+ >
+{
+ typedef vector23 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23
+ >
+struct vector24
+ : v_item<
+ T23
+ , vector23< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22 >
+ >
+{
+ typedef vector24 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ >
+struct vector25
+ : v_item<
+ T24
+ , vector24< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23 >
+ >
+{
+ typedef vector25 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25
+ >
+struct vector26
+ : v_item<
+ T25
+ , vector25< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24 >
+ >
+{
+ typedef vector26 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26
+ >
+struct vector27
+ : v_item<
+ T26
+ , vector26< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25 >
+ >
+{
+ typedef vector27 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27
+ >
+struct vector28
+ : v_item<
+ T27
+ , vector27< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26 >
+ >
+{
+ typedef vector28 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28
+ >
+struct vector29
+ : v_item<
+ T28
+ , vector28< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27 >
+ >
+{
+ typedef vector29 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ >
+struct vector30
+ : v_item<
+ T29
+ , vector29< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28 >
+ >
+{
+ typedef vector30 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp
new file mode 100644
index 0000000..5741bb4
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp
@@ -0,0 +1,173 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector30_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ >
+struct vector21_c
+ : v_item<
+ integral_c< T,C20 >
+ , vector20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >
+ >
+{
+ typedef vector21_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21
+ >
+struct vector22_c
+ : v_item<
+ integral_c< T,C21 >
+ , vector21_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20 >
+ >
+{
+ typedef vector22_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22
+ >
+struct vector23_c
+ : v_item<
+ integral_c< T,C22 >
+ , vector22_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21 >
+ >
+{
+ typedef vector23_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23
+ >
+struct vector24_c
+ : v_item<
+ integral_c< T,C23 >
+ , vector23_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22 >
+ >
+{
+ typedef vector24_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24
+ >
+struct vector25_c
+ : v_item<
+ integral_c< T,C24 >
+ , vector24_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23 >
+ >
+{
+ typedef vector25_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25
+ >
+struct vector26_c
+ : v_item<
+ integral_c< T,C25 >
+ , vector25_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24 >
+ >
+{
+ typedef vector26_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26
+ >
+struct vector27_c
+ : v_item<
+ integral_c< T,C26 >
+ , vector26_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25 >
+ >
+{
+ typedef vector27_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27
+ >
+struct vector28_c
+ : v_item<
+ integral_c< T,C27 >
+ , vector27_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26 >
+ >
+{
+ typedef vector28_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28
+ >
+struct vector29_c
+ : v_item<
+ integral_c< T,C28 >
+ , vector28_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27 >
+ >
+{
+ typedef vector29_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29
+ >
+struct vector30_c
+ : v_item<
+ integral_c< T,C29 >
+ , vector29_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28 >
+ >
+{
+ typedef vector30_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp
new file mode 100644
index 0000000..debcf70
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp
@@ -0,0 +1,199 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector40.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30
+ >
+struct vector31
+ : v_item<
+ T30
+ , vector30< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29 >
+ >
+{
+ typedef vector31 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31
+ >
+struct vector32
+ : v_item<
+ T31
+ , vector31< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30 >
+ >
+{
+ typedef vector32 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32
+ >
+struct vector33
+ : v_item<
+ T32
+ , vector32< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31 >
+ >
+{
+ typedef vector33 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33
+ >
+struct vector34
+ : v_item<
+ T33
+ , vector33< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32 >
+ >
+{
+ typedef vector34 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ >
+struct vector35
+ : v_item<
+ T34
+ , vector34< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33 >
+ >
+{
+ typedef vector35 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35
+ >
+struct vector36
+ : v_item<
+ T35
+ , vector35< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34 >
+ >
+{
+ typedef vector36 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36
+ >
+struct vector37
+ : v_item<
+ T36
+ , vector36< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35 >
+ >
+{
+ typedef vector37 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37
+ >
+struct vector38
+ : v_item<
+ T37
+ , vector37< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36 >
+ >
+{
+ typedef vector38 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38
+ >
+struct vector39
+ : v_item<
+ T38
+ , vector38< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37 >
+ >
+{
+ typedef vector39 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ >
+struct vector40
+ : v_item<
+ T39
+ , vector39< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38 >
+ >
+{
+ typedef vector40 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp
new file mode 100644
index 0000000..88d742e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp
@@ -0,0 +1,183 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector40_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ >
+struct vector31_c
+ : v_item<
+ integral_c< T,C30 >
+ , vector30_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29 >
+ >
+{
+ typedef vector31_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31
+ >
+struct vector32_c
+ : v_item<
+ integral_c< T,C31 >
+ , vector31_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30 >
+ >
+{
+ typedef vector32_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32
+ >
+struct vector33_c
+ : v_item<
+ integral_c< T,C32 >
+ , vector32_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31 >
+ >
+{
+ typedef vector33_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33
+ >
+struct vector34_c
+ : v_item<
+ integral_c< T,C33 >
+ , vector33_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32 >
+ >
+{
+ typedef vector34_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34
+ >
+struct vector35_c
+ : v_item<
+ integral_c< T,C34 >
+ , vector34_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33 >
+ >
+{
+ typedef vector35_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35
+ >
+struct vector36_c
+ : v_item<
+ integral_c< T,C35 >
+ , vector35_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34 >
+ >
+{
+ typedef vector36_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36
+ >
+struct vector37_c
+ : v_item<
+ integral_c< T,C36 >
+ , vector36_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35 >
+ >
+{
+ typedef vector37_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37
+ >
+struct vector38_c
+ : v_item<
+ integral_c< T,C37 >
+ , vector37_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36 >
+ >
+{
+ typedef vector38_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38
+ >
+struct vector39_c
+ : v_item<
+ integral_c< T,C38 >
+ , vector38_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37 >
+ >
+{
+ typedef vector39_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39
+ >
+struct vector40_c
+ : v_item<
+ integral_c< T,C39 >
+ , vector39_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38 >
+ >
+{
+ typedef vector40_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp
new file mode 100644
index 0000000..8db06df
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp
@@ -0,0 +1,219 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector50.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40
+ >
+struct vector41
+ : v_item<
+ T40
+ , vector40< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39 >
+ >
+{
+ typedef vector41 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41
+ >
+struct vector42
+ : v_item<
+ T41
+ , vector41< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40 >
+ >
+{
+ typedef vector42 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42
+ >
+struct vector43
+ : v_item<
+ T42
+ , vector42< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41 >
+ >
+{
+ typedef vector43 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43
+ >
+struct vector44
+ : v_item<
+ T43
+ , vector43< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42 >
+ >
+{
+ typedef vector44 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ >
+struct vector45
+ : v_item<
+ T44
+ , vector44< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43 >
+ >
+{
+ typedef vector45 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45
+ >
+struct vector46
+ : v_item<
+ T45
+ , vector45< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44 >
+ >
+{
+ typedef vector46 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46
+ >
+struct vector47
+ : v_item<
+ T46
+ , vector46< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45 >
+ >
+{
+ typedef vector47 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47
+ >
+struct vector48
+ : v_item<
+ T47
+ , vector47< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46 >
+ >
+{
+ typedef vector48 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47, typename T48
+ >
+struct vector49
+ : v_item<
+ T48
+ , vector48< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47 >
+ >
+{
+ typedef vector49 type;
+};
+
+template<
+ typename T0, typename T1, typename T2, typename T3, typename T4
+ , typename T5, typename T6, typename T7, typename T8, typename T9
+ , typename T10, typename T11, typename T12, typename T13, typename T14
+ , typename T15, typename T16, typename T17, typename T18, typename T19
+ , typename T20, typename T21, typename T22, typename T23, typename T24
+ , typename T25, typename T26, typename T27, typename T28, typename T29
+ , typename T30, typename T31, typename T32, typename T33, typename T34
+ , typename T35, typename T36, typename T37, typename T38, typename T39
+ , typename T40, typename T41, typename T42, typename T43, typename T44
+ , typename T45, typename T46, typename T47, typename T48, typename T49
+ >
+struct vector50
+ : v_item<
+ T49
+ , vector49< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37,T38,T39,T40,T41,T42,T43,T44,T45,T46,T47,T48 >
+ >
+{
+ typedef vector50 type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp
new file mode 100644
index 0000000..f56d6af
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp
@@ -0,0 +1,193 @@
+
+// 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)
+//
+
+// Preprocessed version of "boost/mpl/vector/vector50_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ >
+struct vector41_c
+ : v_item<
+ integral_c< T,C40 >
+ , vector40_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39 >
+ >
+{
+ typedef vector41_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41
+ >
+struct vector42_c
+ : v_item<
+ integral_c< T,C41 >
+ , vector41_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40 >
+ >
+{
+ typedef vector42_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42
+ >
+struct vector43_c
+ : v_item<
+ integral_c< T,C42 >
+ , vector42_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41 >
+ >
+{
+ typedef vector43_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43
+ >
+struct vector44_c
+ : v_item<
+ integral_c< T,C43 >
+ , vector43_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42 >
+ >
+{
+ typedef vector44_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44
+ >
+struct vector45_c
+ : v_item<
+ integral_c< T,C44 >
+ , vector44_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43 >
+ >
+{
+ typedef vector45_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45
+ >
+struct vector46_c
+ : v_item<
+ integral_c< T,C45 >
+ , vector45_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44 >
+ >
+{
+ typedef vector46_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46
+ >
+struct vector47_c
+ : v_item<
+ integral_c< T,C46 >
+ , vector46_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45 >
+ >
+{
+ typedef vector47_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47
+ >
+struct vector48_c
+ : v_item<
+ integral_c< T,C47 >
+ , vector47_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46 >
+ >
+{
+ typedef vector48_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48
+ >
+struct vector49_c
+ : v_item<
+ integral_c< T,C48 >
+ , vector48_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47 >
+ >
+{
+ typedef vector49_c type;
+ typedef T value_type;
+};
+
+template<
+ typename T
+ , T C0, T C1, T C2, T C3, T C4, T C5, T C6, T C7, T C8, T C9, T C10
+ , T C11, T C12, T C13, T C14, T C15, T C16, T C17, T C18, T C19, T C20
+ , T C21, T C22, T C23, T C24, T C25, T C26, T C27, T C28, T C29, T C30
+ , T C31, T C32, T C33, T C34, T C35, T C36, T C37, T C38, T C39, T C40
+ , T C41, T C42, T C43, T C44, T C45, T C46, T C47, T C48, T C49
+ >
+struct vector50_c
+ : v_item<
+ integral_c< T,C49 >
+ , vector49_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25,C26,C27,C28,C29,C30,C31,C32,C33,C34,C35,C36,C37,C38,C39,C40,C41,C42,C43,C44,C45,C46,C47,C48 >
+ >
+{
+ typedef vector50_c type;
+ typedef T value_type;
+};
+
+}}
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/push_back.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/push_back.hpp
new file mode 100644
index 0000000..b51c770
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/push_back.hpp
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_PUSH_BACK_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: push_back.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/push_back_fwd.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# include <boost/mpl/vector/aux_/item.hpp>
+# include <boost/mpl/vector/aux_/tag.hpp>
+
+namespace boost { namespace mpl {
+
+template<>
+struct push_back_impl< aux::vector_tag >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef v_item<T,Vector,0> type;
+ };
+};
+
+}}
+
+#endif
+
+#endif // BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/push_front.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/push_front.hpp
new file mode 100644
index 0000000..efa2aae
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/push_front.hpp
@@ -0,0 +1,40 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_PUSH_FRONT_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: push_front.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/push_front_fwd.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+# include <boost/mpl/vector/aux_/item.hpp>
+# include <boost/mpl/vector/aux_/tag.hpp>
+
+namespace boost { namespace mpl {
+
+template<>
+struct push_front_impl< aux::vector_tag >
+{
+ template< typename Vector, typename T > struct apply
+ {
+ typedef v_item<T,Vector,1> type;
+ };
+};
+
+}}
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#endif // BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/size.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/size.hpp
new file mode 100644
index 0000000..bd40b54
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/size.hpp
@@ -0,0 +1,49 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_SIZE_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: size.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/vector/aux_/O1_size.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+#include <boost/mpl/aux_/config/ctps.hpp>
+
+namespace boost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+
+template<>
+struct size_impl< aux::vector_tag >
+ : O1_size_impl< aux::vector_tag >
+{
+};
+
+#else
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< long N >
+struct size_impl< aux::vector_tag<N> >
+ : O1_size_impl< aux::vector_tag<N> >
+{
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/tag.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/tag.hpp
new file mode 100644
index 0000000..77d627b
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/tag.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_TAG_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: tag.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/typeof.hpp>
+#include <boost/mpl/aux_/nttp_decl.hpp>
+
+namespace boost { namespace mpl { namespace aux {
+
+struct v_iter_tag;
+
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+struct vector_tag;
+#else
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct vector_tag;
+#endif
+
+}}}
+
+#endif // BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/aux_/vector0.hpp b/3rdParty/Boost/boost/mpl/vector/aux_/vector0.hpp
new file mode 100644
index 0000000..65c5544
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/aux_/vector0.hpp
@@ -0,0 +1,52 @@
+
+#ifndef BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_AUX_VECTOR0_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: vector0.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/aux_/type_wrapper.hpp>
+
+#include <boost/mpl/vector/aux_/iterator.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+#include <boost/mpl/aux_/config/typeof.hpp>
+
+namespace boost { namespace mpl {
+
+template< typename Dummy = na > struct vector0;
+
+template<> struct vector0<na>
+{
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+ typedef aux::vector_tag tag;
+ typedef vector0 type;
+ typedef long_<32768> lower_bound_;
+ typedef lower_bound_ upper_bound_;
+ typedef long_<0> size;
+
+ static aux::type_wrapper<void_> item_(...);
+#else
+ typedef aux::vector_tag<0> tag;
+ typedef vector0 type;
+ typedef void_ item0;
+
+ typedef v_iter<vector0<>,0> begin;
+ typedef v_iter<vector0<>,0> end;
+#endif
+};
+
+}}
+
+#endif // BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector0.hpp b/3rdParty/Boost/boost/mpl/vector/vector0.hpp
new file mode 100644
index 0000000..249ecbb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector0.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR0_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: vector0.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/vector/aux_/at.hpp>
+#include <boost/mpl/vector/aux_/front.hpp>
+#include <boost/mpl/vector/aux_/push_front.hpp>
+#include <boost/mpl/vector/aux_/pop_front.hpp>
+#include <boost/mpl/vector/aux_/push_back.hpp>
+#include <boost/mpl/vector/aux_/pop_back.hpp>
+#include <boost/mpl/vector/aux_/back.hpp>
+#include <boost/mpl/vector/aux_/clear.hpp>
+#include <boost/mpl/vector/aux_/O1_size.hpp>
+#include <boost/mpl/vector/aux_/size.hpp>
+#include <boost/mpl/vector/aux_/empty.hpp>
+#include <boost/mpl/vector/aux_/item.hpp>
+#include <boost/mpl/vector/aux_/iterator.hpp>
+#include <boost/mpl/vector/aux_/vector0.hpp>
+#include <boost/mpl/vector/aux_/begin_end.hpp>
+#include <boost/mpl/vector/aux_/tag.hpp>
+
+#endif // BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector0_c.hpp b/3rdParty/Boost/boost/mpl/vector/vector0_c.hpp
new file mode 100644
index 0000000..630af92
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector0_c.hpp
@@ -0,0 +1,31 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR0_C_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: vector0_c.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/vector/vector0.hpp>
+#include <boost/mpl/integral_c.hpp>
+
+namespace boost { namespace mpl {
+
+template< typename T > struct vector0_c
+ : vector0<>
+{
+ typedef vector0_c type;
+ typedef T value_type;
+};
+
+}}
+
+#endif // BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector10.hpp b/3rdParty/Boost/boost/mpl/vector/vector10.hpp
new file mode 100644
index 0000000..344c92c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector10.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR10_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: vector10.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/vector/vector0.hpp>
+#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 vector10.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(0, 10, <boost/mpl/vector/aux_/numbered.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector10_c.hpp b/3rdParty/Boost/boost/mpl/vector/vector10_c.hpp
new file mode 100644
index 0000000..05e97ad
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector10_c.hpp
@@ -0,0 +1,46 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR10_C_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: vector10_c.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/vector/vector0_c.hpp>
+# include <boost/mpl/vector/vector10.hpp>
+#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 vector10_c.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(1, 10, <boost/mpl/vector/aux_/numbered_c.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector20.hpp b/3rdParty/Boost/boost/mpl/vector/vector20.hpp
new file mode 100644
index 0000000..ffa867e
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector20.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR20_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: vector20.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/vector/vector10.hpp>
+#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 vector20.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(11, 20, <boost/mpl/vector/aux_/numbered.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector20_c.hpp b/3rdParty/Boost/boost/mpl/vector/vector20_c.hpp
new file mode 100644
index 0000000..cc13d51
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector20_c.hpp
@@ -0,0 +1,46 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR20_C_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: vector20_c.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/vector/vector10_c.hpp>
+# include <boost/mpl/vector/vector20.hpp>
+#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 vector20_c.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(11, 20, <boost/mpl/vector/aux_/numbered_c.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector30.hpp b/3rdParty/Boost/boost/mpl/vector/vector30.hpp
new file mode 100644
index 0000000..f54c61c
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector30.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR30_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: vector30.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/vector/vector20.hpp>
+#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 vector30.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(21, 30, <boost/mpl/vector/aux_/numbered.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector30_c.hpp b/3rdParty/Boost/boost/mpl/vector/vector30_c.hpp
new file mode 100644
index 0000000..a8e3e60
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector30_c.hpp
@@ -0,0 +1,47 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR30_C_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: vector30_c.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/vector/vector20_c.hpp>
+# include <boost/mpl/vector/vector30.hpp>
+#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 vector30_c.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/config.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(21, 30, <boost/mpl/vector/aux_/numbered_c.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_USE_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector40.hpp b/3rdParty/Boost/boost/mpl/vector/vector40.hpp
new file mode 100644
index 0000000..2d24b6d
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector40.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR40_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: vector40.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/vector/vector30.hpp>
+#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 vector40.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(31, 40, <boost/mpl/vector/aux_/numbered.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector40_c.hpp b/3rdParty/Boost/boost/mpl/vector/vector40_c.hpp
new file mode 100644
index 0000000..9179b26
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector40_c.hpp
@@ -0,0 +1,46 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR40_C_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: vector40_c.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/vector/vector30_c.hpp>
+# include <boost/mpl/vector/vector40.hpp>
+#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 vector40_c.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(31, 40, <boost/mpl/vector/aux_/numbered_c.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector50.hpp b/3rdParty/Boost/boost/mpl/vector/vector50.hpp
new file mode 100644
index 0000000..0050483
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector50.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR50_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: vector50.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/vector/vector40.hpp>
+#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 vector50.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(41, 50, <boost/mpl/vector/aux_/numbered.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/vector/vector50_c.hpp b/3rdParty/Boost/boost/mpl/vector/vector50_c.hpp
new file mode 100644
index 0000000..0496742
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/vector/vector50_c.hpp
@@ -0,0 +1,46 @@
+
+#ifndef BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
+#define BOOST_MPL_VECTOR_VECTOR50_C_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: vector50_c.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/vector/vector40_c.hpp>
+# include <boost/mpl/vector/vector50.hpp>
+#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 vector50_c.hpp
+# include <boost/mpl/vector/aux_/include_preprocessed.hpp>
+
+#else
+
+# include <boost/mpl/aux_/config/typeof.hpp>
+# include <boost/mpl/aux_/config/ctps.hpp>
+# include <boost/preprocessor/iterate.hpp>
+
+namespace boost { namespace mpl {
+
+# define BOOST_PP_ITERATION_PARAMS_1 \
+ (3,(41, 50, <boost/mpl/vector/aux_/numbered_c.hpp>))
+# include BOOST_PP_ITERATE()
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/void.hpp b/3rdParty/Boost/boost/mpl/void.hpp
new file mode 100644
index 0000000..f464acb
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/void.hpp
@@ -0,0 +1,76 @@
+
+#ifndef BOOST_MPL_VOID_HPP_INCLUDED
+#define BOOST_MPL_VOID_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: void.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/void_fwd.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/na_spec.hpp>
+#include <boost/mpl/aux_/config/msvc.hpp>
+#include <boost/mpl/aux_/config/workaround.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+// [JDG Feb-4-2003] made void_ a complete type to allow it to be
+// instantiated so that it can be passed in as an object that can be
+// used to select an overloaded function. Possible use includes signaling
+// a zero arity functor evaluation call.
+struct void_ { typedef void_ type; };
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+
+namespace boost { namespace mpl {
+
+template< typename T >
+struct is_void_
+ : false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using false_::value;
+#endif
+};
+
+template<>
+struct is_void_<void_>
+ : true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using true_::value;
+#endif
+};
+
+template< typename T >
+struct is_not_void_
+ : true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using true_::value;
+#endif
+};
+
+template<>
+struct is_not_void_<void_>
+ : false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ using false_::value;
+#endif
+};
+
+BOOST_MPL_AUX_NA_SPEC(1, is_void_)
+BOOST_MPL_AUX_NA_SPEC(1, is_not_void_)
+
+}}
+
+#endif // BOOST_MPL_VOID_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/mpl/void_fwd.hpp b/3rdParty/Boost/boost/mpl/void_fwd.hpp
new file mode 100644
index 0000000..0dcd639
--- /dev/null
+++ b/3rdParty/Boost/boost/mpl/void_fwd.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_VOID_FWD_HPP_INCLUDED
+#define BOOST_MPL_VOID_FWD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-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: void_fwd.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_/adl_barrier.hpp>
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+
+struct void_;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+BOOST_MPL_AUX_ADL_BARRIER_DECL(void_)
+
+#endif // BOOST_MPL_VOID_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/next_prior.hpp b/3rdParty/Boost/boost/next_prior.hpp
new file mode 100644
index 0000000..e1d2e42
--- /dev/null
+++ b/3rdParty/Boost/boost/next_prior.hpp
@@ -0,0 +1,51 @@
+// Boost next_prior.hpp header file ---------------------------------------//
+
+// (C) Copyright Dave Abrahams and Daniel Walker 1999-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/utility for documentation.
+
+// Revision History
+// 13 Dec 2003 Added next(x, n) and prior(x, n) (Daniel Walker)
+
+#ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED
+#define BOOST_NEXT_PRIOR_HPP_INCLUDED
+
+#include <iterator>
+
+namespace boost {
+
+// Helper functions for classes like bidirectional iterators not supporting
+// operator+ and operator-
+//
+// Usage:
+// const std::list<T>::iterator p = get_some_iterator();
+// const std::list<T>::iterator prev = boost::prior(p);
+// const std::list<T>::iterator next = boost::next(prev, 2);
+
+// Contributed by Dave Abrahams
+
+template <class T>
+inline T next(T x) { return ++x; }
+
+template <class T, class Distance>
+inline T next(T x, Distance n)
+{
+ std::advance(x, n);
+ return x;
+}
+
+template <class T>
+inline T prior(T x) { return --x; }
+
+template <class T, class Distance>
+inline T prior(T x, Distance n)
+{
+ std::advance(x, -n);
+ return x;
+}
+
+} // namespace boost
+
+#endif // BOOST_NEXT_PRIOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/non_type.hpp b/3rdParty/Boost/boost/non_type.hpp
new file mode 100644
index 0000000..896aed4
--- /dev/null
+++ b/3rdParty/Boost/boost/non_type.hpp
@@ -0,0 +1,27 @@
+// -------------------------------------
+//
+// (C) Copyright Gennaro Prota 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)
+//
+// ------------------------------------------------------
+
+#ifndef BOOST_NON_TYPE_HPP_GP_20030417
+#define BOOST_NON_TYPE_HPP_GP_20030417
+
+
+namespace boost {
+
+ // Just a simple "envelope" for non-type template parameters. Useful
+ // to work around some MSVC deficiencies.
+
+ template <typename T, T n>
+ struct non_type { };
+
+
+}
+
+
+#endif // include guard
diff --git a/3rdParty/Boost/boost/noncopyable.hpp b/3rdParty/Boost/boost/noncopyable.hpp
new file mode 100644
index 0000000..7770bdb
--- /dev/null
+++ b/3rdParty/Boost/boost/noncopyable.hpp
@@ -0,0 +1,36 @@
+// Boost noncopyable.hpp header file --------------------------------------//
+
+// (C) Copyright Beman Dawes 1999-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/utility for documentation.
+
+#ifndef BOOST_NONCOPYABLE_HPP_INCLUDED
+#define BOOST_NONCOPYABLE_HPP_INCLUDED
+
+namespace boost {
+
+// Private copy constructor and copy assignment ensure classes derived from
+// class noncopyable cannot be copied.
+
+// Contributed by Dave Abrahams
+
+namespace noncopyable_ // protection from unintended ADL
+{
+ class noncopyable
+ {
+ protected:
+ noncopyable() {}
+ ~noncopyable() {}
+ private: // emphasize the following members are private
+ noncopyable( const noncopyable& );
+ const noncopyable& operator=( const noncopyable& );
+ };
+}
+
+typedef noncopyable_::noncopyable noncopyable;
+
+} // namespace boost
+
+#endif // BOOST_NONCOPYABLE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/none.hpp b/3rdParty/Boost/boost/none.hpp
new file mode 100644
index 0000000..bd342da
--- /dev/null
+++ b/3rdParty/Boost/boost/none.hpp
@@ -0,0 +1,28 @@
+// Copyright (C) 2003, 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)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NONE_17SEP2003_HPP
+#define BOOST_NONE_17SEP2003_HPP
+
+#include "boost/none_t.hpp"
+
+// NOTE: Borland users have to include this header outside any precompiled headers
+// (bcc<=5.64 cannot include instance data in a precompiled header)
+// -- * To be verified, now that there's no unnamed namespace
+
+namespace boost {
+
+none_t const none = ((none_t)0) ;
+
+} // namespace boost
+
+#endif
+
diff --git a/3rdParty/Boost/boost/none_t.hpp b/3rdParty/Boost/boost/none_t.hpp
new file mode 100644
index 0000000..63ad926
--- /dev/null
+++ b/3rdParty/Boost/boost/none_t.hpp
@@ -0,0 +1,24 @@
+// Copyright (C) 2003, 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_NONE_T_17SEP2003_HPP
+#define BOOST_NONE_T_17SEP2003_HPP
+
+namespace boost {
+
+namespace detail { struct none_helper{}; }
+
+typedef int detail::none_helper::*none_t ;
+
+} // namespace boost
+
+#endif
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/bounds.hpp b/3rdParty/Boost/boost/numeric/conversion/bounds.hpp
new file mode 100644
index 0000000..e4c7c7d
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/bounds.hpp
@@ -0,0 +1,24 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
+
+#include "boost/numeric/conversion/detail/bounds.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class N>
+struct bounds : boundsdetail::get_impl<N>::type
+{} ;
+
+} } // namespace boost::numeric
+
+#endif
diff --git a/3rdParty/Boost/boost/numeric/conversion/cast.hpp b/3rdParty/Boost/boost/numeric/conversion/cast.hpp
new file mode 100644
index 0000000..aa518e8
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/cast.hpp
@@ -0,0 +1,51 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+//
+// Revision History
+//
+// 19 Nov 2001 Syntatic changes as suggested by Darin Adler (Fernando Cacciola)
+// 08 Nov 2001 Fixes to accommodate MSVC (Fernando Cacciola)
+// 04 Nov 2001 Fixes to accommodate gcc2.92 (Fernando Cacciola)
+// 30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)
+// 25 Oct 2001 Initial boostification (Fernando Cacciola)
+// 23 Jan 2004 Inital add to cvs (post review)s
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
+#define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
+
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+
+# include<boost/numeric/conversion/detail/old_numeric_cast.hpp>
+
+#else
+
+#include <boost/type.hpp>
+#include <boost/numeric/conversion/converter.hpp>
+
+namespace boost
+{
+ template<typename Target, typename Source>
+ inline
+ Target numeric_cast ( Source arg )
+ {
+ typedef boost::numeric::converter<Target,Source> Converter ;
+ return Converter::convert(arg);
+ }
+
+ using numeric::bad_numeric_cast;
+
+} // namespace boost
+
+#endif
+
+
+#endif
diff --git a/3rdParty/Boost/boost/numeric/conversion/conversion_traits.hpp b/3rdParty/Boost/boost/numeric/conversion/conversion_traits.hpp
new file mode 100644
index 0000000..6da6178
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/conversion_traits.hpp
@@ -0,0 +1,39 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+
+#include "boost/numeric/conversion/detail/conversion_traits.hpp"
+#include "boost/detail/workaround.hpp"
+#include "boost/config.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class T, class S>
+struct conversion_traits
+ : convdetail::get_conversion_traits<T,S>::type
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ typedef typename convdetail::get_conversion_traits<T,S>::type base_;
+ typedef typename base_::target_type target_type;
+ typedef typename base_::source_type source_type;
+ typedef typename base_::result_type result_type;
+ typedef typename base_::argument_type argument_type;
+#endif
+} ;
+
+} } // namespace boost::numeric
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/converter.hpp b/3rdParty/Boost/boost/numeric/conversion/converter.hpp
new file mode 100644
index 0000000..331cadd
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/converter.hpp
@@ -0,0 +1,68 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
+
+#include "boost/numeric/conversion/conversion_traits.hpp"
+#include "boost/numeric/conversion/converter_policies.hpp"
+
+#include "boost/numeric/conversion/detail/converter.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class T,
+ class S,
+ class Traits = conversion_traits<T,S>,
+ class OverflowHandler = def_overflow_handler,
+ class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type> ,
+ class RawConverter = raw_converter<Traits>,
+ class UserRangeChecker = UseInternalRangeChecker
+ >
+struct converter : convdetail::get_converter_impl<Traits,
+ OverflowHandler,
+ Float2IntRounder,
+ RawConverter,
+ UserRangeChecker
+ >::type
+{
+ typedef Traits traits ;
+
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ result_type operator() ( argument_type s ) const { return this->convert(s) ; }
+} ;
+
+
+
+template<class S,
+ class OverflowHandler = def_overflow_handler,
+ class Float2IntRounder = Trunc<S> ,
+ class UserRangeChecker = UseInternalRangeChecker
+ >
+struct make_converter_from
+{
+ template<class T,
+ class Traits = conversion_traits<T,S>,
+ class RawConverter = raw_converter<Traits>
+ >
+ struct to
+ {
+ typedef converter<T,S,Traits,OverflowHandler,Float2IntRounder,RawConverter,UserRangeChecker> type ;
+ } ;
+
+} ;
+
+} } // namespace boost::numeric
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/converter_policies.hpp b/3rdParty/Boost/boost/numeric/conversion/converter_policies.hpp
new file mode 100644
index 0000000..b0d741b
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/converter_policies.hpp
@@ -0,0 +1,186 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
+
+#include <typeinfo> // for std::bad_cast
+
+#include <boost/config/no_tr1/cmath.hpp> // for std::floor and std::ceil
+
+#include <functional>
+
+#include "boost/type_traits/is_arithmetic.hpp"
+
+#include "boost/mpl/if.hpp"
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric
+{
+
+template<class S>
+struct Trunc
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::floor ;
+ using std::ceil ;
+#endif
+
+ return s < static_cast<S>(0) ? ceil(s) : floor(s) ;
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_zero> round_style ;
+} ;
+
+
+
+template<class S>
+struct Floor
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::floor ;
+#endif
+
+ return floor(s) ;
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_neg_infinity> round_style ;
+} ;
+
+template<class S>
+struct Ceil
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::ceil ;
+#endif
+
+ return ceil(s) ;
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_toward_infinity> round_style ;
+} ;
+
+template<class S>
+struct RoundEven
+{
+ typedef S source_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>,S,S const&>::type argument_type ;
+
+ static source_type nearbyint ( argument_type s )
+ {
+ // Algorithm contributed by Guillaume Melquiond
+
+#if !defined(BOOST_NO_STDC_NAMESPACE)
+ using std::floor ;
+ using std::ceil ;
+#endif
+
+ // only works inside the range not at the boundaries
+ S prev = floor(s);
+ S next = ceil(s);
+
+ S rt = (s - prev) - (next - s); // remainder type
+
+ S const zero(0.0);
+ S const two(2.0);
+
+ if ( rt < zero )
+ return prev;
+ else if ( rt > zero )
+ return next;
+ else
+ {
+ bool is_prev_even = two * floor(prev / two) == prev ;
+ return ( is_prev_even ? prev : next ) ;
+ }
+ }
+
+ typedef mpl::integral_c< std::float_round_style, std::round_to_nearest> round_style ;
+} ;
+
+
+enum range_check_result
+{
+ cInRange = 0 ,
+ cNegOverflow = 1 ,
+ cPosOverflow = 2
+} ;
+
+class bad_numeric_cast : public std::bad_cast
+{
+ public:
+
+ virtual const char * what() const throw()
+ { return "bad numeric conversion: overflow"; }
+};
+
+class negative_overflow : public bad_numeric_cast
+{
+ public:
+
+ virtual const char * what() const throw()
+ { return "bad numeric conversion: negative overflow"; }
+};
+class positive_overflow : public bad_numeric_cast
+{
+ public:
+
+ virtual const char * what() const throw()
+ { return "bad numeric conversion: positive overflow"; }
+};
+
+struct def_overflow_handler
+{
+ void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)
+ {
+ if ( r == cNegOverflow )
+ throw negative_overflow() ;
+ else if ( r == cPosOverflow )
+ throw positive_overflow() ;
+ }
+} ;
+
+struct silent_overflow_handler
+{
+ void operator() ( range_check_result ) {} // throw()
+} ;
+
+template<class Traits>
+struct raw_converter
+{
+ typedef typename Traits::result_type result_type ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static result_type low_level_convert ( argument_type s ) { return static_cast<result_type>(s) ; }
+} ;
+
+struct UseInternalRangeChecker {} ;
+
+} } // namespace boost::numeric
+
+#endif
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/bounds.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/bounds.hpp
new file mode 100644
index 0000000..67342b8
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/bounds.hpp
@@ -0,0 +1,58 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
+
+#include "boost/limits.hpp"
+#include "boost/config.hpp"
+#include "boost/mpl/if.hpp"
+
+namespace boost { namespace numeric { namespace boundsdetail
+{
+ template<class N>
+ class Integral
+ {
+ typedef std::numeric_limits<N> limits ;
+
+ public :
+
+ static N lowest () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static N smallest() { return static_cast<N>(1); }
+ } ;
+
+ template<class N>
+ class Float
+ {
+ typedef std::numeric_limits<N> limits ;
+
+ public :
+
+ static N lowest () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
+ static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+ } ;
+
+ template<class N>
+ struct get_impl
+ {
+ typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
+
+ typedef Integral<N> impl_int ;
+ typedef Float <N> impl_float ;
+
+ typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::boundsdetail.
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/conversion_traits.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/conversion_traits.hpp
new file mode 100644
index 0000000..ed25349
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/conversion_traits.hpp
@@ -0,0 +1,97 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_same.hpp"
+#include "boost/type_traits/remove_cv.hpp"
+
+#include "boost/numeric/conversion/detail/meta.hpp"
+#include "boost/numeric/conversion/detail/int_float_mixture.hpp"
+#include "boost/numeric/conversion/detail/sign_mixture.hpp"
+#include "boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
+#include "boost/numeric/conversion/detail/is_subranged.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ //-------------------------------------------------------------------
+ // Implementation of the Conversion Traits for T != S
+ //
+ // This is a VISIBLE base class of the user-level conversion_traits<> class.
+ //-------------------------------------------------------------------
+ template<class T,class S>
+ struct non_trivial_traits_impl
+ {
+ typedef typename get_int_float_mixture <T,S>::type int_float_mixture ;
+ typedef typename get_sign_mixture <T,S>::type sign_mixture ;
+ typedef typename get_udt_builtin_mixture <T,S>::type udt_builtin_mixture ;
+
+ typedef typename get_is_subranged<T,S>::type subranged ;
+
+ typedef mpl::false_ trivial ;
+
+ typedef T target_type ;
+ typedef S source_type ;
+ typedef T result_type ;
+
+ typedef typename mpl::if_< is_arithmetic<S>, S, S const&>::type argument_type ;
+
+ typedef typename mpl::if_<subranged,S,T>::type supertype ;
+ typedef typename mpl::if_<subranged,T,S>::type subtype ;
+ } ;
+
+ //-------------------------------------------------------------------
+ // Implementation of the Conversion Traits for T == S
+ //
+ // This is a VISIBLE base class of the user-level conversion_traits<> class.
+ //-------------------------------------------------------------------
+ template<class N>
+ struct trivial_traits_impl
+ {
+ typedef typename get_int_float_mixture <N,N>::type int_float_mixture ;
+ typedef typename get_sign_mixture <N,N>::type sign_mixture ;
+ typedef typename get_udt_builtin_mixture<N,N>::type udt_builtin_mixture ;
+
+ typedef mpl::false_ subranged ;
+ typedef mpl::true_ trivial ;
+
+ typedef N target_type ;
+ typedef N source_type ;
+ typedef N const& result_type ;
+ typedef N const& argument_type ;
+
+ typedef N supertype ;
+ typedef N subtype ;
+
+ } ;
+
+ //-------------------------------------------------------------------
+ // Top level implementation selector.
+ //-------------------------------------------------------------------
+ template<class T, class S>
+ struct get_conversion_traits
+ {
+ typedef typename remove_cv<T>::type target_type ;
+ typedef typename remove_cv<S>::type source_type ;
+
+ typedef typename is_same<target_type,source_type>::type is_trivial ;
+
+ typedef trivial_traits_impl <target_type> trivial_imp ;
+ typedef non_trivial_traits_impl<target_type,source_type> non_trivial_imp ;
+
+ typedef typename mpl::if_<is_trivial,trivial_imp,non_trivial_imp>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/converter.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/converter.hpp
new file mode 100644
index 0000000..10550f8
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/converter.hpp
@@ -0,0 +1,602 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
+
+#include <functional>
+
+#include "boost/numeric/conversion/detail/meta.hpp"
+#include "boost/numeric/conversion/detail/conversion_traits.hpp"
+#include "boost/numeric/conversion/bounds.hpp"
+
+#include "boost/type_traits/is_same.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants representing rounding modes
+ typedef mpl::integral_c<std::float_round_style, std::round_toward_zero> round2zero_c ;
+ typedef mpl::integral_c<std::float_round_style, std::round_to_nearest> round2nearest_c ;
+ typedef mpl::integral_c<std::float_round_style, std::round_toward_infinity> round2inf_c ;
+ typedef mpl::integral_c<std::float_round_style, std::round_toward_neg_infinity> round2neg_inf_c ;
+
+ // Metafunction:
+ //
+ // for_round_style<RoundStyle,RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf>::type
+ //
+ // {RoundStyle} Integral Constant specifying a round style as declared above.
+ // {RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf} arbitrary types.
+ //
+ // Selects one of the 4 types according to the value of RoundStyle.
+ //
+ template<class RoundStyle,class RoundToZero,class RoundToNearest,class RoundToInf,class RoundToNegInf>
+ struct for_round_style
+ {
+ typedef ct_switch4<RoundStyle
+ , round2zero_c, round2nearest_c, round2inf_c // round2neg_inf_c
+ , RoundToZero , RoundToNearest , RoundToInf , RoundToNegInf
+ > selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------
+// Range Checking Logic.
+//
+// The range checking logic is built up by combining 1 or 2 predicates.
+// Each predicate is encapsulated in a template class and exposes
+// the static member function 'apply'.
+//
+//--------------------------------------------------------------------------
+
+
+ // Because a particular logic can combine either 1 or two predicates, the following
+ // tags are used to allow the predicate applier to receive 2 preds, but optimize away
+ // one of them if it is 'non-applicable'
+ struct non_applicable { typedef mpl::false_ do_apply ; } ;
+ struct applicable { typedef mpl::true_ do_apply ; } ;
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Range Checking Logic implementations.
+ //
+ // The following classes, collectivelly named 'Predicates', are instantiated within
+ // the corresponding range checkers.
+ // Their static member function 'apply' is called to perform the actual range checking logic.
+ //--------------------------------------------------------------------------
+
+ // s < Lowest(T) ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LT_LoT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s < static_cast<S>(bounds<T>::lowest()) ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s < 0 ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LT_Zero : applicable
+ {
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s < static_cast<S>(0) ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s <= Lowest(T)-1 ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LE_PrevLoT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s <= static_cast<S>(bounds<T>::lowest()) - static_cast<S>(1.0)
+ ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s < Lowest(T)-0.5 ? cNegOverflow : cInRange
+ //
+ template<class Traits>
+ struct LT_HalfPrevLoT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s < static_cast<S>(bounds<T>::lowest()) - static_cast<S>(0.5)
+ ? cNegOverflow : cInRange ;
+ }
+ } ;
+
+ // s > Highest(T) ? cPosOverflow : cInRange
+ //
+ template<class Traits>
+ struct GT_HiT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s > static_cast<S>(bounds<T>::highest())
+ ? cPosOverflow : cInRange ;
+ }
+ } ;
+
+ // s >= Lowest(T) + 1 ? cPosOverflow : cInRange
+ //
+ template<class Traits>
+ struct GE_SuccHiT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(1.0)
+ ? cPosOverflow : cInRange ;
+ }
+ } ;
+
+ // s >= Lowest(T) + 0.5 ? cPosgOverflow : cInRange
+ //
+ template<class Traits>
+ struct GT_HalfSuccHiT : applicable
+ {
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(0.5)
+ ? cPosOverflow : cInRange ;
+ }
+ } ;
+
+
+ //--------------------------------------------------------------------------
+ //
+ // Predicate Combiner.
+ //
+ // This helper classes are used to possibly combine the range checking logic
+ // individually performed by the predicates
+ //
+ //--------------------------------------------------------------------------
+
+
+ // Applies both predicates: first 'PredA', and if it equals 'cInRange', 'PredB'
+ template<class PredA, class PredB>
+ struct applyBoth
+ {
+ typedef typename PredA::argument_type argument_type ;
+
+ static range_check_result apply ( argument_type s )
+ {
+ range_check_result r = PredA::apply(s) ;
+ if ( r == cInRange )
+ r = PredB::apply(s);
+ return r ;
+ }
+ } ;
+
+ template<class PredA, class PredB>
+ struct combine
+ {
+ typedef applyBoth<PredA,PredB> Both ;
+ typedef void NNone ; // 'None' is defined as a macro in (/usr/X11R6/include/X11/X.h)
+
+ typedef typename PredA::do_apply do_applyA ;
+ typedef typename PredB::do_apply do_applyB ;
+
+ typedef typename for_both<do_applyA, do_applyB, Both, PredA, PredB, NNone>::type type ;
+ } ;
+
+
+
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------
+// Range Checker classes.
+//
+// The following classes are VISIBLE base classes of the user-level converter<> class.
+// They supply the optimized 'out_of_range()' and 'validate_range()' static member functions
+// visible in the user interface.
+//
+//--------------------------------------------------------------------------
+
+ // Dummy range checker.
+ template<class Traits>
+ struct dummy_range_checker
+ {
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result out_of_range ( argument_type ) { return cInRange ; }
+ static void validate_range ( argument_type ) {}
+ } ;
+
+ // Generic range checker.
+ //
+ // All the range checking logic for all possible combinations of source and target
+ // can be arranged in terms of one or two predicates, which test overflow on both neg/pos 'sides'
+ // of the ranges.
+ //
+ // These predicates are given here as IsNegOverflow and IsPosOverflow.
+ //
+ template<class Traits, class IsNegOverflow, class IsPosOverflow, class OverflowHandler>
+ struct generic_range_checker
+ {
+ typedef OverflowHandler overflow_handler ;
+
+ typedef typename Traits::argument_type argument_type ;
+
+ static range_check_result out_of_range ( argument_type s )
+ {
+ typedef typename combine<IsNegOverflow,IsPosOverflow>::type Predicate ;
+
+ return Predicate::apply(s);
+ }
+
+ static void validate_range ( argument_type s )
+ { OverflowHandler()( out_of_range(s) ) ; }
+ } ;
+
+
+
+//--------------------------------------------------------------------------
+//
+// Selectors for the optimized Range Checker class.
+//
+//--------------------------------------------------------------------------
+
+ template<class Traits,class OverflowHandler>
+ struct GetRC_Sig2Sig_or_Unsig2Unsig
+ {
+ typedef dummy_range_checker<Traits> Dummy ;
+
+ typedef LT_LoT<Traits> Pred1 ;
+ typedef GT_HiT<Traits> Pred2 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
+
+ typedef typename Traits::subranged subranged ;
+
+ typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler>
+ struct GetRC_Sig2Unsig
+ {
+ typedef LT_Zero<Traits> Pred1 ;
+ typedef GT_HiT <Traits> Pred2 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ChoiceA ;
+
+ typedef generic_range_checker<Traits,Pred1,non_applicable,OverflowHandler> ChoiceB ;
+
+ typedef typename Traits::target_type T ;
+ typedef typename Traits::source_type S ;
+
+ typedef typename subranged_Unsig2Sig<S,T>::type oposite_subranged ;
+
+ typedef typename mpl::not_<oposite_subranged>::type positively_subranged ;
+
+ typedef typename mpl::if_<positively_subranged,ChoiceA,ChoiceB>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler>
+ struct GetRC_Unsig2Sig
+ {
+ typedef GT_HiT<Traits> Pred1 ;
+
+ typedef generic_range_checker<Traits,non_applicable,Pred1,OverflowHandler> type ;
+ } ;
+
+ template<class Traits,class OverflowHandler>
+ struct GetRC_Int2Int
+ {
+ typedef GetRC_Sig2Sig_or_Unsig2Unsig<Traits,OverflowHandler> Sig2SigQ ;
+ typedef GetRC_Sig2Unsig <Traits,OverflowHandler> Sig2UnsigQ ;
+ typedef GetRC_Unsig2Sig <Traits,OverflowHandler> Unsig2SigQ ;
+ typedef Sig2SigQ Unsig2UnsigQ ;
+
+ typedef typename Traits::sign_mixture sign_mixture ;
+
+ typedef typename
+ for_sign_mixture<sign_mixture,Sig2SigQ,Sig2UnsigQ,Unsig2SigQ,Unsig2UnsigQ>::type
+ selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+ template<class Traits>
+ struct GetRC_Int2Float
+ {
+ typedef dummy_range_checker<Traits> type ;
+ } ;
+
+ template<class Traits, class OverflowHandler, class Float2IntRounder>
+ struct GetRC_Float2Int
+ {
+ typedef LE_PrevLoT <Traits> Pred1 ;
+ typedef GE_SuccHiT <Traits> Pred2 ;
+ typedef LT_HalfPrevLoT<Traits> Pred3 ;
+ typedef GT_HalfSuccHiT<Traits> Pred4 ;
+ typedef GT_HiT <Traits> Pred5 ;
+ typedef LT_LoT <Traits> Pred6 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ToZero ;
+ typedef generic_range_checker<Traits,Pred3,Pred4,OverflowHandler> ToNearest ;
+ typedef generic_range_checker<Traits,Pred1,Pred5,OverflowHandler> ToInf ;
+ typedef generic_range_checker<Traits,Pred6,Pred2,OverflowHandler> ToNegInf ;
+
+ typedef typename Float2IntRounder::round_style round_style ;
+
+ typedef typename for_round_style<round_style,ToZero,ToNearest,ToInf,ToNegInf>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler>
+ struct GetRC_Float2Float
+ {
+ typedef dummy_range_checker<Traits> Dummy ;
+
+ typedef LT_LoT<Traits> Pred1 ;
+ typedef GT_HiT<Traits> Pred2 ;
+
+ typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
+
+ typedef typename Traits::subranged subranged ;
+
+ typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler, class Float2IntRounder>
+ struct GetRC_BuiltIn2BuiltIn
+ {
+ typedef GetRC_Int2Int<Traits,OverflowHandler> Int2IntQ ;
+ typedef GetRC_Int2Float<Traits> Int2FloatQ ;
+ typedef GetRC_Float2Int<Traits,OverflowHandler,Float2IntRounder> Float2IntQ ;
+ typedef GetRC_Float2Float<Traits,OverflowHandler> Float2FloatQ ;
+
+ typedef typename Traits::int_float_mixture int_float_mixture ;
+
+ typedef typename for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ>::type selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+ template<class Traits, class OverflowHandler, class Float2IntRounder>
+ struct GetRC
+ {
+ typedef GetRC_BuiltIn2BuiltIn<Traits,OverflowHandler,Float2IntRounder> BuiltIn2BuiltInQ ;
+
+ typedef dummy_range_checker<Traits> Dummy ;
+
+ typedef mpl::identity<Dummy> DummyQ ;
+
+ typedef typename Traits::udt_builtin_mixture udt_builtin_mixture ;
+
+ typedef typename for_udt_builtin_mixture<udt_builtin_mixture,BuiltIn2BuiltInQ,DummyQ,DummyQ,DummyQ>::type selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+
+
+
+//--------------------------------------------------------------------------
+// Converter classes.
+//
+// The following classes are VISIBLE base classes of the user-level converter<> class.
+// They supply the optimized 'nearbyint()' and 'convert()' static member functions
+// visible in the user interface.
+//
+//--------------------------------------------------------------------------
+
+ //
+ // Trivial Converter : used when (cv-unqualified) T == (cv-unqualified) S
+ //
+ template<class Traits>
+ struct trivial_converter_impl : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
+ ,BOOST_DEDUCED_TYPENAME Traits::result_type
+ >
+ ,public dummy_range_checker<Traits>
+ {
+ typedef Traits traits ;
+
+ typedef typename Traits::source_type source_type ;
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ static result_type low_level_convert ( argument_type s ) { return s ; }
+ static source_type nearbyint ( argument_type s ) { return s ; }
+ static result_type convert ( argument_type s ) { return s ; }
+ } ;
+
+
+ //
+ // Rounding Converter : used for float to integral conversions.
+ //
+ template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
+ struct rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
+ ,BOOST_DEDUCED_TYPENAME Traits::result_type
+ >
+ ,public RangeChecker
+ ,public Float2IntRounder
+ ,public RawConverter
+ {
+ typedef RangeChecker RangeCheckerBase ;
+ typedef Float2IntRounder Float2IntRounderBase ;
+ typedef RawConverter RawConverterBase ;
+
+ typedef Traits traits ;
+
+ typedef typename Traits::source_type source_type ;
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ static result_type convert ( argument_type s )
+ {
+ RangeCheckerBase::validate_range(s);
+ source_type s1 = Float2IntRounderBase::nearbyint(s);
+ return RawConverterBase::low_level_convert(s1);
+ }
+ } ;
+
+
+ //
+ // Non-Rounding Converter : used for all other conversions.
+ //
+ template<class Traits,class RangeChecker,class RawConverter>
+ struct non_rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
+ ,BOOST_DEDUCED_TYPENAME Traits::result_type
+ >
+ ,public RangeChecker
+ ,public RawConverter
+ {
+ typedef RangeChecker RangeCheckerBase ;
+ typedef RawConverter RawConverterBase ;
+
+ typedef Traits traits ;
+
+ typedef typename Traits::source_type source_type ;
+ typedef typename Traits::argument_type argument_type ;
+ typedef typename Traits::result_type result_type ;
+
+ static source_type nearbyint ( argument_type s ) { return s ; }
+
+ static result_type convert ( argument_type s )
+ {
+ RangeCheckerBase::validate_range(s);
+ return RawConverterBase::low_level_convert(s);
+ }
+ } ;
+
+
+
+
+//--------------------------------------------------------------------------
+//
+// Selectors for the optimized Converter class.
+//
+//--------------------------------------------------------------------------
+
+ template<class Traits,class OverflowHandler,class Float2IntRounder,class RawConverter, class UserRangeChecker>
+ struct get_non_trivial_converter
+ {
+ typedef GetRC<Traits,OverflowHandler,Float2IntRounder> InternalRangeCheckerQ ;
+
+ typedef is_same<UserRangeChecker,UseInternalRangeChecker> use_internal_RC ;
+
+ typedef mpl::identity<UserRangeChecker> UserRangeCheckerQ ;
+
+ typedef typename
+ mpl::eval_if<use_internal_RC,InternalRangeCheckerQ,UserRangeCheckerQ>::type
+ RangeChecker ;
+
+ typedef non_rounding_converter<Traits,RangeChecker,RawConverter> NonRounding ;
+ typedef rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder> Rounding ;
+
+ typedef mpl::identity<NonRounding> NonRoundingQ ;
+ typedef mpl::identity<Rounding> RoundingQ ;
+
+ typedef typename Traits::int_float_mixture int_float_mixture ;
+
+ typedef typename
+ for_int_float_mixture<int_float_mixture, NonRoundingQ, NonRoundingQ, RoundingQ, NonRoundingQ>::type
+ selector ;
+
+ typedef typename selector::type type ;
+ } ;
+
+ template< class Traits
+ ,class OverflowHandler
+ ,class Float2IntRounder
+ ,class RawConverter
+ ,class UserRangeChecker
+ >
+ struct get_converter_impl
+ {
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x0561 ) )
+ // bcc55 prefers sometimes template parameters to be explicit local types.
+ // (notice that is is illegal to reuse the names like this)
+ typedef Traits Traits ;
+ typedef OverflowHandler OverflowHandler ;
+ typedef Float2IntRounder Float2IntRounder ;
+ typedef RawConverter RawConverter ;
+ typedef UserRangeChecker UserRangeChecker ;
+#endif
+
+ typedef trivial_converter_impl<Traits> Trivial ;
+ typedef mpl::identity <Trivial> TrivialQ ;
+
+ typedef get_non_trivial_converter< Traits
+ ,OverflowHandler
+ ,Float2IntRounder
+ ,RawConverter
+ ,UserRangeChecker
+ > NonTrivialQ ;
+
+ typedef typename Traits::trivial trivial ;
+
+ typedef typename mpl::eval_if<trivial,TrivialQ,NonTrivialQ>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/int_float_mixture.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/int_float_mixture.hpp
new file mode 100644
index 0000000..464e527
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/int_float_mixture.hpp
@@ -0,0 +1,72 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp"
+
+#include "boost/numeric/conversion/int_float_mixture_enum.hpp"
+#include "boost/numeric/conversion/detail/meta.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants for 'IntFloatMixture'
+ typedef mpl::integral_c<int_float_mixture_enum, integral_to_integral> int2int_c ;
+ typedef mpl::integral_c<int_float_mixture_enum, integral_to_float> int2float_c ;
+ typedef mpl::integral_c<int_float_mixture_enum, float_to_integral> float2int_c ;
+ typedef mpl::integral_c<int_float_mixture_enum, float_to_float> float2float_c ;
+
+ // Metafunction:
+ //
+ // get_int_float_mixture<T,S>::type
+ //
+ // Selects the appropriate Int-Float Mixture Integral Constant for the combination T,S.
+ //
+ template<class T,class S>
+ struct get_int_float_mixture
+ {
+ typedef mpl::bool_< ::std::numeric_limits<S>::is_integer > S_int ;
+ typedef mpl::bool_< ::std::numeric_limits<T>::is_integer > T_int ;
+
+ typedef typename
+ for_both<S_int, T_int, int2int_c, int2float_c, float2int_c, float2float_c>::type
+ type ;
+ } ;
+
+ // Metafunction:
+ //
+ // for_int_float_mixture<Mixture,int_int,int_float,float_int,float_float>::type
+ //
+ // {Mixture} is one of the Integral Constants for Mixture, declared above.
+ // {int_int,int_float,float_int,float_float} are aribtrary types. (not metafunctions)
+ //
+ // According to the value of 'IntFloatMixture', selects the corresponding type.
+ //
+ template<class IntFloatMixture, class Int2Int, class Int2Float, class Float2Int, class Float2Float>
+ struct for_int_float_mixture
+ {
+ typedef typename
+ ct_switch4<IntFloatMixture
+ ,int2int_c, int2float_c, float2int_c // default
+ ,Int2Int , Int2Float , Float2Int , Float2Float
+ >::type
+ type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/is_subranged.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/is_subranged.hpp
new file mode 100644
index 0000000..b5e7fe8
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/is_subranged.hpp
@@ -0,0 +1,234 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp"
+
+#include "boost/mpl/int.hpp"
+#include "boost/mpl/multiplies.hpp"
+#include "boost/mpl/less.hpp"
+#include "boost/mpl/equal_to.hpp"
+
+#include "boost/type_traits/is_same.hpp"
+
+#include "boost/numeric/conversion/detail/meta.hpp"
+#include "boost/numeric/conversion/detail/int_float_mixture.hpp"
+#include "boost/numeric/conversion/detail/sign_mixture.hpp"
+#include "boost/numeric/conversion/detail/udt_builtin_mixture.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ //---------------------------------------------------------------
+ // Implementations of the compile time predicate "T is subranged"
+ //---------------------------------------------------------------
+
+ // for integral to integral conversions
+ template<class T,class S>
+ struct subranged_Sig2Unsig
+ {
+ // Signed to unsigned conversions are 'subranged' because of possible loose
+ // of negative values.
+ typedef mpl::true_ type ;
+ } ;
+
+ // for unsigned integral to signed integral conversions
+ template<class T,class S>
+ struct subranged_Unsig2Sig
+ {
+ // IMPORTANT NOTE:
+ //
+ // This code assumes that signed/unsigned integral values are represented
+ // such that:
+ //
+ // numeric_limits<signed T>::digits + 1 == numeric_limits<unsigned T>::digits
+ //
+ // The '+1' is required since numeric_limits<>::digits gives 1 bit less for signed integral types.
+ //
+ // This fact is used by the following logic:
+ //
+ // if ( (numeric_limits<T>::digits+1) < (2*numeric_limits<S>::digits) )
+ // then the conversion is subranged.
+ //
+
+ typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
+ typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
+
+ // T is signed, so take digits+1
+ typedef typename T_digits::next u_T_digits ;
+
+ typedef mpl::int_<2> Two ;
+
+ typedef typename mpl::multiplies<S_digits,Two>::type S_digits_times_2 ;
+
+ typedef typename mpl::less<u_T_digits,S_digits_times_2>::type type ;
+ } ;
+
+ // for integral to integral conversions of the same sign.
+ template<class T,class S>
+ struct subranged_SameSign
+ {
+ // An integral conversion of the same sign is subranged if digits(T) < digits(S).
+
+ typedef mpl::int_< ::std::numeric_limits<S>::digits > S_digits ;
+ typedef mpl::int_< ::std::numeric_limits<T>::digits > T_digits ;
+
+ typedef typename mpl::less<T_digits,S_digits>::type type ;
+ } ;
+
+ // for integral to float conversions
+ template<class T,class S>
+ struct subranged_Int2Float
+ {
+ typedef mpl::false_ type ;
+ } ;
+
+ // for float to integral conversions
+ template<class T,class S>
+ struct subranged_Float2Int
+ {
+ typedef mpl::true_ type ;
+ } ;
+
+ // for float to float conversions
+ template<class T,class S>
+ struct subranged_Float2Float
+ {
+ // If both T and S are floats,
+ // compare exponent bits and if they match, mantisa bits.
+
+ typedef mpl::int_< ::std::numeric_limits<S>::digits > S_mantisa ;
+ typedef mpl::int_< ::std::numeric_limits<T>::digits > T_mantisa ;
+
+ typedef mpl::int_< ::std::numeric_limits<S>::max_exponent > S_exponent ;
+ typedef mpl::int_< ::std::numeric_limits<T>::max_exponent > T_exponent ;
+
+ typedef typename mpl::less<T_exponent,S_exponent>::type T_smaller_exponent ;
+
+ typedef typename mpl::equal_to<T_exponent,S_exponent>::type equal_exponents ;
+
+ typedef mpl::less<T_mantisa,S_mantisa> T_smaller_mantisa ;
+
+ typedef mpl::eval_if<equal_exponents,T_smaller_mantisa,mpl::false_> not_bigger_exponent_case ;
+
+ typedef typename
+ mpl::eval_if<T_smaller_exponent,mpl::true_,not_bigger_exponent_case>::type
+ type ;
+ } ;
+
+ // for Udt to built-in conversions
+ template<class T,class S>
+ struct subranged_Udt2BuiltIn
+ {
+ typedef mpl::true_ type ;
+ } ;
+
+ // for built-in to Udt conversions
+ template<class T,class S>
+ struct subranged_BuiltIn2Udt
+ {
+ typedef mpl::false_ type ;
+ } ;
+
+ // for Udt to Udt conversions
+ template<class T,class S>
+ struct subranged_Udt2Udt
+ {
+ typedef mpl::false_ type ;
+ } ;
+
+ //-------------------------------------------------------------------
+ // Selectors for the implementations of the subranged predicate
+ //-------------------------------------------------------------------
+
+ template<class T,class S>
+ struct get_subranged_Int2Int
+ {
+ typedef subranged_SameSign<T,S> Sig2Sig ;
+ typedef subranged_Sig2Unsig<T,S> Sig2Unsig ;
+ typedef subranged_Unsig2Sig<T,S> Unsig2Sig ;
+ typedef Sig2Sig Unsig2Unsig ;
+
+ typedef typename get_sign_mixture<T,S>::type sign_mixture ;
+
+ typedef typename
+ for_sign_mixture<sign_mixture, Sig2Sig, Sig2Unsig, Unsig2Sig, Unsig2Unsig>::type
+ type ;
+ } ;
+
+ template<class T,class S>
+ struct get_subranged_BuiltIn2BuiltIn
+ {
+ typedef get_subranged_Int2Int<T,S> Int2IntQ ;
+
+ typedef subranged_Int2Float <T,S> Int2Float ;
+ typedef subranged_Float2Int <T,S> Float2Int ;
+ typedef subranged_Float2Float<T,S> Float2Float ;
+
+ typedef mpl::identity<Int2Float > Int2FloatQ ;
+ typedef mpl::identity<Float2Int > Float2IntQ ;
+ typedef mpl::identity<Float2Float> Float2FloatQ ;
+
+ typedef typename get_int_float_mixture<T,S>::type int_float_mixture ;
+
+ typedef for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ> for_ ;
+
+ typedef typename for_::type selected ;
+
+ typedef typename selected::type type ;
+ } ;
+
+ template<class T,class S>
+ struct get_subranged
+ {
+ typedef get_subranged_BuiltIn2BuiltIn<T,S> BuiltIn2BuiltInQ ;
+
+ typedef subranged_BuiltIn2Udt<T,S> BuiltIn2Udt ;
+ typedef subranged_Udt2BuiltIn<T,S> Udt2BuiltIn ;
+ typedef subranged_Udt2Udt<T,S> Udt2Udt ;
+
+ typedef mpl::identity<BuiltIn2Udt> BuiltIn2UdtQ ;
+ typedef mpl::identity<Udt2BuiltIn> Udt2BuiltInQ ;
+ typedef mpl::identity<Udt2Udt > Udt2UdtQ ;
+
+ typedef typename get_udt_builtin_mixture<T,S>::type udt_builtin_mixture ;
+
+ typedef typename
+ for_udt_builtin_mixture<udt_builtin_mixture, BuiltIn2BuiltInQ, BuiltIn2UdtQ, Udt2BuiltInQ, Udt2UdtQ>::type
+ selected ;
+
+ typedef typename selected::type selected2 ;
+
+ typedef typename selected2::type type ;
+ } ;
+
+
+ //-------------------------------------------------------------------
+ // Top level implementation selector.
+ //-------------------------------------------------------------------
+ template<class T, class S>
+ struct get_is_subranged
+ {
+ typedef get_subranged<T,S> non_trivial_case ;
+ typedef mpl::identity<mpl::false_> trivial_case ;
+
+ typedef is_same<T,S> is_trivial ;
+
+ typedef typename mpl::if_<is_trivial,trivial_case,non_trivial_case>::type selected ;
+
+ typedef typename selected::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/meta.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/meta.hpp
new file mode 100644
index 0000000..246a1b4
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/meta.hpp
@@ -0,0 +1,120 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
+
+#include "boost/type_traits/remove_cv.hpp"
+
+#include "boost/mpl/if.hpp"
+#include "boost/mpl/eval_if.hpp"
+#include "boost/mpl/equal_to.hpp"
+#include "boost/mpl/not.hpp"
+#include "boost/mpl/and.hpp"
+#include "boost/mpl/bool.hpp"
+#include "boost/mpl/identity.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ template< class T1, class T2>
+ struct equal_to
+ {
+ #if !defined(__BORLANDC__)
+
+ enum { x = ( BOOST_MPL_AUX_VALUE_WKND(T1)::value == BOOST_MPL_AUX_VALUE_WKND(T2)::value ) };
+
+ BOOST_STATIC_CONSTANT(bool, value = x);
+
+ typedef mpl::bool_<value> type;
+
+ #else
+
+ BOOST_STATIC_CONSTANT(bool, value = (
+ BOOST_MPL_AUX_VALUE_WKND(T1)::value
+ == BOOST_MPL_AUX_VALUE_WKND(T2)::value
+ ));
+
+ typedef mpl::bool_<(
+ BOOST_MPL_AUX_VALUE_WKND(T1)::value
+ == BOOST_MPL_AUX_VALUE_WKND(T2)::value
+ )> type;
+ #endif
+ };
+
+// Metafunction:
+ //
+ // ct_switch4<Value,Case0Val,Case1Val,Case2Val,Case0Type,Case1Type,Case2Type,DefaultType>::type
+ //
+ // {Value,Case(X)Val} are Integral Constants (such as: mpl::int_<>)
+ // {Case(X)Type,DefaultType} are arbitrary types. (not metafunctions)
+ //
+ // Returns Case(X)Type if Val==Case(X)Val; DefaultType otherwise.
+ //
+ template<class Value,
+ class Case0Val,
+ class Case1Val,
+ class Case2Val,
+ class Case0Type,
+ class Case1Type,
+ class Case2Type,
+ class DefaultType
+ >
+ struct ct_switch4
+ {
+ typedef mpl::identity<Case0Type> Case0TypeQ ;
+ typedef mpl::identity<Case1Type> Case1TypeQ ;
+
+ typedef equal_to<Value,Case0Val> is_case0 ;
+ typedef equal_to<Value,Case1Val> is_case1 ;
+ typedef equal_to<Value,Case2Val> is_case2 ;
+
+ typedef mpl::if_<is_case2,Case2Type,DefaultType> choose_2_3Q ;
+ typedef mpl::eval_if<is_case1,Case1TypeQ,choose_2_3Q> choose_1_2_3Q ;
+
+ typedef typename
+ mpl::eval_if<is_case0,Case0TypeQ,choose_1_2_3Q>::type
+ type ;
+ } ;
+
+
+
+
+ // Metafunction:
+ //
+ // for_both<expr0,expr1,TT,TF,FT,FF>::type
+ //
+ // {exp0,expr1} are Boolean Integral Constants
+ // {TT,TF,FT,FF} are aribtrary types. (not metafunctions)
+ //
+ // According to the combined boolean value of 'expr0 && expr1', selects the corresponding type.
+ //
+ template<class expr0, class expr1, class TT, class TF, class FT, class FF>
+ struct for_both
+ {
+ typedef mpl::identity<TF> TF_Q ;
+ typedef mpl::identity<TT> TT_Q ;
+
+ typedef typename mpl::not_<expr0>::type not_expr0 ;
+ typedef typename mpl::not_<expr1>::type not_expr1 ;
+
+ typedef typename mpl::and_<expr0,expr1>::type caseTT ;
+ typedef typename mpl::and_<expr0,not_expr1>::type caseTF ;
+ typedef typename mpl::and_<not_expr0,expr1>::type caseFT ;
+
+ typedef mpl::if_<caseFT,FT,FF> choose_FT_FF_Q ;
+ typedef mpl::eval_if<caseTF,TF_Q,choose_FT_FF_Q> choose_TF_FT_FF_Q ;
+
+ typedef typename mpl::eval_if<caseTT,TT_Q,choose_TF_FT_FF_Q>::type type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/old_numeric_cast.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/old_numeric_cast.hpp
new file mode 100644
index 0000000..47b86d2
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/old_numeric_cast.hpp
@@ -0,0 +1,339 @@
+// boost cast.hpp header file ----------------------------------------------//
+
+// (C) Copyright Kevlin Henney and Dave Abrahams 1999.
+// Distributed under the 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/conversion for Documentation.
+
+// Revision History
+// 23 JUN 05 Code extracted from /boost/cast.hpp into this new header.
+// Keeps this legacy version of numeric_cast<> for old compilers
+// wich can't compile the new version in /boost/numeric/conversion/cast.hpp
+// (Fernando Cacciola)
+// 02 Apr 01 Removed BOOST_NO_LIMITS workarounds and included
+// <boost/limits.hpp> instead (the workaround did not
+// actually compile when BOOST_NO_LIMITS was defined in
+// any case, so we loose nothing). (John Maddock)
+// 21 Jan 01 Undid a bug I introduced yesterday. numeric_cast<> never
+// worked with stock GCC; trying to get it to do that broke
+// vc-stlport.
+// 20 Jan 01 Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp.
+// Removed unused BOOST_EXPLICIT_TARGET macro. Moved
+// boost::detail::type to boost/type.hpp. Made it compile with
+// stock gcc again (Dave Abrahams)
+// 29 Nov 00 Remove nested namespace cast, cleanup spacing before Formal
+// Review (Beman Dawes)
+// 19 Oct 00 Fix numeric_cast for floating-point types (Dave Abrahams)
+// 15 Jul 00 Suppress numeric_cast warnings for GCC, Borland and MSVC
+// (Dave Abrahams)
+// 30 Jun 00 More MSVC6 wordarounds. See comments below. (Dave Abrahams)
+// 28 Jun 00 Removed implicit_cast<>. See comment below. (Beman Dawes)
+// 27 Jun 00 More MSVC6 workarounds
+// 15 Jun 00 Add workarounds for MSVC6
+// 2 Feb 00 Remove bad_numeric_cast ";" syntax error (Doncho Angelov)
+// 26 Jan 00 Add missing throw() to bad_numeric_cast::what(0 (Adam Levar)
+// 29 Dec 99 Change using declarations so usages in other namespaces work
+// correctly (Dave Abrahams)
+// 23 Sep 99 Change polymorphic_downcast assert to also detect M.I. errors
+// as suggested Darin Adler and improved by Valentin Bonnard.
+// 2 Sep 99 Remove controversial asserts, simplify, rename.
+// 30 Aug 99 Move to cast.hpp, replace value_cast with numeric_cast,
+// place in nested namespace.
+// 3 Aug 99 Initial version
+
+#ifndef BOOST_OLD_NUMERIC_CAST_HPP
+#define BOOST_OLD_NUMERIC_CAST_HPP
+
+# include <boost/config.hpp>
+# include <cassert>
+# include <typeinfo>
+# include <boost/type.hpp>
+# include <boost/limits.hpp>
+# include <boost/numeric/conversion/converter_policies.hpp>
+
+// It has been demonstrated numerous times that MSVC 6.0 fails silently at link
+// time if you use a template function which has template parameters that don't
+// appear in the function's argument list.
+//
+// TODO: Add this to config.hpp?
+// FLC: This macro is repeated in boost/cast.hpp but only locally (is undefined at the bottom)
+// so is OK to reproduce it here.
+# if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+# define BOOST_EXPLICIT_DEFAULT_TARGET , ::boost::type<Target>* = 0
+# else
+# define BOOST_EXPLICIT_DEFAULT_TARGET
+# endif
+
+namespace boost
+{
+ using numeric::bad_numeric_cast;
+
+// LEGACY numeric_cast [only for some old broken compilers] --------------------------------------//
+
+// Contributed by Kevlin Henney
+
+// numeric_cast ------------------------------------------------------------//
+
+#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(BOOST_SGI_CPP_LIMITS)
+
+ namespace detail
+ {
+ template <class T>
+ struct signed_numeric_limits : std::numeric_limits<T>
+ {
+ static inline T min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ return (std::numeric_limits<T>::min)() >= 0
+ // unary minus causes integral promotion, thus the static_cast<>
+ ? static_cast<T>(-(std::numeric_limits<T>::max)())
+ : (std::numeric_limits<T>::min)();
+ };
+ };
+
+ // Move to namespace boost in utility.hpp?
+ template <class T, bool specialized>
+ struct fixed_numeric_limits_base
+ : public if_true< std::numeric_limits<T>::is_signed >
+ ::BOOST_NESTED_TEMPLATE then< signed_numeric_limits<T>,
+ std::numeric_limits<T>
+ >::type
+ {};
+
+ template <class T>
+ struct fixed_numeric_limits
+ : fixed_numeric_limits_base<T,(std::numeric_limits<T>::is_specialized)>
+ {};
+
+# ifdef BOOST_HAS_LONG_LONG
+ // cover implementations which supply no specialization for long
+ // long / unsigned long long. Not intended to be full
+ // numeric_limits replacements, but good enough for numeric_cast<>
+ template <>
+ struct fixed_numeric_limits_base< ::boost::long_long_type, false>
+ {
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+ BOOST_STATIC_CONSTANT(bool, is_signed = true);
+ static ::boost::long_long_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+# ifdef LONGLONG_MAX
+ return LONGLONG_MAX;
+# else
+ return 9223372036854775807LL; // hope this is portable
+# endif
+ }
+
+ static ::boost::long_long_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+# ifdef LONGLONG_MIN
+ return LONGLONG_MIN;
+# else
+ return -( 9223372036854775807LL )-1; // hope this is portable
+# endif
+ }
+ };
+
+ template <>
+ struct fixed_numeric_limits_base< ::boost::ulong_long_type, false>
+ {
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+ BOOST_STATIC_CONSTANT(bool, is_signed = false);
+ static ::boost::ulong_long_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+# ifdef ULONGLONG_MAX
+ return ULONGLONG_MAX;
+# else
+ return 0xffffffffffffffffULL; // hope this is portable
+# endif
+ }
+
+ static ::boost::ulong_long_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+ };
+# endif
+ } // namespace detail
+
+// less_than_type_min -
+ // x_is_signed should be numeric_limits<X>::is_signed
+ // y_is_signed should be numeric_limits<Y>::is_signed
+ // y_min should be numeric_limits<Y>::min()
+ //
+ // check(x, y_min) returns true iff x < y_min without invoking comparisons
+ // between signed and unsigned values.
+ //
+ // "poor man's partial specialization" is in use here.
+ template <bool x_is_signed, bool y_is_signed>
+ struct less_than_type_min
+ {
+ template <class X, class Y>
+ static bool check(X x, Y y_min)
+ { return x < y_min; }
+ };
+
+ template <>
+ struct less_than_type_min<false, true>
+ {
+ template <class X, class Y>
+ static bool check(X, Y)
+ { return false; }
+ };
+
+ template <>
+ struct less_than_type_min<true, false>
+ {
+ template <class X, class Y>
+ static bool check(X x, Y)
+ { return x < 0; }
+ };
+
+ // greater_than_type_max -
+ // same_sign should be:
+ // numeric_limits<X>::is_signed == numeric_limits<Y>::is_signed
+ // y_max should be numeric_limits<Y>::max()
+ //
+ // check(x, y_max) returns true iff x > y_max without invoking comparisons
+ // between signed and unsigned values.
+ //
+ // "poor man's partial specialization" is in use here.
+ template <bool same_sign, bool x_is_signed>
+ struct greater_than_type_max;
+
+ template<>
+ struct greater_than_type_max<true, true>
+ {
+ template <class X, class Y>
+ static inline bool check(X x, Y y_max)
+ { return x > y_max; }
+ };
+
+ template <>
+ struct greater_than_type_max<false, true>
+ {
+ // What does the standard say about this? I think it's right, and it
+ // will work with every compiler I know of.
+ template <class X, class Y>
+ static inline bool check(X x, Y)
+ { return x >= 0 && static_cast<X>(static_cast<Y>(x)) != x; }
+
+# if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+ // MSVC6 can't static_cast unsigned __int64 -> floating types
+# define BOOST_UINT64_CAST(src_type) \
+ static inline bool check(src_type x, unsigned __int64) \
+ { \
+ if (x < 0) return false; \
+ unsigned __int64 y = static_cast<unsigned __int64>(x); \
+ bool odd = y & 0x1; \
+ __int64 div2 = static_cast<__int64>(y >> 1); \
+ return ((static_cast<src_type>(div2) * 2.0) + odd) != x; \
+ }
+
+ BOOST_UINT64_CAST(long double);
+ BOOST_UINT64_CAST(double);
+ BOOST_UINT64_CAST(float);
+# undef BOOST_UINT64_CAST
+# endif
+ };
+
+ template<>
+ struct greater_than_type_max<true, false>
+ {
+ template <class X, class Y>
+ static inline bool check(X x, Y y_max)
+ { return x > y_max; }
+ };
+
+ template <>
+ struct greater_than_type_max<false, false>
+ {
+ // What does the standard say about this? I think it's right, and it
+ // will work with every compiler I know of.
+ template <class X, class Y>
+ static inline bool check(X x, Y)
+ { return static_cast<X>(static_cast<Y>(x)) != x; }
+ };
+
+#else // use #pragma hacks if available
+
+ namespace detail
+ {
+# if BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4018)
+# pragma warning(disable : 4146)
+#elif defined(__BORLANDC__)
+# pragma option push -w-8041
+# endif
+
+ // Move to namespace boost in utility.hpp?
+ template <class T>
+ struct fixed_numeric_limits : public std::numeric_limits<T>
+ {
+ static inline T min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+ {
+ return std::numeric_limits<T>::is_signed && (std::numeric_limits<T>::min)() >= 0
+ ? T(-(std::numeric_limits<T>::max)()) : (std::numeric_limits<T>::min)();
+ }
+ };
+
+# if BOOST_MSVC
+# pragma warning(pop)
+#elif defined(__BORLANDC__)
+# pragma option pop
+# endif
+ } // namespace detail
+
+#endif
+
+ template<typename Target, typename Source>
+ inline Target numeric_cast(Source arg BOOST_EXPLICIT_DEFAULT_TARGET)
+ {
+ // typedefs abbreviating respective trait classes
+ typedef detail::fixed_numeric_limits<Source> arg_traits;
+ typedef detail::fixed_numeric_limits<Target> result_traits;
+
+#if defined(BOOST_STRICT_CONFIG) \
+ || (!defined(__HP_aCC) || __HP_aCC > 33900) \
+ && (!defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) \
+ || defined(BOOST_SGI_CPP_LIMITS))
+ // typedefs that act as compile time assertions
+ // (to be replaced by boost compile time assertions
+ // as and when they become available and are stable)
+ typedef bool argument_must_be_numeric[arg_traits::is_specialized];
+ typedef bool result_must_be_numeric[result_traits::is_specialized];
+
+ const bool arg_is_signed = arg_traits::is_signed;
+ const bool result_is_signed = result_traits::is_signed;
+ const bool same_sign = arg_is_signed == result_is_signed;
+
+ if (less_than_type_min<arg_is_signed, result_is_signed>::check(arg, (result_traits::min)())
+ || greater_than_type_max<same_sign, arg_is_signed>::check(arg, (result_traits::max)())
+ )
+
+#else // We need to use #pragma hacks if available
+
+# if BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4018)
+#elif defined(__BORLANDC__)
+#pragma option push -w-8012
+# endif
+ if ((arg < 0 && !result_traits::is_signed) // loss of negative range
+ || (arg_traits::is_signed && arg < (result_traits::min)()) // underflow
+ || arg > (result_traits::max)()) // overflow
+# if BOOST_MSVC
+# pragma warning(pop)
+#elif defined(__BORLANDC__)
+#pragma option pop
+# endif
+#endif
+ {
+ throw bad_numeric_cast();
+ }
+ return static_cast<Target>(arg);
+ } // numeric_cast
+
+# undef BOOST_EXPLICIT_DEFAULT_TARGET
+
+} // namespace boost
+
+#endif // BOOST_OLD_NUMERIC_CAST_HPP
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/sign_mixture.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/sign_mixture.hpp
new file mode 100644
index 0000000..c7f9e42
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/sign_mixture.hpp
@@ -0,0 +1,72 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
+
+#include "boost/config.hpp"
+#include "boost/limits.hpp"
+
+#include "boost/numeric/conversion/sign_mixture_enum.hpp"
+#include "boost/numeric/conversion/detail/meta.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants for 'SignMixture'
+ typedef mpl::integral_c<sign_mixture_enum, unsigned_to_unsigned> unsig2unsig_c ;
+ typedef mpl::integral_c<sign_mixture_enum, signed_to_signed> sig2sig_c ;
+ typedef mpl::integral_c<sign_mixture_enum, signed_to_unsigned> sig2unsig_c ;
+ typedef mpl::integral_c<sign_mixture_enum, unsigned_to_signed> unsig2sig_c ;
+
+ // Metafunction:
+ //
+ // get_sign_mixture<T,S>::type
+ //
+ // Selects the appropriate SignMixture Integral Constant for the combination T,S.
+ //
+ template<class T,class S>
+ struct get_sign_mixture
+ {
+ typedef mpl::bool_< ::std::numeric_limits<S>::is_signed > S_signed ;
+ typedef mpl::bool_< ::std::numeric_limits<T>::is_signed > T_signed ;
+
+ typedef typename
+ for_both<S_signed, T_signed, sig2sig_c, sig2unsig_c, unsig2sig_c, unsig2unsig_c>::type
+ type ;
+ } ;
+
+ // Metafunction:
+ //
+ // for_sign_mixture<SignMixture,Sig2Sig,Sig2Unsig,Unsig2Sig,Unsig2Unsig>::type
+ //
+ // {SignMixture} is one of the Integral Constants for SignMixture, declared above.
+ // {Sig2Sig,Sig2Unsig,Unsig2Sig,Unsig2Unsig} are aribtrary types. (not metafunctions)
+ //
+ // According to the value of 'SignMixture', selects the corresponding type.
+ //
+ template<class SignMixture, class Sig2Sig, class Sig2Unsig, class Unsig2Sig, class Unsig2Unsig>
+ struct for_sign_mixture
+ {
+ typedef typename
+ ct_switch4<SignMixture
+ , sig2sig_c, sig2unsig_c, unsig2sig_c // default
+ , Sig2Sig , Sig2Unsig , Unsig2Sig , Unsig2Unsig
+ >::type
+ type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp b/3rdParty/Boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp
new file mode 100644
index 0000000..36dbc49
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/detail/udt_builtin_mixture.hpp
@@ -0,0 +1,69 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
+
+#include "boost/type_traits/is_arithmetic.hpp"
+
+#include "boost/numeric/conversion/udt_builtin_mixture_enum.hpp"
+#include "boost/numeric/conversion/detail/meta.hpp"
+
+#include "boost/mpl/integral_c.hpp"
+
+namespace boost { namespace numeric { namespace convdetail
+{
+ // Integral Constants for 'UdtMixture'
+ typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_builtin> builtin2builtin_c ;
+ typedef mpl::integral_c<udt_builtin_mixture_enum, builtin_to_udt> builtin2udt_c ;
+ typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_builtin> udt2builtin_c ;
+ typedef mpl::integral_c<udt_builtin_mixture_enum, udt_to_udt> udt2udt_c ;
+
+ // Metafunction:
+ //
+ // for_udt_mixture<UdtMixture,BuiltIn2BuiltIn,BuiltIn2Udt,Udt2BuiltIn,Udt2Udt>::type
+ //
+ // {UdtMixture} is one of the Integral Constants for UdMixture, declared above.
+ // {BuiltIn2BuiltIn,BuiltIn2Udt,Udt2BuiltIn,Udt2Udt} are aribtrary types. (not metafunctions)
+ //
+ // According to the value of 'UdtMixture', selects the corresponding type.
+ //
+ template<class UdtMixture, class BuiltIn2BuiltIn, class BuiltIn2Udt, class Udt2BuiltIn, class Udt2Udt>
+ struct for_udt_builtin_mixture
+ {
+ typedef typename
+ ct_switch4<UdtMixture
+ , builtin2builtin_c, builtin2udt_c, udt2builtin_c // default
+ , BuiltIn2BuiltIn , BuiltIn2Udt , Udt2BuiltIn , Udt2Udt
+ >::type
+ type ;
+ } ;
+
+ // Metafunction:
+ //
+ // get_udt_mixture<T,S>::type
+ //
+ // Selects the appropriate UdtMixture Integral Constant for the combination T,S.
+ //
+ template<class T,class S>
+ struct get_udt_builtin_mixture
+ {
+ typedef is_arithmetic<S> S_builtin ;
+ typedef is_arithmetic<T> T_builtin ;
+
+ typedef typename
+ for_both<S_builtin, T_builtin, builtin2builtin_c, builtin2udt_c, udt2builtin_c, udt2udt_c>::type
+ type ;
+ } ;
+
+} } } // namespace boost::numeric::convdetail
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/int_float_mixture_enum.hpp b/3rdParty/Boost/boost/numeric/conversion/int_float_mixture_enum.hpp
new file mode 100644
index 0000000..d0c2daa
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/int_float_mixture_enum.hpp
@@ -0,0 +1,29 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
+
+namespace boost { namespace numeric
+{
+ enum int_float_mixture_enum
+ {
+ integral_to_integral
+ ,integral_to_float
+ ,float_to_integral
+ ,float_to_float
+ } ;
+
+} } // namespace boost::numeric
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/sign_mixture_enum.hpp b/3rdParty/Boost/boost/numeric/conversion/sign_mixture_enum.hpp
new file mode 100644
index 0000000..1525f8d
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/sign_mixture_enum.hpp
@@ -0,0 +1,29 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+
+namespace boost { namespace numeric
+{
+ enum sign_mixture_enum
+ {
+ unsigned_to_unsigned
+ ,signed_to_signed
+ ,signed_to_unsigned
+ ,unsigned_to_signed
+ } ;
+
+} } // namespace boost::numeric
+
+#endif
+//
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/3rdParty/Boost/boost/numeric/conversion/udt_builtin_mixture_enum.hpp b/3rdParty/Boost/boost/numeric/conversion/udt_builtin_mixture_enum.hpp
new file mode 100644
index 0000000..2540e80
--- /dev/null
+++ b/3rdParty/Boost/boost/numeric/conversion/udt_builtin_mixture_enum.hpp
@@ -0,0 +1,26 @@
+// (c) Copyright Fernando Luis Cacciola Carballal 2000-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/numeric/conversion
+//
+// Contact the author at: fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+
+namespace boost { namespace numeric
+{
+ enum udt_builtin_mixture_enum
+ {
+ builtin_to_builtin
+ ,builtin_to_udt
+ ,udt_to_builtin
+ ,udt_to_udt
+ } ;
+
+} } // namespace boost::numeric
+
+#endif
+
diff --git a/3rdParty/Boost/boost/operators.hpp b/3rdParty/Boost/boost/operators.hpp
new file mode 100644
index 0000000..b3b1bd7
--- /dev/null
+++ b/3rdParty/Boost/boost/operators.hpp
@@ -0,0 +1,943 @@
+// Boost operators.hpp header file ----------------------------------------//
+
+// (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/utility/operators.htm for documentation.
+
+// Revision History
+// 24 May 07 Changed empty_base to depend on T, see
+// http://svn.boost.org/trac/boost/ticket/979
+// 21 Oct 02 Modified implementation of operators to allow compilers with a
+// correct named return value optimization (NRVO) to produce optimal
+// code. (Daniel Frey)
+// 02 Dec 01 Bug fixed in random_access_iteratable. (Helmut Zeisel)
+// 28 Sep 01 Factored out iterator operator groups. (Daryle Walker)
+// 27 Aug 01 'left' form for non commutative operators added;
+// additional classes for groups of related operators added;
+// workaround for empty base class optimization
+// bug of GCC 3.0 (Helmut Zeisel)
+// 25 Jun 01 output_iterator_helper changes: removed default template
+// parameters, added support for self-proxying, additional
+// documentation and tests (Aleksey Gurtovoy)
+// 29 May 01 Added operator classes for << and >>. Added input and output
+// iterator helper classes. Added classes to connect equality and
+// relational operators. Added classes for groups of related
+// operators. Reimplemented example operator and iterator helper
+// classes in terms of the new groups. (Daryle Walker, with help
+// from Alexy Gurtovoy)
+// 11 Feb 01 Fixed bugs in the iterator helpers which prevented explicitly
+// supplied arguments from actually being used (Dave Abrahams)
+// 04 Jul 00 Fixed NO_OPERATORS_IN_NAMESPACE bugs, major cleanup and
+// refactoring of compiler workarounds, additional documentation
+// (Alexy Gurtovoy and Mark Rodgers with some help and prompting from
+// Dave Abrahams)
+// 28 Jun 00 General cleanup and integration of bugfixes from Mark Rodgers and
+// Jeremy Siek (Dave Abrahams)
+// 20 Jun 00 Changes to accommodate Borland C++Builder 4 and Borland C++ 5.5
+// (Mark Rodgers)
+// 20 Jun 00 Minor fixes to the prior revision (Aleksey Gurtovoy)
+// 10 Jun 00 Support for the base class chaining technique was added
+// (Aleksey Gurtovoy). See documentation and the comments below
+// for the details.
+// 12 Dec 99 Initial version with iterator operators (Jeremy Siek)
+// 18 Nov 99 Change name "divideable" to "dividable", remove unnecessary
+// specializations of dividable, subtractable, modable (Ed Brey)
+// 17 Nov 99 Add comments (Beman Dawes)
+// Remove unnecessary specialization of operators<> (Ed Brey)
+// 15 Nov 99 Fix less_than_comparable<T,U> second operand type for first two
+// operators.(Beman Dawes)
+// 12 Nov 99 Add operators templates (Ed Brey)
+// 11 Nov 99 Add single template parameter version for compilers without
+// partial specialization (Beman Dawes)
+// 10 Nov 99 Initial version
+
+// 10 Jun 00:
+// An additional optional template parameter was added to most of
+// operator templates to support the base class chaining technique (see
+// documentation for the details). Unfortunately, a straightforward
+// implementation of this change would have broken compatibility with the
+// previous version of the library by making it impossible to use the same
+// template name (e.g. 'addable') for both the 1- and 2-argument versions of
+// an operator template. This implementation solves the backward-compatibility
+// issue at the cost of some simplicity.
+//
+// One of the complications is an existence of special auxiliary class template
+// 'is_chained_base<>' (see 'detail' namespace below), which is used
+// to determine whether its template parameter is a library's operator template
+// or not. You have to specialize 'is_chained_base<>' for each new
+// operator template you add to the library.
+//
+// However, most of the non-trivial implementation details are hidden behind
+// several local macros defined below, and as soon as you understand them,
+// you understand the whole library implementation.
+
+#ifndef BOOST_OPERATORS_HPP
+#define BOOST_OPERATORS_HPP
+
+#include <boost/config.hpp>
+#include <boost/iterator.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if defined(__sgi) && !defined(__GNUC__)
+# pragma set woff 1234
+#endif
+
+#if defined(BOOST_MSVC)
+# pragma warning( disable : 4284 ) // complaint about return type of
+#endif // operator-> not begin a UDT
+
+namespace boost {
+namespace detail {
+
+template <typename T> class empty_base {
+
+// Helmut Zeisel, empty base class optimization bug with GCC 3.0.0
+#if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==0 && __GNU_PATCHLEVEL__==0
+ bool dummy;
+#endif
+
+};
+
+} // namespace detail
+} // namespace boost
+
+// In this section we supply the xxxx1 and xxxx2 forms of the operator
+// templates, which are explicitly targeted at the 1-type-argument and
+// 2-type-argument operator forms, respectively. Some compilers get confused
+// when inline friend functions are overloaded in namespaces other than the
+// global namespace. When BOOST_NO_OPERATORS_IN_NAMESPACE is defined, all of
+// these templates must go in the global namespace.
+
+#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+namespace boost
+{
+#endif
+
+// Basic operator classes (contributed by Dave Abrahams) ------------------//
+
+// Note that friend functions defined in a class are implicitly inline.
+// See the C++ std, 11.4 [class.friend] paragraph 5
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct less_than_comparable2 : B
+{
+ friend bool operator<=(const T& x, const U& y) { return !(x > y); }
+ friend bool operator>=(const T& x, const U& y) { return !(x < y); }
+ friend bool operator>(const U& x, const T& y) { return y < x; }
+ friend bool operator<(const U& x, const T& y) { return y > x; }
+ friend bool operator<=(const U& x, const T& y) { return !(y < x); }
+ friend bool operator>=(const U& x, const T& y) { return !(y > x); }
+};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct less_than_comparable1 : B
+{
+ friend bool operator>(const T& x, const T& y) { return y < x; }
+ friend bool operator<=(const T& x, const T& y) { return !(y < x); }
+ friend bool operator>=(const T& x, const T& y) { return !(x < y); }
+};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct equality_comparable2 : B
+{
+ friend bool operator==(const U& y, const T& x) { return x == y; }
+ friend bool operator!=(const U& y, const T& x) { return !(x == y); }
+ friend bool operator!=(const T& y, const U& x) { return !(y == x); }
+};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct equality_comparable1 : B
+{
+ friend bool operator!=(const T& x, const T& y) { return !(x == y); }
+};
+
+// A macro which produces "name_2left" from "name".
+#define BOOST_OPERATOR2_LEFT(name) name##2##_##left
+
+// NRVO-friendly implementation (contributed by Daniel Frey) ---------------//
+
+#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
+
+// This is the optimal implementation for ISO/ANSI C++,
+// but it requires the compiler to implement the NRVO.
+// If the compiler has no NRVO, this is the best symmetric
+// implementation available.
+
+#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP ) \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct NAME##2 : B \
+{ \
+ friend T operator OP( const T& lhs, const U& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+ friend T operator OP( const U& lhs, const T& rhs ) \
+ { T nrv( rhs ); nrv OP##= lhs; return nrv; } \
+}; \
+ \
+template <class T, class B = ::boost::detail::empty_base<T> > \
+struct NAME##1 : B \
+{ \
+ friend T operator OP( const T& lhs, const T& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+};
+
+#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP ) \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct NAME##2 : B \
+{ \
+ friend T operator OP( const T& lhs, const U& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+}; \
+ \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct BOOST_OPERATOR2_LEFT(NAME) : B \
+{ \
+ friend T operator OP( const U& lhs, const T& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+}; \
+ \
+template <class T, class B = ::boost::detail::empty_base<T> > \
+struct NAME##1 : B \
+{ \
+ friend T operator OP( const T& lhs, const T& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+};
+
+#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
+
+// For compilers without NRVO the following code is optimal, but not
+// symmetric! Note that the implementation of
+// BOOST_OPERATOR2_LEFT(NAME) only looks cool, but doesn't provide
+// optimization opportunities to the compiler :)
+
+#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP ) \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct NAME##2 : B \
+{ \
+ friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
+ friend T operator OP( const U& lhs, T rhs ) { return rhs OP##= lhs; } \
+}; \
+ \
+template <class T, class B = ::boost::detail::empty_base<T> > \
+struct NAME##1 : B \
+{ \
+ friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
+};
+
+#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP ) \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct NAME##2 : B \
+{ \
+ friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
+}; \
+ \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct BOOST_OPERATOR2_LEFT(NAME) : B \
+{ \
+ friend T operator OP( const U& lhs, const T& rhs ) \
+ { return T( lhs ) OP##= rhs; } \
+}; \
+ \
+template <class T, class B = ::boost::detail::empty_base<T> > \
+struct NAME##1 : B \
+{ \
+ friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
+};
+
+#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
+
+BOOST_BINARY_OPERATOR_COMMUTATIVE( multipliable, * )
+BOOST_BINARY_OPERATOR_COMMUTATIVE( addable, + )
+BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( subtractable, - )
+BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( dividable, / )
+BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( modable, % )
+BOOST_BINARY_OPERATOR_COMMUTATIVE( xorable, ^ )
+BOOST_BINARY_OPERATOR_COMMUTATIVE( andable, & )
+BOOST_BINARY_OPERATOR_COMMUTATIVE( orable, | )
+
+#undef BOOST_BINARY_OPERATOR_COMMUTATIVE
+#undef BOOST_BINARY_OPERATOR_NON_COMMUTATIVE
+#undef BOOST_OPERATOR2_LEFT
+
+// incrementable and decrementable contributed by Jeremy Siek
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct incrementable : B
+{
+ friend T operator++(T& x, int)
+ {
+ incrementable_type nrv(x);
+ ++x;
+ return nrv;
+ }
+private: // The use of this typedef works around a Borland bug
+ typedef T incrementable_type;
+};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct decrementable : B
+{
+ friend T operator--(T& x, int)
+ {
+ decrementable_type nrv(x);
+ --x;
+ return nrv;
+ }
+private: // The use of this typedef works around a Borland bug
+ typedef T decrementable_type;
+};
+
+// Iterator operator classes (contributed by Jeremy Siek) ------------------//
+
+template <class T, class P, class B = ::boost::detail::empty_base<T> >
+struct dereferenceable : B
+{
+ P operator->() const
+ {
+ return &*static_cast<const T&>(*this);
+ }
+};
+
+template <class T, class I, class R, class B = ::boost::detail::empty_base<T> >
+struct indexable : B
+{
+ R operator[](I n) const
+ {
+ return *(static_cast<const T&>(*this) + n);
+ }
+};
+
+// More operator classes (contributed by Daryle Walker) --------------------//
+// (NRVO-friendly implementation contributed by Daniel Frey) ---------------//
+
+#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
+
+#define BOOST_BINARY_OPERATOR( NAME, OP ) \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct NAME##2 : B \
+{ \
+ friend T operator OP( const T& lhs, const U& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+}; \
+ \
+template <class T, class B = ::boost::detail::empty_base<T> > \
+struct NAME##1 : B \
+{ \
+ friend T operator OP( const T& lhs, const T& rhs ) \
+ { T nrv( lhs ); nrv OP##= rhs; return nrv; } \
+};
+
+#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
+
+#define BOOST_BINARY_OPERATOR( NAME, OP ) \
+template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+struct NAME##2 : B \
+{ \
+ friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
+}; \
+ \
+template <class T, class B = ::boost::detail::empty_base<T> > \
+struct NAME##1 : B \
+{ \
+ friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
+};
+
+#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
+
+BOOST_BINARY_OPERATOR( left_shiftable, << )
+BOOST_BINARY_OPERATOR( right_shiftable, >> )
+
+#undef BOOST_BINARY_OPERATOR
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct equivalent2 : B
+{
+ friend bool operator==(const T& x, const U& y)
+ {
+ return !(x < y) && !(x > y);
+ }
+};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct equivalent1 : B
+{
+ friend bool operator==(const T&x, const T&y)
+ {
+ return !(x < y) && !(y < x);
+ }
+};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct partially_ordered2 : B
+{
+ friend bool operator<=(const T& x, const U& y)
+ { return (x < y) || (x == y); }
+ friend bool operator>=(const T& x, const U& y)
+ { return (x > y) || (x == y); }
+ friend bool operator>(const U& x, const T& y)
+ { return y < x; }
+ friend bool operator<(const U& x, const T& y)
+ { return y > x; }
+ friend bool operator<=(const U& x, const T& y)
+ { return (y > x) || (y == x); }
+ friend bool operator>=(const U& x, const T& y)
+ { return (y < x) || (y == x); }
+};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct partially_ordered1 : B
+{
+ friend bool operator>(const T& x, const T& y)
+ { return y < x; }
+ friend bool operator<=(const T& x, const T& y)
+ { return (x < y) || (x == y); }
+ friend bool operator>=(const T& x, const T& y)
+ { return (y < x) || (x == y); }
+};
+
+// Combined operator classes (contributed by Daryle Walker) ----------------//
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct totally_ordered2
+ : less_than_comparable2<T, U
+ , equality_comparable2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct totally_ordered1
+ : less_than_comparable1<T
+ , equality_comparable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct additive2
+ : addable2<T, U
+ , subtractable2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct additive1
+ : addable1<T
+ , subtractable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct multiplicative2
+ : multipliable2<T, U
+ , dividable2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct multiplicative1
+ : multipliable1<T
+ , dividable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct integer_multiplicative2
+ : multiplicative2<T, U
+ , modable2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct integer_multiplicative1
+ : multiplicative1<T
+ , modable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct arithmetic2
+ : additive2<T, U
+ , multiplicative2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct arithmetic1
+ : additive1<T
+ , multiplicative1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct integer_arithmetic2
+ : additive2<T, U
+ , integer_multiplicative2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct integer_arithmetic1
+ : additive1<T
+ , integer_multiplicative1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct bitwise2
+ : xorable2<T, U
+ , andable2<T, U
+ , orable2<T, U, B
+ > > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct bitwise1
+ : xorable1<T
+ , andable1<T
+ , orable1<T, B
+ > > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct unit_steppable
+ : incrementable<T
+ , decrementable<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct shiftable2
+ : left_shiftable2<T, U
+ , right_shiftable2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct shiftable1
+ : left_shiftable1<T
+ , right_shiftable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct ring_operators2
+ : additive2<T, U
+ , subtractable2_left<T, U
+ , multipliable2<T, U, B
+ > > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct ring_operators1
+ : additive1<T
+ , multipliable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct ordered_ring_operators2
+ : ring_operators2<T, U
+ , totally_ordered2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct ordered_ring_operators1
+ : ring_operators1<T
+ , totally_ordered1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct field_operators2
+ : ring_operators2<T, U
+ , dividable2<T, U
+ , dividable2_left<T, U, B
+ > > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct field_operators1
+ : ring_operators1<T
+ , dividable1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct ordered_field_operators2
+ : field_operators2<T, U
+ , totally_ordered2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct ordered_field_operators1
+ : field_operators1<T
+ , totally_ordered1<T, B
+ > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct euclidian_ring_operators2
+ : ring_operators2<T, U
+ , dividable2<T, U
+ , dividable2_left<T, U
+ , modable2<T, U
+ , modable2_left<T, U, B
+ > > > > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct euclidian_ring_operators1
+ : ring_operators1<T
+ , dividable1<T
+ , modable1<T, B
+ > > > {};
+
+template <class T, class U, class B = ::boost::detail::empty_base<T> >
+struct ordered_euclidian_ring_operators2
+ : totally_ordered2<T, U
+ , euclidian_ring_operators2<T, U, B
+ > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct ordered_euclidian_ring_operators1
+ : totally_ordered1<T
+ , euclidian_ring_operators1<T, B
+ > > {};
+
+template <class T, class P, class B = ::boost::detail::empty_base<T> >
+struct input_iteratable
+ : equality_comparable1<T
+ , incrementable<T
+ , dereferenceable<T, P, B
+ > > > {};
+
+template <class T, class B = ::boost::detail::empty_base<T> >
+struct output_iteratable
+ : incrementable<T, B
+ > {};
+
+template <class T, class P, class B = ::boost::detail::empty_base<T> >
+struct forward_iteratable
+ : input_iteratable<T, P, B
+ > {};
+
+template <class T, class P, class B = ::boost::detail::empty_base<T> >
+struct bidirectional_iteratable
+ : forward_iteratable<T, P
+ , decrementable<T, B
+ > > {};
+
+// To avoid repeated derivation from equality_comparable,
+// which is an indirect base class of bidirectional_iterable,
+// random_access_iteratable must not be derived from totally_ordered1
+// but from less_than_comparable1 only. (Helmut Zeisel, 02-Dec-2001)
+template <class T, class P, class D, class R, class B = ::boost::detail::empty_base<T> >
+struct random_access_iteratable
+ : bidirectional_iteratable<T, P
+ , less_than_comparable1<T
+ , additive2<T, D
+ , indexable<T, D, R, B
+ > > > > {};
+
+#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+} // namespace boost
+#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
+
+
+// BOOST_IMPORT_TEMPLATE1 .. BOOST_IMPORT_TEMPLATE4 -
+//
+// When BOOST_NO_OPERATORS_IN_NAMESPACE is defined we need a way to import an
+// operator template into the boost namespace. BOOST_IMPORT_TEMPLATE1 is used
+// for one-argument forms of operator templates; BOOST_IMPORT_TEMPLATE2 for
+// two-argument forms. Note that these macros expect to be invoked from within
+// boost.
+
+#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+
+ // The template is already in boost so we have nothing to do.
+# define BOOST_IMPORT_TEMPLATE4(template_name)
+# define BOOST_IMPORT_TEMPLATE3(template_name)
+# define BOOST_IMPORT_TEMPLATE2(template_name)
+# define BOOST_IMPORT_TEMPLATE1(template_name)
+
+#else // BOOST_NO_OPERATORS_IN_NAMESPACE
+
+# ifndef BOOST_NO_USING_TEMPLATE
+
+ // Bring the names in with a using-declaration
+ // to avoid stressing the compiler.
+# define BOOST_IMPORT_TEMPLATE4(template_name) using ::template_name;
+# define BOOST_IMPORT_TEMPLATE3(template_name) using ::template_name;
+# define BOOST_IMPORT_TEMPLATE2(template_name) using ::template_name;
+# define BOOST_IMPORT_TEMPLATE1(template_name) using ::template_name;
+
+# else
+
+ // Otherwise, because a Borland C++ 5.5 bug prevents a using declaration
+ // from working, we are forced to use inheritance for that compiler.
+# define BOOST_IMPORT_TEMPLATE4(template_name) \
+ template <class T, class U, class V, class W, class B = ::boost::detail::empty_base<T> > \
+ struct template_name : ::template_name<T, U, V, W, B> {};
+
+# define BOOST_IMPORT_TEMPLATE3(template_name) \
+ template <class T, class U, class V, class B = ::boost::detail::empty_base<T> > \
+ struct template_name : ::template_name<T, U, V, B> {};
+
+# define BOOST_IMPORT_TEMPLATE2(template_name) \
+ template <class T, class U, class B = ::boost::detail::empty_base<T> > \
+ struct template_name : ::template_name<T, U, B> {};
+
+# define BOOST_IMPORT_TEMPLATE1(template_name) \
+ template <class T, class B = ::boost::detail::empty_base<T> > \
+ struct template_name : ::template_name<T, B> {};
+
+# endif // BOOST_NO_USING_TEMPLATE
+
+#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
+
+//
+// Here's where we put it all together, defining the xxxx forms of the templates
+// in namespace boost. We also define specializations of is_chained_base<> for
+// the xxxx, xxxx1, and xxxx2 templates, importing them into boost:: as
+// necessary.
+//
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// is_chained_base<> - a traits class used to distinguish whether an operator
+// template argument is being used for base class chaining, or is specifying a
+// 2nd argument type.
+
+namespace boost {
+// A type parameter is used instead of a plain bool because Borland's compiler
+// didn't cope well with the more obvious non-type template parameter.
+namespace detail {
+ struct true_t {};
+ struct false_t {};
+} // namespace detail
+
+// Unspecialized version assumes that most types are not being used for base
+// class chaining. We specialize for the operator templates defined in this
+// library.
+template<class T> struct is_chained_base {
+ typedef ::boost::detail::false_t value;
+};
+
+} // namespace boost
+
+// Import a 4-type-argument operator template into boost (if necessary) and
+// provide a specialization of 'is_chained_base<>' for it.
+# define BOOST_OPERATOR_TEMPLATE4(template_name4) \
+ BOOST_IMPORT_TEMPLATE4(template_name4) \
+ template<class T, class U, class V, class W, class B> \
+ struct is_chained_base< ::boost::template_name4<T, U, V, W, B> > { \
+ typedef ::boost::detail::true_t value; \
+ };
+
+// Import a 3-type-argument operator template into boost (if necessary) and
+// provide a specialization of 'is_chained_base<>' for it.
+# define BOOST_OPERATOR_TEMPLATE3(template_name3) \
+ BOOST_IMPORT_TEMPLATE3(template_name3) \
+ template<class T, class U, class V, class B> \
+ struct is_chained_base< ::boost::template_name3<T, U, V, B> > { \
+ typedef ::boost::detail::true_t value; \
+ };
+
+// Import a 2-type-argument operator template into boost (if necessary) and
+// provide a specialization of 'is_chained_base<>' for it.
+# define BOOST_OPERATOR_TEMPLATE2(template_name2) \
+ BOOST_IMPORT_TEMPLATE2(template_name2) \
+ template<class T, class U, class B> \
+ struct is_chained_base< ::boost::template_name2<T, U, B> > { \
+ typedef ::boost::detail::true_t value; \
+ };
+
+// Import a 1-type-argument operator template into boost (if necessary) and
+// provide a specialization of 'is_chained_base<>' for it.
+# define BOOST_OPERATOR_TEMPLATE1(template_name1) \
+ BOOST_IMPORT_TEMPLATE1(template_name1) \
+ template<class T, class B> \
+ struct is_chained_base< ::boost::template_name1<T, B> > { \
+ typedef ::boost::detail::true_t value; \
+ };
+
+// BOOST_OPERATOR_TEMPLATE(template_name) defines template_name<> such that it
+// can be used for specifying both 1-argument and 2-argument forms. Requires the
+// existence of two previously defined class templates named '<template_name>1'
+// and '<template_name>2' which must implement the corresponding 1- and 2-
+// argument forms.
+//
+// The template type parameter O == is_chained_base<U>::value is used to
+// distinguish whether the 2nd argument to <template_name> is being used for
+// base class chaining from another boost operator template or is describing a
+// 2nd operand type. O == true_t only when U is actually an another operator
+// template from the library. Partial specialization is used to select an
+// implementation in terms of either '<template_name>1' or '<template_name>2'.
+//
+
+# define BOOST_OPERATOR_TEMPLATE(template_name) \
+template <class T \
+ ,class U = T \
+ ,class B = ::boost::detail::empty_base<T> \
+ ,class O = typename is_chained_base<U>::value \
+ > \
+struct template_name : template_name##2<T, U, B> {}; \
+ \
+template<class T, class U, class B> \
+struct template_name<T, U, B, ::boost::detail::true_t> \
+ : template_name##1<T, U> {}; \
+ \
+template <class T, class B> \
+struct template_name<T, T, B, ::boost::detail::false_t> \
+ : template_name##1<T, B> {}; \
+ \
+template<class T, class U, class B, class O> \
+struct is_chained_base< ::boost::template_name<T, U, B, O> > { \
+ typedef ::boost::detail::true_t value; \
+}; \
+ \
+BOOST_OPERATOR_TEMPLATE2(template_name##2) \
+BOOST_OPERATOR_TEMPLATE1(template_name##1)
+
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+# define BOOST_OPERATOR_TEMPLATE4(template_name4) \
+ BOOST_IMPORT_TEMPLATE4(template_name4)
+# define BOOST_OPERATOR_TEMPLATE3(template_name3) \
+ BOOST_IMPORT_TEMPLATE3(template_name3)
+# define BOOST_OPERATOR_TEMPLATE2(template_name2) \
+ BOOST_IMPORT_TEMPLATE2(template_name2)
+# define BOOST_OPERATOR_TEMPLATE1(template_name1) \
+ BOOST_IMPORT_TEMPLATE1(template_name1)
+
+ // In this case we can only assume that template_name<> is equivalent to the
+ // more commonly needed template_name1<> form.
+# define BOOST_OPERATOR_TEMPLATE(template_name) \
+ template <class T, class B = ::boost::detail::empty_base<T> > \
+ struct template_name : template_name##1<T, B> {};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost {
+
+BOOST_OPERATOR_TEMPLATE(less_than_comparable)
+BOOST_OPERATOR_TEMPLATE(equality_comparable)
+BOOST_OPERATOR_TEMPLATE(multipliable)
+BOOST_OPERATOR_TEMPLATE(addable)
+BOOST_OPERATOR_TEMPLATE(subtractable)
+BOOST_OPERATOR_TEMPLATE2(subtractable2_left)
+BOOST_OPERATOR_TEMPLATE(dividable)
+BOOST_OPERATOR_TEMPLATE2(dividable2_left)
+BOOST_OPERATOR_TEMPLATE(modable)
+BOOST_OPERATOR_TEMPLATE2(modable2_left)
+BOOST_OPERATOR_TEMPLATE(xorable)
+BOOST_OPERATOR_TEMPLATE(andable)
+BOOST_OPERATOR_TEMPLATE(orable)
+
+BOOST_OPERATOR_TEMPLATE1(incrementable)
+BOOST_OPERATOR_TEMPLATE1(decrementable)
+
+BOOST_OPERATOR_TEMPLATE2(dereferenceable)
+BOOST_OPERATOR_TEMPLATE3(indexable)
+
+BOOST_OPERATOR_TEMPLATE(left_shiftable)
+BOOST_OPERATOR_TEMPLATE(right_shiftable)
+BOOST_OPERATOR_TEMPLATE(equivalent)
+BOOST_OPERATOR_TEMPLATE(partially_ordered)
+
+BOOST_OPERATOR_TEMPLATE(totally_ordered)
+BOOST_OPERATOR_TEMPLATE(additive)
+BOOST_OPERATOR_TEMPLATE(multiplicative)
+BOOST_OPERATOR_TEMPLATE(integer_multiplicative)
+BOOST_OPERATOR_TEMPLATE(arithmetic)
+BOOST_OPERATOR_TEMPLATE(integer_arithmetic)
+BOOST_OPERATOR_TEMPLATE(bitwise)
+BOOST_OPERATOR_TEMPLATE1(unit_steppable)
+BOOST_OPERATOR_TEMPLATE(shiftable)
+BOOST_OPERATOR_TEMPLATE(ring_operators)
+BOOST_OPERATOR_TEMPLATE(ordered_ring_operators)
+BOOST_OPERATOR_TEMPLATE(field_operators)
+BOOST_OPERATOR_TEMPLATE(ordered_field_operators)
+BOOST_OPERATOR_TEMPLATE(euclidian_ring_operators)
+BOOST_OPERATOR_TEMPLATE(ordered_euclidian_ring_operators)
+BOOST_OPERATOR_TEMPLATE2(input_iteratable)
+BOOST_OPERATOR_TEMPLATE1(output_iteratable)
+BOOST_OPERATOR_TEMPLATE2(forward_iteratable)
+BOOST_OPERATOR_TEMPLATE2(bidirectional_iteratable)
+BOOST_OPERATOR_TEMPLATE4(random_access_iteratable)
+
+#undef BOOST_OPERATOR_TEMPLATE
+#undef BOOST_OPERATOR_TEMPLATE4
+#undef BOOST_OPERATOR_TEMPLATE3
+#undef BOOST_OPERATOR_TEMPLATE2
+#undef BOOST_OPERATOR_TEMPLATE1
+#undef BOOST_IMPORT_TEMPLATE1
+#undef BOOST_IMPORT_TEMPLATE2
+#undef BOOST_IMPORT_TEMPLATE3
+#undef BOOST_IMPORT_TEMPLATE4
+
+// The following 'operators' classes can only be used portably if the derived class
+// declares ALL of the required member operators.
+template <class T, class U>
+struct operators2
+ : totally_ordered2<T,U
+ , integer_arithmetic2<T,U
+ , bitwise2<T,U
+ > > > {};
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <class T, class U = T>
+struct operators : operators2<T, U> {};
+
+template <class T> struct operators<T, T>
+#else
+template <class T> struct operators
+#endif
+ : totally_ordered<T
+ , integer_arithmetic<T
+ , bitwise<T
+ , unit_steppable<T
+ > > > > {};
+
+// Iterator helper classes (contributed by Jeremy Siek) -------------------//
+// (Input and output iterator helpers contributed by Daryle Walker) -------//
+// (Changed to use combined operator classes by Daryle Walker) ------------//
+template <class T,
+ class V,
+ class D = std::ptrdiff_t,
+ class P = V const *,
+ class R = V const &>
+struct input_iterator_helper
+ : input_iteratable<T, P
+ , boost::iterator<std::input_iterator_tag, V, D, P, R
+ > > {};
+
+template<class T>
+struct output_iterator_helper
+ : output_iteratable<T
+ , boost::iterator<std::output_iterator_tag, void, void, void, void
+ > >
+{
+ T& operator*() { return static_cast<T&>(*this); }
+ T& operator++() { return static_cast<T&>(*this); }
+};
+
+template <class T,
+ class V,
+ class D = std::ptrdiff_t,
+ class P = V*,
+ class R = V&>
+struct forward_iterator_helper
+ : forward_iteratable<T, P
+ , boost::iterator<std::forward_iterator_tag, V, D, P, R
+ > > {};
+
+template <class T,
+ class V,
+ class D = std::ptrdiff_t,
+ class P = V*,
+ class R = V&>
+struct bidirectional_iterator_helper
+ : bidirectional_iteratable<T, P
+ , boost::iterator<std::bidirectional_iterator_tag, V, D, P, R
+ > > {};
+
+template <class T,
+ class V,
+ class D = std::ptrdiff_t,
+ class P = V*,
+ class R = V&>
+struct random_access_iterator_helper
+ : random_access_iteratable<T, P, D, R
+ , boost::iterator<std::random_access_iterator_tag, V, D, P, R
+ > >
+{
+ friend D requires_difference_operator(const T& x, const T& y) {
+ return x - y;
+ }
+}; // random_access_iterator_helper
+
+} // namespace boost
+
+#if defined(__sgi) && !defined(__GNUC__)
+#pragma reset woff 1234
+#endif
+
+#endif // BOOST_OPERATORS_HPP
diff --git a/3rdParty/Boost/boost/optional.hpp b/3rdParty/Boost/boost/optional.hpp
new file mode 100644
index 0000000..40cf12e
--- /dev/null
+++ b/3rdParty/Boost/boost/optional.hpp
@@ -0,0 +1,18 @@
+// Copyright (C) 2003, 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_FLC_19NOV2002_HPP
+#define BOOST_OPTIONAL_FLC_19NOV2002_HPP
+
+#include "boost/optional/optional.hpp"
+
+#endif
+
diff --git a/3rdParty/Boost/boost/optional/optional.hpp b/3rdParty/Boost/boost/optional/optional.hpp
new file mode 100644
index 0000000..42277ba
--- /dev/null
+++ b/3rdParty/Boost/boost/optional/optional.hpp
@@ -0,0 +1,922 @@
+// Copyright (C) 2003, 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/lib/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#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"
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
+// VC6.0 has the following bug:
+// When a templated assignment operator exist, an implicit conversion
+// constructing an optional<T> is used when assigment of the form:
+// optional<T> opt ; opt = T(...);
+// is compiled.
+// However, optional's ctor is _explicit_ and the assignemt shouldn't compile.
+// Therefore, for VC6.0 templated assignment is disabled.
+//
+#define BOOST_OPTIONAL_NO_CONVERTING_ASSIGNMENT
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+// VC7.0 has the following bug:
+// When both a non-template and a template copy-ctor exist
+// and the templated version is made 'explicit', the explicit is also
+// given to the non-templated version, making the class non-implicitely-copyable.
+//
+#define BOOST_OPTIONAL_NO_CONVERTING_COPY_CTOR
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=700)
+// AFAICT only VC7.1 correctly resolves the overload set
+// that includes the in-place factory taking functions,
+// so for the other VC versions, in-place factory support
+// is disabled
+#define BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
+#endif
+
+#if BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
+// BCB (5.5.1) cannot parse the nested template struct in an inplace factory.
+#define BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
+#endif
+
+#if !defined(BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT) \
+ && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581) )
+// BCB (up to 5.64) has the following bug:
+// If there is a member function/operator template of the form
+// template<class Expr> mfunc( Expr expr ) ;
+// some calls are resolved to this even if there are other better matches.
+// The effect of this bug is that calls to converting ctors and assignments
+// are incrorrectly sink to this general catch-all member function template as shown above.
+#define BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
+#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
+// namespace boost.
+namespace boost_optional_detail
+{
+ template <class T, class Factory>
+ void construct(Factory const& factory, void* address)
+ {
+ factory.BOOST_NESTED_TEMPLATE apply<T>(address);
+ }
+}
+
+
+namespace boost {
+
+class in_place_factory_base ;
+class typed_in_place_factory_base ;
+
+namespace optional_detail {
+
+// This local class is used instead of that in "aligned_storage.hpp"
+// because I've found the 'official' class to ICE BCB5.5
+// when some types are used with optional<>
+// (due to sizeof() passed down as a non-type template parameter)
+template <class T>
+class aligned_storage
+{
+ // Borland ICEs if unnamed unions are used for this!
+ union dummy_u
+ {
+ char data[ sizeof(T) ];
+ BOOST_DEDUCED_TYPENAME type_with_alignment<
+ ::boost::alignment_of<T>::value >::type aligner_;
+ } dummy_ ;
+
+ public:
+
+ void const* address() const { return &dummy_.data[0]; }
+ void * address() { return &dummy_.data[0]; }
+} ;
+
+template<class T>
+struct types_when_isnt_ref
+{
+ typedef T const& reference_const_type ;
+ typedef T & reference_type ;
+ typedef T const* pointer_const_type ;
+ typedef T * pointer_type ;
+ typedef T const& argument_type ;
+} ;
+template<class T>
+struct types_when_is_ref
+{
+ typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type raw_type ;
+
+ typedef raw_type& reference_const_type ;
+ typedef raw_type& reference_type ;
+ typedef raw_type* pointer_const_type ;
+ typedef raw_type* pointer_type ;
+ typedef raw_type& argument_type ;
+} ;
+
+struct optional_tag {} ;
+
+template<class T>
+class optional_base : public optional_tag
+{
+ private :
+
+ typedef
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ BOOST_DEDUCED_TYPENAME
+#endif
+ ::boost::detail::make_reference_content<T>::type internal_type ;
+
+ typedef aligned_storage<internal_type> storage_type ;
+
+ typedef types_when_isnt_ref<T> types_when_not_ref ;
+ typedef types_when_is_ref<T> types_when_ref ;
+
+ typedef optional_base<T> this_type ;
+
+ protected :
+
+ typedef T value_type ;
+
+ typedef mpl::true_ is_reference_tag ;
+ typedef mpl::false_ is_not_reference_tag ;
+
+ typedef BOOST_DEDUCED_TYPENAME is_reference<T>::type is_reference_predicate ;
+
+ typedef BOOST_DEDUCED_TYPENAME mpl::if_<is_reference_predicate,types_when_ref,types_when_not_ref>::type types ;
+
+ typedef bool (this_type::*unspecified_bool_type)() const;
+
+ typedef BOOST_DEDUCED_TYPENAME types::reference_type reference_type ;
+ typedef BOOST_DEDUCED_TYPENAME types::reference_const_type reference_const_type ;
+ typedef BOOST_DEDUCED_TYPENAME types::pointer_type pointer_type ;
+ typedef BOOST_DEDUCED_TYPENAME types::pointer_const_type pointer_const_type ;
+ typedef BOOST_DEDUCED_TYPENAME types::argument_type argument_type ;
+
+ // Creates an optional<T> uninitialized.
+ // No-throw
+ optional_base()
+ :
+ m_initialized(false) {}
+
+ // Creates an optional<T> uninitialized.
+ // No-throw
+ optional_base ( none_t )
+ :
+ m_initialized(false) {}
+
+ // Creates an optional<T> initialized with 'val'.
+ // Can throw if T::T(T const&) does
+ optional_base ( argument_type val )
+ :
+ m_initialized(false)
+ {
+ 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 )
+ :
+ m_initialized(false)
+ {
+ if ( cond )
+ construct(val);
+ }
+
+ // Creates a deep copy of another optional<T>
+ // Can throw if T::T(T const&) does
+ optional_base ( optional_base const& rhs )
+ :
+ m_initialized(false)
+ {
+ if ( rhs.is_initialized() )
+ construct(rhs.get_impl());
+ }
+
+
+ // This is used for both converting and in-place constructions.
+ // Derived classes use the 'tag' to select the appropriate
+ // implementation (the correct 'construct()' overload)
+ template<class Expr>
+ explicit optional_base ( Expr const& expr, Expr const* tag )
+ :
+ m_initialized(false)
+ {
+ construct(expr,tag);
+ }
+
+
+
+ // No-throw (assuming T::~T() doesn't)
+ ~optional_base() { destroy() ; }
+
+ // Assigns from another optional<T> (deep-copies the rhs value)
+ void assign ( optional_base const& rhs )
+ {
+ if (is_initialized())
+ {
+ if ( rhs.is_initialized() )
+ assign_value(rhs.get_impl(), is_reference_predicate() );
+ else destroy();
+ }
+ else
+ {
+ if ( rhs.is_initialized() )
+ construct(rhs.get_impl());
+ }
+ }
+
+ // Assigns from another _convertible_ optional<U> (deep-copies the rhs value)
+ template<class U>
+ void assign ( optional<U> const& rhs )
+ {
+ if (is_initialized())
+ {
+ if ( rhs.is_initialized() )
+ assign_value(static_cast<value_type>(rhs.get()), is_reference_predicate() );
+ else destroy();
+ }
+ else
+ {
+ if ( rhs.is_initialized() )
+ construct(static_cast<value_type>(rhs.get()));
+ }
+ }
+
+ // Assigns from a T (deep-copies the rhs value)
+ void assign ( argument_type val )
+ {
+ if (is_initialized())
+ assign_value(val, is_reference_predicate() );
+ else construct(val);
+ }
+
+ // Assigns from "none", destroying the current value, if any, leaving this UNINITIALIZED
+ // No-throw (assuming T::~T() doesn't)
+ void assign ( none_t ) { destroy(); }
+
+#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
+ template<class Expr>
+ void assign_expr ( Expr const& expr, Expr const* tag )
+ {
+ if (is_initialized())
+ assign_expr_to_initialized(expr,tag);
+ else construct(expr,tag);
+ }
+#endif
+
+ public :
+
+ // Destroys the current value, if any, leaving this UNINITIALIZED
+ // No-throw (assuming T::~T() doesn't)
+ void reset() { destroy(); }
+
+ // Replaces the current value -if any- with 'val'
+ void reset ( argument_type val ) { assign(val); }
+
+ // Returns a pointer to the value if this is initialized, otherwise,
+ // returns NULL.
+ // No-throw
+ pointer_const_type get_ptr() const { return m_initialized ? get_ptr_impl() : 0 ; }
+ pointer_type get_ptr() { return m_initialized ? get_ptr_impl() : 0 ; }
+
+ bool is_initialized() const { return m_initialized ; }
+
+ protected :
+
+ void construct ( argument_type val )
+ {
+ new (m_storage.address()) internal_type(val) ;
+ m_initialized = true ;
+ }
+
+#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
+ // Constructs in-place using the given factory
+ template<class Expr>
+ void construct ( Expr const& factory, in_place_factory_base const* )
+ {
+ BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
+ boost_optional_detail::construct<value_type>(factory, m_storage.address());
+ m_initialized = true ;
+ }
+
+ // Constructs in-place using the given typed factory
+ template<class Expr>
+ void construct ( Expr const& factory, typed_in_place_factory_base const* )
+ {
+ BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
+ factory.apply(m_storage.address()) ;
+ m_initialized = true ;
+ }
+
+ template<class Expr>
+ void assign_expr_to_initialized ( Expr const& factory, in_place_factory_base const* tag )
+ {
+ destroy();
+ construct(factory,tag);
+ }
+
+ // Constructs in-place using the given typed factory
+ template<class Expr>
+ void assign_expr_to_initialized ( Expr const& factory, typed_in_place_factory_base const* tag )
+ {
+ destroy();
+ construct(factory,tag);
+ }
+#endif
+
+ // Constructs using any expression implicitely convertible to the single argument
+ // of a one-argument T constructor.
+ // Converting constructions of optional<T> from optional<U> uses this function with
+ // 'Expr' being of type 'U' and relying on a converting constructor of T from U.
+ template<class Expr>
+ void construct ( Expr const& expr, void const* )
+ {
+ new (m_storage.address()) internal_type(expr) ;
+ m_initialized = true ;
+ }
+
+ // Assigns using a form any expression implicitely convertible to the single argument
+ // of a T's assignment operator.
+ // Converting assignments of optional<T> from optional<U> uses this function with
+ // 'Expr' being of type 'U' and relying on a converting assignment of T from U.
+ template<class Expr>
+ void assign_expr_to_initialized ( Expr const& expr, void const* )
+ {
+ assign_value(expr, is_reference_predicate());
+ }
+
+#ifdef BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
+ // BCB5.64 (and probably lower versions) workaround.
+ // The in-place factories are supported by means of catch-all constructors
+ // and assignment operators (the functions are parameterized in terms of
+ // an arbitrary 'Expr' type)
+ // This compiler incorrectly resolves the overload set and sinks optional<T> and optional<U>
+ // to the 'Expr'-taking functions even though explicit overloads are present for them.
+ // Thus, the following overload is needed to properly handle the case when the 'lhs'
+ // is another optional.
+ //
+ // For VC<=70 compilers this workaround dosen't work becasue the comnpiler issues and error
+ // instead of choosing the wrong overload
+ //
+ // Notice that 'Expr' will be optional<T> or optional<U> (but not optional_base<..>)
+ template<class Expr>
+ void construct ( Expr const& expr, optional_tag const* )
+ {
+ if ( expr.is_initialized() )
+ {
+ // An exception can be thrown here.
+ // It it happens, THIS will be left uninitialized.
+ new (m_storage.address()) internal_type(expr.get()) ;
+ m_initialized = true ;
+ }
+ }
+#endif
+
+ void assign_value ( argument_type val, is_not_reference_tag ) { get_impl() = val; }
+ void assign_value ( argument_type val, is_reference_tag ) { construct(val); }
+
+ void destroy()
+ {
+ if ( m_initialized )
+ destroy_impl(is_reference_predicate()) ;
+ }
+
+ unspecified_bool_type safe_bool() const { return m_initialized ? &this_type::is_initialized : 0 ; }
+
+ reference_const_type get_impl() const { return dereference(get_object(), is_reference_predicate() ) ; }
+ reference_type get_impl() { return dereference(get_object(), is_reference_predicate() ) ; }
+
+ pointer_const_type get_ptr_impl() const { return cast_ptr(get_object(), is_reference_predicate() ) ; }
+ pointer_type get_ptr_impl() { return cast_ptr(get_object(), is_reference_predicate() ) ; }
+
+ private :
+
+ // internal_type can be either T or reference_content<T>
+ 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()); }
+
+ // 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 ; }
+ reference_type dereference( internal_type* p, is_not_reference_tag ) { return *p ; }
+ reference_const_type dereference( internal_type const* p, is_reference_tag ) const { return p->get() ; }
+ reference_type dereference( internal_type* p, is_reference_tag ) { return p->get() ; }
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))
+ void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->internal_type::~internal_type() ; m_initialized = false ; }
+#else
+ void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->T::~T() ; m_initialized = false ; }
+#endif
+
+ void destroy_impl ( is_reference_tag ) { m_initialized = false ; }
+
+ // If T is of reference type, trying to get a pointer to the held value must result in a compile-time error.
+ // Decent compilers should disallow conversions from reference_content<T>* to T*, but just in case,
+ // the following olverloads are used to filter out the case and guarantee an error in case of T being a reference.
+ pointer_const_type cast_ptr( internal_type const* p, is_not_reference_tag ) const { return p ; }
+ pointer_type cast_ptr( internal_type * p, is_not_reference_tag ) { return p ; }
+ pointer_const_type cast_ptr( internal_type const* p, is_reference_tag ) const { return &p->get() ; }
+ pointer_type cast_ptr( internal_type * p, is_reference_tag ) { return &p->get() ; }
+
+ bool m_initialized ;
+ storage_type m_storage ;
+} ;
+
+} // namespace optional_detail
+
+template<class T>
+class optional : public optional_detail::optional_base<T>
+{
+ typedef optional_detail::optional_base<T> base ;
+
+ typedef BOOST_DEDUCED_TYPENAME base::unspecified_bool_type unspecified_bool_type ;
+
+ public :
+
+ typedef optional<T> this_type ;
+
+ typedef BOOST_DEDUCED_TYPENAME base::value_type value_type ;
+ typedef BOOST_DEDUCED_TYPENAME base::reference_type reference_type ;
+ typedef BOOST_DEDUCED_TYPENAME base::reference_const_type reference_const_type ;
+ typedef BOOST_DEDUCED_TYPENAME base::pointer_type pointer_type ;
+ typedef BOOST_DEDUCED_TYPENAME base::pointer_const_type pointer_const_type ;
+ typedef BOOST_DEDUCED_TYPENAME base::argument_type argument_type ;
+
+ // Creates an optional<T> uninitialized.
+ // No-throw
+ optional() : base() {}
+
+ // Creates an optional<T> uninitialized.
+ // No-throw
+ optional( none_t none_ ) : base(none_) {}
+
+ // Creates an optional<T> initialized with 'val'.
+ // Can throw if T::T(T const&) does
+ optional ( argument_type val ) : base(val) {}
+
+ // Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialized optional.
+ // Can throw if T::T(T const&) does
+ optional ( bool cond, argument_type val ) : base(cond,val) {}
+
+#ifndef BOOST_OPTIONAL_NO_CONVERTING_COPY_CTOR
+ // NOTE: MSVC needs templated versions first
+
+ // Creates a deep copy of another convertible optional<U>
+ // Requires a valid conversion from U to T.
+ // Can throw if T::T(U const&) does
+ template<class U>
+ explicit optional ( optional<U> const& rhs )
+ :
+ base()
+ {
+ if ( rhs.is_initialized() )
+ this->construct(rhs.get());
+ }
+#endif
+
+#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
+ // Creates an optional<T> with an expression which can be either
+ // (a) An instance of InPlaceFactory (i.e. in_place(a,b,...,n);
+ // (b) An instance of TypedInPlaceFactory ( i.e. in_place<T>(a,b,...,n);
+ // (c) Any expression implicitely convertible to the single type
+ // of a one-argument T's constructor.
+ // (d*) Weak compilers (BCB) might also resolved Expr as optional<T> and optional<U>
+ // even though explicit overloads are present for these.
+ // 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) {}
+#endif
+
+ // Creates a deep copy of another optional<T>
+ // Can throw if T::T(T const&) does
+ optional ( optional const& rhs ) : base(rhs) {}
+
+ // No-throw (assuming T::~T() doesn't)
+ ~optional() {}
+
+#if !defined(BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT) && !defined(BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION)
+ // 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 )
+ {
+ this->assign_expr(expr,&expr);
+ return *this ;
+ }
+#endif
+
+
+#ifndef BOOST_OPTIONAL_NO_CONVERTING_ASSIGNMENT
+ // Assigns from another convertible optional<U> (converts && deep-copies the rhs value)
+ // Requires a valid conversion from U to T.
+ // Basic Guarantee: If T::T( U const& ) throws, this is left UNINITIALIZED
+ template<class U>
+ optional& operator= ( optional<U> const& rhs )
+ {
+ this->assign(rhs);
+ return *this ;
+ }
+#endif
+
+ // Assigns from another optional<T> (deep-copies the rhs value)
+ // Basic Guarantee: If T::T( T const& ) throws, this is left UNINITIALIZED
+ // (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 ) ;
+ return *this ;
+ }
+
+ // Assigns from a T (deep-copies the rhs value)
+ // Basic Guarantee: If T::( T const& ) throws, this is left UNINITIALIZED
+ optional& operator= ( argument_type val )
+ {
+ this->assign( val ) ;
+ return *this ;
+ }
+
+ // Assigns from a "none"
+ // Which destroys the current value, if any, leaving this UNINITIALIZED
+ // No-throw (assuming T::~T() doesn't)
+ optional& operator= ( none_t none_ )
+ {
+ this->assign( none_ ) ;
+ return *this ;
+ }
+
+ // Returns a reference to the value if this is initialized, otherwise,
+ // the behaviour is UNDEFINED
+ // No-throw
+ reference_const_type get() const { BOOST_ASSERT(this->is_initialized()) ; return this->get_impl(); }
+ reference_type get() { BOOST_ASSERT(this->is_initialized()) ; return this->get_impl(); }
+
+ // 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
+ pointer_const_type operator->() const { BOOST_ASSERT(this->is_initialized()) ; return this->get_ptr_impl() ; }
+ pointer_type operator->() { BOOST_ASSERT(this->is_initialized()) ; return this->get_ptr_impl() ; }
+
+ // Returns a reference to the value if this is initialized, otherwise,
+ // the behaviour is UNDEFINED
+ // No-throw
+ reference_const_type operator *() const { return this->get() ; }
+ reference_type operator *() { return this->get() ; }
+
+ // implicit conversion to "bool"
+ // 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() ; }
+} ;
+
+// Returns optional<T>(v)
+template<class T>
+inline
+optional<T> make_optional ( T const& v )
+{
+ return optional<T>(v);
+}
+
+// Returns optional<T>(cond,v)
+template<class T>
+inline
+optional<T> make_optional ( bool cond, T const& v )
+{
+ return optional<T>(cond,v);
+}
+
+// Returns a reference to the value if this is initialized, otherwise, the behaviour is UNDEFINED.
+// No-throw
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type
+get ( optional<T> const& opt )
+{
+ return opt.get() ;
+}
+
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::reference_type
+get ( optional<T>& opt )
+{
+ return opt.get() ;
+}
+
+// Returns a pointer to the value if this is initialized, otherwise, returns NULL.
+// No-throw
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::pointer_const_type
+get ( optional<T> const* opt )
+{
+ return opt->get_ptr() ;
+}
+
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::pointer_type
+get ( optional<T>* opt )
+{
+ return opt->get_ptr() ;
+}
+
+// Returns a reference to the value if this is initialized, otherwise, the behaviour is UNDEFINED.
+// No-throw
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type
+get_optional_value_or ( optional<T> const& opt, BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type v )
+{
+ return opt.get_value_or(v) ;
+}
+
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::reference_type
+get_optional_value_or ( optional<T>& opt, BOOST_DEDUCED_TYPENAME optional<T>::reference_type v )
+{
+ return opt.get_value_or(v) ;
+}
+
+// Returns a pointer to the value if this is initialized, otherwise, returns NULL.
+// No-throw
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::pointer_const_type
+get_pointer ( optional<T> const& opt )
+{
+ return opt.get_ptr() ;
+}
+
+template<class T>
+inline
+BOOST_DEDUCED_TYPENAME optional<T>::pointer_type
+get_pointer ( optional<T>& opt )
+{
+ return opt.get_ptr() ;
+}
+
+// optional's relational operators ( ==, !=, <, >, <=, >= ) have deep-semantics (compare values).
+// WARNING: This is UNLIKE pointers. Use equal_pointees()/less_pointess() in generic code instead.
+
+
+//
+// optional<T> vs optional<T> cases
+//
+
+template<class T>
+inline
+bool operator == ( optional<T> const& x, optional<T> const& y )
+{ return equal_pointees(x,y); }
+
+template<class T>
+inline
+bool operator < ( optional<T> const& x, optional<T> const& y )
+{ return less_pointees(x,y); }
+
+template<class T>
+inline
+bool operator != ( optional<T> const& x, optional<T> const& y )
+{ return !( x == y ) ; }
+
+template<class T>
+inline
+bool operator > ( optional<T> const& x, optional<T> const& y )
+{ return y < x ; }
+
+template<class T>
+inline
+bool operator <= ( optional<T> const& x, optional<T> const& y )
+{ return !( y < x ) ; }
+
+template<class T>
+inline
+bool operator >= ( optional<T> const& x, optional<T> const& y )
+{ return !( x < y ) ; }
+
+
+//
+// optional<T> vs T cases
+//
+template<class T>
+inline
+bool operator == ( optional<T> const& x, T const& y )
+{ return equal_pointees(x, optional<T>(y)); }
+
+template<class T>
+inline
+bool operator < ( optional<T> const& x, T const& y )
+{ return less_pointees(x, optional<T>(y)); }
+
+template<class T>
+inline
+bool operator != ( optional<T> const& x, T const& y )
+{ return !( x == y ) ; }
+
+template<class T>
+inline
+bool operator > ( optional<T> const& x, T const& y )
+{ return y < x ; }
+
+template<class T>
+inline
+bool operator <= ( optional<T> const& x, T const& y )
+{ return !( y < x ) ; }
+
+template<class T>
+inline
+bool operator >= ( optional<T> const& x, T const& y )
+{ return !( x < y ) ; }
+
+//
+// T vs optional<T> cases
+//
+
+template<class T>
+inline
+bool operator == ( T const& x, optional<T> const& y )
+{ return equal_pointees( optional<T>(x), y ); }
+
+template<class T>
+inline
+bool operator < ( T const& x, optional<T> const& y )
+{ return less_pointees( optional<T>(x), y ); }
+
+template<class T>
+inline
+bool operator != ( T const& x, optional<T> const& y )
+{ return !( x == y ) ; }
+
+template<class T>
+inline
+bool operator > ( T const& x, optional<T> const& y )
+{ return y < x ; }
+
+template<class T>
+inline
+bool operator <= ( T const& x, optional<T> const& y )
+{ return !( y < x ) ; }
+
+template<class T>
+inline
+bool operator >= ( T const& x, optional<T> const& y )
+{ return !( x < y ) ; }
+
+
+//
+// optional<T> vs none cases
+//
+
+template<class T>
+inline
+bool operator == ( optional<T> const& x, none_t )
+{ return equal_pointees(x, optional<T>() ); }
+
+template<class T>
+inline
+bool operator < ( optional<T> const& x, none_t )
+{ return less_pointees(x,optional<T>() ); }
+
+template<class T>
+inline
+bool operator != ( optional<T> const& x, none_t y )
+{ return !( x == y ) ; }
+
+template<class T>
+inline
+bool operator > ( optional<T> const& x, none_t y )
+{ return y < x ; }
+
+template<class T>
+inline
+bool operator <= ( optional<T> const& x, none_t y )
+{ return !( y < x ) ; }
+
+template<class T>
+inline
+bool operator >= ( optional<T> const& x, none_t y )
+{ return !( x < y ) ; }
+
+//
+// none vs optional<T> cases
+//
+
+template<class T>
+inline
+bool operator == ( none_t x, optional<T> const& y )
+{ return equal_pointees(optional<T>() ,y); }
+
+template<class T>
+inline
+bool operator < ( none_t x, optional<T> const& y )
+{ return less_pointees(optional<T>() ,y); }
+
+template<class T>
+inline
+bool operator != ( none_t x, optional<T> const& y )
+{ return !( x == y ) ; }
+
+template<class T>
+inline
+bool operator > ( none_t x, optional<T> const& y )
+{ return y < x ; }
+
+template<class T>
+inline
+bool operator <= ( none_t x, optional<T> const& y )
+{ return !( y < x ) ; }
+
+template<class T>
+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
+
+// 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 )
+{
+ 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);
+ }
+}
+
+} // namespace optional_detail
+
+template<class T> inline void swap ( optional<T>& x, optional<T>& y )
+{
+ optional_detail::optional_swap(x,y);
+}
+
+
+} // namespace boost
+
+#endif
+
diff --git a/3rdParty/Boost/boost/optional/optional_fwd.hpp b/3rdParty/Boost/boost/optional/optional_fwd.hpp
new file mode 100644
index 0000000..2cf4fa6
--- /dev/null
+++ b/3rdParty/Boost/boost/optional/optional_fwd.hpp
@@ -0,0 +1,22 @@
+// Copyright (C) 2003, 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/lib/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_OPTIONAL_OPTIONAL_FWD_FLC_19NOV2002_HPP
+#define BOOST_OPTIONAL_OPTIONAL_FWD_FLC_19NOV2002_HPP
+
+namespace boost {
+
+template<class T> class optional ;
+
+} // namespace boost
+
+#endif
+
diff --git a/3rdParty/Boost/boost/preprocessor/arithmetic/add.hpp b/3rdParty/Boost/boost/preprocessor/arithmetic/add.hpp
new file mode 100644
index 0000000..5a29f55
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/arithmetic/add.hpp
@@ -0,0 +1,51 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ADD */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ADD(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# else
+# define BOOST_PP_ADD(x, y) BOOST_PP_ADD_I(x, y)
+# define BOOST_PP_ADD_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# endif
+#
+# define BOOST_PP_ADD_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I xy
+# else
+# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define BOOST_PP_ADD_O_I(x, y) (BOOST_PP_INC(x), BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_ADD_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# else
+# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_ADD_D_I(d, x, y)
+# define BOOST_PP_ADD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/arithmetic/dec.hpp b/3rdParty/Boost/boost/preprocessor/arithmetic/dec.hpp
new file mode 100644
index 0000000..0503359
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/arithmetic/dec.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_DEC */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_DEC(x) BOOST_PP_DEC_I(x)
+# else
+# define BOOST_PP_DEC(x) BOOST_PP_DEC_OO((x))
+# define BOOST_PP_DEC_OO(par) BOOST_PP_DEC_I ## par
+# endif
+#
+# define BOOST_PP_DEC_I(x) BOOST_PP_DEC_ ## x
+#
+# define BOOST_PP_DEC_0 0
+# define BOOST_PP_DEC_1 0
+# define BOOST_PP_DEC_2 1
+# define BOOST_PP_DEC_3 2
+# define BOOST_PP_DEC_4 3
+# define BOOST_PP_DEC_5 4
+# define BOOST_PP_DEC_6 5
+# define BOOST_PP_DEC_7 6
+# define BOOST_PP_DEC_8 7
+# define BOOST_PP_DEC_9 8
+# define BOOST_PP_DEC_10 9
+# define BOOST_PP_DEC_11 10
+# define BOOST_PP_DEC_12 11
+# define BOOST_PP_DEC_13 12
+# define BOOST_PP_DEC_14 13
+# define BOOST_PP_DEC_15 14
+# define BOOST_PP_DEC_16 15
+# define BOOST_PP_DEC_17 16
+# define BOOST_PP_DEC_18 17
+# define BOOST_PP_DEC_19 18
+# define BOOST_PP_DEC_20 19
+# define BOOST_PP_DEC_21 20
+# define BOOST_PP_DEC_22 21
+# define BOOST_PP_DEC_23 22
+# define BOOST_PP_DEC_24 23
+# define BOOST_PP_DEC_25 24
+# define BOOST_PP_DEC_26 25
+# define BOOST_PP_DEC_27 26
+# define BOOST_PP_DEC_28 27
+# define BOOST_PP_DEC_29 28
+# define BOOST_PP_DEC_30 29
+# define BOOST_PP_DEC_31 30
+# define BOOST_PP_DEC_32 31
+# define BOOST_PP_DEC_33 32
+# define BOOST_PP_DEC_34 33
+# define BOOST_PP_DEC_35 34
+# define BOOST_PP_DEC_36 35
+# define BOOST_PP_DEC_37 36
+# define BOOST_PP_DEC_38 37
+# define BOOST_PP_DEC_39 38
+# define BOOST_PP_DEC_40 39
+# define BOOST_PP_DEC_41 40
+# define BOOST_PP_DEC_42 41
+# define BOOST_PP_DEC_43 42
+# define BOOST_PP_DEC_44 43
+# define BOOST_PP_DEC_45 44
+# define BOOST_PP_DEC_46 45
+# define BOOST_PP_DEC_47 46
+# define BOOST_PP_DEC_48 47
+# define BOOST_PP_DEC_49 48
+# define BOOST_PP_DEC_50 49
+# define BOOST_PP_DEC_51 50
+# define BOOST_PP_DEC_52 51
+# define BOOST_PP_DEC_53 52
+# define BOOST_PP_DEC_54 53
+# define BOOST_PP_DEC_55 54
+# define BOOST_PP_DEC_56 55
+# define BOOST_PP_DEC_57 56
+# define BOOST_PP_DEC_58 57
+# define BOOST_PP_DEC_59 58
+# define BOOST_PP_DEC_60 59
+# define BOOST_PP_DEC_61 60
+# define BOOST_PP_DEC_62 61
+# define BOOST_PP_DEC_63 62
+# define BOOST_PP_DEC_64 63
+# define BOOST_PP_DEC_65 64
+# define BOOST_PP_DEC_66 65
+# define BOOST_PP_DEC_67 66
+# define BOOST_PP_DEC_68 67
+# define BOOST_PP_DEC_69 68
+# define BOOST_PP_DEC_70 69
+# define BOOST_PP_DEC_71 70
+# define BOOST_PP_DEC_72 71
+# define BOOST_PP_DEC_73 72
+# define BOOST_PP_DEC_74 73
+# define BOOST_PP_DEC_75 74
+# define BOOST_PP_DEC_76 75
+# define BOOST_PP_DEC_77 76
+# define BOOST_PP_DEC_78 77
+# define BOOST_PP_DEC_79 78
+# define BOOST_PP_DEC_80 79
+# define BOOST_PP_DEC_81 80
+# define BOOST_PP_DEC_82 81
+# define BOOST_PP_DEC_83 82
+# define BOOST_PP_DEC_84 83
+# define BOOST_PP_DEC_85 84
+# define BOOST_PP_DEC_86 85
+# define BOOST_PP_DEC_87 86
+# define BOOST_PP_DEC_88 87
+# define BOOST_PP_DEC_89 88
+# define BOOST_PP_DEC_90 89
+# define BOOST_PP_DEC_91 90
+# define BOOST_PP_DEC_92 91
+# define BOOST_PP_DEC_93 92
+# define BOOST_PP_DEC_94 93
+# define BOOST_PP_DEC_95 94
+# define BOOST_PP_DEC_96 95
+# define BOOST_PP_DEC_97 96
+# define BOOST_PP_DEC_98 97
+# define BOOST_PP_DEC_99 98
+# define BOOST_PP_DEC_100 99
+# define BOOST_PP_DEC_101 100
+# define BOOST_PP_DEC_102 101
+# define BOOST_PP_DEC_103 102
+# define BOOST_PP_DEC_104 103
+# define BOOST_PP_DEC_105 104
+# define BOOST_PP_DEC_106 105
+# define BOOST_PP_DEC_107 106
+# define BOOST_PP_DEC_108 107
+# define BOOST_PP_DEC_109 108
+# define BOOST_PP_DEC_110 109
+# define BOOST_PP_DEC_111 110
+# define BOOST_PP_DEC_112 111
+# define BOOST_PP_DEC_113 112
+# define BOOST_PP_DEC_114 113
+# define BOOST_PP_DEC_115 114
+# define BOOST_PP_DEC_116 115
+# define BOOST_PP_DEC_117 116
+# define BOOST_PP_DEC_118 117
+# define BOOST_PP_DEC_119 118
+# define BOOST_PP_DEC_120 119
+# define BOOST_PP_DEC_121 120
+# define BOOST_PP_DEC_122 121
+# define BOOST_PP_DEC_123 122
+# define BOOST_PP_DEC_124 123
+# define BOOST_PP_DEC_125 124
+# define BOOST_PP_DEC_126 125
+# define BOOST_PP_DEC_127 126
+# define BOOST_PP_DEC_128 127
+# define BOOST_PP_DEC_129 128
+# define BOOST_PP_DEC_130 129
+# define BOOST_PP_DEC_131 130
+# define BOOST_PP_DEC_132 131
+# define BOOST_PP_DEC_133 132
+# define BOOST_PP_DEC_134 133
+# define BOOST_PP_DEC_135 134
+# define BOOST_PP_DEC_136 135
+# define BOOST_PP_DEC_137 136
+# define BOOST_PP_DEC_138 137
+# define BOOST_PP_DEC_139 138
+# define BOOST_PP_DEC_140 139
+# define BOOST_PP_DEC_141 140
+# define BOOST_PP_DEC_142 141
+# define BOOST_PP_DEC_143 142
+# define BOOST_PP_DEC_144 143
+# define BOOST_PP_DEC_145 144
+# define BOOST_PP_DEC_146 145
+# define BOOST_PP_DEC_147 146
+# define BOOST_PP_DEC_148 147
+# define BOOST_PP_DEC_149 148
+# define BOOST_PP_DEC_150 149
+# define BOOST_PP_DEC_151 150
+# define BOOST_PP_DEC_152 151
+# define BOOST_PP_DEC_153 152
+# define BOOST_PP_DEC_154 153
+# define BOOST_PP_DEC_155 154
+# define BOOST_PP_DEC_156 155
+# define BOOST_PP_DEC_157 156
+# define BOOST_PP_DEC_158 157
+# define BOOST_PP_DEC_159 158
+# define BOOST_PP_DEC_160 159
+# define BOOST_PP_DEC_161 160
+# define BOOST_PP_DEC_162 161
+# define BOOST_PP_DEC_163 162
+# define BOOST_PP_DEC_164 163
+# define BOOST_PP_DEC_165 164
+# define BOOST_PP_DEC_166 165
+# define BOOST_PP_DEC_167 166
+# define BOOST_PP_DEC_168 167
+# define BOOST_PP_DEC_169 168
+# define BOOST_PP_DEC_170 169
+# define BOOST_PP_DEC_171 170
+# define BOOST_PP_DEC_172 171
+# define BOOST_PP_DEC_173 172
+# define BOOST_PP_DEC_174 173
+# define BOOST_PP_DEC_175 174
+# define BOOST_PP_DEC_176 175
+# define BOOST_PP_DEC_177 176
+# define BOOST_PP_DEC_178 177
+# define BOOST_PP_DEC_179 178
+# define BOOST_PP_DEC_180 179
+# define BOOST_PP_DEC_181 180
+# define BOOST_PP_DEC_182 181
+# define BOOST_PP_DEC_183 182
+# define BOOST_PP_DEC_184 183
+# define BOOST_PP_DEC_185 184
+# define BOOST_PP_DEC_186 185
+# define BOOST_PP_DEC_187 186
+# define BOOST_PP_DEC_188 187
+# define BOOST_PP_DEC_189 188
+# define BOOST_PP_DEC_190 189
+# define BOOST_PP_DEC_191 190
+# define BOOST_PP_DEC_192 191
+# define BOOST_PP_DEC_193 192
+# define BOOST_PP_DEC_194 193
+# define BOOST_PP_DEC_195 194
+# define BOOST_PP_DEC_196 195
+# define BOOST_PP_DEC_197 196
+# define BOOST_PP_DEC_198 197
+# define BOOST_PP_DEC_199 198
+# define BOOST_PP_DEC_200 199
+# define BOOST_PP_DEC_201 200
+# define BOOST_PP_DEC_202 201
+# define BOOST_PP_DEC_203 202
+# define BOOST_PP_DEC_204 203
+# define BOOST_PP_DEC_205 204
+# define BOOST_PP_DEC_206 205
+# define BOOST_PP_DEC_207 206
+# define BOOST_PP_DEC_208 207
+# define BOOST_PP_DEC_209 208
+# define BOOST_PP_DEC_210 209
+# define BOOST_PP_DEC_211 210
+# define BOOST_PP_DEC_212 211
+# define BOOST_PP_DEC_213 212
+# define BOOST_PP_DEC_214 213
+# define BOOST_PP_DEC_215 214
+# define BOOST_PP_DEC_216 215
+# define BOOST_PP_DEC_217 216
+# define BOOST_PP_DEC_218 217
+# define BOOST_PP_DEC_219 218
+# define BOOST_PP_DEC_220 219
+# define BOOST_PP_DEC_221 220
+# define BOOST_PP_DEC_222 221
+# define BOOST_PP_DEC_223 222
+# define BOOST_PP_DEC_224 223
+# define BOOST_PP_DEC_225 224
+# define BOOST_PP_DEC_226 225
+# define BOOST_PP_DEC_227 226
+# define BOOST_PP_DEC_228 227
+# define BOOST_PP_DEC_229 228
+# define BOOST_PP_DEC_230 229
+# define BOOST_PP_DEC_231 230
+# define BOOST_PP_DEC_232 231
+# define BOOST_PP_DEC_233 232
+# define BOOST_PP_DEC_234 233
+# define BOOST_PP_DEC_235 234
+# define BOOST_PP_DEC_236 235
+# define BOOST_PP_DEC_237 236
+# define BOOST_PP_DEC_238 237
+# define BOOST_PP_DEC_239 238
+# define BOOST_PP_DEC_240 239
+# define BOOST_PP_DEC_241 240
+# define BOOST_PP_DEC_242 241
+# define BOOST_PP_DEC_243 242
+# define BOOST_PP_DEC_244 243
+# define BOOST_PP_DEC_245 244
+# define BOOST_PP_DEC_246 245
+# define BOOST_PP_DEC_247 246
+# define BOOST_PP_DEC_248 247
+# define BOOST_PP_DEC_249 248
+# define BOOST_PP_DEC_250 249
+# define BOOST_PP_DEC_251 250
+# define BOOST_PP_DEC_252 251
+# define BOOST_PP_DEC_253 252
+# define BOOST_PP_DEC_254 253
+# define BOOST_PP_DEC_255 254
+# define BOOST_PP_DEC_256 255
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/arithmetic/detail/div_base.hpp b/3rdParty/Boost/boost/preprocessor/arithmetic/detail/div_base.hpp
new file mode 100644
index 0000000..106632a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/arithmetic/detail/div_base.hpp
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_DIV_BASE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_DIV_BASE(x, y) BOOST_PP_WHILE(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# else
+# define BOOST_PP_DIV_BASE(x, y) BOOST_PP_DIV_BASE_I(x, y)
+# define BOOST_PP_DIV_BASE_I(x, y) BOOST_PP_WHILE(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_DIV_BASE_P(d, rxy) BOOST_PP_DIV_BASE_P_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
+# define BOOST_PP_DIV_BASE_P_IM(d, im) BOOST_PP_DIV_BASE_P_I(d, im)
+# else
+# define BOOST_PP_DIV_BASE_P(d, rxy) BOOST_PP_DIV_BASE_P_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define BOOST_PP_DIV_BASE_P_I(d, r, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_DIV_BASE_O(d, rxy) BOOST_PP_DIV_BASE_O_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
+# define BOOST_PP_DIV_BASE_O_IM(d, im) BOOST_PP_DIV_BASE_O_I(d, im)
+# else
+# define BOOST_PP_DIV_BASE_O(d, rxy) BOOST_PP_DIV_BASE_O_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define BOOST_PP_DIV_BASE_O_I(d, r, x, y) (BOOST_PP_INC(r), BOOST_PP_SUB_D(d, x, y), y)
+#
+# /* BOOST_PP_DIV_BASE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_DIV_BASE_D(d, x, y) BOOST_PP_WHILE_ ## d(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# else
+# define BOOST_PP_DIV_BASE_D(d, x, y) BOOST_PP_DIV_BASE_D_I(d, x, y)
+# define BOOST_PP_DIV_BASE_D_I(d, x, y) BOOST_PP_WHILE_ ## d(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/arithmetic/inc.hpp b/3rdParty/Boost/boost/preprocessor/arithmetic/inc.hpp
new file mode 100644
index 0000000..1597ab8
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/arithmetic/inc.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_INC */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
+# else
+# define BOOST_PP_INC(x) BOOST_PP_INC_OO((x))
+# define BOOST_PP_INC_OO(par) BOOST_PP_INC_I ## par
+# endif
+#
+# define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
+#
+# define BOOST_PP_INC_0 1
+# define BOOST_PP_INC_1 2
+# define BOOST_PP_INC_2 3
+# define BOOST_PP_INC_3 4
+# define BOOST_PP_INC_4 5
+# define BOOST_PP_INC_5 6
+# define BOOST_PP_INC_6 7
+# define BOOST_PP_INC_7 8
+# define BOOST_PP_INC_8 9
+# define BOOST_PP_INC_9 10
+# define BOOST_PP_INC_10 11
+# define BOOST_PP_INC_11 12
+# define BOOST_PP_INC_12 13
+# define BOOST_PP_INC_13 14
+# define BOOST_PP_INC_14 15
+# define BOOST_PP_INC_15 16
+# define BOOST_PP_INC_16 17
+# define BOOST_PP_INC_17 18
+# define BOOST_PP_INC_18 19
+# define BOOST_PP_INC_19 20
+# define BOOST_PP_INC_20 21
+# define BOOST_PP_INC_21 22
+# define BOOST_PP_INC_22 23
+# define BOOST_PP_INC_23 24
+# define BOOST_PP_INC_24 25
+# define BOOST_PP_INC_25 26
+# define BOOST_PP_INC_26 27
+# define BOOST_PP_INC_27 28
+# define BOOST_PP_INC_28 29
+# define BOOST_PP_INC_29 30
+# define BOOST_PP_INC_30 31
+# define BOOST_PP_INC_31 32
+# define BOOST_PP_INC_32 33
+# define BOOST_PP_INC_33 34
+# define BOOST_PP_INC_34 35
+# define BOOST_PP_INC_35 36
+# define BOOST_PP_INC_36 37
+# define BOOST_PP_INC_37 38
+# define BOOST_PP_INC_38 39
+# define BOOST_PP_INC_39 40
+# define BOOST_PP_INC_40 41
+# define BOOST_PP_INC_41 42
+# define BOOST_PP_INC_42 43
+# define BOOST_PP_INC_43 44
+# define BOOST_PP_INC_44 45
+# define BOOST_PP_INC_45 46
+# define BOOST_PP_INC_46 47
+# define BOOST_PP_INC_47 48
+# define BOOST_PP_INC_48 49
+# define BOOST_PP_INC_49 50
+# define BOOST_PP_INC_50 51
+# define BOOST_PP_INC_51 52
+# define BOOST_PP_INC_52 53
+# define BOOST_PP_INC_53 54
+# define BOOST_PP_INC_54 55
+# define BOOST_PP_INC_55 56
+# define BOOST_PP_INC_56 57
+# define BOOST_PP_INC_57 58
+# define BOOST_PP_INC_58 59
+# define BOOST_PP_INC_59 60
+# define BOOST_PP_INC_60 61
+# define BOOST_PP_INC_61 62
+# define BOOST_PP_INC_62 63
+# define BOOST_PP_INC_63 64
+# define BOOST_PP_INC_64 65
+# define BOOST_PP_INC_65 66
+# define BOOST_PP_INC_66 67
+# define BOOST_PP_INC_67 68
+# define BOOST_PP_INC_68 69
+# define BOOST_PP_INC_69 70
+# define BOOST_PP_INC_70 71
+# define BOOST_PP_INC_71 72
+# define BOOST_PP_INC_72 73
+# define BOOST_PP_INC_73 74
+# define BOOST_PP_INC_74 75
+# define BOOST_PP_INC_75 76
+# define BOOST_PP_INC_76 77
+# define BOOST_PP_INC_77 78
+# define BOOST_PP_INC_78 79
+# define BOOST_PP_INC_79 80
+# define BOOST_PP_INC_80 81
+# define BOOST_PP_INC_81 82
+# define BOOST_PP_INC_82 83
+# define BOOST_PP_INC_83 84
+# define BOOST_PP_INC_84 85
+# define BOOST_PP_INC_85 86
+# define BOOST_PP_INC_86 87
+# define BOOST_PP_INC_87 88
+# define BOOST_PP_INC_88 89
+# define BOOST_PP_INC_89 90
+# define BOOST_PP_INC_90 91
+# define BOOST_PP_INC_91 92
+# define BOOST_PP_INC_92 93
+# define BOOST_PP_INC_93 94
+# define BOOST_PP_INC_94 95
+# define BOOST_PP_INC_95 96
+# define BOOST_PP_INC_96 97
+# define BOOST_PP_INC_97 98
+# define BOOST_PP_INC_98 99
+# define BOOST_PP_INC_99 100
+# define BOOST_PP_INC_100 101
+# define BOOST_PP_INC_101 102
+# define BOOST_PP_INC_102 103
+# define BOOST_PP_INC_103 104
+# define BOOST_PP_INC_104 105
+# define BOOST_PP_INC_105 106
+# define BOOST_PP_INC_106 107
+# define BOOST_PP_INC_107 108
+# define BOOST_PP_INC_108 109
+# define BOOST_PP_INC_109 110
+# define BOOST_PP_INC_110 111
+# define BOOST_PP_INC_111 112
+# define BOOST_PP_INC_112 113
+# define BOOST_PP_INC_113 114
+# define BOOST_PP_INC_114 115
+# define BOOST_PP_INC_115 116
+# define BOOST_PP_INC_116 117
+# define BOOST_PP_INC_117 118
+# define BOOST_PP_INC_118 119
+# define BOOST_PP_INC_119 120
+# define BOOST_PP_INC_120 121
+# define BOOST_PP_INC_121 122
+# define BOOST_PP_INC_122 123
+# define BOOST_PP_INC_123 124
+# define BOOST_PP_INC_124 125
+# define BOOST_PP_INC_125 126
+# define BOOST_PP_INC_126 127
+# define BOOST_PP_INC_127 128
+# define BOOST_PP_INC_128 129
+# define BOOST_PP_INC_129 130
+# define BOOST_PP_INC_130 131
+# define BOOST_PP_INC_131 132
+# define BOOST_PP_INC_132 133
+# define BOOST_PP_INC_133 134
+# define BOOST_PP_INC_134 135
+# define BOOST_PP_INC_135 136
+# define BOOST_PP_INC_136 137
+# define BOOST_PP_INC_137 138
+# define BOOST_PP_INC_138 139
+# define BOOST_PP_INC_139 140
+# define BOOST_PP_INC_140 141
+# define BOOST_PP_INC_141 142
+# define BOOST_PP_INC_142 143
+# define BOOST_PP_INC_143 144
+# define BOOST_PP_INC_144 145
+# define BOOST_PP_INC_145 146
+# define BOOST_PP_INC_146 147
+# define BOOST_PP_INC_147 148
+# define BOOST_PP_INC_148 149
+# define BOOST_PP_INC_149 150
+# define BOOST_PP_INC_150 151
+# define BOOST_PP_INC_151 152
+# define BOOST_PP_INC_152 153
+# define BOOST_PP_INC_153 154
+# define BOOST_PP_INC_154 155
+# define BOOST_PP_INC_155 156
+# define BOOST_PP_INC_156 157
+# define BOOST_PP_INC_157 158
+# define BOOST_PP_INC_158 159
+# define BOOST_PP_INC_159 160
+# define BOOST_PP_INC_160 161
+# define BOOST_PP_INC_161 162
+# define BOOST_PP_INC_162 163
+# define BOOST_PP_INC_163 164
+# define BOOST_PP_INC_164 165
+# define BOOST_PP_INC_165 166
+# define BOOST_PP_INC_166 167
+# define BOOST_PP_INC_167 168
+# define BOOST_PP_INC_168 169
+# define BOOST_PP_INC_169 170
+# define BOOST_PP_INC_170 171
+# define BOOST_PP_INC_171 172
+# define BOOST_PP_INC_172 173
+# define BOOST_PP_INC_173 174
+# define BOOST_PP_INC_174 175
+# define BOOST_PP_INC_175 176
+# define BOOST_PP_INC_176 177
+# define BOOST_PP_INC_177 178
+# define BOOST_PP_INC_178 179
+# define BOOST_PP_INC_179 180
+# define BOOST_PP_INC_180 181
+# define BOOST_PP_INC_181 182
+# define BOOST_PP_INC_182 183
+# define BOOST_PP_INC_183 184
+# define BOOST_PP_INC_184 185
+# define BOOST_PP_INC_185 186
+# define BOOST_PP_INC_186 187
+# define BOOST_PP_INC_187 188
+# define BOOST_PP_INC_188 189
+# define BOOST_PP_INC_189 190
+# define BOOST_PP_INC_190 191
+# define BOOST_PP_INC_191 192
+# define BOOST_PP_INC_192 193
+# define BOOST_PP_INC_193 194
+# define BOOST_PP_INC_194 195
+# define BOOST_PP_INC_195 196
+# define BOOST_PP_INC_196 197
+# define BOOST_PP_INC_197 198
+# define BOOST_PP_INC_198 199
+# define BOOST_PP_INC_199 200
+# define BOOST_PP_INC_200 201
+# define BOOST_PP_INC_201 202
+# define BOOST_PP_INC_202 203
+# define BOOST_PP_INC_203 204
+# define BOOST_PP_INC_204 205
+# define BOOST_PP_INC_205 206
+# define BOOST_PP_INC_206 207
+# define BOOST_PP_INC_207 208
+# define BOOST_PP_INC_208 209
+# define BOOST_PP_INC_209 210
+# define BOOST_PP_INC_210 211
+# define BOOST_PP_INC_211 212
+# define BOOST_PP_INC_212 213
+# define BOOST_PP_INC_213 214
+# define BOOST_PP_INC_214 215
+# define BOOST_PP_INC_215 216
+# define BOOST_PP_INC_216 217
+# define BOOST_PP_INC_217 218
+# define BOOST_PP_INC_218 219
+# define BOOST_PP_INC_219 220
+# define BOOST_PP_INC_220 221
+# define BOOST_PP_INC_221 222
+# define BOOST_PP_INC_222 223
+# define BOOST_PP_INC_223 224
+# define BOOST_PP_INC_224 225
+# define BOOST_PP_INC_225 226
+# define BOOST_PP_INC_226 227
+# define BOOST_PP_INC_227 228
+# define BOOST_PP_INC_228 229
+# define BOOST_PP_INC_229 230
+# define BOOST_PP_INC_230 231
+# define BOOST_PP_INC_231 232
+# define BOOST_PP_INC_232 233
+# define BOOST_PP_INC_233 234
+# define BOOST_PP_INC_234 235
+# define BOOST_PP_INC_235 236
+# define BOOST_PP_INC_236 237
+# define BOOST_PP_INC_237 238
+# define BOOST_PP_INC_238 239
+# define BOOST_PP_INC_239 240
+# define BOOST_PP_INC_240 241
+# define BOOST_PP_INC_241 242
+# define BOOST_PP_INC_242 243
+# define BOOST_PP_INC_243 244
+# define BOOST_PP_INC_244 245
+# define BOOST_PP_INC_245 246
+# define BOOST_PP_INC_246 247
+# define BOOST_PP_INC_247 248
+# define BOOST_PP_INC_248 249
+# define BOOST_PP_INC_249 250
+# define BOOST_PP_INC_250 251
+# define BOOST_PP_INC_251 252
+# define BOOST_PP_INC_252 253
+# define BOOST_PP_INC_253 254
+# define BOOST_PP_INC_254 255
+# define BOOST_PP_INC_255 256
+# define BOOST_PP_INC_256 256
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/arithmetic/mod.hpp b/3rdParty/Boost/boost/preprocessor/arithmetic/mod.hpp
new file mode 100644
index 0000000..62489d1
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/arithmetic/mod.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
+#
+# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_MOD */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MOD(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
+# else
+# define BOOST_PP_MOD(x, y) BOOST_PP_MOD_I(x, y)
+# define BOOST_PP_MOD_I(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
+# endif
+#
+# /* BOOST_PP_MOD_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MOD_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
+# else
+# define BOOST_PP_MOD_D(d, x, y) BOOST_PP_MOD_D_I(d, x, y)
+# define BOOST_PP_MOD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/arithmetic/sub.hpp b/3rdParty/Boost/boost/preprocessor/arithmetic/sub.hpp
new file mode 100644
index 0000000..5262cda
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/arithmetic/sub.hpp
@@ -0,0 +1,50 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SUB */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SUB(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# else
+# define BOOST_PP_SUB(x, y) BOOST_PP_SUB_I(x, y)
+# define BOOST_PP_SUB_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# endif
+#
+# define BOOST_PP_SUB_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I xy
+# else
+# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define BOOST_PP_SUB_O_I(x, y) (BOOST_PP_DEC(x), BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_SUB_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# else
+# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_SUB_D_I(d, x, y)
+# define BOOST_PP_SUB_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/array/data.hpp b/3rdParty/Boost/boost/preprocessor/array/data.hpp
new file mode 100644
index 0000000..10c926a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/array/data.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (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_ARRAY_DATA_HPP
+# define BOOST_PREPROCESSOR_ARRAY_DATA_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_DATA */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_TUPLE_ELEM(2, 1, array)
+# else
+# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_ARRAY_DATA_I(array)
+# define BOOST_PP_ARRAY_DATA_I(array) BOOST_PP_ARRAY_DATA_II array
+# define BOOST_PP_ARRAY_DATA_II(size, data) data
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/array/elem.hpp b/3rdParty/Boost/boost/preprocessor/array/elem.hpp
new file mode 100644
index 0000000..105ba24
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/array/elem.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (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_ARRAY_ELEM_HPP
+# define BOOST_PREPROCESSOR_ARRAY_ELEM_HPP
+#
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_ELEM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
+# else
+# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_ARRAY_ELEM_I(i, array)
+# define BOOST_PP_ARRAY_ELEM_I(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/array/size.hpp b/3rdParty/Boost/boost/preprocessor/array/size.hpp
new file mode 100644
index 0000000..3f370ee
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/array/size.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (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_ARRAY_SIZE_HPP
+# define BOOST_PREPROCESSOR_ARRAY_SIZE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_SIZE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_TUPLE_ELEM(2, 0, array)
+# else
+# define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_ARRAY_SIZE_I(array)
+# define BOOST_PP_ARRAY_SIZE_I(array) BOOST_PP_ARRAY_SIZE_II array
+# define BOOST_PP_ARRAY_SIZE_II(size, data) size
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/cat.hpp b/3rdParty/Boost/boost/preprocessor/cat.hpp
new file mode 100644
index 0000000..b2a82c0
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/cat.hpp
@@ -0,0 +1,35 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CAT_HPP
+# define BOOST_PREPROCESSOR_CAT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_CAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
+# else
+# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_OO((a, b))
+# define BOOST_PP_CAT_OO(par) BOOST_PP_CAT_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_CAT_I(a, b) a ## b
+# else
+# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(a ## b)
+# define BOOST_PP_CAT_II(res) res
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/comma_if.hpp b/3rdParty/Boost/boost/preprocessor/comma_if.hpp
new file mode 100644
index 0000000..9ceb079
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/comma_if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_COMMA_IF_HPP
+# define BOOST_PREPROCESSOR_COMMA_IF_HPP
+#
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/comparison/less_equal.hpp b/3rdParty/Boost/boost/preprocessor/comparison/less_equal.hpp
new file mode 100644
index 0000000..1302d54
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/comparison/less_equal.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+#
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+#
+# /* BOOST_PP_LESS_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# else
+# define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_LESS_EQUAL_I(x, y)
+# define BOOST_PP_LESS_EQUAL_I(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# endif
+#
+# /* BOOST_PP_LESS_EQUAL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# else
+# define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D_I(d, x, y)
+# define BOOST_PP_LESS_EQUAL_D_I(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/config/config.hpp b/3rdParty/Boost/boost/preprocessor/config/config.hpp
new file mode 100644
index 0000000..dd0f713
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/config/config.hpp
@@ -0,0 +1,70 @@
+# /* **************************************************************************
+# * *
+# * (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_CONFIG_CONFIG_HPP
+# define BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
+#
+# /* BOOST_PP_CONFIG_FLAGS */
+#
+# define BOOST_PP_CONFIG_STRICT() 0x0001
+# define BOOST_PP_CONFIG_IDEAL() 0x0002
+#
+# define BOOST_PP_CONFIG_MSVC() 0x0004
+# define BOOST_PP_CONFIG_MWCC() 0x0008
+# define BOOST_PP_CONFIG_BCC() 0x0010
+# define BOOST_PP_CONFIG_EDG() 0x0020
+# define BOOST_PP_CONFIG_DMC() 0x0040
+#
+# ifndef BOOST_PP_CONFIG_FLAGS
+# if defined(__GCCXML__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__WAVE__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__MWERKS__) && __MWERKS__ >= 0x3200
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__EDG__) || defined(__EDG_VERSION__)
+# if defined(_MSC_VER) && __EDG_VERSION__ >= 308
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
+# else
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_EDG() | BOOST_PP_CONFIG_STRICT())
+# endif
+# elif defined(__MWERKS__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MWCC())
+# elif defined(__DMC__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_DMC())
+# elif defined(__BORLANDC__) && __BORLANDC__ >= 0x581
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC())
+# elif defined(_MSC_VER)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
+# else
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# endif
+# endif
+#
+# /* BOOST_PP_CONFIG_EXTENDED_LINE_INFO */
+#
+# ifndef BOOST_PP_CONFIG_EXTENDED_LINE_INFO
+# define BOOST_PP_CONFIG_EXTENDED_LINE_INFO 0
+# endif
+#
+# /* BOOST_PP_CONFIG_ERRORS */
+#
+# ifndef BOOST_PP_CONFIG_ERRORS
+# ifdef NDEBUG
+# define BOOST_PP_CONFIG_ERRORS 0
+# else
+# define BOOST_PP_CONFIG_ERRORS 1
+# endif
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/deduce_d.hpp b/3rdParty/Boost/boost/preprocessor/control/deduce_d.hpp
new file mode 100644
index 0000000..a0276b0
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/deduce_d.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (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_CONTROL_DEDUCE_D_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
+#
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_DEDUCE_D */
+#
+# define BOOST_PP_DEDUCE_D() BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/detail/dmc/while.hpp b/3rdParty/Boost/boost/preprocessor/control/detail/dmc/while.hpp
new file mode 100644
index 0000000..95c3135
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/detail/dmc/while.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p##(2, s)), p, o, s)
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p##(3, s)), p, o, s)
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p##(4, s)), p, o, s)
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p##(5, s)), p, o, s)
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p##(6, s)), p, o, s)
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p##(7, s)), p, o, s)
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p##(8, s)), p, o, s)
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p##(9, s)), p, o, s)
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p##(10, s)), p, o, s)
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p##(11, s)), p, o, s)
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p##(12, s)), p, o, s)
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p##(13, s)), p, o, s)
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p##(14, s)), p, o, s)
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p##(15, s)), p, o, s)
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p##(16, s)), p, o, s)
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p##(17, s)), p, o, s)
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p##(18, s)), p, o, s)
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p##(19, s)), p, o, s)
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p##(20, s)), p, o, s)
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p##(21, s)), p, o, s)
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p##(22, s)), p, o, s)
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p##(23, s)), p, o, s)
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p##(24, s)), p, o, s)
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p##(25, s)), p, o, s)
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p##(26, s)), p, o, s)
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p##(27, s)), p, o, s)
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p##(28, s)), p, o, s)
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p##(29, s)), p, o, s)
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p##(30, s)), p, o, s)
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p##(31, s)), p, o, s)
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p##(32, s)), p, o, s)
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p##(33, s)), p, o, s)
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p##(34, s)), p, o, s)
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p##(35, s)), p, o, s)
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p##(36, s)), p, o, s)
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p##(37, s)), p, o, s)
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p##(38, s)), p, o, s)
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p##(39, s)), p, o, s)
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p##(40, s)), p, o, s)
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p##(41, s)), p, o, s)
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p##(42, s)), p, o, s)
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p##(43, s)), p, o, s)
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p##(44, s)), p, o, s)
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p##(45, s)), p, o, s)
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p##(46, s)), p, o, s)
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p##(47, s)), p, o, s)
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p##(48, s)), p, o, s)
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p##(49, s)), p, o, s)
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p##(50, s)), p, o, s)
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p##(51, s)), p, o, s)
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p##(52, s)), p, o, s)
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p##(53, s)), p, o, s)
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p##(54, s)), p, o, s)
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p##(55, s)), p, o, s)
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p##(56, s)), p, o, s)
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p##(57, s)), p, o, s)
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p##(58, s)), p, o, s)
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p##(59, s)), p, o, s)
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p##(60, s)), p, o, s)
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p##(61, s)), p, o, s)
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p##(62, s)), p, o, s)
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p##(63, s)), p, o, s)
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p##(64, s)), p, o, s)
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p##(65, s)), p, o, s)
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p##(66, s)), p, o, s)
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p##(67, s)), p, o, s)
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p##(68, s)), p, o, s)
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p##(69, s)), p, o, s)
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p##(70, s)), p, o, s)
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p##(71, s)), p, o, s)
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p##(72, s)), p, o, s)
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p##(73, s)), p, o, s)
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p##(74, s)), p, o, s)
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p##(75, s)), p, o, s)
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p##(76, s)), p, o, s)
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p##(77, s)), p, o, s)
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p##(78, s)), p, o, s)
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p##(79, s)), p, o, s)
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p##(80, s)), p, o, s)
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p##(81, s)), p, o, s)
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p##(82, s)), p, o, s)
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p##(83, s)), p, o, s)
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p##(84, s)), p, o, s)
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p##(85, s)), p, o, s)
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p##(86, s)), p, o, s)
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p##(87, s)), p, o, s)
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p##(88, s)), p, o, s)
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p##(89, s)), p, o, s)
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p##(90, s)), p, o, s)
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p##(91, s)), p, o, s)
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p##(92, s)), p, o, s)
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p##(93, s)), p, o, s)
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p##(94, s)), p, o, s)
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p##(95, s)), p, o, s)
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p##(96, s)), p, o, s)
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p##(97, s)), p, o, s)
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p##(98, s)), p, o, s)
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p##(99, s)), p, o, s)
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p##(100, s)), p, o, s)
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p##(101, s)), p, o, s)
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p##(102, s)), p, o, s)
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p##(103, s)), p, o, s)
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p##(104, s)), p, o, s)
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p##(105, s)), p, o, s)
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p##(106, s)), p, o, s)
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p##(107, s)), p, o, s)
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p##(108, s)), p, o, s)
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p##(109, s)), p, o, s)
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p##(110, s)), p, o, s)
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p##(111, s)), p, o, s)
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p##(112, s)), p, o, s)
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p##(113, s)), p, o, s)
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p##(114, s)), p, o, s)
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p##(115, s)), p, o, s)
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p##(116, s)), p, o, s)
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p##(117, s)), p, o, s)
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p##(118, s)), p, o, s)
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p##(119, s)), p, o, s)
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p##(120, s)), p, o, s)
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p##(121, s)), p, o, s)
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p##(122, s)), p, o, s)
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p##(123, s)), p, o, s)
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p##(124, s)), p, o, s)
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p##(125, s)), p, o, s)
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p##(126, s)), p, o, s)
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p##(127, s)), p, o, s)
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p##(128, s)), p, o, s)
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p##(129, s)), p, o, s)
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p##(130, s)), p, o, s)
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p##(131, s)), p, o, s)
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p##(132, s)), p, o, s)
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p##(133, s)), p, o, s)
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p##(134, s)), p, o, s)
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p##(135, s)), p, o, s)
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p##(136, s)), p, o, s)
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p##(137, s)), p, o, s)
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p##(138, s)), p, o, s)
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p##(139, s)), p, o, s)
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p##(140, s)), p, o, s)
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p##(141, s)), p, o, s)
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p##(142, s)), p, o, s)
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p##(143, s)), p, o, s)
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p##(144, s)), p, o, s)
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p##(145, s)), p, o, s)
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p##(146, s)), p, o, s)
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p##(147, s)), p, o, s)
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p##(148, s)), p, o, s)
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p##(149, s)), p, o, s)
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p##(150, s)), p, o, s)
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p##(151, s)), p, o, s)
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p##(152, s)), p, o, s)
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p##(153, s)), p, o, s)
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p##(154, s)), p, o, s)
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p##(155, s)), p, o, s)
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p##(156, s)), p, o, s)
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p##(157, s)), p, o, s)
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p##(158, s)), p, o, s)
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p##(159, s)), p, o, s)
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p##(160, s)), p, o, s)
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p##(161, s)), p, o, s)
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p##(162, s)), p, o, s)
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p##(163, s)), p, o, s)
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p##(164, s)), p, o, s)
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p##(165, s)), p, o, s)
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p##(166, s)), p, o, s)
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p##(167, s)), p, o, s)
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p##(168, s)), p, o, s)
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p##(169, s)), p, o, s)
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p##(170, s)), p, o, s)
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p##(171, s)), p, o, s)
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p##(172, s)), p, o, s)
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p##(173, s)), p, o, s)
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p##(174, s)), p, o, s)
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p##(175, s)), p, o, s)
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p##(176, s)), p, o, s)
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p##(177, s)), p, o, s)
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p##(178, s)), p, o, s)
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p##(179, s)), p, o, s)
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p##(180, s)), p, o, s)
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p##(181, s)), p, o, s)
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p##(182, s)), p, o, s)
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p##(183, s)), p, o, s)
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p##(184, s)), p, o, s)
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p##(185, s)), p, o, s)
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p##(186, s)), p, o, s)
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p##(187, s)), p, o, s)
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p##(188, s)), p, o, s)
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p##(189, s)), p, o, s)
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p##(190, s)), p, o, s)
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p##(191, s)), p, o, s)
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p##(192, s)), p, o, s)
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p##(193, s)), p, o, s)
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p##(194, s)), p, o, s)
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p##(195, s)), p, o, s)
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p##(196, s)), p, o, s)
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p##(197, s)), p, o, s)
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p##(198, s)), p, o, s)
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p##(199, s)), p, o, s)
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p##(200, s)), p, o, s)
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p##(201, s)), p, o, s)
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p##(202, s)), p, o, s)
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p##(203, s)), p, o, s)
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p##(204, s)), p, o, s)
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p##(205, s)), p, o, s)
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p##(206, s)), p, o, s)
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p##(207, s)), p, o, s)
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p##(208, s)), p, o, s)
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p##(209, s)), p, o, s)
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p##(210, s)), p, o, s)
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p##(211, s)), p, o, s)
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p##(212, s)), p, o, s)
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p##(213, s)), p, o, s)
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p##(214, s)), p, o, s)
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p##(215, s)), p, o, s)
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p##(216, s)), p, o, s)
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p##(217, s)), p, o, s)
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p##(218, s)), p, o, s)
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p##(219, s)), p, o, s)
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p##(220, s)), p, o, s)
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p##(221, s)), p, o, s)
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p##(222, s)), p, o, s)
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p##(223, s)), p, o, s)
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p##(224, s)), p, o, s)
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p##(225, s)), p, o, s)
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p##(226, s)), p, o, s)
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p##(227, s)), p, o, s)
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p##(228, s)), p, o, s)
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p##(229, s)), p, o, s)
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p##(230, s)), p, o, s)
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p##(231, s)), p, o, s)
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p##(232, s)), p, o, s)
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p##(233, s)), p, o, s)
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p##(234, s)), p, o, s)
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p##(235, s)), p, o, s)
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p##(236, s)), p, o, s)
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p##(237, s)), p, o, s)
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p##(238, s)), p, o, s)
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p##(239, s)), p, o, s)
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p##(240, s)), p, o, s)
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p##(241, s)), p, o, s)
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p##(242, s)), p, o, s)
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p##(243, s)), p, o, s)
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p##(244, s)), p, o, s)
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p##(245, s)), p, o, s)
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p##(246, s)), p, o, s)
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p##(247, s)), p, o, s)
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p##(248, s)), p, o, s)
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p##(249, s)), p, o, s)
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p##(250, s)), p, o, s)
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p##(251, s)), p, o, s)
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p##(252, s)), p, o, s)
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p##(253, s)), p, o, s)
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p##(254, s)), p, o, s)
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p##(255, s)), p, o, s)
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p##(256, s)), p, o, s)
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p##(257, s)), p, o, s)
+#
+# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(2, s))
+# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(3, s))
+# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(4, s))
+# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(5, s))
+# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(6, s))
+# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(7, s))
+# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(8, s))
+# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(9, s))
+# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(10, s))
+# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(11, s))
+# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(12, s))
+# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(13, s))
+# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(14, s))
+# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(15, s))
+# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(16, s))
+# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(17, s))
+# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(18, s))
+# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(19, s))
+# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(20, s))
+# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(21, s))
+# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(22, s))
+# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(23, s))
+# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(24, s))
+# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(25, s))
+# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(26, s))
+# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(27, s))
+# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(28, s))
+# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(29, s))
+# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(30, s))
+# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(31, s))
+# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(32, s))
+# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(33, s))
+# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(34, s))
+# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(35, s))
+# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(36, s))
+# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(37, s))
+# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(38, s))
+# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(39, s))
+# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(40, s))
+# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(41, s))
+# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(42, s))
+# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(43, s))
+# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(44, s))
+# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(45, s))
+# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(46, s))
+# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(47, s))
+# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(48, s))
+# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(49, s))
+# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(50, s))
+# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(51, s))
+# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(52, s))
+# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(53, s))
+# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(54, s))
+# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(55, s))
+# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(56, s))
+# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(57, s))
+# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(58, s))
+# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(59, s))
+# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(60, s))
+# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(61, s))
+# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(62, s))
+# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(63, s))
+# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(64, s))
+# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(65, s))
+# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(66, s))
+# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(67, s))
+# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(68, s))
+# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(69, s))
+# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(70, s))
+# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(71, s))
+# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(72, s))
+# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(73, s))
+# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(74, s))
+# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(75, s))
+# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(76, s))
+# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(77, s))
+# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(78, s))
+# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(79, s))
+# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(80, s))
+# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(81, s))
+# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(82, s))
+# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(83, s))
+# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(84, s))
+# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(85, s))
+# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(86, s))
+# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(87, s))
+# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(88, s))
+# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(89, s))
+# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(90, s))
+# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(91, s))
+# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(92, s))
+# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(93, s))
+# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(94, s))
+# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(95, s))
+# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(96, s))
+# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(97, s))
+# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(98, s))
+# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(99, s))
+# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(100, s))
+# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(101, s))
+# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(102, s))
+# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(103, s))
+# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(104, s))
+# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(105, s))
+# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(106, s))
+# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(107, s))
+# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(108, s))
+# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(109, s))
+# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(110, s))
+# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(111, s))
+# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(112, s))
+# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(113, s))
+# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(114, s))
+# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(115, s))
+# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(116, s))
+# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(117, s))
+# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(118, s))
+# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(119, s))
+# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(120, s))
+# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(121, s))
+# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(122, s))
+# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(123, s))
+# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(124, s))
+# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(125, s))
+# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(126, s))
+# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(127, s))
+# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(128, s))
+# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(129, s))
+# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(130, s))
+# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(131, s))
+# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(132, s))
+# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(133, s))
+# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(134, s))
+# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(135, s))
+# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(136, s))
+# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(137, s))
+# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(138, s))
+# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(139, s))
+# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(140, s))
+# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(141, s))
+# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(142, s))
+# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(143, s))
+# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(144, s))
+# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(145, s))
+# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(146, s))
+# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(147, s))
+# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(148, s))
+# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(149, s))
+# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(150, s))
+# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(151, s))
+# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(152, s))
+# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(153, s))
+# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(154, s))
+# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(155, s))
+# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(156, s))
+# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(157, s))
+# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(158, s))
+# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(159, s))
+# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(160, s))
+# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(161, s))
+# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(162, s))
+# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(163, s))
+# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(164, s))
+# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(165, s))
+# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(166, s))
+# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(167, s))
+# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(168, s))
+# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(169, s))
+# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(170, s))
+# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(171, s))
+# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(172, s))
+# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(173, s))
+# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(174, s))
+# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(175, s))
+# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(176, s))
+# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(177, s))
+# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(178, s))
+# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(179, s))
+# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(180, s))
+# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(181, s))
+# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(182, s))
+# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(183, s))
+# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(184, s))
+# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(185, s))
+# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(186, s))
+# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(187, s))
+# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(188, s))
+# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(189, s))
+# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(190, s))
+# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(191, s))
+# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(192, s))
+# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(193, s))
+# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(194, s))
+# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(195, s))
+# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(196, s))
+# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(197, s))
+# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(198, s))
+# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(199, s))
+# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(200, s))
+# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(201, s))
+# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(202, s))
+# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(203, s))
+# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(204, s))
+# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(205, s))
+# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(206, s))
+# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(207, s))
+# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(208, s))
+# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(209, s))
+# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(210, s))
+# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(211, s))
+# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(212, s))
+# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(213, s))
+# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(214, s))
+# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(215, s))
+# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(216, s))
+# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(217, s))
+# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(218, s))
+# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(219, s))
+# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(220, s))
+# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(221, s))
+# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(222, s))
+# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(223, s))
+# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(224, s))
+# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(225, s))
+# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(226, s))
+# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(227, s))
+# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(228, s))
+# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(229, s))
+# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(230, s))
+# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(231, s))
+# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(232, s))
+# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(233, s))
+# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(234, s))
+# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(235, s))
+# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(236, s))
+# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(237, s))
+# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(238, s))
+# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(239, s))
+# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(240, s))
+# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(241, s))
+# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(242, s))
+# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(243, s))
+# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(244, s))
+# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(245, s))
+# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(246, s))
+# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(247, s))
+# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(248, s))
+# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(249, s))
+# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(250, s))
+# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(251, s))
+# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(252, s))
+# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(253, s))
+# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(254, s))
+# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(255, s))
+# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(256, s))
+# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(257, s))
+#
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/detail/edg/while.hpp b/3rdParty/Boost/boost/preprocessor/control/detail/edg/while.hpp
new file mode 100644
index 0000000..ce28eb2
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/detail/edg/while.hpp
@@ -0,0 +1,534 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_I(p, o, s)
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_I(p, o, s)
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_I(p, o, s)
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_I(p, o, s)
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_I(p, o, s)
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_I(p, o, s)
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_I(p, o, s)
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_I(p, o, s)
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_I(p, o, s)
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_I(p, o, s)
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_I(p, o, s)
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_I(p, o, s)
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_I(p, o, s)
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_I(p, o, s)
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_I(p, o, s)
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_I(p, o, s)
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_I(p, o, s)
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_I(p, o, s)
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_I(p, o, s)
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_I(p, o, s)
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_I(p, o, s)
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_I(p, o, s)
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_I(p, o, s)
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_I(p, o, s)
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_I(p, o, s)
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_I(p, o, s)
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_I(p, o, s)
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_I(p, o, s)
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_I(p, o, s)
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_I(p, o, s)
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_I(p, o, s)
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_I(p, o, s)
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_I(p, o, s)
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_I(p, o, s)
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_I(p, o, s)
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_I(p, o, s)
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_I(p, o, s)
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_I(p, o, s)
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_I(p, o, s)
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_I(p, o, s)
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_I(p, o, s)
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_I(p, o, s)
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_I(p, o, s)
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_I(p, o, s)
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_I(p, o, s)
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_I(p, o, s)
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_I(p, o, s)
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_I(p, o, s)
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_I(p, o, s)
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_I(p, o, s)
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_I(p, o, s)
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_I(p, o, s)
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_I(p, o, s)
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_I(p, o, s)
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_I(p, o, s)
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_I(p, o, s)
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_I(p, o, s)
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_I(p, o, s)
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_I(p, o, s)
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_I(p, o, s)
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_I(p, o, s)
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_I(p, o, s)
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_I(p, o, s)
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_I(p, o, s)
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_I(p, o, s)
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_I(p, o, s)
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_I(p, o, s)
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_I(p, o, s)
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_I(p, o, s)
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_I(p, o, s)
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_I(p, o, s)
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_I(p, o, s)
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_I(p, o, s)
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_I(p, o, s)
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_I(p, o, s)
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_I(p, o, s)
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_I(p, o, s)
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_I(p, o, s)
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_I(p, o, s)
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_I(p, o, s)
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_I(p, o, s)
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_I(p, o, s)
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_I(p, o, s)
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_I(p, o, s)
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_I(p, o, s)
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_I(p, o, s)
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_I(p, o, s)
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_I(p, o, s)
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_I(p, o, s)
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_I(p, o, s)
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_I(p, o, s)
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_I(p, o, s)
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_I(p, o, s)
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_I(p, o, s)
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_I(p, o, s)
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_I(p, o, s)
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_I(p, o, s)
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_I(p, o, s)
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_I(p, o, s)
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_I(p, o, s)
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_I(p, o, s)
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_I(p, o, s)
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_I(p, o, s)
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_I(p, o, s)
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_I(p, o, s)
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_I(p, o, s)
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_I(p, o, s)
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_I(p, o, s)
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_I(p, o, s)
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_I(p, o, s)
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_I(p, o, s)
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_I(p, o, s)
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_I(p, o, s)
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_I(p, o, s)
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_I(p, o, s)
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_I(p, o, s)
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_I(p, o, s)
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_I(p, o, s)
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_I(p, o, s)
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_I(p, o, s)
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_I(p, o, s)
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_I(p, o, s)
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_I(p, o, s)
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_I(p, o, s)
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_I(p, o, s)
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_I(p, o, s)
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_I(p, o, s)
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_I(p, o, s)
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_I(p, o, s)
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_I(p, o, s)
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_I(p, o, s)
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_I(p, o, s)
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_I(p, o, s)
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_I(p, o, s)
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_I(p, o, s)
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_I(p, o, s)
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_I(p, o, s)
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_I(p, o, s)
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_I(p, o, s)
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_I(p, o, s)
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_I(p, o, s)
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_I(p, o, s)
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_I(p, o, s)
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_I(p, o, s)
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_I(p, o, s)
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_I(p, o, s)
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_I(p, o, s)
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_I(p, o, s)
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_I(p, o, s)
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_I(p, o, s)
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_I(p, o, s)
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_I(p, o, s)
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_I(p, o, s)
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_I(p, o, s)
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_I(p, o, s)
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_I(p, o, s)
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_I(p, o, s)
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_I(p, o, s)
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_I(p, o, s)
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_I(p, o, s)
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_I(p, o, s)
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_I(p, o, s)
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_I(p, o, s)
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_I(p, o, s)
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_I(p, o, s)
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_I(p, o, s)
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_I(p, o, s)
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_I(p, o, s)
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_I(p, o, s)
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_I(p, o, s)
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_I(p, o, s)
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_I(p, o, s)
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_I(p, o, s)
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_I(p, o, s)
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_I(p, o, s)
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_I(p, o, s)
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_I(p, o, s)
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_I(p, o, s)
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_I(p, o, s)
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_I(p, o, s)
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_I(p, o, s)
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_I(p, o, s)
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_I(p, o, s)
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_I(p, o, s)
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_I(p, o, s)
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_I(p, o, s)
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_I(p, o, s)
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_I(p, o, s)
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_I(p, o, s)
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_I(p, o, s)
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_I(p, o, s)
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_I(p, o, s)
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_I(p, o, s)
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_I(p, o, s)
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_I(p, o, s)
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_I(p, o, s)
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_I(p, o, s)
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_I(p, o, s)
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_I(p, o, s)
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_I(p, o, s)
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_I(p, o, s)
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_I(p, o, s)
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_I(p, o, s)
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_I(p, o, s)
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_I(p, o, s)
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_I(p, o, s)
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_I(p, o, s)
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_I(p, o, s)
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_I(p, o, s)
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_I(p, o, s)
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_I(p, o, s)
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_I(p, o, s)
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_I(p, o, s)
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_I(p, o, s)
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_I(p, o, s)
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_I(p, o, s)
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_I(p, o, s)
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_I(p, o, s)
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_I(p, o, s)
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_I(p, o, s)
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_I(p, o, s)
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_I(p, o, s)
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_I(p, o, s)
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_I(p, o, s)
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_I(p, o, s)
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_I(p, o, s)
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_I(p, o, s)
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_I(p, o, s)
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_I(p, o, s)
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_I(p, o, s)
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_I(p, o, s)
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_I(p, o, s)
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_I(p, o, s)
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_I(p, o, s)
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_I(p, o, s)
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_I(p, o, s)
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_I(p, o, s)
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_I(p, o, s)
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_I(p, o, s)
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_I(p, o, s)
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_I(p, o, s)
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_I(p, o, s)
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_I(p, o, s)
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_I(p, o, s)
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_I(p, o, s)
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_I(p, o, s)
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_I(p, o, s)
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_I(p, o, s)
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_I(p, o, s)
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_I(p, o, s)
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_I(p, o, s)
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_I(p, o, s)
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_I(p, o, s)
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_I(p, o, s)
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_I(p, o, s)
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_I(p, o, s)
+#
+# define BOOST_PP_WHILE_1_I(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
+# define BOOST_PP_WHILE_2_I(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
+# define BOOST_PP_WHILE_3_I(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
+# define BOOST_PP_WHILE_4_I(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
+# define BOOST_PP_WHILE_5_I(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
+# define BOOST_PP_WHILE_6_I(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
+# define BOOST_PP_WHILE_7_I(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
+# define BOOST_PP_WHILE_8_I(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
+# define BOOST_PP_WHILE_9_I(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
+# define BOOST_PP_WHILE_10_I(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
+# define BOOST_PP_WHILE_11_I(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
+# define BOOST_PP_WHILE_12_I(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
+# define BOOST_PP_WHILE_13_I(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
+# define BOOST_PP_WHILE_14_I(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
+# define BOOST_PP_WHILE_15_I(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
+# define BOOST_PP_WHILE_16_I(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
+# define BOOST_PP_WHILE_17_I(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
+# define BOOST_PP_WHILE_18_I(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
+# define BOOST_PP_WHILE_19_I(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
+# define BOOST_PP_WHILE_20_I(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
+# define BOOST_PP_WHILE_21_I(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
+# define BOOST_PP_WHILE_22_I(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
+# define BOOST_PP_WHILE_23_I(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
+# define BOOST_PP_WHILE_24_I(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
+# define BOOST_PP_WHILE_25_I(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
+# define BOOST_PP_WHILE_26_I(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
+# define BOOST_PP_WHILE_27_I(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
+# define BOOST_PP_WHILE_28_I(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
+# define BOOST_PP_WHILE_29_I(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
+# define BOOST_PP_WHILE_30_I(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
+# define BOOST_PP_WHILE_31_I(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
+# define BOOST_PP_WHILE_32_I(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
+# define BOOST_PP_WHILE_33_I(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
+# define BOOST_PP_WHILE_34_I(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
+# define BOOST_PP_WHILE_35_I(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
+# define BOOST_PP_WHILE_36_I(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
+# define BOOST_PP_WHILE_37_I(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
+# define BOOST_PP_WHILE_38_I(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
+# define BOOST_PP_WHILE_39_I(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
+# define BOOST_PP_WHILE_40_I(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
+# define BOOST_PP_WHILE_41_I(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
+# define BOOST_PP_WHILE_42_I(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
+# define BOOST_PP_WHILE_43_I(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
+# define BOOST_PP_WHILE_44_I(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
+# define BOOST_PP_WHILE_45_I(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
+# define BOOST_PP_WHILE_46_I(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
+# define BOOST_PP_WHILE_47_I(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
+# define BOOST_PP_WHILE_48_I(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
+# define BOOST_PP_WHILE_49_I(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
+# define BOOST_PP_WHILE_50_I(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
+# define BOOST_PP_WHILE_51_I(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
+# define BOOST_PP_WHILE_52_I(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
+# define BOOST_PP_WHILE_53_I(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
+# define BOOST_PP_WHILE_54_I(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
+# define BOOST_PP_WHILE_55_I(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
+# define BOOST_PP_WHILE_56_I(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
+# define BOOST_PP_WHILE_57_I(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
+# define BOOST_PP_WHILE_58_I(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
+# define BOOST_PP_WHILE_59_I(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
+# define BOOST_PP_WHILE_60_I(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
+# define BOOST_PP_WHILE_61_I(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
+# define BOOST_PP_WHILE_62_I(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
+# define BOOST_PP_WHILE_63_I(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
+# define BOOST_PP_WHILE_64_I(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
+# define BOOST_PP_WHILE_65_I(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
+# define BOOST_PP_WHILE_66_I(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
+# define BOOST_PP_WHILE_67_I(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
+# define BOOST_PP_WHILE_68_I(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
+# define BOOST_PP_WHILE_69_I(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
+# define BOOST_PP_WHILE_70_I(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
+# define BOOST_PP_WHILE_71_I(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
+# define BOOST_PP_WHILE_72_I(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
+# define BOOST_PP_WHILE_73_I(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
+# define BOOST_PP_WHILE_74_I(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
+# define BOOST_PP_WHILE_75_I(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
+# define BOOST_PP_WHILE_76_I(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
+# define BOOST_PP_WHILE_77_I(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
+# define BOOST_PP_WHILE_78_I(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
+# define BOOST_PP_WHILE_79_I(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
+# define BOOST_PP_WHILE_80_I(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
+# define BOOST_PP_WHILE_81_I(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
+# define BOOST_PP_WHILE_82_I(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
+# define BOOST_PP_WHILE_83_I(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
+# define BOOST_PP_WHILE_84_I(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
+# define BOOST_PP_WHILE_85_I(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
+# define BOOST_PP_WHILE_86_I(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
+# define BOOST_PP_WHILE_87_I(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
+# define BOOST_PP_WHILE_88_I(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
+# define BOOST_PP_WHILE_89_I(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
+# define BOOST_PP_WHILE_90_I(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
+# define BOOST_PP_WHILE_91_I(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
+# define BOOST_PP_WHILE_92_I(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
+# define BOOST_PP_WHILE_93_I(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
+# define BOOST_PP_WHILE_94_I(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
+# define BOOST_PP_WHILE_95_I(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
+# define BOOST_PP_WHILE_96_I(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
+# define BOOST_PP_WHILE_97_I(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
+# define BOOST_PP_WHILE_98_I(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
+# define BOOST_PP_WHILE_99_I(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
+# define BOOST_PP_WHILE_100_I(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
+# define BOOST_PP_WHILE_101_I(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
+# define BOOST_PP_WHILE_102_I(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
+# define BOOST_PP_WHILE_103_I(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
+# define BOOST_PP_WHILE_104_I(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
+# define BOOST_PP_WHILE_105_I(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
+# define BOOST_PP_WHILE_106_I(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
+# define BOOST_PP_WHILE_107_I(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
+# define BOOST_PP_WHILE_108_I(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
+# define BOOST_PP_WHILE_109_I(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
+# define BOOST_PP_WHILE_110_I(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
+# define BOOST_PP_WHILE_111_I(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
+# define BOOST_PP_WHILE_112_I(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
+# define BOOST_PP_WHILE_113_I(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
+# define BOOST_PP_WHILE_114_I(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
+# define BOOST_PP_WHILE_115_I(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
+# define BOOST_PP_WHILE_116_I(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
+# define BOOST_PP_WHILE_117_I(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
+# define BOOST_PP_WHILE_118_I(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
+# define BOOST_PP_WHILE_119_I(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
+# define BOOST_PP_WHILE_120_I(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
+# define BOOST_PP_WHILE_121_I(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
+# define BOOST_PP_WHILE_122_I(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
+# define BOOST_PP_WHILE_123_I(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
+# define BOOST_PP_WHILE_124_I(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
+# define BOOST_PP_WHILE_125_I(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
+# define BOOST_PP_WHILE_126_I(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
+# define BOOST_PP_WHILE_127_I(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
+# define BOOST_PP_WHILE_128_I(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
+# define BOOST_PP_WHILE_129_I(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
+# define BOOST_PP_WHILE_130_I(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
+# define BOOST_PP_WHILE_131_I(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
+# define BOOST_PP_WHILE_132_I(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
+# define BOOST_PP_WHILE_133_I(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
+# define BOOST_PP_WHILE_134_I(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
+# define BOOST_PP_WHILE_135_I(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
+# define BOOST_PP_WHILE_136_I(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
+# define BOOST_PP_WHILE_137_I(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
+# define BOOST_PP_WHILE_138_I(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
+# define BOOST_PP_WHILE_139_I(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
+# define BOOST_PP_WHILE_140_I(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
+# define BOOST_PP_WHILE_141_I(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
+# define BOOST_PP_WHILE_142_I(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
+# define BOOST_PP_WHILE_143_I(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
+# define BOOST_PP_WHILE_144_I(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
+# define BOOST_PP_WHILE_145_I(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
+# define BOOST_PP_WHILE_146_I(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
+# define BOOST_PP_WHILE_147_I(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
+# define BOOST_PP_WHILE_148_I(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
+# define BOOST_PP_WHILE_149_I(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
+# define BOOST_PP_WHILE_150_I(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
+# define BOOST_PP_WHILE_151_I(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
+# define BOOST_PP_WHILE_152_I(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
+# define BOOST_PP_WHILE_153_I(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
+# define BOOST_PP_WHILE_154_I(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
+# define BOOST_PP_WHILE_155_I(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
+# define BOOST_PP_WHILE_156_I(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
+# define BOOST_PP_WHILE_157_I(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
+# define BOOST_PP_WHILE_158_I(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
+# define BOOST_PP_WHILE_159_I(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
+# define BOOST_PP_WHILE_160_I(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
+# define BOOST_PP_WHILE_161_I(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
+# define BOOST_PP_WHILE_162_I(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
+# define BOOST_PP_WHILE_163_I(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
+# define BOOST_PP_WHILE_164_I(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
+# define BOOST_PP_WHILE_165_I(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
+# define BOOST_PP_WHILE_166_I(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
+# define BOOST_PP_WHILE_167_I(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
+# define BOOST_PP_WHILE_168_I(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
+# define BOOST_PP_WHILE_169_I(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
+# define BOOST_PP_WHILE_170_I(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
+# define BOOST_PP_WHILE_171_I(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
+# define BOOST_PP_WHILE_172_I(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
+# define BOOST_PP_WHILE_173_I(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
+# define BOOST_PP_WHILE_174_I(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
+# define BOOST_PP_WHILE_175_I(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
+# define BOOST_PP_WHILE_176_I(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
+# define BOOST_PP_WHILE_177_I(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
+# define BOOST_PP_WHILE_178_I(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
+# define BOOST_PP_WHILE_179_I(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
+# define BOOST_PP_WHILE_180_I(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
+# define BOOST_PP_WHILE_181_I(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
+# define BOOST_PP_WHILE_182_I(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
+# define BOOST_PP_WHILE_183_I(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
+# define BOOST_PP_WHILE_184_I(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
+# define BOOST_PP_WHILE_185_I(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
+# define BOOST_PP_WHILE_186_I(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
+# define BOOST_PP_WHILE_187_I(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
+# define BOOST_PP_WHILE_188_I(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
+# define BOOST_PP_WHILE_189_I(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
+# define BOOST_PP_WHILE_190_I(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
+# define BOOST_PP_WHILE_191_I(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
+# define BOOST_PP_WHILE_192_I(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
+# define BOOST_PP_WHILE_193_I(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
+# define BOOST_PP_WHILE_194_I(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
+# define BOOST_PP_WHILE_195_I(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
+# define BOOST_PP_WHILE_196_I(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
+# define BOOST_PP_WHILE_197_I(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
+# define BOOST_PP_WHILE_198_I(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
+# define BOOST_PP_WHILE_199_I(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
+# define BOOST_PP_WHILE_200_I(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
+# define BOOST_PP_WHILE_201_I(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
+# define BOOST_PP_WHILE_202_I(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
+# define BOOST_PP_WHILE_203_I(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
+# define BOOST_PP_WHILE_204_I(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
+# define BOOST_PP_WHILE_205_I(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
+# define BOOST_PP_WHILE_206_I(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
+# define BOOST_PP_WHILE_207_I(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
+# define BOOST_PP_WHILE_208_I(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
+# define BOOST_PP_WHILE_209_I(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
+# define BOOST_PP_WHILE_210_I(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
+# define BOOST_PP_WHILE_211_I(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
+# define BOOST_PP_WHILE_212_I(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
+# define BOOST_PP_WHILE_213_I(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
+# define BOOST_PP_WHILE_214_I(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
+# define BOOST_PP_WHILE_215_I(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
+# define BOOST_PP_WHILE_216_I(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
+# define BOOST_PP_WHILE_217_I(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
+# define BOOST_PP_WHILE_218_I(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
+# define BOOST_PP_WHILE_219_I(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
+# define BOOST_PP_WHILE_220_I(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
+# define BOOST_PP_WHILE_221_I(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
+# define BOOST_PP_WHILE_222_I(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
+# define BOOST_PP_WHILE_223_I(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
+# define BOOST_PP_WHILE_224_I(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
+# define BOOST_PP_WHILE_225_I(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
+# define BOOST_PP_WHILE_226_I(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
+# define BOOST_PP_WHILE_227_I(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
+# define BOOST_PP_WHILE_228_I(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
+# define BOOST_PP_WHILE_229_I(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
+# define BOOST_PP_WHILE_230_I(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
+# define BOOST_PP_WHILE_231_I(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
+# define BOOST_PP_WHILE_232_I(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
+# define BOOST_PP_WHILE_233_I(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
+# define BOOST_PP_WHILE_234_I(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
+# define BOOST_PP_WHILE_235_I(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
+# define BOOST_PP_WHILE_236_I(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
+# define BOOST_PP_WHILE_237_I(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
+# define BOOST_PP_WHILE_238_I(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
+# define BOOST_PP_WHILE_239_I(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
+# define BOOST_PP_WHILE_240_I(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
+# define BOOST_PP_WHILE_241_I(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
+# define BOOST_PP_WHILE_242_I(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
+# define BOOST_PP_WHILE_243_I(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
+# define BOOST_PP_WHILE_244_I(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
+# define BOOST_PP_WHILE_245_I(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
+# define BOOST_PP_WHILE_246_I(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
+# define BOOST_PP_WHILE_247_I(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
+# define BOOST_PP_WHILE_248_I(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
+# define BOOST_PP_WHILE_249_I(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
+# define BOOST_PP_WHILE_250_I(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
+# define BOOST_PP_WHILE_251_I(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
+# define BOOST_PP_WHILE_252_I(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
+# define BOOST_PP_WHILE_253_I(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
+# define BOOST_PP_WHILE_254_I(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
+# define BOOST_PP_WHILE_255_I(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
+# define BOOST_PP_WHILE_256_I(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/detail/msvc/while.hpp b/3rdParty/Boost/boost/preprocessor/control/detail/msvc/while.hpp
new file mode 100644
index 0000000..e543e41
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/detail/msvc/while.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/detail/while.hpp b/3rdParty/Boost/boost/preprocessor/control/detail/while.hpp
new file mode 100644
index 0000000..7315e1d
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/detail/while.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p(2, s)), p, o, s)
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p(3, s)), p, o, s)
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p(4, s)), p, o, s)
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p(5, s)), p, o, s)
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p(6, s)), p, o, s)
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p(7, s)), p, o, s)
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p(8, s)), p, o, s)
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p(9, s)), p, o, s)
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p(10, s)), p, o, s)
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p(11, s)), p, o, s)
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p(12, s)), p, o, s)
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p(13, s)), p, o, s)
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p(14, s)), p, o, s)
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p(15, s)), p, o, s)
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p(16, s)), p, o, s)
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p(17, s)), p, o, s)
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p(18, s)), p, o, s)
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p(19, s)), p, o, s)
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p(20, s)), p, o, s)
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p(21, s)), p, o, s)
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p(22, s)), p, o, s)
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p(23, s)), p, o, s)
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p(24, s)), p, o, s)
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p(25, s)), p, o, s)
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p(26, s)), p, o, s)
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p(27, s)), p, o, s)
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p(28, s)), p, o, s)
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p(29, s)), p, o, s)
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p(30, s)), p, o, s)
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p(31, s)), p, o, s)
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p(32, s)), p, o, s)
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p(33, s)), p, o, s)
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p(34, s)), p, o, s)
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p(35, s)), p, o, s)
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p(36, s)), p, o, s)
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p(37, s)), p, o, s)
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p(38, s)), p, o, s)
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p(39, s)), p, o, s)
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p(40, s)), p, o, s)
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p(41, s)), p, o, s)
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p(42, s)), p, o, s)
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p(43, s)), p, o, s)
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p(44, s)), p, o, s)
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p(45, s)), p, o, s)
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p(46, s)), p, o, s)
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p(47, s)), p, o, s)
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p(48, s)), p, o, s)
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p(49, s)), p, o, s)
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p(50, s)), p, o, s)
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p(51, s)), p, o, s)
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p(52, s)), p, o, s)
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p(53, s)), p, o, s)
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p(54, s)), p, o, s)
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p(55, s)), p, o, s)
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p(56, s)), p, o, s)
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p(57, s)), p, o, s)
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p(58, s)), p, o, s)
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p(59, s)), p, o, s)
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p(60, s)), p, o, s)
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p(61, s)), p, o, s)
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p(62, s)), p, o, s)
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p(63, s)), p, o, s)
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p(64, s)), p, o, s)
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p(65, s)), p, o, s)
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p(66, s)), p, o, s)
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p(67, s)), p, o, s)
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p(68, s)), p, o, s)
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p(69, s)), p, o, s)
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p(70, s)), p, o, s)
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p(71, s)), p, o, s)
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p(72, s)), p, o, s)
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p(73, s)), p, o, s)
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p(74, s)), p, o, s)
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p(75, s)), p, o, s)
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p(76, s)), p, o, s)
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p(77, s)), p, o, s)
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p(78, s)), p, o, s)
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p(79, s)), p, o, s)
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p(80, s)), p, o, s)
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p(81, s)), p, o, s)
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p(82, s)), p, o, s)
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p(83, s)), p, o, s)
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p(84, s)), p, o, s)
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p(85, s)), p, o, s)
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p(86, s)), p, o, s)
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p(87, s)), p, o, s)
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p(88, s)), p, o, s)
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p(89, s)), p, o, s)
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p(90, s)), p, o, s)
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p(91, s)), p, o, s)
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p(92, s)), p, o, s)
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p(93, s)), p, o, s)
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p(94, s)), p, o, s)
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p(95, s)), p, o, s)
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p(96, s)), p, o, s)
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p(97, s)), p, o, s)
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p(98, s)), p, o, s)
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p(99, s)), p, o, s)
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p(100, s)), p, o, s)
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p(101, s)), p, o, s)
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p(102, s)), p, o, s)
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p(103, s)), p, o, s)
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p(104, s)), p, o, s)
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p(105, s)), p, o, s)
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p(106, s)), p, o, s)
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p(107, s)), p, o, s)
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p(108, s)), p, o, s)
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p(109, s)), p, o, s)
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p(110, s)), p, o, s)
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p(111, s)), p, o, s)
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p(112, s)), p, o, s)
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p(113, s)), p, o, s)
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p(114, s)), p, o, s)
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p(115, s)), p, o, s)
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p(116, s)), p, o, s)
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p(117, s)), p, o, s)
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p(118, s)), p, o, s)
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p(119, s)), p, o, s)
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p(120, s)), p, o, s)
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p(121, s)), p, o, s)
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p(122, s)), p, o, s)
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p(123, s)), p, o, s)
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p(124, s)), p, o, s)
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p(125, s)), p, o, s)
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p(126, s)), p, o, s)
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p(127, s)), p, o, s)
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p(128, s)), p, o, s)
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p(129, s)), p, o, s)
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p(130, s)), p, o, s)
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p(131, s)), p, o, s)
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p(132, s)), p, o, s)
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p(133, s)), p, o, s)
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p(134, s)), p, o, s)
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p(135, s)), p, o, s)
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p(136, s)), p, o, s)
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p(137, s)), p, o, s)
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p(138, s)), p, o, s)
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p(139, s)), p, o, s)
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p(140, s)), p, o, s)
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p(141, s)), p, o, s)
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p(142, s)), p, o, s)
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p(143, s)), p, o, s)
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p(144, s)), p, o, s)
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p(145, s)), p, o, s)
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p(146, s)), p, o, s)
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p(147, s)), p, o, s)
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p(148, s)), p, o, s)
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p(149, s)), p, o, s)
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p(150, s)), p, o, s)
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p(151, s)), p, o, s)
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p(152, s)), p, o, s)
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p(153, s)), p, o, s)
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p(154, s)), p, o, s)
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p(155, s)), p, o, s)
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p(156, s)), p, o, s)
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p(157, s)), p, o, s)
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p(158, s)), p, o, s)
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p(159, s)), p, o, s)
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p(160, s)), p, o, s)
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p(161, s)), p, o, s)
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p(162, s)), p, o, s)
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p(163, s)), p, o, s)
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p(164, s)), p, o, s)
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p(165, s)), p, o, s)
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p(166, s)), p, o, s)
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p(167, s)), p, o, s)
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p(168, s)), p, o, s)
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p(169, s)), p, o, s)
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p(170, s)), p, o, s)
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p(171, s)), p, o, s)
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p(172, s)), p, o, s)
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p(173, s)), p, o, s)
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p(174, s)), p, o, s)
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p(175, s)), p, o, s)
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p(176, s)), p, o, s)
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p(177, s)), p, o, s)
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p(178, s)), p, o, s)
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p(179, s)), p, o, s)
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p(180, s)), p, o, s)
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p(181, s)), p, o, s)
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p(182, s)), p, o, s)
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p(183, s)), p, o, s)
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p(184, s)), p, o, s)
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p(185, s)), p, o, s)
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p(186, s)), p, o, s)
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p(187, s)), p, o, s)
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p(188, s)), p, o, s)
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p(189, s)), p, o, s)
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p(190, s)), p, o, s)
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p(191, s)), p, o, s)
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p(192, s)), p, o, s)
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p(193, s)), p, o, s)
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p(194, s)), p, o, s)
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p(195, s)), p, o, s)
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p(196, s)), p, o, s)
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p(197, s)), p, o, s)
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p(198, s)), p, o, s)
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p(199, s)), p, o, s)
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p(200, s)), p, o, s)
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p(201, s)), p, o, s)
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p(202, s)), p, o, s)
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p(203, s)), p, o, s)
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p(204, s)), p, o, s)
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p(205, s)), p, o, s)
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p(206, s)), p, o, s)
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p(207, s)), p, o, s)
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p(208, s)), p, o, s)
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p(209, s)), p, o, s)
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p(210, s)), p, o, s)
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p(211, s)), p, o, s)
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p(212, s)), p, o, s)
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p(213, s)), p, o, s)
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p(214, s)), p, o, s)
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p(215, s)), p, o, s)
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p(216, s)), p, o, s)
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p(217, s)), p, o, s)
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p(218, s)), p, o, s)
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p(219, s)), p, o, s)
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p(220, s)), p, o, s)
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p(221, s)), p, o, s)
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p(222, s)), p, o, s)
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p(223, s)), p, o, s)
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p(224, s)), p, o, s)
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p(225, s)), p, o, s)
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p(226, s)), p, o, s)
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p(227, s)), p, o, s)
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p(228, s)), p, o, s)
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p(229, s)), p, o, s)
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p(230, s)), p, o, s)
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p(231, s)), p, o, s)
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p(232, s)), p, o, s)
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p(233, s)), p, o, s)
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p(234, s)), p, o, s)
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p(235, s)), p, o, s)
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p(236, s)), p, o, s)
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p(237, s)), p, o, s)
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p(238, s)), p, o, s)
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p(239, s)), p, o, s)
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p(240, s)), p, o, s)
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p(241, s)), p, o, s)
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p(242, s)), p, o, s)
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p(243, s)), p, o, s)
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p(244, s)), p, o, s)
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p(245, s)), p, o, s)
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p(246, s)), p, o, s)
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p(247, s)), p, o, s)
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p(248, s)), p, o, s)
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p(249, s)), p, o, s)
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p(250, s)), p, o, s)
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p(251, s)), p, o, s)
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p(252, s)), p, o, s)
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p(253, s)), p, o, s)
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p(254, s)), p, o, s)
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p(255, s)), p, o, s)
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p(256, s)), p, o, s)
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p(257, s)), p, o, s)
+#
+# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(2, s))
+# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(3, s))
+# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(4, s))
+# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(5, s))
+# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(6, s))
+# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(7, s))
+# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(8, s))
+# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(9, s))
+# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(10, s))
+# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(11, s))
+# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(12, s))
+# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(13, s))
+# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(14, s))
+# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(15, s))
+# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(16, s))
+# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(17, s))
+# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(18, s))
+# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(19, s))
+# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(20, s))
+# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(21, s))
+# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(22, s))
+# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(23, s))
+# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(24, s))
+# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(25, s))
+# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(26, s))
+# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(27, s))
+# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(28, s))
+# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(29, s))
+# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(30, s))
+# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(31, s))
+# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(32, s))
+# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(33, s))
+# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(34, s))
+# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(35, s))
+# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(36, s))
+# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(37, s))
+# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(38, s))
+# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(39, s))
+# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(40, s))
+# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(41, s))
+# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(42, s))
+# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(43, s))
+# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(44, s))
+# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(45, s))
+# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(46, s))
+# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(47, s))
+# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(48, s))
+# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(49, s))
+# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(50, s))
+# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(51, s))
+# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(52, s))
+# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(53, s))
+# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(54, s))
+# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(55, s))
+# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(56, s))
+# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(57, s))
+# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(58, s))
+# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(59, s))
+# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(60, s))
+# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(61, s))
+# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(62, s))
+# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(63, s))
+# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(64, s))
+# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(65, s))
+# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(66, s))
+# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(67, s))
+# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(68, s))
+# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(69, s))
+# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(70, s))
+# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(71, s))
+# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(72, s))
+# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(73, s))
+# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(74, s))
+# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(75, s))
+# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(76, s))
+# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(77, s))
+# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(78, s))
+# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(79, s))
+# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(80, s))
+# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(81, s))
+# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(82, s))
+# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(83, s))
+# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(84, s))
+# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(85, s))
+# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(86, s))
+# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(87, s))
+# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(88, s))
+# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(89, s))
+# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(90, s))
+# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(91, s))
+# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(92, s))
+# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(93, s))
+# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(94, s))
+# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(95, s))
+# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(96, s))
+# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(97, s))
+# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(98, s))
+# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(99, s))
+# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(100, s))
+# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(101, s))
+# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(102, s))
+# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(103, s))
+# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(104, s))
+# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(105, s))
+# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(106, s))
+# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(107, s))
+# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(108, s))
+# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(109, s))
+# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(110, s))
+# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(111, s))
+# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(112, s))
+# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(113, s))
+# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(114, s))
+# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(115, s))
+# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(116, s))
+# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(117, s))
+# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(118, s))
+# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(119, s))
+# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(120, s))
+# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(121, s))
+# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(122, s))
+# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(123, s))
+# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(124, s))
+# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(125, s))
+# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(126, s))
+# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(127, s))
+# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(128, s))
+# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(129, s))
+# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(130, s))
+# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(131, s))
+# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(132, s))
+# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(133, s))
+# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(134, s))
+# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(135, s))
+# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(136, s))
+# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(137, s))
+# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(138, s))
+# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(139, s))
+# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(140, s))
+# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(141, s))
+# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(142, s))
+# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(143, s))
+# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(144, s))
+# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(145, s))
+# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(146, s))
+# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(147, s))
+# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(148, s))
+# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(149, s))
+# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(150, s))
+# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(151, s))
+# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(152, s))
+# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(153, s))
+# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(154, s))
+# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(155, s))
+# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(156, s))
+# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(157, s))
+# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(158, s))
+# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(159, s))
+# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(160, s))
+# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(161, s))
+# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(162, s))
+# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(163, s))
+# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(164, s))
+# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(165, s))
+# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(166, s))
+# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(167, s))
+# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(168, s))
+# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(169, s))
+# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(170, s))
+# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(171, s))
+# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(172, s))
+# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(173, s))
+# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(174, s))
+# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(175, s))
+# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(176, s))
+# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(177, s))
+# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(178, s))
+# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(179, s))
+# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(180, s))
+# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(181, s))
+# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(182, s))
+# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(183, s))
+# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(184, s))
+# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(185, s))
+# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(186, s))
+# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(187, s))
+# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(188, s))
+# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(189, s))
+# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(190, s))
+# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(191, s))
+# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(192, s))
+# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(193, s))
+# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(194, s))
+# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(195, s))
+# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(196, s))
+# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(197, s))
+# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(198, s))
+# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(199, s))
+# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(200, s))
+# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(201, s))
+# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(202, s))
+# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(203, s))
+# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(204, s))
+# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(205, s))
+# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(206, s))
+# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(207, s))
+# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(208, s))
+# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(209, s))
+# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(210, s))
+# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(211, s))
+# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(212, s))
+# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(213, s))
+# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(214, s))
+# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(215, s))
+# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(216, s))
+# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(217, s))
+# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(218, s))
+# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(219, s))
+# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(220, s))
+# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(221, s))
+# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(222, s))
+# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(223, s))
+# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(224, s))
+# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(225, s))
+# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(226, s))
+# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(227, s))
+# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(228, s))
+# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(229, s))
+# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(230, s))
+# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(231, s))
+# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(232, s))
+# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(233, s))
+# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(234, s))
+# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(235, s))
+# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(236, s))
+# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(237, s))
+# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(238, s))
+# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(239, s))
+# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(240, s))
+# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(241, s))
+# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(242, s))
+# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(243, s))
+# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(244, s))
+# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(245, s))
+# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(246, s))
+# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(247, s))
+# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(248, s))
+# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(249, s))
+# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(250, s))
+# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(251, s))
+# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(252, s))
+# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(253, s))
+# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(254, s))
+# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(255, s))
+# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(256, s))
+# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(257, s))
+#
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/expr_if.hpp b/3rdParty/Boost/boost/preprocessor/control/expr_if.hpp
new file mode 100644
index 0000000..0e1ab51
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/expr_if.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+#
+# /* BOOST_PP_EXPR_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr)
+# else
+# define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IF_I(cond, expr)
+# define BOOST_PP_EXPR_IF_I(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/expr_iif.hpp b/3rdParty/Boost/boost/preprocessor/control/expr_iif.hpp
new file mode 100644
index 0000000..58f45a4
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/expr_iif.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (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_CONTROL_EXPR_IIF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_EXPR_IIF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_I(bit, expr)
+# else
+# define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_OO((bit, expr))
+# define BOOST_PP_EXPR_IIF_OO(par) BOOST_PP_EXPR_IIF_I ## par
+# endif
+#
+# define BOOST_PP_EXPR_IIF_I(bit, expr) BOOST_PP_EXPR_IIF_ ## bit(expr)
+#
+# define BOOST_PP_EXPR_IIF_0(expr)
+# define BOOST_PP_EXPR_IIF_1(expr) expr
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/if.hpp b/3rdParty/Boost/boost/preprocessor/control/if.hpp
new file mode 100644
index 0000000..52cfc3d
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/if.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_IF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+#
+# /* BOOST_PP_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IF(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
+# else
+# define BOOST_PP_IF(cond, t, f) BOOST_PP_IF_I(cond, t, f)
+# define BOOST_PP_IF_I(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/iif.hpp b/3rdParty/Boost/boost/preprocessor/control/iif.hpp
new file mode 100644
index 0000000..fd07817
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/iif.hpp
@@ -0,0 +1,34 @@
+# /* **************************************************************************
+# * *
+# * (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_CONTROL_IIF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_IIF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_I(bit, t, f)
+# else
+# define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_OO((bit, t, f))
+# define BOOST_PP_IIF_OO(par) BOOST_PP_IIF_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_ ## bit(t, f)
+# else
+# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_II(BOOST_PP_IIF_ ## bit(t, f))
+# define BOOST_PP_IIF_II(id) id
+# endif
+#
+# define BOOST_PP_IIF_0(t, f) f
+# define BOOST_PP_IIF_1(t, f) t
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/control/while.hpp b/3rdParty/Boost/boost/preprocessor/control/while.hpp
new file mode 100644
index 0000000..e8a65ff
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/control/while.hpp
@@ -0,0 +1,312 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+#
+# /* BOOST_PP_WHILE */
+#
+# if 0
+# define BOOST_PP_WHILE(pred, op, state)
+# endif
+#
+# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
+# else
+# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
+# endif
+#
+# define BOOST_PP_WHILE_F(d, _) 0
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/control/detail/edg/while.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# include <boost/preprocessor/control/detail/msvc/while.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/control/detail/dmc/while.hpp>
+# else
+# include <boost/preprocessor/control/detail/while.hpp>
+# endif
+#
+# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
+#
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/debug/error.hpp b/3rdParty/Boost/boost/preprocessor/debug/error.hpp
new file mode 100644
index 0000000..c8ae5e7
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/debug/error.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (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_DEBUG_ERROR_HPP
+# define BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_ERROR */
+#
+# if BOOST_PP_CONFIG_ERRORS
+# define BOOST_PP_ERROR(code) BOOST_PP_CAT(BOOST_PP_ERROR_, code)
+# endif
+#
+# define BOOST_PP_ERROR_0x0000 BOOST_PP_ERROR(0x0000, BOOST_PP_INDEX_OUT_OF_BOUNDS)
+# define BOOST_PP_ERROR_0x0001 BOOST_PP_ERROR(0x0001, BOOST_PP_WHILE_OVERFLOW)
+# define BOOST_PP_ERROR_0x0002 BOOST_PP_ERROR(0x0002, BOOST_PP_FOR_OVERFLOW)
+# define BOOST_PP_ERROR_0x0003 BOOST_PP_ERROR(0x0003, BOOST_PP_REPEAT_OVERFLOW)
+# define BOOST_PP_ERROR_0x0004 BOOST_PP_ERROR(0x0004, BOOST_PP_LIST_FOLD_OVERFLOW)
+# define BOOST_PP_ERROR_0x0005 BOOST_PP_ERROR(0x0005, BOOST_PP_SEQ_FOLD_OVERFLOW)
+# define BOOST_PP_ERROR_0x0006 BOOST_PP_ERROR(0x0006, BOOST_PP_ARITHMETIC_OVERFLOW)
+# define BOOST_PP_ERROR_0x0007 BOOST_PP_ERROR(0x0007, BOOST_PP_DIVISION_BY_ZERO)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/dec.hpp b/3rdParty/Boost/boost/preprocessor/dec.hpp
new file mode 100644
index 0000000..d572064
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/dec.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_DEC_HPP
+# define BOOST_PREPROCESSOR_DEC_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/detail/auto_rec.hpp b/3rdParty/Boost/boost/preprocessor/detail/auto_rec.hpp
new file mode 100644
index 0000000..39de1d0
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/detail/auto_rec.hpp
@@ -0,0 +1,293 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/detail/dmc/auto_rec.hpp>
+# else
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_AUTO_REC */
+#
+# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
+#
+# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
+# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
+#
+# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
+# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
+# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
+# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
+# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
+# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
+# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
+# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2)
+# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p(3), 3, 4)
+# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
+# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p(5), 5, 6)
+# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p(7), 7, 8)
+# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
+# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
+# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p(9), 9, 10)
+# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p(11), 11, 12)
+# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
+# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p(13), 13, 14)
+# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p(15), 15, 16)
+# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
+# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
+# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
+# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p(17), 17, 18)
+# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p(19), 19, 20)
+# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
+# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p(21), 21, 22)
+# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p(23), 23, 24)
+# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
+# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
+# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p(25), 25, 26)
+# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p(27), 27, 28)
+# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
+# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p(29), 29, 30)
+# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p(31), 31, 32)
+# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
+# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
+# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
+# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
+# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p(33), 33, 34)
+# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p(35), 35, 36)
+# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
+# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p(37), 37, 38)
+# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p(39), 39, 40)
+# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
+# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
+# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p(41), 41, 42)
+# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p(43), 43, 44)
+# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
+# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p(45), 45, 46)
+# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p(47), 47, 48)
+# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
+# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
+# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
+# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p(49), 49, 50)
+# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p(51), 51, 52)
+# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
+# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p(53), 53, 54)
+# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p(55), 55, 56)
+# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
+# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
+# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p(57), 57, 58)
+# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p(59), 59, 60)
+# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
+# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p(61), 61, 62)
+# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p(63), 63, 64)
+# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
+# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
+# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
+# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
+# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
+# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p(65), 65, 66)
+# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p(67), 67, 68)
+# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
+# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p(69), 69, 70)
+# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p(71), 71, 72)
+# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
+# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
+# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p(73), 73, 74)
+# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p(75), 75, 76)
+# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
+# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p(77), 77, 78)
+# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p(79), 79, 80)
+# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
+# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
+# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
+# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p(81), 81, 82)
+# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p(83), 83, 84)
+# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
+# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p(85), 85, 86)
+# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p(87), 87, 88)
+# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
+# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
+# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p(89), 89, 90)
+# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p(91), 91, 92)
+# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
+# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p(93), 93, 94)
+# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p(95), 95, 96)
+# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
+# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
+# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
+# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
+# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p(97), 97, 98)
+# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p(99), 99, 100)
+# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
+# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p(101), 101, 102)
+# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p(103), 103, 104)
+# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
+# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
+# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p(105), 105, 106)
+# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p(107), 107, 108)
+# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
+# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p(109), 109, 110)
+# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p(111), 111, 112)
+# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
+# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
+# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
+# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p(113), 113, 114)
+# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p(115), 115, 116)
+# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
+# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p(117), 117, 118)
+# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p(119), 119, 120)
+# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
+# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
+# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p(121), 121, 122)
+# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p(123), 123, 124)
+# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
+# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p(125), 125, 126)
+# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p(127), 127, 128)
+# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
+# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
+# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
+# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
+# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
+# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
+# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p(129), 129, 130)
+# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p(131), 131, 132)
+# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
+# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p(133), 133, 134)
+# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p(135), 135, 136)
+# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
+# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
+# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p(137), 137, 138)
+# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p(139), 139, 140)
+# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
+# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p(141), 141, 142)
+# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p(143), 143, 144)
+# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
+# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
+# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
+# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p(145), 145, 146)
+# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p(147), 147, 148)
+# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
+# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p(149), 149, 150)
+# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p(151), 151, 152)
+# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
+# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
+# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p(153), 153, 154)
+# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p(155), 155, 156)
+# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
+# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p(157), 157, 158)
+# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p(159), 159, 160)
+# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
+# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
+# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
+# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
+# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p(161), 161, 162)
+# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p(163), 163, 164)
+# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
+# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p(165), 165, 166)
+# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p(167), 167, 168)
+# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
+# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
+# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p(169), 169, 170)
+# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p(171), 171, 172)
+# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
+# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p(173), 173, 174)
+# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p(175), 175, 176)
+# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
+# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
+# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
+# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p(177), 177, 178)
+# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p(179), 179, 180)
+# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
+# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p(181), 181, 182)
+# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p(183), 183, 184)
+# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
+# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
+# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p(185), 185, 186)
+# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p(187), 187, 188)
+# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
+# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p(189), 189, 190)
+# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p(191), 191, 192)
+# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
+# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
+# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
+# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
+# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
+# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p(193), 193, 194)
+# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p(195), 195, 196)
+# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
+# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p(197), 197, 198)
+# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p(199), 199, 200)
+# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
+# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
+# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p(201), 201, 202)
+# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p(203), 203, 204)
+# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
+# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p(205), 205, 206)
+# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p(207), 207, 208)
+# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
+# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
+# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
+# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p(209), 209, 210)
+# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p(211), 211, 212)
+# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
+# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p(213), 213, 214)
+# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p(215), 215, 216)
+# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
+# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
+# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p(217), 217, 218)
+# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p(219), 219, 220)
+# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
+# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p(221), 221, 222)
+# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p(223), 223, 224)
+# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
+# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
+# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
+# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
+# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p(225), 225, 226)
+# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p(227), 227, 228)
+# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
+# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p(229), 229, 230)
+# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p(231), 231, 232)
+# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
+# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
+# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p(233), 233, 234)
+# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p(235), 235, 236)
+# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
+# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p(237), 237, 238)
+# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p(239), 239, 240)
+# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
+# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
+# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
+# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p(241), 241, 242)
+# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p(243), 243, 244)
+# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
+# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p(245), 245, 246)
+# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p(247), 247, 248)
+# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
+# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
+# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p(249), 249, 250)
+# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p(251), 251, 252)
+# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
+# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p(253), 253, 254)
+# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256)
+#
+# endif
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/detail/check.hpp b/3rdParty/Boost/boost/preprocessor/detail/check.hpp
new file mode 100644
index 0000000..63f8ff9
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/detail/check.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (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_DETAIL_CHECK_HPP
+# define BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_CHECK */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_D(x, type)
+# else
+# define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_OO((x, type))
+# define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_D ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, type x))
+# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+# define BOOST_PP_CHECK_2(res, _) res
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(type x)
+# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+# define BOOST_PP_CHECK_2(chk) BOOST_PP_CHECK_3((BOOST_PP_CHECK_RESULT_ ## chk))
+# define BOOST_PP_CHECK_3(im) BOOST_PP_CHECK_5(BOOST_PP_CHECK_4 im)
+# define BOOST_PP_CHECK_4(res, _) res
+# define BOOST_PP_CHECK_5(res) res
+# else /* DMC */
+# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_OO((type x))
+# define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_0 ## par
+# define BOOST_PP_CHECK_0(chk) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, chk))
+# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+# define BOOST_PP_CHECK_2(res, _) res
+# endif
+#
+# define BOOST_PP_CHECK_RESULT_1 1, BOOST_PP_NIL
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/detail/dmc/auto_rec.hpp b/3rdParty/Boost/boost/preprocessor/detail/dmc/auto_rec.hpp
new file mode 100644
index 0000000..37fbe04
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/detail/dmc/auto_rec.hpp
@@ -0,0 +1,286 @@
+# /* **************************************************************************
+# * *
+# * (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_DETAIL_AUTO_REC_HPP
+# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_AUTO_REC */
+#
+# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
+#
+# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
+# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
+#
+# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p##(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
+# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p##(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
+# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p##(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
+# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p##(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
+# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p##(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
+# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p##(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
+# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p##(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
+# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p##(1), 1, 2)
+# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p##(3), 3, 4)
+# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p##(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
+# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p##(5), 5, 6)
+# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p##(7), 7, 8)
+# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p##(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
+# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p##(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
+# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p##(9), 9, 10)
+# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p##(11), 11, 12)
+# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p##(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
+# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p##(13), 13, 14)
+# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p##(15), 15, 16)
+# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p##(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
+# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p##(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
+# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p##(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
+# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p##(17), 17, 18)
+# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p##(19), 19, 20)
+# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p##(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
+# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p##(21), 21, 22)
+# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p##(23), 23, 24)
+# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p##(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
+# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p##(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
+# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p##(25), 25, 26)
+# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p##(27), 27, 28)
+# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p##(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
+# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p##(29), 29, 30)
+# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p##(31), 31, 32)
+# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p##(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
+# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p##(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
+# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p##(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
+# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p##(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
+# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p##(33), 33, 34)
+# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p##(35), 35, 36)
+# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p##(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
+# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p##(37), 37, 38)
+# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p##(39), 39, 40)
+# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p##(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
+# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p##(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
+# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p##(41), 41, 42)
+# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p##(43), 43, 44)
+# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p##(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
+# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p##(45), 45, 46)
+# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p##(47), 47, 48)
+# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p##(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
+# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p##(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
+# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p##(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
+# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p##(49), 49, 50)
+# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p##(51), 51, 52)
+# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p##(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
+# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p##(53), 53, 54)
+# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p##(55), 55, 56)
+# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p##(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
+# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p##(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
+# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p##(57), 57, 58)
+# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p##(59), 59, 60)
+# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p##(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
+# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p##(61), 61, 62)
+# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p##(63), 63, 64)
+# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p##(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
+# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p##(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
+# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p##(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
+# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p##(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
+# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p##(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
+# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p##(65), 65, 66)
+# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p##(67), 67, 68)
+# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p##(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
+# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p##(69), 69, 70)
+# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p##(71), 71, 72)
+# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p##(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
+# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p##(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
+# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p##(73), 73, 74)
+# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p##(75), 75, 76)
+# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p##(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
+# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p##(77), 77, 78)
+# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p##(79), 79, 80)
+# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p##(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
+# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p##(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
+# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p##(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
+# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p##(81), 81, 82)
+# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p##(83), 83, 84)
+# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p##(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
+# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p##(85), 85, 86)
+# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p##(87), 87, 88)
+# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p##(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
+# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p##(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
+# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p##(89), 89, 90)
+# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p##(91), 91, 92)
+# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p##(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
+# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p##(93), 93, 94)
+# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p##(95), 95, 96)
+# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p##(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
+# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p##(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
+# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p##(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
+# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p##(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
+# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p##(97), 97, 98)
+# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p##(99), 99, 100)
+# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p##(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
+# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p##(101), 101, 102)
+# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p##(103), 103, 104)
+# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p##(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
+# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p##(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
+# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p##(105), 105, 106)
+# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p##(107), 107, 108)
+# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p##(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
+# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p##(109), 109, 110)
+# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p##(111), 111, 112)
+# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p##(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
+# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p##(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
+# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p##(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
+# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p##(113), 113, 114)
+# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p##(115), 115, 116)
+# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p##(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
+# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p##(117), 117, 118)
+# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p##(119), 119, 120)
+# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p##(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
+# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p##(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
+# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p##(121), 121, 122)
+# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p##(123), 123, 124)
+# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p##(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
+# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p##(125), 125, 126)
+# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p##(127), 127, 128)
+# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p##(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
+# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p##(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
+# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p##(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
+# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p##(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
+# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p##(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
+# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p##(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
+# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p##(129), 129, 130)
+# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p##(131), 131, 132)
+# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p##(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
+# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p##(133), 133, 134)
+# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p##(135), 135, 136)
+# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p##(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
+# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p##(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
+# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p##(137), 137, 138)
+# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p##(139), 139, 140)
+# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p##(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
+# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p##(141), 141, 142)
+# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p##(143), 143, 144)
+# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p##(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
+# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p##(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
+# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p##(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
+# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p##(145), 145, 146)
+# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p##(147), 147, 148)
+# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p##(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
+# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p##(149), 149, 150)
+# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p##(151), 151, 152)
+# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p##(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
+# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p##(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
+# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p##(153), 153, 154)
+# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p##(155), 155, 156)
+# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p##(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
+# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p##(157), 157, 158)
+# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p##(159), 159, 160)
+# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p##(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
+# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p##(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
+# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p##(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
+# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p##(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
+# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p##(161), 161, 162)
+# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p##(163), 163, 164)
+# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p##(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
+# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p##(165), 165, 166)
+# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p##(167), 167, 168)
+# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p##(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
+# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p##(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
+# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p##(169), 169, 170)
+# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p##(171), 171, 172)
+# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p##(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
+# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p##(173), 173, 174)
+# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p##(175), 175, 176)
+# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p##(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
+# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p##(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
+# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p##(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
+# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p##(177), 177, 178)
+# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p##(179), 179, 180)
+# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p##(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
+# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p##(181), 181, 182)
+# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p##(183), 183, 184)
+# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p##(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
+# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p##(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
+# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p##(185), 185, 186)
+# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p##(187), 187, 188)
+# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p##(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
+# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p##(189), 189, 190)
+# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p##(191), 191, 192)
+# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p##(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
+# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p##(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
+# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p##(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
+# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p##(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
+# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p##(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
+# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p##(193), 193, 194)
+# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p##(195), 195, 196)
+# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p##(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
+# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p##(197), 197, 198)
+# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p##(199), 199, 200)
+# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p##(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
+# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p##(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
+# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p##(201), 201, 202)
+# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p##(203), 203, 204)
+# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p##(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
+# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p##(205), 205, 206)
+# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p##(207), 207, 208)
+# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p##(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
+# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p##(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
+# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p##(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
+# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p##(209), 209, 210)
+# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p##(211), 211, 212)
+# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p##(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
+# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p##(213), 213, 214)
+# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p##(215), 215, 216)
+# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p##(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
+# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p##(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
+# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p##(217), 217, 218)
+# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p##(219), 219, 220)
+# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p##(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
+# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p##(221), 221, 222)
+# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p##(223), 223, 224)
+# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p##(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
+# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p##(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
+# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p##(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
+# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p##(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
+# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p##(225), 225, 226)
+# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p##(227), 227, 228)
+# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p##(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
+# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p##(229), 229, 230)
+# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p##(231), 231, 232)
+# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p##(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
+# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p##(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
+# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p##(233), 233, 234)
+# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p##(235), 235, 236)
+# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p##(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
+# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p##(237), 237, 238)
+# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p##(239), 239, 240)
+# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p##(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
+# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p##(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
+# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p##(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
+# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p##(241), 241, 242)
+# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p##(243), 243, 244)
+# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p##(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
+# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p##(245), 245, 246)
+# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p##(247), 247, 248)
+# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p##(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
+# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p##(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
+# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p##(249), 249, 250)
+# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p##(251), 251, 252)
+# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p##(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
+# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p##(253), 253, 254)
+# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p##(255), 255, 256)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/detail/is_binary.hpp b/3rdParty/Boost/boost/preprocessor/detail/is_binary.hpp
new file mode 100644
index 0000000..3428833
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/detail/is_binary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (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_DETAIL_IS_BINARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_BINARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IS_BINARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
+# else
+# define BOOST_PP_IS_BINARY(x) BOOST_PP_IS_BINARY_I(x)
+# define BOOST_PP_IS_BINARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_BINARY_CHECK(a, b) 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_BINARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/detail/is_unary.hpp b/3rdParty/Boost/boost/preprocessor/detail/is_unary.hpp
new file mode 100644
index 0000000..e73cdfb
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/detail/is_unary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (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_DETAIL_IS_UNARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_UNARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IS_UNARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK)
+# else
+# define BOOST_PP_IS_UNARY(x) BOOST_PP_IS_UNARY_I(x)
+# define BOOST_PP_IS_UNARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_UNARY_CHECK(a) 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_UNARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/empty.hpp b/3rdParty/Boost/boost/preprocessor/empty.hpp
new file mode 100644
index 0000000..116ef74
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/empty.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_EMPTY_HPP
+# define BOOST_PREPROCESSOR_EMPTY_HPP
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/enum.hpp b/3rdParty/Boost/boost/preprocessor/enum.hpp
new file mode 100644
index 0000000..ae05bb0
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/enum.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_ENUM_HPP
+# define BOOST_PREPROCESSOR_ENUM_HPP
+#
+# include <boost/preprocessor/repetition/enum.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/enum_params.hpp b/3rdParty/Boost/boost/preprocessor/enum_params.hpp
new file mode 100644
index 0000000..414f8aa
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/enum_params.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_ENUM_PARAMS_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
+#
+# include <boost/preprocessor/repetition/enum_params.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/enum_params_with_a_default.hpp b/3rdParty/Boost/boost/preprocessor/enum_params_with_a_default.hpp
new file mode 100644
index 0000000..fd1ad4c
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/enum_params_with_a_default.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/enum_shifted_params.hpp b/3rdParty/Boost/boost/preprocessor/enum_shifted_params.hpp
new file mode 100644
index 0000000..462c642
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/enum_shifted_params.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_ENUM_SHIFTED_PARAMS_HPP
+# define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/expr_if.hpp b/3rdParty/Boost/boost/preprocessor/expr_if.hpp
new file mode 100644
index 0000000..f93e29b
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/expr_if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_EXPR_IF_HPP
+# define BOOST_PREPROCESSOR_EXPR_IF_HPP
+#
+# include <boost/preprocessor/control/expr_if.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/facilities/empty.hpp b/3rdParty/Boost/boost/preprocessor/facilities/empty.hpp
new file mode 100644
index 0000000..46db190
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/facilities/empty.hpp
@@ -0,0 +1,21 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
+#
+# /* BOOST_PP_EMPTY */
+#
+# define BOOST_PP_EMPTY()
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/facilities/identity.hpp b/3rdParty/Boost/boost/preprocessor/facilities/identity.hpp
new file mode 100644
index 0000000..13ec4ca
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/facilities/identity.hpp
@@ -0,0 +1,23 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# /* BOOST_PP_IDENTITY */
+#
+# define BOOST_PP_IDENTITY(item) item BOOST_PP_EMPTY
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/facilities/intercept.hpp b/3rdParty/Boost/boost/preprocessor/facilities/intercept.hpp
new file mode 100644
index 0000000..41dcc6a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/facilities/intercept.hpp
@@ -0,0 +1,277 @@
+# /* **************************************************************************
+# * *
+# * (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_FACILITIES_INTERCEPT_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_HPP
+#
+# /* BOOST_PP_INTERCEPT */
+#
+# define BOOST_PP_INTERCEPT BOOST_PP_INTERCEPT_
+#
+# define BOOST_PP_INTERCEPT_0
+# define BOOST_PP_INTERCEPT_1
+# define BOOST_PP_INTERCEPT_2
+# define BOOST_PP_INTERCEPT_3
+# define BOOST_PP_INTERCEPT_4
+# define BOOST_PP_INTERCEPT_5
+# define BOOST_PP_INTERCEPT_6
+# define BOOST_PP_INTERCEPT_7
+# define BOOST_PP_INTERCEPT_8
+# define BOOST_PP_INTERCEPT_9
+# define BOOST_PP_INTERCEPT_10
+# define BOOST_PP_INTERCEPT_11
+# define BOOST_PP_INTERCEPT_12
+# define BOOST_PP_INTERCEPT_13
+# define BOOST_PP_INTERCEPT_14
+# define BOOST_PP_INTERCEPT_15
+# define BOOST_PP_INTERCEPT_16
+# define BOOST_PP_INTERCEPT_17
+# define BOOST_PP_INTERCEPT_18
+# define BOOST_PP_INTERCEPT_19
+# define BOOST_PP_INTERCEPT_20
+# define BOOST_PP_INTERCEPT_21
+# define BOOST_PP_INTERCEPT_22
+# define BOOST_PP_INTERCEPT_23
+# define BOOST_PP_INTERCEPT_24
+# define BOOST_PP_INTERCEPT_25
+# define BOOST_PP_INTERCEPT_26
+# define BOOST_PP_INTERCEPT_27
+# define BOOST_PP_INTERCEPT_28
+# define BOOST_PP_INTERCEPT_29
+# define BOOST_PP_INTERCEPT_30
+# define BOOST_PP_INTERCEPT_31
+# define BOOST_PP_INTERCEPT_32
+# define BOOST_PP_INTERCEPT_33
+# define BOOST_PP_INTERCEPT_34
+# define BOOST_PP_INTERCEPT_35
+# define BOOST_PP_INTERCEPT_36
+# define BOOST_PP_INTERCEPT_37
+# define BOOST_PP_INTERCEPT_38
+# define BOOST_PP_INTERCEPT_39
+# define BOOST_PP_INTERCEPT_40
+# define BOOST_PP_INTERCEPT_41
+# define BOOST_PP_INTERCEPT_42
+# define BOOST_PP_INTERCEPT_43
+# define BOOST_PP_INTERCEPT_44
+# define BOOST_PP_INTERCEPT_45
+# define BOOST_PP_INTERCEPT_46
+# define BOOST_PP_INTERCEPT_47
+# define BOOST_PP_INTERCEPT_48
+# define BOOST_PP_INTERCEPT_49
+# define BOOST_PP_INTERCEPT_50
+# define BOOST_PP_INTERCEPT_51
+# define BOOST_PP_INTERCEPT_52
+# define BOOST_PP_INTERCEPT_53
+# define BOOST_PP_INTERCEPT_54
+# define BOOST_PP_INTERCEPT_55
+# define BOOST_PP_INTERCEPT_56
+# define BOOST_PP_INTERCEPT_57
+# define BOOST_PP_INTERCEPT_58
+# define BOOST_PP_INTERCEPT_59
+# define BOOST_PP_INTERCEPT_60
+# define BOOST_PP_INTERCEPT_61
+# define BOOST_PP_INTERCEPT_62
+# define BOOST_PP_INTERCEPT_63
+# define BOOST_PP_INTERCEPT_64
+# define BOOST_PP_INTERCEPT_65
+# define BOOST_PP_INTERCEPT_66
+# define BOOST_PP_INTERCEPT_67
+# define BOOST_PP_INTERCEPT_68
+# define BOOST_PP_INTERCEPT_69
+# define BOOST_PP_INTERCEPT_70
+# define BOOST_PP_INTERCEPT_71
+# define BOOST_PP_INTERCEPT_72
+# define BOOST_PP_INTERCEPT_73
+# define BOOST_PP_INTERCEPT_74
+# define BOOST_PP_INTERCEPT_75
+# define BOOST_PP_INTERCEPT_76
+# define BOOST_PP_INTERCEPT_77
+# define BOOST_PP_INTERCEPT_78
+# define BOOST_PP_INTERCEPT_79
+# define BOOST_PP_INTERCEPT_80
+# define BOOST_PP_INTERCEPT_81
+# define BOOST_PP_INTERCEPT_82
+# define BOOST_PP_INTERCEPT_83
+# define BOOST_PP_INTERCEPT_84
+# define BOOST_PP_INTERCEPT_85
+# define BOOST_PP_INTERCEPT_86
+# define BOOST_PP_INTERCEPT_87
+# define BOOST_PP_INTERCEPT_88
+# define BOOST_PP_INTERCEPT_89
+# define BOOST_PP_INTERCEPT_90
+# define BOOST_PP_INTERCEPT_91
+# define BOOST_PP_INTERCEPT_92
+# define BOOST_PP_INTERCEPT_93
+# define BOOST_PP_INTERCEPT_94
+# define BOOST_PP_INTERCEPT_95
+# define BOOST_PP_INTERCEPT_96
+# define BOOST_PP_INTERCEPT_97
+# define BOOST_PP_INTERCEPT_98
+# define BOOST_PP_INTERCEPT_99
+# define BOOST_PP_INTERCEPT_100
+# define BOOST_PP_INTERCEPT_101
+# define BOOST_PP_INTERCEPT_102
+# define BOOST_PP_INTERCEPT_103
+# define BOOST_PP_INTERCEPT_104
+# define BOOST_PP_INTERCEPT_105
+# define BOOST_PP_INTERCEPT_106
+# define BOOST_PP_INTERCEPT_107
+# define BOOST_PP_INTERCEPT_108
+# define BOOST_PP_INTERCEPT_109
+# define BOOST_PP_INTERCEPT_110
+# define BOOST_PP_INTERCEPT_111
+# define BOOST_PP_INTERCEPT_112
+# define BOOST_PP_INTERCEPT_113
+# define BOOST_PP_INTERCEPT_114
+# define BOOST_PP_INTERCEPT_115
+# define BOOST_PP_INTERCEPT_116
+# define BOOST_PP_INTERCEPT_117
+# define BOOST_PP_INTERCEPT_118
+# define BOOST_PP_INTERCEPT_119
+# define BOOST_PP_INTERCEPT_120
+# define BOOST_PP_INTERCEPT_121
+# define BOOST_PP_INTERCEPT_122
+# define BOOST_PP_INTERCEPT_123
+# define BOOST_PP_INTERCEPT_124
+# define BOOST_PP_INTERCEPT_125
+# define BOOST_PP_INTERCEPT_126
+# define BOOST_PP_INTERCEPT_127
+# define BOOST_PP_INTERCEPT_128
+# define BOOST_PP_INTERCEPT_129
+# define BOOST_PP_INTERCEPT_130
+# define BOOST_PP_INTERCEPT_131
+# define BOOST_PP_INTERCEPT_132
+# define BOOST_PP_INTERCEPT_133
+# define BOOST_PP_INTERCEPT_134
+# define BOOST_PP_INTERCEPT_135
+# define BOOST_PP_INTERCEPT_136
+# define BOOST_PP_INTERCEPT_137
+# define BOOST_PP_INTERCEPT_138
+# define BOOST_PP_INTERCEPT_139
+# define BOOST_PP_INTERCEPT_140
+# define BOOST_PP_INTERCEPT_141
+# define BOOST_PP_INTERCEPT_142
+# define BOOST_PP_INTERCEPT_143
+# define BOOST_PP_INTERCEPT_144
+# define BOOST_PP_INTERCEPT_145
+# define BOOST_PP_INTERCEPT_146
+# define BOOST_PP_INTERCEPT_147
+# define BOOST_PP_INTERCEPT_148
+# define BOOST_PP_INTERCEPT_149
+# define BOOST_PP_INTERCEPT_150
+# define BOOST_PP_INTERCEPT_151
+# define BOOST_PP_INTERCEPT_152
+# define BOOST_PP_INTERCEPT_153
+# define BOOST_PP_INTERCEPT_154
+# define BOOST_PP_INTERCEPT_155
+# define BOOST_PP_INTERCEPT_156
+# define BOOST_PP_INTERCEPT_157
+# define BOOST_PP_INTERCEPT_158
+# define BOOST_PP_INTERCEPT_159
+# define BOOST_PP_INTERCEPT_160
+# define BOOST_PP_INTERCEPT_161
+# define BOOST_PP_INTERCEPT_162
+# define BOOST_PP_INTERCEPT_163
+# define BOOST_PP_INTERCEPT_164
+# define BOOST_PP_INTERCEPT_165
+# define BOOST_PP_INTERCEPT_166
+# define BOOST_PP_INTERCEPT_167
+# define BOOST_PP_INTERCEPT_168
+# define BOOST_PP_INTERCEPT_169
+# define BOOST_PP_INTERCEPT_170
+# define BOOST_PP_INTERCEPT_171
+# define BOOST_PP_INTERCEPT_172
+# define BOOST_PP_INTERCEPT_173
+# define BOOST_PP_INTERCEPT_174
+# define BOOST_PP_INTERCEPT_175
+# define BOOST_PP_INTERCEPT_176
+# define BOOST_PP_INTERCEPT_177
+# define BOOST_PP_INTERCEPT_178
+# define BOOST_PP_INTERCEPT_179
+# define BOOST_PP_INTERCEPT_180
+# define BOOST_PP_INTERCEPT_181
+# define BOOST_PP_INTERCEPT_182
+# define BOOST_PP_INTERCEPT_183
+# define BOOST_PP_INTERCEPT_184
+# define BOOST_PP_INTERCEPT_185
+# define BOOST_PP_INTERCEPT_186
+# define BOOST_PP_INTERCEPT_187
+# define BOOST_PP_INTERCEPT_188
+# define BOOST_PP_INTERCEPT_189
+# define BOOST_PP_INTERCEPT_190
+# define BOOST_PP_INTERCEPT_191
+# define BOOST_PP_INTERCEPT_192
+# define BOOST_PP_INTERCEPT_193
+# define BOOST_PP_INTERCEPT_194
+# define BOOST_PP_INTERCEPT_195
+# define BOOST_PP_INTERCEPT_196
+# define BOOST_PP_INTERCEPT_197
+# define BOOST_PP_INTERCEPT_198
+# define BOOST_PP_INTERCEPT_199
+# define BOOST_PP_INTERCEPT_200
+# define BOOST_PP_INTERCEPT_201
+# define BOOST_PP_INTERCEPT_202
+# define BOOST_PP_INTERCEPT_203
+# define BOOST_PP_INTERCEPT_204
+# define BOOST_PP_INTERCEPT_205
+# define BOOST_PP_INTERCEPT_206
+# define BOOST_PP_INTERCEPT_207
+# define BOOST_PP_INTERCEPT_208
+# define BOOST_PP_INTERCEPT_209
+# define BOOST_PP_INTERCEPT_210
+# define BOOST_PP_INTERCEPT_211
+# define BOOST_PP_INTERCEPT_212
+# define BOOST_PP_INTERCEPT_213
+# define BOOST_PP_INTERCEPT_214
+# define BOOST_PP_INTERCEPT_215
+# define BOOST_PP_INTERCEPT_216
+# define BOOST_PP_INTERCEPT_217
+# define BOOST_PP_INTERCEPT_218
+# define BOOST_PP_INTERCEPT_219
+# define BOOST_PP_INTERCEPT_220
+# define BOOST_PP_INTERCEPT_221
+# define BOOST_PP_INTERCEPT_222
+# define BOOST_PP_INTERCEPT_223
+# define BOOST_PP_INTERCEPT_224
+# define BOOST_PP_INTERCEPT_225
+# define BOOST_PP_INTERCEPT_226
+# define BOOST_PP_INTERCEPT_227
+# define BOOST_PP_INTERCEPT_228
+# define BOOST_PP_INTERCEPT_229
+# define BOOST_PP_INTERCEPT_230
+# define BOOST_PP_INTERCEPT_231
+# define BOOST_PP_INTERCEPT_232
+# define BOOST_PP_INTERCEPT_233
+# define BOOST_PP_INTERCEPT_234
+# define BOOST_PP_INTERCEPT_235
+# define BOOST_PP_INTERCEPT_236
+# define BOOST_PP_INTERCEPT_237
+# define BOOST_PP_INTERCEPT_238
+# define BOOST_PP_INTERCEPT_239
+# define BOOST_PP_INTERCEPT_240
+# define BOOST_PP_INTERCEPT_241
+# define BOOST_PP_INTERCEPT_242
+# define BOOST_PP_INTERCEPT_243
+# define BOOST_PP_INTERCEPT_244
+# define BOOST_PP_INTERCEPT_245
+# define BOOST_PP_INTERCEPT_246
+# define BOOST_PP_INTERCEPT_247
+# define BOOST_PP_INTERCEPT_248
+# define BOOST_PP_INTERCEPT_249
+# define BOOST_PP_INTERCEPT_250
+# define BOOST_PP_INTERCEPT_251
+# define BOOST_PP_INTERCEPT_252
+# define BOOST_PP_INTERCEPT_253
+# define BOOST_PP_INTERCEPT_254
+# define BOOST_PP_INTERCEPT_255
+# define BOOST_PP_INTERCEPT_256
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/identity.hpp b/3rdParty/Boost/boost/preprocessor/identity.hpp
new file mode 100644
index 0000000..847dd13
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/identity.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_IDENTITY_HPP
+# define BOOST_PREPROCESSOR_IDENTITY_HPP
+#
+# include <boost/preprocessor/facilities/identity.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/if.hpp b/3rdParty/Boost/boost/preprocessor/if.hpp
new file mode 100644
index 0000000..f1783f7
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_IF_HPP
+# define BOOST_PREPROCESSOR_IF_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/inc.hpp b/3rdParty/Boost/boost/preprocessor/inc.hpp
new file mode 100644
index 0000000..b98d3a6
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/inc.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_INC_HPP
+# define BOOST_PREPROCESSOR_INC_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iterate.hpp b/3rdParty/Boost/boost/preprocessor/iterate.hpp
new file mode 100644
index 0000000..e720ec8
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iterate.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_ITERATE_HPP
+# define BOOST_PREPROCESSOR_ITERATE_HPP
+#
+# include <boost/preprocessor/iteration/iterate.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower1.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower1.hpp
new file mode 100644
index 0000000..6694d0b
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower1.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_1
+#
+# undef BOOST_PP_ITERATION_START_1_DIGIT_1
+# undef BOOST_PP_ITERATION_START_1_DIGIT_2
+# undef BOOST_PP_ITERATION_START_1_DIGIT_3
+# undef BOOST_PP_ITERATION_START_1_DIGIT_4
+# undef BOOST_PP_ITERATION_START_1_DIGIT_5
+# undef BOOST_PP_ITERATION_START_1_DIGIT_6
+# undef BOOST_PP_ITERATION_START_1_DIGIT_7
+# undef BOOST_PP_ITERATION_START_1_DIGIT_8
+# undef BOOST_PP_ITERATION_START_1_DIGIT_9
+# undef BOOST_PP_ITERATION_START_1_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_1_DIGIT_3
+# define BOOST_PP_ITERATION_START_1 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_1_DIGIT_3, BOOST_PP_ITERATION_START_1_DIGIT_2, BOOST_PP_ITERATION_START_1_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_1_DIGIT_2
+# define BOOST_PP_ITERATION_START_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_1_DIGIT_2, BOOST_PP_ITERATION_START_1_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_1 BOOST_PP_ITERATION_START_1_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower2.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower2.hpp
new file mode 100644
index 0000000..ece21fc
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower2.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_2
+#
+# undef BOOST_PP_ITERATION_START_2_DIGIT_1
+# undef BOOST_PP_ITERATION_START_2_DIGIT_2
+# undef BOOST_PP_ITERATION_START_2_DIGIT_3
+# undef BOOST_PP_ITERATION_START_2_DIGIT_4
+# undef BOOST_PP_ITERATION_START_2_DIGIT_5
+# undef BOOST_PP_ITERATION_START_2_DIGIT_6
+# undef BOOST_PP_ITERATION_START_2_DIGIT_7
+# undef BOOST_PP_ITERATION_START_2_DIGIT_8
+# undef BOOST_PP_ITERATION_START_2_DIGIT_9
+# undef BOOST_PP_ITERATION_START_2_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_2_DIGIT_3
+# define BOOST_PP_ITERATION_START_2 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_2_DIGIT_3, BOOST_PP_ITERATION_START_2_DIGIT_2, BOOST_PP_ITERATION_START_2_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_2_DIGIT_2
+# define BOOST_PP_ITERATION_START_2 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_2_DIGIT_2, BOOST_PP_ITERATION_START_2_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_2 BOOST_PP_ITERATION_START_2_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower3.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower3.hpp
new file mode 100644
index 0000000..8429eac
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower3.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_3
+#
+# undef BOOST_PP_ITERATION_START_3_DIGIT_1
+# undef BOOST_PP_ITERATION_START_3_DIGIT_2
+# undef BOOST_PP_ITERATION_START_3_DIGIT_3
+# undef BOOST_PP_ITERATION_START_3_DIGIT_4
+# undef BOOST_PP_ITERATION_START_3_DIGIT_5
+# undef BOOST_PP_ITERATION_START_3_DIGIT_6
+# undef BOOST_PP_ITERATION_START_3_DIGIT_7
+# undef BOOST_PP_ITERATION_START_3_DIGIT_8
+# undef BOOST_PP_ITERATION_START_3_DIGIT_9
+# undef BOOST_PP_ITERATION_START_3_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_3_DIGIT_3
+# define BOOST_PP_ITERATION_START_3 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_3_DIGIT_3, BOOST_PP_ITERATION_START_3_DIGIT_2, BOOST_PP_ITERATION_START_3_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_3_DIGIT_2
+# define BOOST_PP_ITERATION_START_3 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_3_DIGIT_2, BOOST_PP_ITERATION_START_3_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_3 BOOST_PP_ITERATION_START_3_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower4.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower4.hpp
new file mode 100644
index 0000000..ba0832f
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower4.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_4
+#
+# undef BOOST_PP_ITERATION_START_4_DIGIT_1
+# undef BOOST_PP_ITERATION_START_4_DIGIT_2
+# undef BOOST_PP_ITERATION_START_4_DIGIT_3
+# undef BOOST_PP_ITERATION_START_4_DIGIT_4
+# undef BOOST_PP_ITERATION_START_4_DIGIT_5
+# undef BOOST_PP_ITERATION_START_4_DIGIT_6
+# undef BOOST_PP_ITERATION_START_4_DIGIT_7
+# undef BOOST_PP_ITERATION_START_4_DIGIT_8
+# undef BOOST_PP_ITERATION_START_4_DIGIT_9
+# undef BOOST_PP_ITERATION_START_4_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_4_DIGIT_3
+# define BOOST_PP_ITERATION_START_4 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_4_DIGIT_3, BOOST_PP_ITERATION_START_4_DIGIT_2, BOOST_PP_ITERATION_START_4_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_4_DIGIT_2
+# define BOOST_PP_ITERATION_START_4 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_4_DIGIT_2, BOOST_PP_ITERATION_START_4_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_4 BOOST_PP_ITERATION_START_4_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower5.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower5.hpp
new file mode 100644
index 0000000..f4888c7
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/lower5.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_5
+#
+# undef BOOST_PP_ITERATION_START_5_DIGIT_1
+# undef BOOST_PP_ITERATION_START_5_DIGIT_2
+# undef BOOST_PP_ITERATION_START_5_DIGIT_3
+# undef BOOST_PP_ITERATION_START_5_DIGIT_4
+# undef BOOST_PP_ITERATION_START_5_DIGIT_5
+# undef BOOST_PP_ITERATION_START_5_DIGIT_6
+# undef BOOST_PP_ITERATION_START_5_DIGIT_7
+# undef BOOST_PP_ITERATION_START_5_DIGIT_8
+# undef BOOST_PP_ITERATION_START_5_DIGIT_9
+# undef BOOST_PP_ITERATION_START_5_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_5_DIGIT_3
+# define BOOST_PP_ITERATION_START_5 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_5_DIGIT_3, BOOST_PP_ITERATION_START_5_DIGIT_2, BOOST_PP_ITERATION_START_5_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_5_DIGIT_2
+# define BOOST_PP_ITERATION_START_5 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_5_DIGIT_2, BOOST_PP_ITERATION_START_5_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_5 BOOST_PP_ITERATION_START_5_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper1.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper1.hpp
new file mode 100644
index 0000000..50d0fcf
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper1.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_1
+#
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_1_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_1_DIGIT_3, BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_1_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_ITERATION_FINISH_1_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper2.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper2.hpp
new file mode 100644
index 0000000..faef6f4
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper2.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_2
+#
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_2_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_2_DIGIT_3, BOOST_PP_ITERATION_FINISH_2_DIGIT_2, BOOST_PP_ITERATION_FINISH_2_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_2_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_2_DIGIT_2, BOOST_PP_ITERATION_FINISH_2_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_ITERATION_FINISH_2_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper3.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper3.hpp
new file mode 100644
index 0000000..38d9ade
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper3.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_3
+#
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_3_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_3_DIGIT_3, BOOST_PP_ITERATION_FINISH_3_DIGIT_2, BOOST_PP_ITERATION_FINISH_3_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_3_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_3_DIGIT_2, BOOST_PP_ITERATION_FINISH_3_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_ITERATION_FINISH_3_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper4.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper4.hpp
new file mode 100644
index 0000000..7f771c2
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper4.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_4
+#
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_4_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_4_DIGIT_3, BOOST_PP_ITERATION_FINISH_4_DIGIT_2, BOOST_PP_ITERATION_FINISH_4_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_4_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_4_DIGIT_2, BOOST_PP_ITERATION_FINISH_4_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_ITERATION_FINISH_4_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper5.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper5.hpp
new file mode 100644
index 0000000..9f27d58
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/bounds/upper5.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_5
+#
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_5_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_5_DIGIT_3, BOOST_PP_ITERATION_FINISH_5_DIGIT_2, BOOST_PP_ITERATION_FINISH_5_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_5_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_5_DIGIT_2, BOOST_PP_ITERATION_FINISH_5_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_ITERATION_FINISH_5_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/finish.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/finish.hpp
new file mode 100644
index 0000000..0236944
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/finish.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_LOCAL_FE
+#
+# undef BOOST_PP_LOCAL_FE_DIGIT_1
+# undef BOOST_PP_LOCAL_FE_DIGIT_2
+# undef BOOST_PP_LOCAL_FE_DIGIT_3
+# undef BOOST_PP_LOCAL_FE_DIGIT_4
+# undef BOOST_PP_LOCAL_FE_DIGIT_5
+# undef BOOST_PP_LOCAL_FE_DIGIT_6
+# undef BOOST_PP_LOCAL_FE_DIGIT_7
+# undef BOOST_PP_LOCAL_FE_DIGIT_8
+# undef BOOST_PP_LOCAL_FE_DIGIT_9
+# undef BOOST_PP_LOCAL_FE_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_LOCAL_FE_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_LOCAL_FE_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_LOCAL_FE_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_LOCAL_FE_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_LOCAL_FE_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_LOCAL_FE_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_LOCAL_FE_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_LOCAL_FE_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_LOCAL_FE_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_LOCAL_FE_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_LOCAL_FE_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_LOCAL_FE_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_LOCAL_FE_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_LOCAL_FE_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_LOCAL_FE_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_LOCAL_FE_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_LOCAL_FE_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_LOCAL_FE_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_LOCAL_FE_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_LOCAL_FE_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_LOCAL_FE_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_LOCAL_FE_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_LOCAL_FE_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_LOCAL_FE_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_LOCAL_FE_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_LOCAL_FE_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_LOCAL_FE_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_LOCAL_FE_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_LOCAL_FE_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_LOCAL_FE_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_LOCAL_FE_DIGIT_3
+# define BOOST_PP_LOCAL_FE() BOOST_PP_SLOT_CC_3(BOOST_PP_LOCAL_FE_DIGIT_3, BOOST_PP_LOCAL_FE_DIGIT_2, BOOST_PP_LOCAL_FE_DIGIT_1)
+# elif BOOST_PP_LOCAL_FE_DIGIT_2
+# define BOOST_PP_LOCAL_FE() BOOST_PP_SLOT_CC_2(BOOST_PP_LOCAL_FE_DIGIT_2, BOOST_PP_LOCAL_FE_DIGIT_1)
+# else
+# define BOOST_PP_LOCAL_FE() BOOST_PP_LOCAL_FE_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward1.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward1.hpp
new file mode 100644
index 0000000..3f41ba1
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward1.hpp
@@ -0,0 +1,1342 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_1)
+# error BOOST_PP_ERROR: depth #1 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower1.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper1.hpp>
+# define BOOST_PP_ITERATION_FLAGS_1 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_1)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_1)
+# include <boost/preprocessor/iteration/detail/bounds/lower1.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_1)
+# include <boost/preprocessor/iteration/detail/bounds/upper1.hpp>
+# define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_1) >= 4
+# define BOOST_PP_ITERATION_FLAGS_1 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_1)
+# else
+# define BOOST_PP_ITERATION_FLAGS_1 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #1 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 1
+#
+# define BOOST_PP_IS_ITERATING 1
+#
+# if (BOOST_PP_ITERATION_START_1) > (BOOST_PP_ITERATION_FINISH_1)
+# include <boost/preprocessor/iteration/detail/iter/reverse1.hpp>
+# else
+# if BOOST_PP_ITERATION_START_1 <= 0 && BOOST_PP_ITERATION_FINISH_1 >= 0
+# define BOOST_PP_ITERATION_1 0
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 1 && BOOST_PP_ITERATION_FINISH_1 >= 1
+# define BOOST_PP_ITERATION_1 1
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 2 && BOOST_PP_ITERATION_FINISH_1 >= 2
+# define BOOST_PP_ITERATION_1 2
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 3 && BOOST_PP_ITERATION_FINISH_1 >= 3
+# define BOOST_PP_ITERATION_1 3
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 4 && BOOST_PP_ITERATION_FINISH_1 >= 4
+# define BOOST_PP_ITERATION_1 4
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 5 && BOOST_PP_ITERATION_FINISH_1 >= 5
+# define BOOST_PP_ITERATION_1 5
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 6 && BOOST_PP_ITERATION_FINISH_1 >= 6
+# define BOOST_PP_ITERATION_1 6
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 7 && BOOST_PP_ITERATION_FINISH_1 >= 7
+# define BOOST_PP_ITERATION_1 7
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 8 && BOOST_PP_ITERATION_FINISH_1 >= 8
+# define BOOST_PP_ITERATION_1 8
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 9 && BOOST_PP_ITERATION_FINISH_1 >= 9
+# define BOOST_PP_ITERATION_1 9
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 10 && BOOST_PP_ITERATION_FINISH_1 >= 10
+# define BOOST_PP_ITERATION_1 10
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 11 && BOOST_PP_ITERATION_FINISH_1 >= 11
+# define BOOST_PP_ITERATION_1 11
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 12 && BOOST_PP_ITERATION_FINISH_1 >= 12
+# define BOOST_PP_ITERATION_1 12
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 13 && BOOST_PP_ITERATION_FINISH_1 >= 13
+# define BOOST_PP_ITERATION_1 13
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 14 && BOOST_PP_ITERATION_FINISH_1 >= 14
+# define BOOST_PP_ITERATION_1 14
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 15 && BOOST_PP_ITERATION_FINISH_1 >= 15
+# define BOOST_PP_ITERATION_1 15
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 16 && BOOST_PP_ITERATION_FINISH_1 >= 16
+# define BOOST_PP_ITERATION_1 16
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 17 && BOOST_PP_ITERATION_FINISH_1 >= 17
+# define BOOST_PP_ITERATION_1 17
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 18 && BOOST_PP_ITERATION_FINISH_1 >= 18
+# define BOOST_PP_ITERATION_1 18
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 19 && BOOST_PP_ITERATION_FINISH_1 >= 19
+# define BOOST_PP_ITERATION_1 19
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 20 && BOOST_PP_ITERATION_FINISH_1 >= 20
+# define BOOST_PP_ITERATION_1 20
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 21 && BOOST_PP_ITERATION_FINISH_1 >= 21
+# define BOOST_PP_ITERATION_1 21
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 22 && BOOST_PP_ITERATION_FINISH_1 >= 22
+# define BOOST_PP_ITERATION_1 22
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 23 && BOOST_PP_ITERATION_FINISH_1 >= 23
+# define BOOST_PP_ITERATION_1 23
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 24 && BOOST_PP_ITERATION_FINISH_1 >= 24
+# define BOOST_PP_ITERATION_1 24
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 25 && BOOST_PP_ITERATION_FINISH_1 >= 25
+# define BOOST_PP_ITERATION_1 25
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 26 && BOOST_PP_ITERATION_FINISH_1 >= 26
+# define BOOST_PP_ITERATION_1 26
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 27 && BOOST_PP_ITERATION_FINISH_1 >= 27
+# define BOOST_PP_ITERATION_1 27
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 28 && BOOST_PP_ITERATION_FINISH_1 >= 28
+# define BOOST_PP_ITERATION_1 28
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 29 && BOOST_PP_ITERATION_FINISH_1 >= 29
+# define BOOST_PP_ITERATION_1 29
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 30 && BOOST_PP_ITERATION_FINISH_1 >= 30
+# define BOOST_PP_ITERATION_1 30
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 31 && BOOST_PP_ITERATION_FINISH_1 >= 31
+# define BOOST_PP_ITERATION_1 31
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 32 && BOOST_PP_ITERATION_FINISH_1 >= 32
+# define BOOST_PP_ITERATION_1 32
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 33 && BOOST_PP_ITERATION_FINISH_1 >= 33
+# define BOOST_PP_ITERATION_1 33
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 34 && BOOST_PP_ITERATION_FINISH_1 >= 34
+# define BOOST_PP_ITERATION_1 34
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 35 && BOOST_PP_ITERATION_FINISH_1 >= 35
+# define BOOST_PP_ITERATION_1 35
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 36 && BOOST_PP_ITERATION_FINISH_1 >= 36
+# define BOOST_PP_ITERATION_1 36
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 37 && BOOST_PP_ITERATION_FINISH_1 >= 37
+# define BOOST_PP_ITERATION_1 37
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 38 && BOOST_PP_ITERATION_FINISH_1 >= 38
+# define BOOST_PP_ITERATION_1 38
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 39 && BOOST_PP_ITERATION_FINISH_1 >= 39
+# define BOOST_PP_ITERATION_1 39
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 40 && BOOST_PP_ITERATION_FINISH_1 >= 40
+# define BOOST_PP_ITERATION_1 40
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 41 && BOOST_PP_ITERATION_FINISH_1 >= 41
+# define BOOST_PP_ITERATION_1 41
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 42 && BOOST_PP_ITERATION_FINISH_1 >= 42
+# define BOOST_PP_ITERATION_1 42
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 43 && BOOST_PP_ITERATION_FINISH_1 >= 43
+# define BOOST_PP_ITERATION_1 43
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 44 && BOOST_PP_ITERATION_FINISH_1 >= 44
+# define BOOST_PP_ITERATION_1 44
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 45 && BOOST_PP_ITERATION_FINISH_1 >= 45
+# define BOOST_PP_ITERATION_1 45
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 46 && BOOST_PP_ITERATION_FINISH_1 >= 46
+# define BOOST_PP_ITERATION_1 46
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 47 && BOOST_PP_ITERATION_FINISH_1 >= 47
+# define BOOST_PP_ITERATION_1 47
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 48 && BOOST_PP_ITERATION_FINISH_1 >= 48
+# define BOOST_PP_ITERATION_1 48
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 49 && BOOST_PP_ITERATION_FINISH_1 >= 49
+# define BOOST_PP_ITERATION_1 49
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 50 && BOOST_PP_ITERATION_FINISH_1 >= 50
+# define BOOST_PP_ITERATION_1 50
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 51 && BOOST_PP_ITERATION_FINISH_1 >= 51
+# define BOOST_PP_ITERATION_1 51
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 52 && BOOST_PP_ITERATION_FINISH_1 >= 52
+# define BOOST_PP_ITERATION_1 52
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 53 && BOOST_PP_ITERATION_FINISH_1 >= 53
+# define BOOST_PP_ITERATION_1 53
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 54 && BOOST_PP_ITERATION_FINISH_1 >= 54
+# define BOOST_PP_ITERATION_1 54
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 55 && BOOST_PP_ITERATION_FINISH_1 >= 55
+# define BOOST_PP_ITERATION_1 55
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 56 && BOOST_PP_ITERATION_FINISH_1 >= 56
+# define BOOST_PP_ITERATION_1 56
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 57 && BOOST_PP_ITERATION_FINISH_1 >= 57
+# define BOOST_PP_ITERATION_1 57
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 58 && BOOST_PP_ITERATION_FINISH_1 >= 58
+# define BOOST_PP_ITERATION_1 58
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 59 && BOOST_PP_ITERATION_FINISH_1 >= 59
+# define BOOST_PP_ITERATION_1 59
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 60 && BOOST_PP_ITERATION_FINISH_1 >= 60
+# define BOOST_PP_ITERATION_1 60
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 61 && BOOST_PP_ITERATION_FINISH_1 >= 61
+# define BOOST_PP_ITERATION_1 61
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 62 && BOOST_PP_ITERATION_FINISH_1 >= 62
+# define BOOST_PP_ITERATION_1 62
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 63 && BOOST_PP_ITERATION_FINISH_1 >= 63
+# define BOOST_PP_ITERATION_1 63
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 64 && BOOST_PP_ITERATION_FINISH_1 >= 64
+# define BOOST_PP_ITERATION_1 64
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 65 && BOOST_PP_ITERATION_FINISH_1 >= 65
+# define BOOST_PP_ITERATION_1 65
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 66 && BOOST_PP_ITERATION_FINISH_1 >= 66
+# define BOOST_PP_ITERATION_1 66
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 67 && BOOST_PP_ITERATION_FINISH_1 >= 67
+# define BOOST_PP_ITERATION_1 67
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 68 && BOOST_PP_ITERATION_FINISH_1 >= 68
+# define BOOST_PP_ITERATION_1 68
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 69 && BOOST_PP_ITERATION_FINISH_1 >= 69
+# define BOOST_PP_ITERATION_1 69
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 70 && BOOST_PP_ITERATION_FINISH_1 >= 70
+# define BOOST_PP_ITERATION_1 70
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 71 && BOOST_PP_ITERATION_FINISH_1 >= 71
+# define BOOST_PP_ITERATION_1 71
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 72 && BOOST_PP_ITERATION_FINISH_1 >= 72
+# define BOOST_PP_ITERATION_1 72
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 73 && BOOST_PP_ITERATION_FINISH_1 >= 73
+# define BOOST_PP_ITERATION_1 73
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 74 && BOOST_PP_ITERATION_FINISH_1 >= 74
+# define BOOST_PP_ITERATION_1 74
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 75 && BOOST_PP_ITERATION_FINISH_1 >= 75
+# define BOOST_PP_ITERATION_1 75
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 76 && BOOST_PP_ITERATION_FINISH_1 >= 76
+# define BOOST_PP_ITERATION_1 76
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 77 && BOOST_PP_ITERATION_FINISH_1 >= 77
+# define BOOST_PP_ITERATION_1 77
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 78 && BOOST_PP_ITERATION_FINISH_1 >= 78
+# define BOOST_PP_ITERATION_1 78
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 79 && BOOST_PP_ITERATION_FINISH_1 >= 79
+# define BOOST_PP_ITERATION_1 79
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 80 && BOOST_PP_ITERATION_FINISH_1 >= 80
+# define BOOST_PP_ITERATION_1 80
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 81 && BOOST_PP_ITERATION_FINISH_1 >= 81
+# define BOOST_PP_ITERATION_1 81
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 82 && BOOST_PP_ITERATION_FINISH_1 >= 82
+# define BOOST_PP_ITERATION_1 82
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 83 && BOOST_PP_ITERATION_FINISH_1 >= 83
+# define BOOST_PP_ITERATION_1 83
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 84 && BOOST_PP_ITERATION_FINISH_1 >= 84
+# define BOOST_PP_ITERATION_1 84
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 85 && BOOST_PP_ITERATION_FINISH_1 >= 85
+# define BOOST_PP_ITERATION_1 85
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 86 && BOOST_PP_ITERATION_FINISH_1 >= 86
+# define BOOST_PP_ITERATION_1 86
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 87 && BOOST_PP_ITERATION_FINISH_1 >= 87
+# define BOOST_PP_ITERATION_1 87
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 88 && BOOST_PP_ITERATION_FINISH_1 >= 88
+# define BOOST_PP_ITERATION_1 88
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 89 && BOOST_PP_ITERATION_FINISH_1 >= 89
+# define BOOST_PP_ITERATION_1 89
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 90 && BOOST_PP_ITERATION_FINISH_1 >= 90
+# define BOOST_PP_ITERATION_1 90
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 91 && BOOST_PP_ITERATION_FINISH_1 >= 91
+# define BOOST_PP_ITERATION_1 91
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 92 && BOOST_PP_ITERATION_FINISH_1 >= 92
+# define BOOST_PP_ITERATION_1 92
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 93 && BOOST_PP_ITERATION_FINISH_1 >= 93
+# define BOOST_PP_ITERATION_1 93
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 94 && BOOST_PP_ITERATION_FINISH_1 >= 94
+# define BOOST_PP_ITERATION_1 94
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 95 && BOOST_PP_ITERATION_FINISH_1 >= 95
+# define BOOST_PP_ITERATION_1 95
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 96 && BOOST_PP_ITERATION_FINISH_1 >= 96
+# define BOOST_PP_ITERATION_1 96
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 97 && BOOST_PP_ITERATION_FINISH_1 >= 97
+# define BOOST_PP_ITERATION_1 97
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 98 && BOOST_PP_ITERATION_FINISH_1 >= 98
+# define BOOST_PP_ITERATION_1 98
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 99 && BOOST_PP_ITERATION_FINISH_1 >= 99
+# define BOOST_PP_ITERATION_1 99
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 100 && BOOST_PP_ITERATION_FINISH_1 >= 100
+# define BOOST_PP_ITERATION_1 100
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 101 && BOOST_PP_ITERATION_FINISH_1 >= 101
+# define BOOST_PP_ITERATION_1 101
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 102 && BOOST_PP_ITERATION_FINISH_1 >= 102
+# define BOOST_PP_ITERATION_1 102
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 103 && BOOST_PP_ITERATION_FINISH_1 >= 103
+# define BOOST_PP_ITERATION_1 103
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 104 && BOOST_PP_ITERATION_FINISH_1 >= 104
+# define BOOST_PP_ITERATION_1 104
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 105 && BOOST_PP_ITERATION_FINISH_1 >= 105
+# define BOOST_PP_ITERATION_1 105
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 106 && BOOST_PP_ITERATION_FINISH_1 >= 106
+# define BOOST_PP_ITERATION_1 106
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 107 && BOOST_PP_ITERATION_FINISH_1 >= 107
+# define BOOST_PP_ITERATION_1 107
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 108 && BOOST_PP_ITERATION_FINISH_1 >= 108
+# define BOOST_PP_ITERATION_1 108
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 109 && BOOST_PP_ITERATION_FINISH_1 >= 109
+# define BOOST_PP_ITERATION_1 109
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 110 && BOOST_PP_ITERATION_FINISH_1 >= 110
+# define BOOST_PP_ITERATION_1 110
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 111 && BOOST_PP_ITERATION_FINISH_1 >= 111
+# define BOOST_PP_ITERATION_1 111
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 112 && BOOST_PP_ITERATION_FINISH_1 >= 112
+# define BOOST_PP_ITERATION_1 112
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 113 && BOOST_PP_ITERATION_FINISH_1 >= 113
+# define BOOST_PP_ITERATION_1 113
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 114 && BOOST_PP_ITERATION_FINISH_1 >= 114
+# define BOOST_PP_ITERATION_1 114
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 115 && BOOST_PP_ITERATION_FINISH_1 >= 115
+# define BOOST_PP_ITERATION_1 115
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 116 && BOOST_PP_ITERATION_FINISH_1 >= 116
+# define BOOST_PP_ITERATION_1 116
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 117 && BOOST_PP_ITERATION_FINISH_1 >= 117
+# define BOOST_PP_ITERATION_1 117
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 118 && BOOST_PP_ITERATION_FINISH_1 >= 118
+# define BOOST_PP_ITERATION_1 118
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 119 && BOOST_PP_ITERATION_FINISH_1 >= 119
+# define BOOST_PP_ITERATION_1 119
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 120 && BOOST_PP_ITERATION_FINISH_1 >= 120
+# define BOOST_PP_ITERATION_1 120
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 121 && BOOST_PP_ITERATION_FINISH_1 >= 121
+# define BOOST_PP_ITERATION_1 121
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 122 && BOOST_PP_ITERATION_FINISH_1 >= 122
+# define BOOST_PP_ITERATION_1 122
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 123 && BOOST_PP_ITERATION_FINISH_1 >= 123
+# define BOOST_PP_ITERATION_1 123
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 124 && BOOST_PP_ITERATION_FINISH_1 >= 124
+# define BOOST_PP_ITERATION_1 124
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 125 && BOOST_PP_ITERATION_FINISH_1 >= 125
+# define BOOST_PP_ITERATION_1 125
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 126 && BOOST_PP_ITERATION_FINISH_1 >= 126
+# define BOOST_PP_ITERATION_1 126
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 127 && BOOST_PP_ITERATION_FINISH_1 >= 127
+# define BOOST_PP_ITERATION_1 127
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 128 && BOOST_PP_ITERATION_FINISH_1 >= 128
+# define BOOST_PP_ITERATION_1 128
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 129 && BOOST_PP_ITERATION_FINISH_1 >= 129
+# define BOOST_PP_ITERATION_1 129
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 130 && BOOST_PP_ITERATION_FINISH_1 >= 130
+# define BOOST_PP_ITERATION_1 130
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 131 && BOOST_PP_ITERATION_FINISH_1 >= 131
+# define BOOST_PP_ITERATION_1 131
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 132 && BOOST_PP_ITERATION_FINISH_1 >= 132
+# define BOOST_PP_ITERATION_1 132
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 133 && BOOST_PP_ITERATION_FINISH_1 >= 133
+# define BOOST_PP_ITERATION_1 133
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 134 && BOOST_PP_ITERATION_FINISH_1 >= 134
+# define BOOST_PP_ITERATION_1 134
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 135 && BOOST_PP_ITERATION_FINISH_1 >= 135
+# define BOOST_PP_ITERATION_1 135
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 136 && BOOST_PP_ITERATION_FINISH_1 >= 136
+# define BOOST_PP_ITERATION_1 136
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 137 && BOOST_PP_ITERATION_FINISH_1 >= 137
+# define BOOST_PP_ITERATION_1 137
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 138 && BOOST_PP_ITERATION_FINISH_1 >= 138
+# define BOOST_PP_ITERATION_1 138
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 139 && BOOST_PP_ITERATION_FINISH_1 >= 139
+# define BOOST_PP_ITERATION_1 139
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 140 && BOOST_PP_ITERATION_FINISH_1 >= 140
+# define BOOST_PP_ITERATION_1 140
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 141 && BOOST_PP_ITERATION_FINISH_1 >= 141
+# define BOOST_PP_ITERATION_1 141
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 142 && BOOST_PP_ITERATION_FINISH_1 >= 142
+# define BOOST_PP_ITERATION_1 142
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 143 && BOOST_PP_ITERATION_FINISH_1 >= 143
+# define BOOST_PP_ITERATION_1 143
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 144 && BOOST_PP_ITERATION_FINISH_1 >= 144
+# define BOOST_PP_ITERATION_1 144
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 145 && BOOST_PP_ITERATION_FINISH_1 >= 145
+# define BOOST_PP_ITERATION_1 145
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 146 && BOOST_PP_ITERATION_FINISH_1 >= 146
+# define BOOST_PP_ITERATION_1 146
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 147 && BOOST_PP_ITERATION_FINISH_1 >= 147
+# define BOOST_PP_ITERATION_1 147
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 148 && BOOST_PP_ITERATION_FINISH_1 >= 148
+# define BOOST_PP_ITERATION_1 148
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 149 && BOOST_PP_ITERATION_FINISH_1 >= 149
+# define BOOST_PP_ITERATION_1 149
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 150 && BOOST_PP_ITERATION_FINISH_1 >= 150
+# define BOOST_PP_ITERATION_1 150
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 151 && BOOST_PP_ITERATION_FINISH_1 >= 151
+# define BOOST_PP_ITERATION_1 151
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 152 && BOOST_PP_ITERATION_FINISH_1 >= 152
+# define BOOST_PP_ITERATION_1 152
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 153 && BOOST_PP_ITERATION_FINISH_1 >= 153
+# define BOOST_PP_ITERATION_1 153
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 154 && BOOST_PP_ITERATION_FINISH_1 >= 154
+# define BOOST_PP_ITERATION_1 154
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 155 && BOOST_PP_ITERATION_FINISH_1 >= 155
+# define BOOST_PP_ITERATION_1 155
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 156 && BOOST_PP_ITERATION_FINISH_1 >= 156
+# define BOOST_PP_ITERATION_1 156
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 157 && BOOST_PP_ITERATION_FINISH_1 >= 157
+# define BOOST_PP_ITERATION_1 157
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 158 && BOOST_PP_ITERATION_FINISH_1 >= 158
+# define BOOST_PP_ITERATION_1 158
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 159 && BOOST_PP_ITERATION_FINISH_1 >= 159
+# define BOOST_PP_ITERATION_1 159
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 160 && BOOST_PP_ITERATION_FINISH_1 >= 160
+# define BOOST_PP_ITERATION_1 160
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 161 && BOOST_PP_ITERATION_FINISH_1 >= 161
+# define BOOST_PP_ITERATION_1 161
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 162 && BOOST_PP_ITERATION_FINISH_1 >= 162
+# define BOOST_PP_ITERATION_1 162
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 163 && BOOST_PP_ITERATION_FINISH_1 >= 163
+# define BOOST_PP_ITERATION_1 163
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 164 && BOOST_PP_ITERATION_FINISH_1 >= 164
+# define BOOST_PP_ITERATION_1 164
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 165 && BOOST_PP_ITERATION_FINISH_1 >= 165
+# define BOOST_PP_ITERATION_1 165
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 166 && BOOST_PP_ITERATION_FINISH_1 >= 166
+# define BOOST_PP_ITERATION_1 166
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 167 && BOOST_PP_ITERATION_FINISH_1 >= 167
+# define BOOST_PP_ITERATION_1 167
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 168 && BOOST_PP_ITERATION_FINISH_1 >= 168
+# define BOOST_PP_ITERATION_1 168
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 169 && BOOST_PP_ITERATION_FINISH_1 >= 169
+# define BOOST_PP_ITERATION_1 169
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 170 && BOOST_PP_ITERATION_FINISH_1 >= 170
+# define BOOST_PP_ITERATION_1 170
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 171 && BOOST_PP_ITERATION_FINISH_1 >= 171
+# define BOOST_PP_ITERATION_1 171
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 172 && BOOST_PP_ITERATION_FINISH_1 >= 172
+# define BOOST_PP_ITERATION_1 172
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 173 && BOOST_PP_ITERATION_FINISH_1 >= 173
+# define BOOST_PP_ITERATION_1 173
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 174 && BOOST_PP_ITERATION_FINISH_1 >= 174
+# define BOOST_PP_ITERATION_1 174
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 175 && BOOST_PP_ITERATION_FINISH_1 >= 175
+# define BOOST_PP_ITERATION_1 175
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 176 && BOOST_PP_ITERATION_FINISH_1 >= 176
+# define BOOST_PP_ITERATION_1 176
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 177 && BOOST_PP_ITERATION_FINISH_1 >= 177
+# define BOOST_PP_ITERATION_1 177
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 178 && BOOST_PP_ITERATION_FINISH_1 >= 178
+# define BOOST_PP_ITERATION_1 178
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 179 && BOOST_PP_ITERATION_FINISH_1 >= 179
+# define BOOST_PP_ITERATION_1 179
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 180 && BOOST_PP_ITERATION_FINISH_1 >= 180
+# define BOOST_PP_ITERATION_1 180
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 181 && BOOST_PP_ITERATION_FINISH_1 >= 181
+# define BOOST_PP_ITERATION_1 181
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 182 && BOOST_PP_ITERATION_FINISH_1 >= 182
+# define BOOST_PP_ITERATION_1 182
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 183 && BOOST_PP_ITERATION_FINISH_1 >= 183
+# define BOOST_PP_ITERATION_1 183
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 184 && BOOST_PP_ITERATION_FINISH_1 >= 184
+# define BOOST_PP_ITERATION_1 184
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 185 && BOOST_PP_ITERATION_FINISH_1 >= 185
+# define BOOST_PP_ITERATION_1 185
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 186 && BOOST_PP_ITERATION_FINISH_1 >= 186
+# define BOOST_PP_ITERATION_1 186
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 187 && BOOST_PP_ITERATION_FINISH_1 >= 187
+# define BOOST_PP_ITERATION_1 187
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 188 && BOOST_PP_ITERATION_FINISH_1 >= 188
+# define BOOST_PP_ITERATION_1 188
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 189 && BOOST_PP_ITERATION_FINISH_1 >= 189
+# define BOOST_PP_ITERATION_1 189
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 190 && BOOST_PP_ITERATION_FINISH_1 >= 190
+# define BOOST_PP_ITERATION_1 190
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 191 && BOOST_PP_ITERATION_FINISH_1 >= 191
+# define BOOST_PP_ITERATION_1 191
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 192 && BOOST_PP_ITERATION_FINISH_1 >= 192
+# define BOOST_PP_ITERATION_1 192
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 193 && BOOST_PP_ITERATION_FINISH_1 >= 193
+# define BOOST_PP_ITERATION_1 193
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 194 && BOOST_PP_ITERATION_FINISH_1 >= 194
+# define BOOST_PP_ITERATION_1 194
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 195 && BOOST_PP_ITERATION_FINISH_1 >= 195
+# define BOOST_PP_ITERATION_1 195
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 196 && BOOST_PP_ITERATION_FINISH_1 >= 196
+# define BOOST_PP_ITERATION_1 196
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 197 && BOOST_PP_ITERATION_FINISH_1 >= 197
+# define BOOST_PP_ITERATION_1 197
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 198 && BOOST_PP_ITERATION_FINISH_1 >= 198
+# define BOOST_PP_ITERATION_1 198
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 199 && BOOST_PP_ITERATION_FINISH_1 >= 199
+# define BOOST_PP_ITERATION_1 199
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 200 && BOOST_PP_ITERATION_FINISH_1 >= 200
+# define BOOST_PP_ITERATION_1 200
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 201 && BOOST_PP_ITERATION_FINISH_1 >= 201
+# define BOOST_PP_ITERATION_1 201
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 202 && BOOST_PP_ITERATION_FINISH_1 >= 202
+# define BOOST_PP_ITERATION_1 202
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 203 && BOOST_PP_ITERATION_FINISH_1 >= 203
+# define BOOST_PP_ITERATION_1 203
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 204 && BOOST_PP_ITERATION_FINISH_1 >= 204
+# define BOOST_PP_ITERATION_1 204
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 205 && BOOST_PP_ITERATION_FINISH_1 >= 205
+# define BOOST_PP_ITERATION_1 205
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 206 && BOOST_PP_ITERATION_FINISH_1 >= 206
+# define BOOST_PP_ITERATION_1 206
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 207 && BOOST_PP_ITERATION_FINISH_1 >= 207
+# define BOOST_PP_ITERATION_1 207
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 208 && BOOST_PP_ITERATION_FINISH_1 >= 208
+# define BOOST_PP_ITERATION_1 208
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 209 && BOOST_PP_ITERATION_FINISH_1 >= 209
+# define BOOST_PP_ITERATION_1 209
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 210 && BOOST_PP_ITERATION_FINISH_1 >= 210
+# define BOOST_PP_ITERATION_1 210
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 211 && BOOST_PP_ITERATION_FINISH_1 >= 211
+# define BOOST_PP_ITERATION_1 211
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 212 && BOOST_PP_ITERATION_FINISH_1 >= 212
+# define BOOST_PP_ITERATION_1 212
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 213 && BOOST_PP_ITERATION_FINISH_1 >= 213
+# define BOOST_PP_ITERATION_1 213
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 214 && BOOST_PP_ITERATION_FINISH_1 >= 214
+# define BOOST_PP_ITERATION_1 214
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 215 && BOOST_PP_ITERATION_FINISH_1 >= 215
+# define BOOST_PP_ITERATION_1 215
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 216 && BOOST_PP_ITERATION_FINISH_1 >= 216
+# define BOOST_PP_ITERATION_1 216
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 217 && BOOST_PP_ITERATION_FINISH_1 >= 217
+# define BOOST_PP_ITERATION_1 217
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 218 && BOOST_PP_ITERATION_FINISH_1 >= 218
+# define BOOST_PP_ITERATION_1 218
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 219 && BOOST_PP_ITERATION_FINISH_1 >= 219
+# define BOOST_PP_ITERATION_1 219
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 220 && BOOST_PP_ITERATION_FINISH_1 >= 220
+# define BOOST_PP_ITERATION_1 220
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 221 && BOOST_PP_ITERATION_FINISH_1 >= 221
+# define BOOST_PP_ITERATION_1 221
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 222 && BOOST_PP_ITERATION_FINISH_1 >= 222
+# define BOOST_PP_ITERATION_1 222
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 223 && BOOST_PP_ITERATION_FINISH_1 >= 223
+# define BOOST_PP_ITERATION_1 223
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 224 && BOOST_PP_ITERATION_FINISH_1 >= 224
+# define BOOST_PP_ITERATION_1 224
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 225 && BOOST_PP_ITERATION_FINISH_1 >= 225
+# define BOOST_PP_ITERATION_1 225
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 226 && BOOST_PP_ITERATION_FINISH_1 >= 226
+# define BOOST_PP_ITERATION_1 226
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 227 && BOOST_PP_ITERATION_FINISH_1 >= 227
+# define BOOST_PP_ITERATION_1 227
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 228 && BOOST_PP_ITERATION_FINISH_1 >= 228
+# define BOOST_PP_ITERATION_1 228
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 229 && BOOST_PP_ITERATION_FINISH_1 >= 229
+# define BOOST_PP_ITERATION_1 229
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 230 && BOOST_PP_ITERATION_FINISH_1 >= 230
+# define BOOST_PP_ITERATION_1 230
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 231 && BOOST_PP_ITERATION_FINISH_1 >= 231
+# define BOOST_PP_ITERATION_1 231
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 232 && BOOST_PP_ITERATION_FINISH_1 >= 232
+# define BOOST_PP_ITERATION_1 232
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 233 && BOOST_PP_ITERATION_FINISH_1 >= 233
+# define BOOST_PP_ITERATION_1 233
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 234 && BOOST_PP_ITERATION_FINISH_1 >= 234
+# define BOOST_PP_ITERATION_1 234
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 235 && BOOST_PP_ITERATION_FINISH_1 >= 235
+# define BOOST_PP_ITERATION_1 235
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 236 && BOOST_PP_ITERATION_FINISH_1 >= 236
+# define BOOST_PP_ITERATION_1 236
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 237 && BOOST_PP_ITERATION_FINISH_1 >= 237
+# define BOOST_PP_ITERATION_1 237
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 238 && BOOST_PP_ITERATION_FINISH_1 >= 238
+# define BOOST_PP_ITERATION_1 238
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 239 && BOOST_PP_ITERATION_FINISH_1 >= 239
+# define BOOST_PP_ITERATION_1 239
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 240 && BOOST_PP_ITERATION_FINISH_1 >= 240
+# define BOOST_PP_ITERATION_1 240
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 241 && BOOST_PP_ITERATION_FINISH_1 >= 241
+# define BOOST_PP_ITERATION_1 241
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 242 && BOOST_PP_ITERATION_FINISH_1 >= 242
+# define BOOST_PP_ITERATION_1 242
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 243 && BOOST_PP_ITERATION_FINISH_1 >= 243
+# define BOOST_PP_ITERATION_1 243
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 244 && BOOST_PP_ITERATION_FINISH_1 >= 244
+# define BOOST_PP_ITERATION_1 244
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 245 && BOOST_PP_ITERATION_FINISH_1 >= 245
+# define BOOST_PP_ITERATION_1 245
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 246 && BOOST_PP_ITERATION_FINISH_1 >= 246
+# define BOOST_PP_ITERATION_1 246
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 247 && BOOST_PP_ITERATION_FINISH_1 >= 247
+# define BOOST_PP_ITERATION_1 247
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 248 && BOOST_PP_ITERATION_FINISH_1 >= 248
+# define BOOST_PP_ITERATION_1 248
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 249 && BOOST_PP_ITERATION_FINISH_1 >= 249
+# define BOOST_PP_ITERATION_1 249
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 250 && BOOST_PP_ITERATION_FINISH_1 >= 250
+# define BOOST_PP_ITERATION_1 250
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 251 && BOOST_PP_ITERATION_FINISH_1 >= 251
+# define BOOST_PP_ITERATION_1 251
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 252 && BOOST_PP_ITERATION_FINISH_1 >= 252
+# define BOOST_PP_ITERATION_1 252
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 253 && BOOST_PP_ITERATION_FINISH_1 >= 253
+# define BOOST_PP_ITERATION_1 253
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 254 && BOOST_PP_ITERATION_FINISH_1 >= 254
+# define BOOST_PP_ITERATION_1 254
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 255 && BOOST_PP_ITERATION_FINISH_1 >= 255
+# define BOOST_PP_ITERATION_1 255
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 256 && BOOST_PP_ITERATION_FINISH_1 >= 256
+# define BOOST_PP_ITERATION_1 256
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# endif
+#
+# undef BOOST_PP_IS_ITERATING
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 0
+#
+# undef BOOST_PP_ITERATION_START_1
+# undef BOOST_PP_ITERATION_FINISH_1
+# undef BOOST_PP_FILENAME_1
+#
+# undef BOOST_PP_ITERATION_FLAGS_1
+# undef BOOST_PP_ITERATION_PARAMS_1
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward2.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward2.hpp
new file mode 100644
index 0000000..b689f63
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward2.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_2)
+# error BOOST_PP_ERROR: depth #2 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower2.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper2.hpp>
+# define BOOST_PP_ITERATION_FLAGS_2 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_2)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_2)
+# include <boost/preprocessor/iteration/detail/bounds/lower2.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_2)
+# include <boost/preprocessor/iteration/detail/bounds/upper2.hpp>
+# define BOOST_PP_FILENAME_2 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_2)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_2) >= 4
+# define BOOST_PP_ITERATION_FLAGS_2 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_2)
+# else
+# define BOOST_PP_ITERATION_FLAGS_2 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #2 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 2
+#
+# if (BOOST_PP_ITERATION_START_2) > (BOOST_PP_ITERATION_FINISH_2)
+# include <boost/preprocessor/iteration/detail/iter/reverse2.hpp>
+# else
+# if BOOST_PP_ITERATION_START_2 <= 0 && BOOST_PP_ITERATION_FINISH_2 >= 0
+# define BOOST_PP_ITERATION_2 0
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 1 && BOOST_PP_ITERATION_FINISH_2 >= 1
+# define BOOST_PP_ITERATION_2 1
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 2 && BOOST_PP_ITERATION_FINISH_2 >= 2
+# define BOOST_PP_ITERATION_2 2
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 3 && BOOST_PP_ITERATION_FINISH_2 >= 3
+# define BOOST_PP_ITERATION_2 3
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 4 && BOOST_PP_ITERATION_FINISH_2 >= 4
+# define BOOST_PP_ITERATION_2 4
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 5 && BOOST_PP_ITERATION_FINISH_2 >= 5
+# define BOOST_PP_ITERATION_2 5
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 6 && BOOST_PP_ITERATION_FINISH_2 >= 6
+# define BOOST_PP_ITERATION_2 6
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 7 && BOOST_PP_ITERATION_FINISH_2 >= 7
+# define BOOST_PP_ITERATION_2 7
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 8 && BOOST_PP_ITERATION_FINISH_2 >= 8
+# define BOOST_PP_ITERATION_2 8
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 9 && BOOST_PP_ITERATION_FINISH_2 >= 9
+# define BOOST_PP_ITERATION_2 9
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 10 && BOOST_PP_ITERATION_FINISH_2 >= 10
+# define BOOST_PP_ITERATION_2 10
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 11 && BOOST_PP_ITERATION_FINISH_2 >= 11
+# define BOOST_PP_ITERATION_2 11
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 12 && BOOST_PP_ITERATION_FINISH_2 >= 12
+# define BOOST_PP_ITERATION_2 12
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 13 && BOOST_PP_ITERATION_FINISH_2 >= 13
+# define BOOST_PP_ITERATION_2 13
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 14 && BOOST_PP_ITERATION_FINISH_2 >= 14
+# define BOOST_PP_ITERATION_2 14
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 15 && BOOST_PP_ITERATION_FINISH_2 >= 15
+# define BOOST_PP_ITERATION_2 15
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 16 && BOOST_PP_ITERATION_FINISH_2 >= 16
+# define BOOST_PP_ITERATION_2 16
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 17 && BOOST_PP_ITERATION_FINISH_2 >= 17
+# define BOOST_PP_ITERATION_2 17
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 18 && BOOST_PP_ITERATION_FINISH_2 >= 18
+# define BOOST_PP_ITERATION_2 18
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 19 && BOOST_PP_ITERATION_FINISH_2 >= 19
+# define BOOST_PP_ITERATION_2 19
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 20 && BOOST_PP_ITERATION_FINISH_2 >= 20
+# define BOOST_PP_ITERATION_2 20
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 21 && BOOST_PP_ITERATION_FINISH_2 >= 21
+# define BOOST_PP_ITERATION_2 21
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 22 && BOOST_PP_ITERATION_FINISH_2 >= 22
+# define BOOST_PP_ITERATION_2 22
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 23 && BOOST_PP_ITERATION_FINISH_2 >= 23
+# define BOOST_PP_ITERATION_2 23
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 24 && BOOST_PP_ITERATION_FINISH_2 >= 24
+# define BOOST_PP_ITERATION_2 24
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 25 && BOOST_PP_ITERATION_FINISH_2 >= 25
+# define BOOST_PP_ITERATION_2 25
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 26 && BOOST_PP_ITERATION_FINISH_2 >= 26
+# define BOOST_PP_ITERATION_2 26
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 27 && BOOST_PP_ITERATION_FINISH_2 >= 27
+# define BOOST_PP_ITERATION_2 27
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 28 && BOOST_PP_ITERATION_FINISH_2 >= 28
+# define BOOST_PP_ITERATION_2 28
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 29 && BOOST_PP_ITERATION_FINISH_2 >= 29
+# define BOOST_PP_ITERATION_2 29
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 30 && BOOST_PP_ITERATION_FINISH_2 >= 30
+# define BOOST_PP_ITERATION_2 30
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 31 && BOOST_PP_ITERATION_FINISH_2 >= 31
+# define BOOST_PP_ITERATION_2 31
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 32 && BOOST_PP_ITERATION_FINISH_2 >= 32
+# define BOOST_PP_ITERATION_2 32
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 33 && BOOST_PP_ITERATION_FINISH_2 >= 33
+# define BOOST_PP_ITERATION_2 33
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 34 && BOOST_PP_ITERATION_FINISH_2 >= 34
+# define BOOST_PP_ITERATION_2 34
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 35 && BOOST_PP_ITERATION_FINISH_2 >= 35
+# define BOOST_PP_ITERATION_2 35
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 36 && BOOST_PP_ITERATION_FINISH_2 >= 36
+# define BOOST_PP_ITERATION_2 36
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 37 && BOOST_PP_ITERATION_FINISH_2 >= 37
+# define BOOST_PP_ITERATION_2 37
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 38 && BOOST_PP_ITERATION_FINISH_2 >= 38
+# define BOOST_PP_ITERATION_2 38
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 39 && BOOST_PP_ITERATION_FINISH_2 >= 39
+# define BOOST_PP_ITERATION_2 39
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 40 && BOOST_PP_ITERATION_FINISH_2 >= 40
+# define BOOST_PP_ITERATION_2 40
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 41 && BOOST_PP_ITERATION_FINISH_2 >= 41
+# define BOOST_PP_ITERATION_2 41
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 42 && BOOST_PP_ITERATION_FINISH_2 >= 42
+# define BOOST_PP_ITERATION_2 42
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 43 && BOOST_PP_ITERATION_FINISH_2 >= 43
+# define BOOST_PP_ITERATION_2 43
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 44 && BOOST_PP_ITERATION_FINISH_2 >= 44
+# define BOOST_PP_ITERATION_2 44
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 45 && BOOST_PP_ITERATION_FINISH_2 >= 45
+# define BOOST_PP_ITERATION_2 45
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 46 && BOOST_PP_ITERATION_FINISH_2 >= 46
+# define BOOST_PP_ITERATION_2 46
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 47 && BOOST_PP_ITERATION_FINISH_2 >= 47
+# define BOOST_PP_ITERATION_2 47
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 48 && BOOST_PP_ITERATION_FINISH_2 >= 48
+# define BOOST_PP_ITERATION_2 48
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 49 && BOOST_PP_ITERATION_FINISH_2 >= 49
+# define BOOST_PP_ITERATION_2 49
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 50 && BOOST_PP_ITERATION_FINISH_2 >= 50
+# define BOOST_PP_ITERATION_2 50
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 51 && BOOST_PP_ITERATION_FINISH_2 >= 51
+# define BOOST_PP_ITERATION_2 51
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 52 && BOOST_PP_ITERATION_FINISH_2 >= 52
+# define BOOST_PP_ITERATION_2 52
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 53 && BOOST_PP_ITERATION_FINISH_2 >= 53
+# define BOOST_PP_ITERATION_2 53
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 54 && BOOST_PP_ITERATION_FINISH_2 >= 54
+# define BOOST_PP_ITERATION_2 54
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 55 && BOOST_PP_ITERATION_FINISH_2 >= 55
+# define BOOST_PP_ITERATION_2 55
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 56 && BOOST_PP_ITERATION_FINISH_2 >= 56
+# define BOOST_PP_ITERATION_2 56
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 57 && BOOST_PP_ITERATION_FINISH_2 >= 57
+# define BOOST_PP_ITERATION_2 57
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 58 && BOOST_PP_ITERATION_FINISH_2 >= 58
+# define BOOST_PP_ITERATION_2 58
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 59 && BOOST_PP_ITERATION_FINISH_2 >= 59
+# define BOOST_PP_ITERATION_2 59
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 60 && BOOST_PP_ITERATION_FINISH_2 >= 60
+# define BOOST_PP_ITERATION_2 60
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 61 && BOOST_PP_ITERATION_FINISH_2 >= 61
+# define BOOST_PP_ITERATION_2 61
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 62 && BOOST_PP_ITERATION_FINISH_2 >= 62
+# define BOOST_PP_ITERATION_2 62
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 63 && BOOST_PP_ITERATION_FINISH_2 >= 63
+# define BOOST_PP_ITERATION_2 63
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 64 && BOOST_PP_ITERATION_FINISH_2 >= 64
+# define BOOST_PP_ITERATION_2 64
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 65 && BOOST_PP_ITERATION_FINISH_2 >= 65
+# define BOOST_PP_ITERATION_2 65
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 66 && BOOST_PP_ITERATION_FINISH_2 >= 66
+# define BOOST_PP_ITERATION_2 66
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 67 && BOOST_PP_ITERATION_FINISH_2 >= 67
+# define BOOST_PP_ITERATION_2 67
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 68 && BOOST_PP_ITERATION_FINISH_2 >= 68
+# define BOOST_PP_ITERATION_2 68
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 69 && BOOST_PP_ITERATION_FINISH_2 >= 69
+# define BOOST_PP_ITERATION_2 69
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 70 && BOOST_PP_ITERATION_FINISH_2 >= 70
+# define BOOST_PP_ITERATION_2 70
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 71 && BOOST_PP_ITERATION_FINISH_2 >= 71
+# define BOOST_PP_ITERATION_2 71
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 72 && BOOST_PP_ITERATION_FINISH_2 >= 72
+# define BOOST_PP_ITERATION_2 72
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 73 && BOOST_PP_ITERATION_FINISH_2 >= 73
+# define BOOST_PP_ITERATION_2 73
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 74 && BOOST_PP_ITERATION_FINISH_2 >= 74
+# define BOOST_PP_ITERATION_2 74
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 75 && BOOST_PP_ITERATION_FINISH_2 >= 75
+# define BOOST_PP_ITERATION_2 75
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 76 && BOOST_PP_ITERATION_FINISH_2 >= 76
+# define BOOST_PP_ITERATION_2 76
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 77 && BOOST_PP_ITERATION_FINISH_2 >= 77
+# define BOOST_PP_ITERATION_2 77
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 78 && BOOST_PP_ITERATION_FINISH_2 >= 78
+# define BOOST_PP_ITERATION_2 78
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 79 && BOOST_PP_ITERATION_FINISH_2 >= 79
+# define BOOST_PP_ITERATION_2 79
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 80 && BOOST_PP_ITERATION_FINISH_2 >= 80
+# define BOOST_PP_ITERATION_2 80
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 81 && BOOST_PP_ITERATION_FINISH_2 >= 81
+# define BOOST_PP_ITERATION_2 81
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 82 && BOOST_PP_ITERATION_FINISH_2 >= 82
+# define BOOST_PP_ITERATION_2 82
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 83 && BOOST_PP_ITERATION_FINISH_2 >= 83
+# define BOOST_PP_ITERATION_2 83
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 84 && BOOST_PP_ITERATION_FINISH_2 >= 84
+# define BOOST_PP_ITERATION_2 84
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 85 && BOOST_PP_ITERATION_FINISH_2 >= 85
+# define BOOST_PP_ITERATION_2 85
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 86 && BOOST_PP_ITERATION_FINISH_2 >= 86
+# define BOOST_PP_ITERATION_2 86
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 87 && BOOST_PP_ITERATION_FINISH_2 >= 87
+# define BOOST_PP_ITERATION_2 87
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 88 && BOOST_PP_ITERATION_FINISH_2 >= 88
+# define BOOST_PP_ITERATION_2 88
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 89 && BOOST_PP_ITERATION_FINISH_2 >= 89
+# define BOOST_PP_ITERATION_2 89
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 90 && BOOST_PP_ITERATION_FINISH_2 >= 90
+# define BOOST_PP_ITERATION_2 90
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 91 && BOOST_PP_ITERATION_FINISH_2 >= 91
+# define BOOST_PP_ITERATION_2 91
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 92 && BOOST_PP_ITERATION_FINISH_2 >= 92
+# define BOOST_PP_ITERATION_2 92
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 93 && BOOST_PP_ITERATION_FINISH_2 >= 93
+# define BOOST_PP_ITERATION_2 93
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 94 && BOOST_PP_ITERATION_FINISH_2 >= 94
+# define BOOST_PP_ITERATION_2 94
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 95 && BOOST_PP_ITERATION_FINISH_2 >= 95
+# define BOOST_PP_ITERATION_2 95
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 96 && BOOST_PP_ITERATION_FINISH_2 >= 96
+# define BOOST_PP_ITERATION_2 96
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 97 && BOOST_PP_ITERATION_FINISH_2 >= 97
+# define BOOST_PP_ITERATION_2 97
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 98 && BOOST_PP_ITERATION_FINISH_2 >= 98
+# define BOOST_PP_ITERATION_2 98
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 99 && BOOST_PP_ITERATION_FINISH_2 >= 99
+# define BOOST_PP_ITERATION_2 99
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 100 && BOOST_PP_ITERATION_FINISH_2 >= 100
+# define BOOST_PP_ITERATION_2 100
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 101 && BOOST_PP_ITERATION_FINISH_2 >= 101
+# define BOOST_PP_ITERATION_2 101
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 102 && BOOST_PP_ITERATION_FINISH_2 >= 102
+# define BOOST_PP_ITERATION_2 102
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 103 && BOOST_PP_ITERATION_FINISH_2 >= 103
+# define BOOST_PP_ITERATION_2 103
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 104 && BOOST_PP_ITERATION_FINISH_2 >= 104
+# define BOOST_PP_ITERATION_2 104
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 105 && BOOST_PP_ITERATION_FINISH_2 >= 105
+# define BOOST_PP_ITERATION_2 105
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 106 && BOOST_PP_ITERATION_FINISH_2 >= 106
+# define BOOST_PP_ITERATION_2 106
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 107 && BOOST_PP_ITERATION_FINISH_2 >= 107
+# define BOOST_PP_ITERATION_2 107
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 108 && BOOST_PP_ITERATION_FINISH_2 >= 108
+# define BOOST_PP_ITERATION_2 108
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 109 && BOOST_PP_ITERATION_FINISH_2 >= 109
+# define BOOST_PP_ITERATION_2 109
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 110 && BOOST_PP_ITERATION_FINISH_2 >= 110
+# define BOOST_PP_ITERATION_2 110
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 111 && BOOST_PP_ITERATION_FINISH_2 >= 111
+# define BOOST_PP_ITERATION_2 111
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 112 && BOOST_PP_ITERATION_FINISH_2 >= 112
+# define BOOST_PP_ITERATION_2 112
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 113 && BOOST_PP_ITERATION_FINISH_2 >= 113
+# define BOOST_PP_ITERATION_2 113
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 114 && BOOST_PP_ITERATION_FINISH_2 >= 114
+# define BOOST_PP_ITERATION_2 114
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 115 && BOOST_PP_ITERATION_FINISH_2 >= 115
+# define BOOST_PP_ITERATION_2 115
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 116 && BOOST_PP_ITERATION_FINISH_2 >= 116
+# define BOOST_PP_ITERATION_2 116
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 117 && BOOST_PP_ITERATION_FINISH_2 >= 117
+# define BOOST_PP_ITERATION_2 117
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 118 && BOOST_PP_ITERATION_FINISH_2 >= 118
+# define BOOST_PP_ITERATION_2 118
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 119 && BOOST_PP_ITERATION_FINISH_2 >= 119
+# define BOOST_PP_ITERATION_2 119
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 120 && BOOST_PP_ITERATION_FINISH_2 >= 120
+# define BOOST_PP_ITERATION_2 120
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 121 && BOOST_PP_ITERATION_FINISH_2 >= 121
+# define BOOST_PP_ITERATION_2 121
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 122 && BOOST_PP_ITERATION_FINISH_2 >= 122
+# define BOOST_PP_ITERATION_2 122
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 123 && BOOST_PP_ITERATION_FINISH_2 >= 123
+# define BOOST_PP_ITERATION_2 123
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 124 && BOOST_PP_ITERATION_FINISH_2 >= 124
+# define BOOST_PP_ITERATION_2 124
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 125 && BOOST_PP_ITERATION_FINISH_2 >= 125
+# define BOOST_PP_ITERATION_2 125
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 126 && BOOST_PP_ITERATION_FINISH_2 >= 126
+# define BOOST_PP_ITERATION_2 126
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 127 && BOOST_PP_ITERATION_FINISH_2 >= 127
+# define BOOST_PP_ITERATION_2 127
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 128 && BOOST_PP_ITERATION_FINISH_2 >= 128
+# define BOOST_PP_ITERATION_2 128
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 129 && BOOST_PP_ITERATION_FINISH_2 >= 129
+# define BOOST_PP_ITERATION_2 129
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 130 && BOOST_PP_ITERATION_FINISH_2 >= 130
+# define BOOST_PP_ITERATION_2 130
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 131 && BOOST_PP_ITERATION_FINISH_2 >= 131
+# define BOOST_PP_ITERATION_2 131
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 132 && BOOST_PP_ITERATION_FINISH_2 >= 132
+# define BOOST_PP_ITERATION_2 132
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 133 && BOOST_PP_ITERATION_FINISH_2 >= 133
+# define BOOST_PP_ITERATION_2 133
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 134 && BOOST_PP_ITERATION_FINISH_2 >= 134
+# define BOOST_PP_ITERATION_2 134
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 135 && BOOST_PP_ITERATION_FINISH_2 >= 135
+# define BOOST_PP_ITERATION_2 135
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 136 && BOOST_PP_ITERATION_FINISH_2 >= 136
+# define BOOST_PP_ITERATION_2 136
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 137 && BOOST_PP_ITERATION_FINISH_2 >= 137
+# define BOOST_PP_ITERATION_2 137
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 138 && BOOST_PP_ITERATION_FINISH_2 >= 138
+# define BOOST_PP_ITERATION_2 138
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 139 && BOOST_PP_ITERATION_FINISH_2 >= 139
+# define BOOST_PP_ITERATION_2 139
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 140 && BOOST_PP_ITERATION_FINISH_2 >= 140
+# define BOOST_PP_ITERATION_2 140
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 141 && BOOST_PP_ITERATION_FINISH_2 >= 141
+# define BOOST_PP_ITERATION_2 141
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 142 && BOOST_PP_ITERATION_FINISH_2 >= 142
+# define BOOST_PP_ITERATION_2 142
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 143 && BOOST_PP_ITERATION_FINISH_2 >= 143
+# define BOOST_PP_ITERATION_2 143
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 144 && BOOST_PP_ITERATION_FINISH_2 >= 144
+# define BOOST_PP_ITERATION_2 144
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 145 && BOOST_PP_ITERATION_FINISH_2 >= 145
+# define BOOST_PP_ITERATION_2 145
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 146 && BOOST_PP_ITERATION_FINISH_2 >= 146
+# define BOOST_PP_ITERATION_2 146
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 147 && BOOST_PP_ITERATION_FINISH_2 >= 147
+# define BOOST_PP_ITERATION_2 147
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 148 && BOOST_PP_ITERATION_FINISH_2 >= 148
+# define BOOST_PP_ITERATION_2 148
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 149 && BOOST_PP_ITERATION_FINISH_2 >= 149
+# define BOOST_PP_ITERATION_2 149
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 150 && BOOST_PP_ITERATION_FINISH_2 >= 150
+# define BOOST_PP_ITERATION_2 150
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 151 && BOOST_PP_ITERATION_FINISH_2 >= 151
+# define BOOST_PP_ITERATION_2 151
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 152 && BOOST_PP_ITERATION_FINISH_2 >= 152
+# define BOOST_PP_ITERATION_2 152
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 153 && BOOST_PP_ITERATION_FINISH_2 >= 153
+# define BOOST_PP_ITERATION_2 153
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 154 && BOOST_PP_ITERATION_FINISH_2 >= 154
+# define BOOST_PP_ITERATION_2 154
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 155 && BOOST_PP_ITERATION_FINISH_2 >= 155
+# define BOOST_PP_ITERATION_2 155
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 156 && BOOST_PP_ITERATION_FINISH_2 >= 156
+# define BOOST_PP_ITERATION_2 156
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 157 && BOOST_PP_ITERATION_FINISH_2 >= 157
+# define BOOST_PP_ITERATION_2 157
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 158 && BOOST_PP_ITERATION_FINISH_2 >= 158
+# define BOOST_PP_ITERATION_2 158
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 159 && BOOST_PP_ITERATION_FINISH_2 >= 159
+# define BOOST_PP_ITERATION_2 159
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 160 && BOOST_PP_ITERATION_FINISH_2 >= 160
+# define BOOST_PP_ITERATION_2 160
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 161 && BOOST_PP_ITERATION_FINISH_2 >= 161
+# define BOOST_PP_ITERATION_2 161
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 162 && BOOST_PP_ITERATION_FINISH_2 >= 162
+# define BOOST_PP_ITERATION_2 162
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 163 && BOOST_PP_ITERATION_FINISH_2 >= 163
+# define BOOST_PP_ITERATION_2 163
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 164 && BOOST_PP_ITERATION_FINISH_2 >= 164
+# define BOOST_PP_ITERATION_2 164
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 165 && BOOST_PP_ITERATION_FINISH_2 >= 165
+# define BOOST_PP_ITERATION_2 165
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 166 && BOOST_PP_ITERATION_FINISH_2 >= 166
+# define BOOST_PP_ITERATION_2 166
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 167 && BOOST_PP_ITERATION_FINISH_2 >= 167
+# define BOOST_PP_ITERATION_2 167
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 168 && BOOST_PP_ITERATION_FINISH_2 >= 168
+# define BOOST_PP_ITERATION_2 168
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 169 && BOOST_PP_ITERATION_FINISH_2 >= 169
+# define BOOST_PP_ITERATION_2 169
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 170 && BOOST_PP_ITERATION_FINISH_2 >= 170
+# define BOOST_PP_ITERATION_2 170
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 171 && BOOST_PP_ITERATION_FINISH_2 >= 171
+# define BOOST_PP_ITERATION_2 171
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 172 && BOOST_PP_ITERATION_FINISH_2 >= 172
+# define BOOST_PP_ITERATION_2 172
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 173 && BOOST_PP_ITERATION_FINISH_2 >= 173
+# define BOOST_PP_ITERATION_2 173
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 174 && BOOST_PP_ITERATION_FINISH_2 >= 174
+# define BOOST_PP_ITERATION_2 174
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 175 && BOOST_PP_ITERATION_FINISH_2 >= 175
+# define BOOST_PP_ITERATION_2 175
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 176 && BOOST_PP_ITERATION_FINISH_2 >= 176
+# define BOOST_PP_ITERATION_2 176
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 177 && BOOST_PP_ITERATION_FINISH_2 >= 177
+# define BOOST_PP_ITERATION_2 177
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 178 && BOOST_PP_ITERATION_FINISH_2 >= 178
+# define BOOST_PP_ITERATION_2 178
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 179 && BOOST_PP_ITERATION_FINISH_2 >= 179
+# define BOOST_PP_ITERATION_2 179
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 180 && BOOST_PP_ITERATION_FINISH_2 >= 180
+# define BOOST_PP_ITERATION_2 180
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 181 && BOOST_PP_ITERATION_FINISH_2 >= 181
+# define BOOST_PP_ITERATION_2 181
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 182 && BOOST_PP_ITERATION_FINISH_2 >= 182
+# define BOOST_PP_ITERATION_2 182
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 183 && BOOST_PP_ITERATION_FINISH_2 >= 183
+# define BOOST_PP_ITERATION_2 183
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 184 && BOOST_PP_ITERATION_FINISH_2 >= 184
+# define BOOST_PP_ITERATION_2 184
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 185 && BOOST_PP_ITERATION_FINISH_2 >= 185
+# define BOOST_PP_ITERATION_2 185
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 186 && BOOST_PP_ITERATION_FINISH_2 >= 186
+# define BOOST_PP_ITERATION_2 186
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 187 && BOOST_PP_ITERATION_FINISH_2 >= 187
+# define BOOST_PP_ITERATION_2 187
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 188 && BOOST_PP_ITERATION_FINISH_2 >= 188
+# define BOOST_PP_ITERATION_2 188
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 189 && BOOST_PP_ITERATION_FINISH_2 >= 189
+# define BOOST_PP_ITERATION_2 189
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 190 && BOOST_PP_ITERATION_FINISH_2 >= 190
+# define BOOST_PP_ITERATION_2 190
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 191 && BOOST_PP_ITERATION_FINISH_2 >= 191
+# define BOOST_PP_ITERATION_2 191
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 192 && BOOST_PP_ITERATION_FINISH_2 >= 192
+# define BOOST_PP_ITERATION_2 192
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 193 && BOOST_PP_ITERATION_FINISH_2 >= 193
+# define BOOST_PP_ITERATION_2 193
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 194 && BOOST_PP_ITERATION_FINISH_2 >= 194
+# define BOOST_PP_ITERATION_2 194
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 195 && BOOST_PP_ITERATION_FINISH_2 >= 195
+# define BOOST_PP_ITERATION_2 195
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 196 && BOOST_PP_ITERATION_FINISH_2 >= 196
+# define BOOST_PP_ITERATION_2 196
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 197 && BOOST_PP_ITERATION_FINISH_2 >= 197
+# define BOOST_PP_ITERATION_2 197
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 198 && BOOST_PP_ITERATION_FINISH_2 >= 198
+# define BOOST_PP_ITERATION_2 198
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 199 && BOOST_PP_ITERATION_FINISH_2 >= 199
+# define BOOST_PP_ITERATION_2 199
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 200 && BOOST_PP_ITERATION_FINISH_2 >= 200
+# define BOOST_PP_ITERATION_2 200
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 201 && BOOST_PP_ITERATION_FINISH_2 >= 201
+# define BOOST_PP_ITERATION_2 201
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 202 && BOOST_PP_ITERATION_FINISH_2 >= 202
+# define BOOST_PP_ITERATION_2 202
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 203 && BOOST_PP_ITERATION_FINISH_2 >= 203
+# define BOOST_PP_ITERATION_2 203
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 204 && BOOST_PP_ITERATION_FINISH_2 >= 204
+# define BOOST_PP_ITERATION_2 204
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 205 && BOOST_PP_ITERATION_FINISH_2 >= 205
+# define BOOST_PP_ITERATION_2 205
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 206 && BOOST_PP_ITERATION_FINISH_2 >= 206
+# define BOOST_PP_ITERATION_2 206
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 207 && BOOST_PP_ITERATION_FINISH_2 >= 207
+# define BOOST_PP_ITERATION_2 207
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 208 && BOOST_PP_ITERATION_FINISH_2 >= 208
+# define BOOST_PP_ITERATION_2 208
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 209 && BOOST_PP_ITERATION_FINISH_2 >= 209
+# define BOOST_PP_ITERATION_2 209
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 210 && BOOST_PP_ITERATION_FINISH_2 >= 210
+# define BOOST_PP_ITERATION_2 210
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 211 && BOOST_PP_ITERATION_FINISH_2 >= 211
+# define BOOST_PP_ITERATION_2 211
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 212 && BOOST_PP_ITERATION_FINISH_2 >= 212
+# define BOOST_PP_ITERATION_2 212
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 213 && BOOST_PP_ITERATION_FINISH_2 >= 213
+# define BOOST_PP_ITERATION_2 213
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 214 && BOOST_PP_ITERATION_FINISH_2 >= 214
+# define BOOST_PP_ITERATION_2 214
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 215 && BOOST_PP_ITERATION_FINISH_2 >= 215
+# define BOOST_PP_ITERATION_2 215
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 216 && BOOST_PP_ITERATION_FINISH_2 >= 216
+# define BOOST_PP_ITERATION_2 216
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 217 && BOOST_PP_ITERATION_FINISH_2 >= 217
+# define BOOST_PP_ITERATION_2 217
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 218 && BOOST_PP_ITERATION_FINISH_2 >= 218
+# define BOOST_PP_ITERATION_2 218
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 219 && BOOST_PP_ITERATION_FINISH_2 >= 219
+# define BOOST_PP_ITERATION_2 219
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 220 && BOOST_PP_ITERATION_FINISH_2 >= 220
+# define BOOST_PP_ITERATION_2 220
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 221 && BOOST_PP_ITERATION_FINISH_2 >= 221
+# define BOOST_PP_ITERATION_2 221
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 222 && BOOST_PP_ITERATION_FINISH_2 >= 222
+# define BOOST_PP_ITERATION_2 222
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 223 && BOOST_PP_ITERATION_FINISH_2 >= 223
+# define BOOST_PP_ITERATION_2 223
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 224 && BOOST_PP_ITERATION_FINISH_2 >= 224
+# define BOOST_PP_ITERATION_2 224
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 225 && BOOST_PP_ITERATION_FINISH_2 >= 225
+# define BOOST_PP_ITERATION_2 225
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 226 && BOOST_PP_ITERATION_FINISH_2 >= 226
+# define BOOST_PP_ITERATION_2 226
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 227 && BOOST_PP_ITERATION_FINISH_2 >= 227
+# define BOOST_PP_ITERATION_2 227
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 228 && BOOST_PP_ITERATION_FINISH_2 >= 228
+# define BOOST_PP_ITERATION_2 228
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 229 && BOOST_PP_ITERATION_FINISH_2 >= 229
+# define BOOST_PP_ITERATION_2 229
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 230 && BOOST_PP_ITERATION_FINISH_2 >= 230
+# define BOOST_PP_ITERATION_2 230
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 231 && BOOST_PP_ITERATION_FINISH_2 >= 231
+# define BOOST_PP_ITERATION_2 231
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 232 && BOOST_PP_ITERATION_FINISH_2 >= 232
+# define BOOST_PP_ITERATION_2 232
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 233 && BOOST_PP_ITERATION_FINISH_2 >= 233
+# define BOOST_PP_ITERATION_2 233
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 234 && BOOST_PP_ITERATION_FINISH_2 >= 234
+# define BOOST_PP_ITERATION_2 234
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 235 && BOOST_PP_ITERATION_FINISH_2 >= 235
+# define BOOST_PP_ITERATION_2 235
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 236 && BOOST_PP_ITERATION_FINISH_2 >= 236
+# define BOOST_PP_ITERATION_2 236
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 237 && BOOST_PP_ITERATION_FINISH_2 >= 237
+# define BOOST_PP_ITERATION_2 237
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 238 && BOOST_PP_ITERATION_FINISH_2 >= 238
+# define BOOST_PP_ITERATION_2 238
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 239 && BOOST_PP_ITERATION_FINISH_2 >= 239
+# define BOOST_PP_ITERATION_2 239
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 240 && BOOST_PP_ITERATION_FINISH_2 >= 240
+# define BOOST_PP_ITERATION_2 240
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 241 && BOOST_PP_ITERATION_FINISH_2 >= 241
+# define BOOST_PP_ITERATION_2 241
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 242 && BOOST_PP_ITERATION_FINISH_2 >= 242
+# define BOOST_PP_ITERATION_2 242
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 243 && BOOST_PP_ITERATION_FINISH_2 >= 243
+# define BOOST_PP_ITERATION_2 243
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 244 && BOOST_PP_ITERATION_FINISH_2 >= 244
+# define BOOST_PP_ITERATION_2 244
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 245 && BOOST_PP_ITERATION_FINISH_2 >= 245
+# define BOOST_PP_ITERATION_2 245
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 246 && BOOST_PP_ITERATION_FINISH_2 >= 246
+# define BOOST_PP_ITERATION_2 246
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 247 && BOOST_PP_ITERATION_FINISH_2 >= 247
+# define BOOST_PP_ITERATION_2 247
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 248 && BOOST_PP_ITERATION_FINISH_2 >= 248
+# define BOOST_PP_ITERATION_2 248
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 249 && BOOST_PP_ITERATION_FINISH_2 >= 249
+# define BOOST_PP_ITERATION_2 249
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 250 && BOOST_PP_ITERATION_FINISH_2 >= 250
+# define BOOST_PP_ITERATION_2 250
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 251 && BOOST_PP_ITERATION_FINISH_2 >= 251
+# define BOOST_PP_ITERATION_2 251
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 252 && BOOST_PP_ITERATION_FINISH_2 >= 252
+# define BOOST_PP_ITERATION_2 252
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 253 && BOOST_PP_ITERATION_FINISH_2 >= 253
+# define BOOST_PP_ITERATION_2 253
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 254 && BOOST_PP_ITERATION_FINISH_2 >= 254
+# define BOOST_PP_ITERATION_2 254
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 255 && BOOST_PP_ITERATION_FINISH_2 >= 255
+# define BOOST_PP_ITERATION_2 255
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 256 && BOOST_PP_ITERATION_FINISH_2 >= 256
+# define BOOST_PP_ITERATION_2 256
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 1
+#
+# undef BOOST_PP_ITERATION_START_2
+# undef BOOST_PP_ITERATION_FINISH_2
+# undef BOOST_PP_FILENAME_2
+#
+# undef BOOST_PP_ITERATION_FLAGS_2
+# undef BOOST_PP_ITERATION_PARAMS_2
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward3.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward3.hpp
new file mode 100644
index 0000000..a25d0de
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward3.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_3)
+# error BOOST_PP_ERROR: depth #3 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower3.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper3.hpp>
+# define BOOST_PP_ITERATION_FLAGS_3 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_3)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_3)
+# include <boost/preprocessor/iteration/detail/bounds/lower3.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_3)
+# include <boost/preprocessor/iteration/detail/bounds/upper3.hpp>
+# define BOOST_PP_FILENAME_3 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_3)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_3) >= 4
+# define BOOST_PP_ITERATION_FLAGS_3 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_3)
+# else
+# define BOOST_PP_ITERATION_FLAGS_3 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #3 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 3
+#
+# if (BOOST_PP_ITERATION_START_3) > (BOOST_PP_ITERATION_FINISH_3)
+# include <boost/preprocessor/iteration/detail/iter/reverse3.hpp>
+# else
+# if BOOST_PP_ITERATION_START_3 <= 0 && BOOST_PP_ITERATION_FINISH_3 >= 0
+# define BOOST_PP_ITERATION_3 0
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 1 && BOOST_PP_ITERATION_FINISH_3 >= 1
+# define BOOST_PP_ITERATION_3 1
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 2 && BOOST_PP_ITERATION_FINISH_3 >= 2
+# define BOOST_PP_ITERATION_3 2
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 3 && BOOST_PP_ITERATION_FINISH_3 >= 3
+# define BOOST_PP_ITERATION_3 3
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 4 && BOOST_PP_ITERATION_FINISH_3 >= 4
+# define BOOST_PP_ITERATION_3 4
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 5 && BOOST_PP_ITERATION_FINISH_3 >= 5
+# define BOOST_PP_ITERATION_3 5
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 6 && BOOST_PP_ITERATION_FINISH_3 >= 6
+# define BOOST_PP_ITERATION_3 6
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 7 && BOOST_PP_ITERATION_FINISH_3 >= 7
+# define BOOST_PP_ITERATION_3 7
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 8 && BOOST_PP_ITERATION_FINISH_3 >= 8
+# define BOOST_PP_ITERATION_3 8
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 9 && BOOST_PP_ITERATION_FINISH_3 >= 9
+# define BOOST_PP_ITERATION_3 9
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 10 && BOOST_PP_ITERATION_FINISH_3 >= 10
+# define BOOST_PP_ITERATION_3 10
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 11 && BOOST_PP_ITERATION_FINISH_3 >= 11
+# define BOOST_PP_ITERATION_3 11
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 12 && BOOST_PP_ITERATION_FINISH_3 >= 12
+# define BOOST_PP_ITERATION_3 12
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 13 && BOOST_PP_ITERATION_FINISH_3 >= 13
+# define BOOST_PP_ITERATION_3 13
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 14 && BOOST_PP_ITERATION_FINISH_3 >= 14
+# define BOOST_PP_ITERATION_3 14
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 15 && BOOST_PP_ITERATION_FINISH_3 >= 15
+# define BOOST_PP_ITERATION_3 15
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 16 && BOOST_PP_ITERATION_FINISH_3 >= 16
+# define BOOST_PP_ITERATION_3 16
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 17 && BOOST_PP_ITERATION_FINISH_3 >= 17
+# define BOOST_PP_ITERATION_3 17
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 18 && BOOST_PP_ITERATION_FINISH_3 >= 18
+# define BOOST_PP_ITERATION_3 18
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 19 && BOOST_PP_ITERATION_FINISH_3 >= 19
+# define BOOST_PP_ITERATION_3 19
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 20 && BOOST_PP_ITERATION_FINISH_3 >= 20
+# define BOOST_PP_ITERATION_3 20
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 21 && BOOST_PP_ITERATION_FINISH_3 >= 21
+# define BOOST_PP_ITERATION_3 21
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 22 && BOOST_PP_ITERATION_FINISH_3 >= 22
+# define BOOST_PP_ITERATION_3 22
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 23 && BOOST_PP_ITERATION_FINISH_3 >= 23
+# define BOOST_PP_ITERATION_3 23
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 24 && BOOST_PP_ITERATION_FINISH_3 >= 24
+# define BOOST_PP_ITERATION_3 24
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 25 && BOOST_PP_ITERATION_FINISH_3 >= 25
+# define BOOST_PP_ITERATION_3 25
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 26 && BOOST_PP_ITERATION_FINISH_3 >= 26
+# define BOOST_PP_ITERATION_3 26
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 27 && BOOST_PP_ITERATION_FINISH_3 >= 27
+# define BOOST_PP_ITERATION_3 27
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 28 && BOOST_PP_ITERATION_FINISH_3 >= 28
+# define BOOST_PP_ITERATION_3 28
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 29 && BOOST_PP_ITERATION_FINISH_3 >= 29
+# define BOOST_PP_ITERATION_3 29
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 30 && BOOST_PP_ITERATION_FINISH_3 >= 30
+# define BOOST_PP_ITERATION_3 30
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 31 && BOOST_PP_ITERATION_FINISH_3 >= 31
+# define BOOST_PP_ITERATION_3 31
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 32 && BOOST_PP_ITERATION_FINISH_3 >= 32
+# define BOOST_PP_ITERATION_3 32
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 33 && BOOST_PP_ITERATION_FINISH_3 >= 33
+# define BOOST_PP_ITERATION_3 33
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 34 && BOOST_PP_ITERATION_FINISH_3 >= 34
+# define BOOST_PP_ITERATION_3 34
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 35 && BOOST_PP_ITERATION_FINISH_3 >= 35
+# define BOOST_PP_ITERATION_3 35
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 36 && BOOST_PP_ITERATION_FINISH_3 >= 36
+# define BOOST_PP_ITERATION_3 36
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 37 && BOOST_PP_ITERATION_FINISH_3 >= 37
+# define BOOST_PP_ITERATION_3 37
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 38 && BOOST_PP_ITERATION_FINISH_3 >= 38
+# define BOOST_PP_ITERATION_3 38
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 39 && BOOST_PP_ITERATION_FINISH_3 >= 39
+# define BOOST_PP_ITERATION_3 39
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 40 && BOOST_PP_ITERATION_FINISH_3 >= 40
+# define BOOST_PP_ITERATION_3 40
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 41 && BOOST_PP_ITERATION_FINISH_3 >= 41
+# define BOOST_PP_ITERATION_3 41
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 42 && BOOST_PP_ITERATION_FINISH_3 >= 42
+# define BOOST_PP_ITERATION_3 42
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 43 && BOOST_PP_ITERATION_FINISH_3 >= 43
+# define BOOST_PP_ITERATION_3 43
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 44 && BOOST_PP_ITERATION_FINISH_3 >= 44
+# define BOOST_PP_ITERATION_3 44
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 45 && BOOST_PP_ITERATION_FINISH_3 >= 45
+# define BOOST_PP_ITERATION_3 45
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 46 && BOOST_PP_ITERATION_FINISH_3 >= 46
+# define BOOST_PP_ITERATION_3 46
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 47 && BOOST_PP_ITERATION_FINISH_3 >= 47
+# define BOOST_PP_ITERATION_3 47
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 48 && BOOST_PP_ITERATION_FINISH_3 >= 48
+# define BOOST_PP_ITERATION_3 48
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 49 && BOOST_PP_ITERATION_FINISH_3 >= 49
+# define BOOST_PP_ITERATION_3 49
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 50 && BOOST_PP_ITERATION_FINISH_3 >= 50
+# define BOOST_PP_ITERATION_3 50
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 51 && BOOST_PP_ITERATION_FINISH_3 >= 51
+# define BOOST_PP_ITERATION_3 51
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 52 && BOOST_PP_ITERATION_FINISH_3 >= 52
+# define BOOST_PP_ITERATION_3 52
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 53 && BOOST_PP_ITERATION_FINISH_3 >= 53
+# define BOOST_PP_ITERATION_3 53
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 54 && BOOST_PP_ITERATION_FINISH_3 >= 54
+# define BOOST_PP_ITERATION_3 54
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 55 && BOOST_PP_ITERATION_FINISH_3 >= 55
+# define BOOST_PP_ITERATION_3 55
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 56 && BOOST_PP_ITERATION_FINISH_3 >= 56
+# define BOOST_PP_ITERATION_3 56
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 57 && BOOST_PP_ITERATION_FINISH_3 >= 57
+# define BOOST_PP_ITERATION_3 57
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 58 && BOOST_PP_ITERATION_FINISH_3 >= 58
+# define BOOST_PP_ITERATION_3 58
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 59 && BOOST_PP_ITERATION_FINISH_3 >= 59
+# define BOOST_PP_ITERATION_3 59
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 60 && BOOST_PP_ITERATION_FINISH_3 >= 60
+# define BOOST_PP_ITERATION_3 60
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 61 && BOOST_PP_ITERATION_FINISH_3 >= 61
+# define BOOST_PP_ITERATION_3 61
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 62 && BOOST_PP_ITERATION_FINISH_3 >= 62
+# define BOOST_PP_ITERATION_3 62
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 63 && BOOST_PP_ITERATION_FINISH_3 >= 63
+# define BOOST_PP_ITERATION_3 63
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 64 && BOOST_PP_ITERATION_FINISH_3 >= 64
+# define BOOST_PP_ITERATION_3 64
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 65 && BOOST_PP_ITERATION_FINISH_3 >= 65
+# define BOOST_PP_ITERATION_3 65
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 66 && BOOST_PP_ITERATION_FINISH_3 >= 66
+# define BOOST_PP_ITERATION_3 66
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 67 && BOOST_PP_ITERATION_FINISH_3 >= 67
+# define BOOST_PP_ITERATION_3 67
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 68 && BOOST_PP_ITERATION_FINISH_3 >= 68
+# define BOOST_PP_ITERATION_3 68
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 69 && BOOST_PP_ITERATION_FINISH_3 >= 69
+# define BOOST_PP_ITERATION_3 69
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 70 && BOOST_PP_ITERATION_FINISH_3 >= 70
+# define BOOST_PP_ITERATION_3 70
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 71 && BOOST_PP_ITERATION_FINISH_3 >= 71
+# define BOOST_PP_ITERATION_3 71
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 72 && BOOST_PP_ITERATION_FINISH_3 >= 72
+# define BOOST_PP_ITERATION_3 72
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 73 && BOOST_PP_ITERATION_FINISH_3 >= 73
+# define BOOST_PP_ITERATION_3 73
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 74 && BOOST_PP_ITERATION_FINISH_3 >= 74
+# define BOOST_PP_ITERATION_3 74
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 75 && BOOST_PP_ITERATION_FINISH_3 >= 75
+# define BOOST_PP_ITERATION_3 75
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 76 && BOOST_PP_ITERATION_FINISH_3 >= 76
+# define BOOST_PP_ITERATION_3 76
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 77 && BOOST_PP_ITERATION_FINISH_3 >= 77
+# define BOOST_PP_ITERATION_3 77
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 78 && BOOST_PP_ITERATION_FINISH_3 >= 78
+# define BOOST_PP_ITERATION_3 78
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 79 && BOOST_PP_ITERATION_FINISH_3 >= 79
+# define BOOST_PP_ITERATION_3 79
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 80 && BOOST_PP_ITERATION_FINISH_3 >= 80
+# define BOOST_PP_ITERATION_3 80
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 81 && BOOST_PP_ITERATION_FINISH_3 >= 81
+# define BOOST_PP_ITERATION_3 81
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 82 && BOOST_PP_ITERATION_FINISH_3 >= 82
+# define BOOST_PP_ITERATION_3 82
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 83 && BOOST_PP_ITERATION_FINISH_3 >= 83
+# define BOOST_PP_ITERATION_3 83
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 84 && BOOST_PP_ITERATION_FINISH_3 >= 84
+# define BOOST_PP_ITERATION_3 84
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 85 && BOOST_PP_ITERATION_FINISH_3 >= 85
+# define BOOST_PP_ITERATION_3 85
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 86 && BOOST_PP_ITERATION_FINISH_3 >= 86
+# define BOOST_PP_ITERATION_3 86
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 87 && BOOST_PP_ITERATION_FINISH_3 >= 87
+# define BOOST_PP_ITERATION_3 87
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 88 && BOOST_PP_ITERATION_FINISH_3 >= 88
+# define BOOST_PP_ITERATION_3 88
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 89 && BOOST_PP_ITERATION_FINISH_3 >= 89
+# define BOOST_PP_ITERATION_3 89
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 90 && BOOST_PP_ITERATION_FINISH_3 >= 90
+# define BOOST_PP_ITERATION_3 90
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 91 && BOOST_PP_ITERATION_FINISH_3 >= 91
+# define BOOST_PP_ITERATION_3 91
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 92 && BOOST_PP_ITERATION_FINISH_3 >= 92
+# define BOOST_PP_ITERATION_3 92
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 93 && BOOST_PP_ITERATION_FINISH_3 >= 93
+# define BOOST_PP_ITERATION_3 93
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 94 && BOOST_PP_ITERATION_FINISH_3 >= 94
+# define BOOST_PP_ITERATION_3 94
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 95 && BOOST_PP_ITERATION_FINISH_3 >= 95
+# define BOOST_PP_ITERATION_3 95
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 96 && BOOST_PP_ITERATION_FINISH_3 >= 96
+# define BOOST_PP_ITERATION_3 96
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 97 && BOOST_PP_ITERATION_FINISH_3 >= 97
+# define BOOST_PP_ITERATION_3 97
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 98 && BOOST_PP_ITERATION_FINISH_3 >= 98
+# define BOOST_PP_ITERATION_3 98
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 99 && BOOST_PP_ITERATION_FINISH_3 >= 99
+# define BOOST_PP_ITERATION_3 99
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 100 && BOOST_PP_ITERATION_FINISH_3 >= 100
+# define BOOST_PP_ITERATION_3 100
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 101 && BOOST_PP_ITERATION_FINISH_3 >= 101
+# define BOOST_PP_ITERATION_3 101
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 102 && BOOST_PP_ITERATION_FINISH_3 >= 102
+# define BOOST_PP_ITERATION_3 102
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 103 && BOOST_PP_ITERATION_FINISH_3 >= 103
+# define BOOST_PP_ITERATION_3 103
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 104 && BOOST_PP_ITERATION_FINISH_3 >= 104
+# define BOOST_PP_ITERATION_3 104
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 105 && BOOST_PP_ITERATION_FINISH_3 >= 105
+# define BOOST_PP_ITERATION_3 105
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 106 && BOOST_PP_ITERATION_FINISH_3 >= 106
+# define BOOST_PP_ITERATION_3 106
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 107 && BOOST_PP_ITERATION_FINISH_3 >= 107
+# define BOOST_PP_ITERATION_3 107
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 108 && BOOST_PP_ITERATION_FINISH_3 >= 108
+# define BOOST_PP_ITERATION_3 108
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 109 && BOOST_PP_ITERATION_FINISH_3 >= 109
+# define BOOST_PP_ITERATION_3 109
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 110 && BOOST_PP_ITERATION_FINISH_3 >= 110
+# define BOOST_PP_ITERATION_3 110
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 111 && BOOST_PP_ITERATION_FINISH_3 >= 111
+# define BOOST_PP_ITERATION_3 111
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 112 && BOOST_PP_ITERATION_FINISH_3 >= 112
+# define BOOST_PP_ITERATION_3 112
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 113 && BOOST_PP_ITERATION_FINISH_3 >= 113
+# define BOOST_PP_ITERATION_3 113
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 114 && BOOST_PP_ITERATION_FINISH_3 >= 114
+# define BOOST_PP_ITERATION_3 114
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 115 && BOOST_PP_ITERATION_FINISH_3 >= 115
+# define BOOST_PP_ITERATION_3 115
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 116 && BOOST_PP_ITERATION_FINISH_3 >= 116
+# define BOOST_PP_ITERATION_3 116
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 117 && BOOST_PP_ITERATION_FINISH_3 >= 117
+# define BOOST_PP_ITERATION_3 117
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 118 && BOOST_PP_ITERATION_FINISH_3 >= 118
+# define BOOST_PP_ITERATION_3 118
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 119 && BOOST_PP_ITERATION_FINISH_3 >= 119
+# define BOOST_PP_ITERATION_3 119
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 120 && BOOST_PP_ITERATION_FINISH_3 >= 120
+# define BOOST_PP_ITERATION_3 120
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 121 && BOOST_PP_ITERATION_FINISH_3 >= 121
+# define BOOST_PP_ITERATION_3 121
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 122 && BOOST_PP_ITERATION_FINISH_3 >= 122
+# define BOOST_PP_ITERATION_3 122
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 123 && BOOST_PP_ITERATION_FINISH_3 >= 123
+# define BOOST_PP_ITERATION_3 123
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 124 && BOOST_PP_ITERATION_FINISH_3 >= 124
+# define BOOST_PP_ITERATION_3 124
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 125 && BOOST_PP_ITERATION_FINISH_3 >= 125
+# define BOOST_PP_ITERATION_3 125
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 126 && BOOST_PP_ITERATION_FINISH_3 >= 126
+# define BOOST_PP_ITERATION_3 126
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 127 && BOOST_PP_ITERATION_FINISH_3 >= 127
+# define BOOST_PP_ITERATION_3 127
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 128 && BOOST_PP_ITERATION_FINISH_3 >= 128
+# define BOOST_PP_ITERATION_3 128
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 129 && BOOST_PP_ITERATION_FINISH_3 >= 129
+# define BOOST_PP_ITERATION_3 129
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 130 && BOOST_PP_ITERATION_FINISH_3 >= 130
+# define BOOST_PP_ITERATION_3 130
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 131 && BOOST_PP_ITERATION_FINISH_3 >= 131
+# define BOOST_PP_ITERATION_3 131
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 132 && BOOST_PP_ITERATION_FINISH_3 >= 132
+# define BOOST_PP_ITERATION_3 132
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 133 && BOOST_PP_ITERATION_FINISH_3 >= 133
+# define BOOST_PP_ITERATION_3 133
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 134 && BOOST_PP_ITERATION_FINISH_3 >= 134
+# define BOOST_PP_ITERATION_3 134
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 135 && BOOST_PP_ITERATION_FINISH_3 >= 135
+# define BOOST_PP_ITERATION_3 135
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 136 && BOOST_PP_ITERATION_FINISH_3 >= 136
+# define BOOST_PP_ITERATION_3 136
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 137 && BOOST_PP_ITERATION_FINISH_3 >= 137
+# define BOOST_PP_ITERATION_3 137
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 138 && BOOST_PP_ITERATION_FINISH_3 >= 138
+# define BOOST_PP_ITERATION_3 138
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 139 && BOOST_PP_ITERATION_FINISH_3 >= 139
+# define BOOST_PP_ITERATION_3 139
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 140 && BOOST_PP_ITERATION_FINISH_3 >= 140
+# define BOOST_PP_ITERATION_3 140
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 141 && BOOST_PP_ITERATION_FINISH_3 >= 141
+# define BOOST_PP_ITERATION_3 141
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 142 && BOOST_PP_ITERATION_FINISH_3 >= 142
+# define BOOST_PP_ITERATION_3 142
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 143 && BOOST_PP_ITERATION_FINISH_3 >= 143
+# define BOOST_PP_ITERATION_3 143
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 144 && BOOST_PP_ITERATION_FINISH_3 >= 144
+# define BOOST_PP_ITERATION_3 144
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 145 && BOOST_PP_ITERATION_FINISH_3 >= 145
+# define BOOST_PP_ITERATION_3 145
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 146 && BOOST_PP_ITERATION_FINISH_3 >= 146
+# define BOOST_PP_ITERATION_3 146
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 147 && BOOST_PP_ITERATION_FINISH_3 >= 147
+# define BOOST_PP_ITERATION_3 147
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 148 && BOOST_PP_ITERATION_FINISH_3 >= 148
+# define BOOST_PP_ITERATION_3 148
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 149 && BOOST_PP_ITERATION_FINISH_3 >= 149
+# define BOOST_PP_ITERATION_3 149
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 150 && BOOST_PP_ITERATION_FINISH_3 >= 150
+# define BOOST_PP_ITERATION_3 150
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 151 && BOOST_PP_ITERATION_FINISH_3 >= 151
+# define BOOST_PP_ITERATION_3 151
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 152 && BOOST_PP_ITERATION_FINISH_3 >= 152
+# define BOOST_PP_ITERATION_3 152
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 153 && BOOST_PP_ITERATION_FINISH_3 >= 153
+# define BOOST_PP_ITERATION_3 153
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 154 && BOOST_PP_ITERATION_FINISH_3 >= 154
+# define BOOST_PP_ITERATION_3 154
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 155 && BOOST_PP_ITERATION_FINISH_3 >= 155
+# define BOOST_PP_ITERATION_3 155
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 156 && BOOST_PP_ITERATION_FINISH_3 >= 156
+# define BOOST_PP_ITERATION_3 156
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 157 && BOOST_PP_ITERATION_FINISH_3 >= 157
+# define BOOST_PP_ITERATION_3 157
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 158 && BOOST_PP_ITERATION_FINISH_3 >= 158
+# define BOOST_PP_ITERATION_3 158
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 159 && BOOST_PP_ITERATION_FINISH_3 >= 159
+# define BOOST_PP_ITERATION_3 159
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 160 && BOOST_PP_ITERATION_FINISH_3 >= 160
+# define BOOST_PP_ITERATION_3 160
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 161 && BOOST_PP_ITERATION_FINISH_3 >= 161
+# define BOOST_PP_ITERATION_3 161
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 162 && BOOST_PP_ITERATION_FINISH_3 >= 162
+# define BOOST_PP_ITERATION_3 162
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 163 && BOOST_PP_ITERATION_FINISH_3 >= 163
+# define BOOST_PP_ITERATION_3 163
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 164 && BOOST_PP_ITERATION_FINISH_3 >= 164
+# define BOOST_PP_ITERATION_3 164
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 165 && BOOST_PP_ITERATION_FINISH_3 >= 165
+# define BOOST_PP_ITERATION_3 165
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 166 && BOOST_PP_ITERATION_FINISH_3 >= 166
+# define BOOST_PP_ITERATION_3 166
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 167 && BOOST_PP_ITERATION_FINISH_3 >= 167
+# define BOOST_PP_ITERATION_3 167
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 168 && BOOST_PP_ITERATION_FINISH_3 >= 168
+# define BOOST_PP_ITERATION_3 168
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 169 && BOOST_PP_ITERATION_FINISH_3 >= 169
+# define BOOST_PP_ITERATION_3 169
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 170 && BOOST_PP_ITERATION_FINISH_3 >= 170
+# define BOOST_PP_ITERATION_3 170
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 171 && BOOST_PP_ITERATION_FINISH_3 >= 171
+# define BOOST_PP_ITERATION_3 171
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 172 && BOOST_PP_ITERATION_FINISH_3 >= 172
+# define BOOST_PP_ITERATION_3 172
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 173 && BOOST_PP_ITERATION_FINISH_3 >= 173
+# define BOOST_PP_ITERATION_3 173
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 174 && BOOST_PP_ITERATION_FINISH_3 >= 174
+# define BOOST_PP_ITERATION_3 174
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 175 && BOOST_PP_ITERATION_FINISH_3 >= 175
+# define BOOST_PP_ITERATION_3 175
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 176 && BOOST_PP_ITERATION_FINISH_3 >= 176
+# define BOOST_PP_ITERATION_3 176
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 177 && BOOST_PP_ITERATION_FINISH_3 >= 177
+# define BOOST_PP_ITERATION_3 177
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 178 && BOOST_PP_ITERATION_FINISH_3 >= 178
+# define BOOST_PP_ITERATION_3 178
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 179 && BOOST_PP_ITERATION_FINISH_3 >= 179
+# define BOOST_PP_ITERATION_3 179
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 180 && BOOST_PP_ITERATION_FINISH_3 >= 180
+# define BOOST_PP_ITERATION_3 180
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 181 && BOOST_PP_ITERATION_FINISH_3 >= 181
+# define BOOST_PP_ITERATION_3 181
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 182 && BOOST_PP_ITERATION_FINISH_3 >= 182
+# define BOOST_PP_ITERATION_3 182
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 183 && BOOST_PP_ITERATION_FINISH_3 >= 183
+# define BOOST_PP_ITERATION_3 183
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 184 && BOOST_PP_ITERATION_FINISH_3 >= 184
+# define BOOST_PP_ITERATION_3 184
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 185 && BOOST_PP_ITERATION_FINISH_3 >= 185
+# define BOOST_PP_ITERATION_3 185
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 186 && BOOST_PP_ITERATION_FINISH_3 >= 186
+# define BOOST_PP_ITERATION_3 186
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 187 && BOOST_PP_ITERATION_FINISH_3 >= 187
+# define BOOST_PP_ITERATION_3 187
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 188 && BOOST_PP_ITERATION_FINISH_3 >= 188
+# define BOOST_PP_ITERATION_3 188
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 189 && BOOST_PP_ITERATION_FINISH_3 >= 189
+# define BOOST_PP_ITERATION_3 189
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 190 && BOOST_PP_ITERATION_FINISH_3 >= 190
+# define BOOST_PP_ITERATION_3 190
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 191 && BOOST_PP_ITERATION_FINISH_3 >= 191
+# define BOOST_PP_ITERATION_3 191
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 192 && BOOST_PP_ITERATION_FINISH_3 >= 192
+# define BOOST_PP_ITERATION_3 192
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 193 && BOOST_PP_ITERATION_FINISH_3 >= 193
+# define BOOST_PP_ITERATION_3 193
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 194 && BOOST_PP_ITERATION_FINISH_3 >= 194
+# define BOOST_PP_ITERATION_3 194
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 195 && BOOST_PP_ITERATION_FINISH_3 >= 195
+# define BOOST_PP_ITERATION_3 195
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 196 && BOOST_PP_ITERATION_FINISH_3 >= 196
+# define BOOST_PP_ITERATION_3 196
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 197 && BOOST_PP_ITERATION_FINISH_3 >= 197
+# define BOOST_PP_ITERATION_3 197
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 198 && BOOST_PP_ITERATION_FINISH_3 >= 198
+# define BOOST_PP_ITERATION_3 198
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 199 && BOOST_PP_ITERATION_FINISH_3 >= 199
+# define BOOST_PP_ITERATION_3 199
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 200 && BOOST_PP_ITERATION_FINISH_3 >= 200
+# define BOOST_PP_ITERATION_3 200
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 201 && BOOST_PP_ITERATION_FINISH_3 >= 201
+# define BOOST_PP_ITERATION_3 201
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 202 && BOOST_PP_ITERATION_FINISH_3 >= 202
+# define BOOST_PP_ITERATION_3 202
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 203 && BOOST_PP_ITERATION_FINISH_3 >= 203
+# define BOOST_PP_ITERATION_3 203
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 204 && BOOST_PP_ITERATION_FINISH_3 >= 204
+# define BOOST_PP_ITERATION_3 204
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 205 && BOOST_PP_ITERATION_FINISH_3 >= 205
+# define BOOST_PP_ITERATION_3 205
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 206 && BOOST_PP_ITERATION_FINISH_3 >= 206
+# define BOOST_PP_ITERATION_3 206
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 207 && BOOST_PP_ITERATION_FINISH_3 >= 207
+# define BOOST_PP_ITERATION_3 207
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 208 && BOOST_PP_ITERATION_FINISH_3 >= 208
+# define BOOST_PP_ITERATION_3 208
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 209 && BOOST_PP_ITERATION_FINISH_3 >= 209
+# define BOOST_PP_ITERATION_3 209
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 210 && BOOST_PP_ITERATION_FINISH_3 >= 210
+# define BOOST_PP_ITERATION_3 210
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 211 && BOOST_PP_ITERATION_FINISH_3 >= 211
+# define BOOST_PP_ITERATION_3 211
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 212 && BOOST_PP_ITERATION_FINISH_3 >= 212
+# define BOOST_PP_ITERATION_3 212
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 213 && BOOST_PP_ITERATION_FINISH_3 >= 213
+# define BOOST_PP_ITERATION_3 213
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 214 && BOOST_PP_ITERATION_FINISH_3 >= 214
+# define BOOST_PP_ITERATION_3 214
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 215 && BOOST_PP_ITERATION_FINISH_3 >= 215
+# define BOOST_PP_ITERATION_3 215
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 216 && BOOST_PP_ITERATION_FINISH_3 >= 216
+# define BOOST_PP_ITERATION_3 216
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 217 && BOOST_PP_ITERATION_FINISH_3 >= 217
+# define BOOST_PP_ITERATION_3 217
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 218 && BOOST_PP_ITERATION_FINISH_3 >= 218
+# define BOOST_PP_ITERATION_3 218
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 219 && BOOST_PP_ITERATION_FINISH_3 >= 219
+# define BOOST_PP_ITERATION_3 219
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 220 && BOOST_PP_ITERATION_FINISH_3 >= 220
+# define BOOST_PP_ITERATION_3 220
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 221 && BOOST_PP_ITERATION_FINISH_3 >= 221
+# define BOOST_PP_ITERATION_3 221
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 222 && BOOST_PP_ITERATION_FINISH_3 >= 222
+# define BOOST_PP_ITERATION_3 222
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 223 && BOOST_PP_ITERATION_FINISH_3 >= 223
+# define BOOST_PP_ITERATION_3 223
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 224 && BOOST_PP_ITERATION_FINISH_3 >= 224
+# define BOOST_PP_ITERATION_3 224
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 225 && BOOST_PP_ITERATION_FINISH_3 >= 225
+# define BOOST_PP_ITERATION_3 225
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 226 && BOOST_PP_ITERATION_FINISH_3 >= 226
+# define BOOST_PP_ITERATION_3 226
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 227 && BOOST_PP_ITERATION_FINISH_3 >= 227
+# define BOOST_PP_ITERATION_3 227
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 228 && BOOST_PP_ITERATION_FINISH_3 >= 228
+# define BOOST_PP_ITERATION_3 228
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 229 && BOOST_PP_ITERATION_FINISH_3 >= 229
+# define BOOST_PP_ITERATION_3 229
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 230 && BOOST_PP_ITERATION_FINISH_3 >= 230
+# define BOOST_PP_ITERATION_3 230
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 231 && BOOST_PP_ITERATION_FINISH_3 >= 231
+# define BOOST_PP_ITERATION_3 231
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 232 && BOOST_PP_ITERATION_FINISH_3 >= 232
+# define BOOST_PP_ITERATION_3 232
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 233 && BOOST_PP_ITERATION_FINISH_3 >= 233
+# define BOOST_PP_ITERATION_3 233
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 234 && BOOST_PP_ITERATION_FINISH_3 >= 234
+# define BOOST_PP_ITERATION_3 234
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 235 && BOOST_PP_ITERATION_FINISH_3 >= 235
+# define BOOST_PP_ITERATION_3 235
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 236 && BOOST_PP_ITERATION_FINISH_3 >= 236
+# define BOOST_PP_ITERATION_3 236
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 237 && BOOST_PP_ITERATION_FINISH_3 >= 237
+# define BOOST_PP_ITERATION_3 237
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 238 && BOOST_PP_ITERATION_FINISH_3 >= 238
+# define BOOST_PP_ITERATION_3 238
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 239 && BOOST_PP_ITERATION_FINISH_3 >= 239
+# define BOOST_PP_ITERATION_3 239
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 240 && BOOST_PP_ITERATION_FINISH_3 >= 240
+# define BOOST_PP_ITERATION_3 240
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 241 && BOOST_PP_ITERATION_FINISH_3 >= 241
+# define BOOST_PP_ITERATION_3 241
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 242 && BOOST_PP_ITERATION_FINISH_3 >= 242
+# define BOOST_PP_ITERATION_3 242
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 243 && BOOST_PP_ITERATION_FINISH_3 >= 243
+# define BOOST_PP_ITERATION_3 243
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 244 && BOOST_PP_ITERATION_FINISH_3 >= 244
+# define BOOST_PP_ITERATION_3 244
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 245 && BOOST_PP_ITERATION_FINISH_3 >= 245
+# define BOOST_PP_ITERATION_3 245
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 246 && BOOST_PP_ITERATION_FINISH_3 >= 246
+# define BOOST_PP_ITERATION_3 246
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 247 && BOOST_PP_ITERATION_FINISH_3 >= 247
+# define BOOST_PP_ITERATION_3 247
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 248 && BOOST_PP_ITERATION_FINISH_3 >= 248
+# define BOOST_PP_ITERATION_3 248
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 249 && BOOST_PP_ITERATION_FINISH_3 >= 249
+# define BOOST_PP_ITERATION_3 249
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 250 && BOOST_PP_ITERATION_FINISH_3 >= 250
+# define BOOST_PP_ITERATION_3 250
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 251 && BOOST_PP_ITERATION_FINISH_3 >= 251
+# define BOOST_PP_ITERATION_3 251
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 252 && BOOST_PP_ITERATION_FINISH_3 >= 252
+# define BOOST_PP_ITERATION_3 252
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 253 && BOOST_PP_ITERATION_FINISH_3 >= 253
+# define BOOST_PP_ITERATION_3 253
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 254 && BOOST_PP_ITERATION_FINISH_3 >= 254
+# define BOOST_PP_ITERATION_3 254
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 255 && BOOST_PP_ITERATION_FINISH_3 >= 255
+# define BOOST_PP_ITERATION_3 255
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 256 && BOOST_PP_ITERATION_FINISH_3 >= 256
+# define BOOST_PP_ITERATION_3 256
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 2
+#
+# undef BOOST_PP_ITERATION_START_3
+# undef BOOST_PP_ITERATION_FINISH_3
+# undef BOOST_PP_FILENAME_3
+#
+# undef BOOST_PP_ITERATION_FLAGS_3
+# undef BOOST_PP_ITERATION_PARAMS_3
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward4.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward4.hpp
new file mode 100644
index 0000000..6a6e543
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward4.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_4)
+# error BOOST_PP_ERROR: depth #4 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower4.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper4.hpp>
+# define BOOST_PP_ITERATION_FLAGS_4 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_4)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_4)
+# include <boost/preprocessor/iteration/detail/bounds/lower4.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_4)
+# include <boost/preprocessor/iteration/detail/bounds/upper4.hpp>
+# define BOOST_PP_FILENAME_4 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_4)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_4) >= 4
+# define BOOST_PP_ITERATION_FLAGS_4 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_4)
+# else
+# define BOOST_PP_ITERATION_FLAGS_4 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #4 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 4
+#
+# if (BOOST_PP_ITERATION_START_4) > (BOOST_PP_ITERATION_FINISH_4)
+# include <boost/preprocessor/iteration/detail/iter/reverse4.hpp>
+# else
+# if BOOST_PP_ITERATION_START_4 <= 0 && BOOST_PP_ITERATION_FINISH_4 >= 0
+# define BOOST_PP_ITERATION_4 0
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 1 && BOOST_PP_ITERATION_FINISH_4 >= 1
+# define BOOST_PP_ITERATION_4 1
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 2 && BOOST_PP_ITERATION_FINISH_4 >= 2
+# define BOOST_PP_ITERATION_4 2
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 3 && BOOST_PP_ITERATION_FINISH_4 >= 3
+# define BOOST_PP_ITERATION_4 3
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 4 && BOOST_PP_ITERATION_FINISH_4 >= 4
+# define BOOST_PP_ITERATION_4 4
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 5 && BOOST_PP_ITERATION_FINISH_4 >= 5
+# define BOOST_PP_ITERATION_4 5
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 6 && BOOST_PP_ITERATION_FINISH_4 >= 6
+# define BOOST_PP_ITERATION_4 6
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 7 && BOOST_PP_ITERATION_FINISH_4 >= 7
+# define BOOST_PP_ITERATION_4 7
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 8 && BOOST_PP_ITERATION_FINISH_4 >= 8
+# define BOOST_PP_ITERATION_4 8
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 9 && BOOST_PP_ITERATION_FINISH_4 >= 9
+# define BOOST_PP_ITERATION_4 9
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 10 && BOOST_PP_ITERATION_FINISH_4 >= 10
+# define BOOST_PP_ITERATION_4 10
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 11 && BOOST_PP_ITERATION_FINISH_4 >= 11
+# define BOOST_PP_ITERATION_4 11
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 12 && BOOST_PP_ITERATION_FINISH_4 >= 12
+# define BOOST_PP_ITERATION_4 12
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 13 && BOOST_PP_ITERATION_FINISH_4 >= 13
+# define BOOST_PP_ITERATION_4 13
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 14 && BOOST_PP_ITERATION_FINISH_4 >= 14
+# define BOOST_PP_ITERATION_4 14
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 15 && BOOST_PP_ITERATION_FINISH_4 >= 15
+# define BOOST_PP_ITERATION_4 15
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 16 && BOOST_PP_ITERATION_FINISH_4 >= 16
+# define BOOST_PP_ITERATION_4 16
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 17 && BOOST_PP_ITERATION_FINISH_4 >= 17
+# define BOOST_PP_ITERATION_4 17
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 18 && BOOST_PP_ITERATION_FINISH_4 >= 18
+# define BOOST_PP_ITERATION_4 18
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 19 && BOOST_PP_ITERATION_FINISH_4 >= 19
+# define BOOST_PP_ITERATION_4 19
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 20 && BOOST_PP_ITERATION_FINISH_4 >= 20
+# define BOOST_PP_ITERATION_4 20
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 21 && BOOST_PP_ITERATION_FINISH_4 >= 21
+# define BOOST_PP_ITERATION_4 21
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 22 && BOOST_PP_ITERATION_FINISH_4 >= 22
+# define BOOST_PP_ITERATION_4 22
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 23 && BOOST_PP_ITERATION_FINISH_4 >= 23
+# define BOOST_PP_ITERATION_4 23
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 24 && BOOST_PP_ITERATION_FINISH_4 >= 24
+# define BOOST_PP_ITERATION_4 24
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 25 && BOOST_PP_ITERATION_FINISH_4 >= 25
+# define BOOST_PP_ITERATION_4 25
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 26 && BOOST_PP_ITERATION_FINISH_4 >= 26
+# define BOOST_PP_ITERATION_4 26
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 27 && BOOST_PP_ITERATION_FINISH_4 >= 27
+# define BOOST_PP_ITERATION_4 27
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 28 && BOOST_PP_ITERATION_FINISH_4 >= 28
+# define BOOST_PP_ITERATION_4 28
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 29 && BOOST_PP_ITERATION_FINISH_4 >= 29
+# define BOOST_PP_ITERATION_4 29
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 30 && BOOST_PP_ITERATION_FINISH_4 >= 30
+# define BOOST_PP_ITERATION_4 30
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 31 && BOOST_PP_ITERATION_FINISH_4 >= 31
+# define BOOST_PP_ITERATION_4 31
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 32 && BOOST_PP_ITERATION_FINISH_4 >= 32
+# define BOOST_PP_ITERATION_4 32
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 33 && BOOST_PP_ITERATION_FINISH_4 >= 33
+# define BOOST_PP_ITERATION_4 33
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 34 && BOOST_PP_ITERATION_FINISH_4 >= 34
+# define BOOST_PP_ITERATION_4 34
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 35 && BOOST_PP_ITERATION_FINISH_4 >= 35
+# define BOOST_PP_ITERATION_4 35
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 36 && BOOST_PP_ITERATION_FINISH_4 >= 36
+# define BOOST_PP_ITERATION_4 36
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 37 && BOOST_PP_ITERATION_FINISH_4 >= 37
+# define BOOST_PP_ITERATION_4 37
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 38 && BOOST_PP_ITERATION_FINISH_4 >= 38
+# define BOOST_PP_ITERATION_4 38
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 39 && BOOST_PP_ITERATION_FINISH_4 >= 39
+# define BOOST_PP_ITERATION_4 39
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 40 && BOOST_PP_ITERATION_FINISH_4 >= 40
+# define BOOST_PP_ITERATION_4 40
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 41 && BOOST_PP_ITERATION_FINISH_4 >= 41
+# define BOOST_PP_ITERATION_4 41
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 42 && BOOST_PP_ITERATION_FINISH_4 >= 42
+# define BOOST_PP_ITERATION_4 42
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 43 && BOOST_PP_ITERATION_FINISH_4 >= 43
+# define BOOST_PP_ITERATION_4 43
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 44 && BOOST_PP_ITERATION_FINISH_4 >= 44
+# define BOOST_PP_ITERATION_4 44
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 45 && BOOST_PP_ITERATION_FINISH_4 >= 45
+# define BOOST_PP_ITERATION_4 45
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 46 && BOOST_PP_ITERATION_FINISH_4 >= 46
+# define BOOST_PP_ITERATION_4 46
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 47 && BOOST_PP_ITERATION_FINISH_4 >= 47
+# define BOOST_PP_ITERATION_4 47
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 48 && BOOST_PP_ITERATION_FINISH_4 >= 48
+# define BOOST_PP_ITERATION_4 48
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 49 && BOOST_PP_ITERATION_FINISH_4 >= 49
+# define BOOST_PP_ITERATION_4 49
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 50 && BOOST_PP_ITERATION_FINISH_4 >= 50
+# define BOOST_PP_ITERATION_4 50
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 51 && BOOST_PP_ITERATION_FINISH_4 >= 51
+# define BOOST_PP_ITERATION_4 51
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 52 && BOOST_PP_ITERATION_FINISH_4 >= 52
+# define BOOST_PP_ITERATION_4 52
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 53 && BOOST_PP_ITERATION_FINISH_4 >= 53
+# define BOOST_PP_ITERATION_4 53
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 54 && BOOST_PP_ITERATION_FINISH_4 >= 54
+# define BOOST_PP_ITERATION_4 54
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 55 && BOOST_PP_ITERATION_FINISH_4 >= 55
+# define BOOST_PP_ITERATION_4 55
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 56 && BOOST_PP_ITERATION_FINISH_4 >= 56
+# define BOOST_PP_ITERATION_4 56
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 57 && BOOST_PP_ITERATION_FINISH_4 >= 57
+# define BOOST_PP_ITERATION_4 57
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 58 && BOOST_PP_ITERATION_FINISH_4 >= 58
+# define BOOST_PP_ITERATION_4 58
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 59 && BOOST_PP_ITERATION_FINISH_4 >= 59
+# define BOOST_PP_ITERATION_4 59
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 60 && BOOST_PP_ITERATION_FINISH_4 >= 60
+# define BOOST_PP_ITERATION_4 60
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 61 && BOOST_PP_ITERATION_FINISH_4 >= 61
+# define BOOST_PP_ITERATION_4 61
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 62 && BOOST_PP_ITERATION_FINISH_4 >= 62
+# define BOOST_PP_ITERATION_4 62
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 63 && BOOST_PP_ITERATION_FINISH_4 >= 63
+# define BOOST_PP_ITERATION_4 63
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 64 && BOOST_PP_ITERATION_FINISH_4 >= 64
+# define BOOST_PP_ITERATION_4 64
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 65 && BOOST_PP_ITERATION_FINISH_4 >= 65
+# define BOOST_PP_ITERATION_4 65
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 66 && BOOST_PP_ITERATION_FINISH_4 >= 66
+# define BOOST_PP_ITERATION_4 66
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 67 && BOOST_PP_ITERATION_FINISH_4 >= 67
+# define BOOST_PP_ITERATION_4 67
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 68 && BOOST_PP_ITERATION_FINISH_4 >= 68
+# define BOOST_PP_ITERATION_4 68
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 69 && BOOST_PP_ITERATION_FINISH_4 >= 69
+# define BOOST_PP_ITERATION_4 69
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 70 && BOOST_PP_ITERATION_FINISH_4 >= 70
+# define BOOST_PP_ITERATION_4 70
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 71 && BOOST_PP_ITERATION_FINISH_4 >= 71
+# define BOOST_PP_ITERATION_4 71
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 72 && BOOST_PP_ITERATION_FINISH_4 >= 72
+# define BOOST_PP_ITERATION_4 72
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 73 && BOOST_PP_ITERATION_FINISH_4 >= 73
+# define BOOST_PP_ITERATION_4 73
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 74 && BOOST_PP_ITERATION_FINISH_4 >= 74
+# define BOOST_PP_ITERATION_4 74
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 75 && BOOST_PP_ITERATION_FINISH_4 >= 75
+# define BOOST_PP_ITERATION_4 75
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 76 && BOOST_PP_ITERATION_FINISH_4 >= 76
+# define BOOST_PP_ITERATION_4 76
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 77 && BOOST_PP_ITERATION_FINISH_4 >= 77
+# define BOOST_PP_ITERATION_4 77
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 78 && BOOST_PP_ITERATION_FINISH_4 >= 78
+# define BOOST_PP_ITERATION_4 78
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 79 && BOOST_PP_ITERATION_FINISH_4 >= 79
+# define BOOST_PP_ITERATION_4 79
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 80 && BOOST_PP_ITERATION_FINISH_4 >= 80
+# define BOOST_PP_ITERATION_4 80
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 81 && BOOST_PP_ITERATION_FINISH_4 >= 81
+# define BOOST_PP_ITERATION_4 81
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 82 && BOOST_PP_ITERATION_FINISH_4 >= 82
+# define BOOST_PP_ITERATION_4 82
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 83 && BOOST_PP_ITERATION_FINISH_4 >= 83
+# define BOOST_PP_ITERATION_4 83
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 84 && BOOST_PP_ITERATION_FINISH_4 >= 84
+# define BOOST_PP_ITERATION_4 84
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 85 && BOOST_PP_ITERATION_FINISH_4 >= 85
+# define BOOST_PP_ITERATION_4 85
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 86 && BOOST_PP_ITERATION_FINISH_4 >= 86
+# define BOOST_PP_ITERATION_4 86
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 87 && BOOST_PP_ITERATION_FINISH_4 >= 87
+# define BOOST_PP_ITERATION_4 87
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 88 && BOOST_PP_ITERATION_FINISH_4 >= 88
+# define BOOST_PP_ITERATION_4 88
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 89 && BOOST_PP_ITERATION_FINISH_4 >= 89
+# define BOOST_PP_ITERATION_4 89
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 90 && BOOST_PP_ITERATION_FINISH_4 >= 90
+# define BOOST_PP_ITERATION_4 90
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 91 && BOOST_PP_ITERATION_FINISH_4 >= 91
+# define BOOST_PP_ITERATION_4 91
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 92 && BOOST_PP_ITERATION_FINISH_4 >= 92
+# define BOOST_PP_ITERATION_4 92
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 93 && BOOST_PP_ITERATION_FINISH_4 >= 93
+# define BOOST_PP_ITERATION_4 93
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 94 && BOOST_PP_ITERATION_FINISH_4 >= 94
+# define BOOST_PP_ITERATION_4 94
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 95 && BOOST_PP_ITERATION_FINISH_4 >= 95
+# define BOOST_PP_ITERATION_4 95
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 96 && BOOST_PP_ITERATION_FINISH_4 >= 96
+# define BOOST_PP_ITERATION_4 96
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 97 && BOOST_PP_ITERATION_FINISH_4 >= 97
+# define BOOST_PP_ITERATION_4 97
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 98 && BOOST_PP_ITERATION_FINISH_4 >= 98
+# define BOOST_PP_ITERATION_4 98
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 99 && BOOST_PP_ITERATION_FINISH_4 >= 99
+# define BOOST_PP_ITERATION_4 99
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 100 && BOOST_PP_ITERATION_FINISH_4 >= 100
+# define BOOST_PP_ITERATION_4 100
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 101 && BOOST_PP_ITERATION_FINISH_4 >= 101
+# define BOOST_PP_ITERATION_4 101
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 102 && BOOST_PP_ITERATION_FINISH_4 >= 102
+# define BOOST_PP_ITERATION_4 102
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 103 && BOOST_PP_ITERATION_FINISH_4 >= 103
+# define BOOST_PP_ITERATION_4 103
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 104 && BOOST_PP_ITERATION_FINISH_4 >= 104
+# define BOOST_PP_ITERATION_4 104
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 105 && BOOST_PP_ITERATION_FINISH_4 >= 105
+# define BOOST_PP_ITERATION_4 105
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 106 && BOOST_PP_ITERATION_FINISH_4 >= 106
+# define BOOST_PP_ITERATION_4 106
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 107 && BOOST_PP_ITERATION_FINISH_4 >= 107
+# define BOOST_PP_ITERATION_4 107
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 108 && BOOST_PP_ITERATION_FINISH_4 >= 108
+# define BOOST_PP_ITERATION_4 108
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 109 && BOOST_PP_ITERATION_FINISH_4 >= 109
+# define BOOST_PP_ITERATION_4 109
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 110 && BOOST_PP_ITERATION_FINISH_4 >= 110
+# define BOOST_PP_ITERATION_4 110
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 111 && BOOST_PP_ITERATION_FINISH_4 >= 111
+# define BOOST_PP_ITERATION_4 111
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 112 && BOOST_PP_ITERATION_FINISH_4 >= 112
+# define BOOST_PP_ITERATION_4 112
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 113 && BOOST_PP_ITERATION_FINISH_4 >= 113
+# define BOOST_PP_ITERATION_4 113
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 114 && BOOST_PP_ITERATION_FINISH_4 >= 114
+# define BOOST_PP_ITERATION_4 114
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 115 && BOOST_PP_ITERATION_FINISH_4 >= 115
+# define BOOST_PP_ITERATION_4 115
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 116 && BOOST_PP_ITERATION_FINISH_4 >= 116
+# define BOOST_PP_ITERATION_4 116
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 117 && BOOST_PP_ITERATION_FINISH_4 >= 117
+# define BOOST_PP_ITERATION_4 117
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 118 && BOOST_PP_ITERATION_FINISH_4 >= 118
+# define BOOST_PP_ITERATION_4 118
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 119 && BOOST_PP_ITERATION_FINISH_4 >= 119
+# define BOOST_PP_ITERATION_4 119
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 120 && BOOST_PP_ITERATION_FINISH_4 >= 120
+# define BOOST_PP_ITERATION_4 120
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 121 && BOOST_PP_ITERATION_FINISH_4 >= 121
+# define BOOST_PP_ITERATION_4 121
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 122 && BOOST_PP_ITERATION_FINISH_4 >= 122
+# define BOOST_PP_ITERATION_4 122
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 123 && BOOST_PP_ITERATION_FINISH_4 >= 123
+# define BOOST_PP_ITERATION_4 123
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 124 && BOOST_PP_ITERATION_FINISH_4 >= 124
+# define BOOST_PP_ITERATION_4 124
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 125 && BOOST_PP_ITERATION_FINISH_4 >= 125
+# define BOOST_PP_ITERATION_4 125
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 126 && BOOST_PP_ITERATION_FINISH_4 >= 126
+# define BOOST_PP_ITERATION_4 126
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 127 && BOOST_PP_ITERATION_FINISH_4 >= 127
+# define BOOST_PP_ITERATION_4 127
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 128 && BOOST_PP_ITERATION_FINISH_4 >= 128
+# define BOOST_PP_ITERATION_4 128
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 129 && BOOST_PP_ITERATION_FINISH_4 >= 129
+# define BOOST_PP_ITERATION_4 129
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 130 && BOOST_PP_ITERATION_FINISH_4 >= 130
+# define BOOST_PP_ITERATION_4 130
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 131 && BOOST_PP_ITERATION_FINISH_4 >= 131
+# define BOOST_PP_ITERATION_4 131
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 132 && BOOST_PP_ITERATION_FINISH_4 >= 132
+# define BOOST_PP_ITERATION_4 132
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 133 && BOOST_PP_ITERATION_FINISH_4 >= 133
+# define BOOST_PP_ITERATION_4 133
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 134 && BOOST_PP_ITERATION_FINISH_4 >= 134
+# define BOOST_PP_ITERATION_4 134
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 135 && BOOST_PP_ITERATION_FINISH_4 >= 135
+# define BOOST_PP_ITERATION_4 135
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 136 && BOOST_PP_ITERATION_FINISH_4 >= 136
+# define BOOST_PP_ITERATION_4 136
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 137 && BOOST_PP_ITERATION_FINISH_4 >= 137
+# define BOOST_PP_ITERATION_4 137
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 138 && BOOST_PP_ITERATION_FINISH_4 >= 138
+# define BOOST_PP_ITERATION_4 138
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 139 && BOOST_PP_ITERATION_FINISH_4 >= 139
+# define BOOST_PP_ITERATION_4 139
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 140 && BOOST_PP_ITERATION_FINISH_4 >= 140
+# define BOOST_PP_ITERATION_4 140
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 141 && BOOST_PP_ITERATION_FINISH_4 >= 141
+# define BOOST_PP_ITERATION_4 141
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 142 && BOOST_PP_ITERATION_FINISH_4 >= 142
+# define BOOST_PP_ITERATION_4 142
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 143 && BOOST_PP_ITERATION_FINISH_4 >= 143
+# define BOOST_PP_ITERATION_4 143
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 144 && BOOST_PP_ITERATION_FINISH_4 >= 144
+# define BOOST_PP_ITERATION_4 144
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 145 && BOOST_PP_ITERATION_FINISH_4 >= 145
+# define BOOST_PP_ITERATION_4 145
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 146 && BOOST_PP_ITERATION_FINISH_4 >= 146
+# define BOOST_PP_ITERATION_4 146
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 147 && BOOST_PP_ITERATION_FINISH_4 >= 147
+# define BOOST_PP_ITERATION_4 147
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 148 && BOOST_PP_ITERATION_FINISH_4 >= 148
+# define BOOST_PP_ITERATION_4 148
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 149 && BOOST_PP_ITERATION_FINISH_4 >= 149
+# define BOOST_PP_ITERATION_4 149
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 150 && BOOST_PP_ITERATION_FINISH_4 >= 150
+# define BOOST_PP_ITERATION_4 150
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 151 && BOOST_PP_ITERATION_FINISH_4 >= 151
+# define BOOST_PP_ITERATION_4 151
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 152 && BOOST_PP_ITERATION_FINISH_4 >= 152
+# define BOOST_PP_ITERATION_4 152
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 153 && BOOST_PP_ITERATION_FINISH_4 >= 153
+# define BOOST_PP_ITERATION_4 153
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 154 && BOOST_PP_ITERATION_FINISH_4 >= 154
+# define BOOST_PP_ITERATION_4 154
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 155 && BOOST_PP_ITERATION_FINISH_4 >= 155
+# define BOOST_PP_ITERATION_4 155
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 156 && BOOST_PP_ITERATION_FINISH_4 >= 156
+# define BOOST_PP_ITERATION_4 156
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 157 && BOOST_PP_ITERATION_FINISH_4 >= 157
+# define BOOST_PP_ITERATION_4 157
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 158 && BOOST_PP_ITERATION_FINISH_4 >= 158
+# define BOOST_PP_ITERATION_4 158
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 159 && BOOST_PP_ITERATION_FINISH_4 >= 159
+# define BOOST_PP_ITERATION_4 159
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 160 && BOOST_PP_ITERATION_FINISH_4 >= 160
+# define BOOST_PP_ITERATION_4 160
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 161 && BOOST_PP_ITERATION_FINISH_4 >= 161
+# define BOOST_PP_ITERATION_4 161
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 162 && BOOST_PP_ITERATION_FINISH_4 >= 162
+# define BOOST_PP_ITERATION_4 162
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 163 && BOOST_PP_ITERATION_FINISH_4 >= 163
+# define BOOST_PP_ITERATION_4 163
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 164 && BOOST_PP_ITERATION_FINISH_4 >= 164
+# define BOOST_PP_ITERATION_4 164
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 165 && BOOST_PP_ITERATION_FINISH_4 >= 165
+# define BOOST_PP_ITERATION_4 165
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 166 && BOOST_PP_ITERATION_FINISH_4 >= 166
+# define BOOST_PP_ITERATION_4 166
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 167 && BOOST_PP_ITERATION_FINISH_4 >= 167
+# define BOOST_PP_ITERATION_4 167
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 168 && BOOST_PP_ITERATION_FINISH_4 >= 168
+# define BOOST_PP_ITERATION_4 168
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 169 && BOOST_PP_ITERATION_FINISH_4 >= 169
+# define BOOST_PP_ITERATION_4 169
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 170 && BOOST_PP_ITERATION_FINISH_4 >= 170
+# define BOOST_PP_ITERATION_4 170
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 171 && BOOST_PP_ITERATION_FINISH_4 >= 171
+# define BOOST_PP_ITERATION_4 171
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 172 && BOOST_PP_ITERATION_FINISH_4 >= 172
+# define BOOST_PP_ITERATION_4 172
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 173 && BOOST_PP_ITERATION_FINISH_4 >= 173
+# define BOOST_PP_ITERATION_4 173
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 174 && BOOST_PP_ITERATION_FINISH_4 >= 174
+# define BOOST_PP_ITERATION_4 174
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 175 && BOOST_PP_ITERATION_FINISH_4 >= 175
+# define BOOST_PP_ITERATION_4 175
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 176 && BOOST_PP_ITERATION_FINISH_4 >= 176
+# define BOOST_PP_ITERATION_4 176
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 177 && BOOST_PP_ITERATION_FINISH_4 >= 177
+# define BOOST_PP_ITERATION_4 177
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 178 && BOOST_PP_ITERATION_FINISH_4 >= 178
+# define BOOST_PP_ITERATION_4 178
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 179 && BOOST_PP_ITERATION_FINISH_4 >= 179
+# define BOOST_PP_ITERATION_4 179
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 180 && BOOST_PP_ITERATION_FINISH_4 >= 180
+# define BOOST_PP_ITERATION_4 180
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 181 && BOOST_PP_ITERATION_FINISH_4 >= 181
+# define BOOST_PP_ITERATION_4 181
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 182 && BOOST_PP_ITERATION_FINISH_4 >= 182
+# define BOOST_PP_ITERATION_4 182
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 183 && BOOST_PP_ITERATION_FINISH_4 >= 183
+# define BOOST_PP_ITERATION_4 183
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 184 && BOOST_PP_ITERATION_FINISH_4 >= 184
+# define BOOST_PP_ITERATION_4 184
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 185 && BOOST_PP_ITERATION_FINISH_4 >= 185
+# define BOOST_PP_ITERATION_4 185
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 186 && BOOST_PP_ITERATION_FINISH_4 >= 186
+# define BOOST_PP_ITERATION_4 186
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 187 && BOOST_PP_ITERATION_FINISH_4 >= 187
+# define BOOST_PP_ITERATION_4 187
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 188 && BOOST_PP_ITERATION_FINISH_4 >= 188
+# define BOOST_PP_ITERATION_4 188
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 189 && BOOST_PP_ITERATION_FINISH_4 >= 189
+# define BOOST_PP_ITERATION_4 189
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 190 && BOOST_PP_ITERATION_FINISH_4 >= 190
+# define BOOST_PP_ITERATION_4 190
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 191 && BOOST_PP_ITERATION_FINISH_4 >= 191
+# define BOOST_PP_ITERATION_4 191
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 192 && BOOST_PP_ITERATION_FINISH_4 >= 192
+# define BOOST_PP_ITERATION_4 192
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 193 && BOOST_PP_ITERATION_FINISH_4 >= 193
+# define BOOST_PP_ITERATION_4 193
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 194 && BOOST_PP_ITERATION_FINISH_4 >= 194
+# define BOOST_PP_ITERATION_4 194
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 195 && BOOST_PP_ITERATION_FINISH_4 >= 195
+# define BOOST_PP_ITERATION_4 195
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 196 && BOOST_PP_ITERATION_FINISH_4 >= 196
+# define BOOST_PP_ITERATION_4 196
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 197 && BOOST_PP_ITERATION_FINISH_4 >= 197
+# define BOOST_PP_ITERATION_4 197
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 198 && BOOST_PP_ITERATION_FINISH_4 >= 198
+# define BOOST_PP_ITERATION_4 198
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 199 && BOOST_PP_ITERATION_FINISH_4 >= 199
+# define BOOST_PP_ITERATION_4 199
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 200 && BOOST_PP_ITERATION_FINISH_4 >= 200
+# define BOOST_PP_ITERATION_4 200
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 201 && BOOST_PP_ITERATION_FINISH_4 >= 201
+# define BOOST_PP_ITERATION_4 201
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 202 && BOOST_PP_ITERATION_FINISH_4 >= 202
+# define BOOST_PP_ITERATION_4 202
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 203 && BOOST_PP_ITERATION_FINISH_4 >= 203
+# define BOOST_PP_ITERATION_4 203
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 204 && BOOST_PP_ITERATION_FINISH_4 >= 204
+# define BOOST_PP_ITERATION_4 204
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 205 && BOOST_PP_ITERATION_FINISH_4 >= 205
+# define BOOST_PP_ITERATION_4 205
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 206 && BOOST_PP_ITERATION_FINISH_4 >= 206
+# define BOOST_PP_ITERATION_4 206
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 207 && BOOST_PP_ITERATION_FINISH_4 >= 207
+# define BOOST_PP_ITERATION_4 207
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 208 && BOOST_PP_ITERATION_FINISH_4 >= 208
+# define BOOST_PP_ITERATION_4 208
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 209 && BOOST_PP_ITERATION_FINISH_4 >= 209
+# define BOOST_PP_ITERATION_4 209
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 210 && BOOST_PP_ITERATION_FINISH_4 >= 210
+# define BOOST_PP_ITERATION_4 210
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 211 && BOOST_PP_ITERATION_FINISH_4 >= 211
+# define BOOST_PP_ITERATION_4 211
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 212 && BOOST_PP_ITERATION_FINISH_4 >= 212
+# define BOOST_PP_ITERATION_4 212
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 213 && BOOST_PP_ITERATION_FINISH_4 >= 213
+# define BOOST_PP_ITERATION_4 213
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 214 && BOOST_PP_ITERATION_FINISH_4 >= 214
+# define BOOST_PP_ITERATION_4 214
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 215 && BOOST_PP_ITERATION_FINISH_4 >= 215
+# define BOOST_PP_ITERATION_4 215
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 216 && BOOST_PP_ITERATION_FINISH_4 >= 216
+# define BOOST_PP_ITERATION_4 216
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 217 && BOOST_PP_ITERATION_FINISH_4 >= 217
+# define BOOST_PP_ITERATION_4 217
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 218 && BOOST_PP_ITERATION_FINISH_4 >= 218
+# define BOOST_PP_ITERATION_4 218
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 219 && BOOST_PP_ITERATION_FINISH_4 >= 219
+# define BOOST_PP_ITERATION_4 219
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 220 && BOOST_PP_ITERATION_FINISH_4 >= 220
+# define BOOST_PP_ITERATION_4 220
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 221 && BOOST_PP_ITERATION_FINISH_4 >= 221
+# define BOOST_PP_ITERATION_4 221
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 222 && BOOST_PP_ITERATION_FINISH_4 >= 222
+# define BOOST_PP_ITERATION_4 222
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 223 && BOOST_PP_ITERATION_FINISH_4 >= 223
+# define BOOST_PP_ITERATION_4 223
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 224 && BOOST_PP_ITERATION_FINISH_4 >= 224
+# define BOOST_PP_ITERATION_4 224
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 225 && BOOST_PP_ITERATION_FINISH_4 >= 225
+# define BOOST_PP_ITERATION_4 225
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 226 && BOOST_PP_ITERATION_FINISH_4 >= 226
+# define BOOST_PP_ITERATION_4 226
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 227 && BOOST_PP_ITERATION_FINISH_4 >= 227
+# define BOOST_PP_ITERATION_4 227
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 228 && BOOST_PP_ITERATION_FINISH_4 >= 228
+# define BOOST_PP_ITERATION_4 228
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 229 && BOOST_PP_ITERATION_FINISH_4 >= 229
+# define BOOST_PP_ITERATION_4 229
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 230 && BOOST_PP_ITERATION_FINISH_4 >= 230
+# define BOOST_PP_ITERATION_4 230
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 231 && BOOST_PP_ITERATION_FINISH_4 >= 231
+# define BOOST_PP_ITERATION_4 231
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 232 && BOOST_PP_ITERATION_FINISH_4 >= 232
+# define BOOST_PP_ITERATION_4 232
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 233 && BOOST_PP_ITERATION_FINISH_4 >= 233
+# define BOOST_PP_ITERATION_4 233
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 234 && BOOST_PP_ITERATION_FINISH_4 >= 234
+# define BOOST_PP_ITERATION_4 234
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 235 && BOOST_PP_ITERATION_FINISH_4 >= 235
+# define BOOST_PP_ITERATION_4 235
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 236 && BOOST_PP_ITERATION_FINISH_4 >= 236
+# define BOOST_PP_ITERATION_4 236
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 237 && BOOST_PP_ITERATION_FINISH_4 >= 237
+# define BOOST_PP_ITERATION_4 237
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 238 && BOOST_PP_ITERATION_FINISH_4 >= 238
+# define BOOST_PP_ITERATION_4 238
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 239 && BOOST_PP_ITERATION_FINISH_4 >= 239
+# define BOOST_PP_ITERATION_4 239
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 240 && BOOST_PP_ITERATION_FINISH_4 >= 240
+# define BOOST_PP_ITERATION_4 240
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 241 && BOOST_PP_ITERATION_FINISH_4 >= 241
+# define BOOST_PP_ITERATION_4 241
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 242 && BOOST_PP_ITERATION_FINISH_4 >= 242
+# define BOOST_PP_ITERATION_4 242
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 243 && BOOST_PP_ITERATION_FINISH_4 >= 243
+# define BOOST_PP_ITERATION_4 243
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 244 && BOOST_PP_ITERATION_FINISH_4 >= 244
+# define BOOST_PP_ITERATION_4 244
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 245 && BOOST_PP_ITERATION_FINISH_4 >= 245
+# define BOOST_PP_ITERATION_4 245
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 246 && BOOST_PP_ITERATION_FINISH_4 >= 246
+# define BOOST_PP_ITERATION_4 246
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 247 && BOOST_PP_ITERATION_FINISH_4 >= 247
+# define BOOST_PP_ITERATION_4 247
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 248 && BOOST_PP_ITERATION_FINISH_4 >= 248
+# define BOOST_PP_ITERATION_4 248
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 249 && BOOST_PP_ITERATION_FINISH_4 >= 249
+# define BOOST_PP_ITERATION_4 249
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 250 && BOOST_PP_ITERATION_FINISH_4 >= 250
+# define BOOST_PP_ITERATION_4 250
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 251 && BOOST_PP_ITERATION_FINISH_4 >= 251
+# define BOOST_PP_ITERATION_4 251
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 252 && BOOST_PP_ITERATION_FINISH_4 >= 252
+# define BOOST_PP_ITERATION_4 252
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 253 && BOOST_PP_ITERATION_FINISH_4 >= 253
+# define BOOST_PP_ITERATION_4 253
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 254 && BOOST_PP_ITERATION_FINISH_4 >= 254
+# define BOOST_PP_ITERATION_4 254
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 255 && BOOST_PP_ITERATION_FINISH_4 >= 255
+# define BOOST_PP_ITERATION_4 255
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 256 && BOOST_PP_ITERATION_FINISH_4 >= 256
+# define BOOST_PP_ITERATION_4 256
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 3
+#
+# undef BOOST_PP_ITERATION_START_4
+# undef BOOST_PP_ITERATION_FINISH_4
+# undef BOOST_PP_FILENAME_4
+#
+# undef BOOST_PP_ITERATION_FLAGS_4
+# undef BOOST_PP_ITERATION_PARAMS_4
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward5.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward5.hpp
new file mode 100644
index 0000000..a16e207
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/forward5.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_5)
+# error BOOST_PP_ERROR: depth #5 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower5.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper5.hpp>
+# define BOOST_PP_ITERATION_FLAGS_5 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_5)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_5)
+# include <boost/preprocessor/iteration/detail/bounds/lower5.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_5)
+# include <boost/preprocessor/iteration/detail/bounds/upper5.hpp>
+# define BOOST_PP_FILENAME_5 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_5)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_5) >= 4
+# define BOOST_PP_ITERATION_FLAGS_5 BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_5)
+# else
+# define BOOST_PP_ITERATION_FLAGS_5 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #5 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 5
+#
+# if (BOOST_PP_ITERATION_START_5) > (BOOST_PP_ITERATION_FINISH_5)
+# include <boost/preprocessor/iteration/detail/iter/reverse5.hpp>
+# else
+# if BOOST_PP_ITERATION_START_5 <= 0 && BOOST_PP_ITERATION_FINISH_5 >= 0
+# define BOOST_PP_ITERATION_5 0
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 1 && BOOST_PP_ITERATION_FINISH_5 >= 1
+# define BOOST_PP_ITERATION_5 1
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 2 && BOOST_PP_ITERATION_FINISH_5 >= 2
+# define BOOST_PP_ITERATION_5 2
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 3 && BOOST_PP_ITERATION_FINISH_5 >= 3
+# define BOOST_PP_ITERATION_5 3
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 4 && BOOST_PP_ITERATION_FINISH_5 >= 4
+# define BOOST_PP_ITERATION_5 4
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 5 && BOOST_PP_ITERATION_FINISH_5 >= 5
+# define BOOST_PP_ITERATION_5 5
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 6 && BOOST_PP_ITERATION_FINISH_5 >= 6
+# define BOOST_PP_ITERATION_5 6
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 7 && BOOST_PP_ITERATION_FINISH_5 >= 7
+# define BOOST_PP_ITERATION_5 7
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 8 && BOOST_PP_ITERATION_FINISH_5 >= 8
+# define BOOST_PP_ITERATION_5 8
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 9 && BOOST_PP_ITERATION_FINISH_5 >= 9
+# define BOOST_PP_ITERATION_5 9
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 10 && BOOST_PP_ITERATION_FINISH_5 >= 10
+# define BOOST_PP_ITERATION_5 10
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 11 && BOOST_PP_ITERATION_FINISH_5 >= 11
+# define BOOST_PP_ITERATION_5 11
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 12 && BOOST_PP_ITERATION_FINISH_5 >= 12
+# define BOOST_PP_ITERATION_5 12
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 13 && BOOST_PP_ITERATION_FINISH_5 >= 13
+# define BOOST_PP_ITERATION_5 13
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 14 && BOOST_PP_ITERATION_FINISH_5 >= 14
+# define BOOST_PP_ITERATION_5 14
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 15 && BOOST_PP_ITERATION_FINISH_5 >= 15
+# define BOOST_PP_ITERATION_5 15
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 16 && BOOST_PP_ITERATION_FINISH_5 >= 16
+# define BOOST_PP_ITERATION_5 16
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 17 && BOOST_PP_ITERATION_FINISH_5 >= 17
+# define BOOST_PP_ITERATION_5 17
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 18 && BOOST_PP_ITERATION_FINISH_5 >= 18
+# define BOOST_PP_ITERATION_5 18
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 19 && BOOST_PP_ITERATION_FINISH_5 >= 19
+# define BOOST_PP_ITERATION_5 19
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 20 && BOOST_PP_ITERATION_FINISH_5 >= 20
+# define BOOST_PP_ITERATION_5 20
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 21 && BOOST_PP_ITERATION_FINISH_5 >= 21
+# define BOOST_PP_ITERATION_5 21
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 22 && BOOST_PP_ITERATION_FINISH_5 >= 22
+# define BOOST_PP_ITERATION_5 22
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 23 && BOOST_PP_ITERATION_FINISH_5 >= 23
+# define BOOST_PP_ITERATION_5 23
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 24 && BOOST_PP_ITERATION_FINISH_5 >= 24
+# define BOOST_PP_ITERATION_5 24
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 25 && BOOST_PP_ITERATION_FINISH_5 >= 25
+# define BOOST_PP_ITERATION_5 25
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 26 && BOOST_PP_ITERATION_FINISH_5 >= 26
+# define BOOST_PP_ITERATION_5 26
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 27 && BOOST_PP_ITERATION_FINISH_5 >= 27
+# define BOOST_PP_ITERATION_5 27
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 28 && BOOST_PP_ITERATION_FINISH_5 >= 28
+# define BOOST_PP_ITERATION_5 28
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 29 && BOOST_PP_ITERATION_FINISH_5 >= 29
+# define BOOST_PP_ITERATION_5 29
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 30 && BOOST_PP_ITERATION_FINISH_5 >= 30
+# define BOOST_PP_ITERATION_5 30
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 31 && BOOST_PP_ITERATION_FINISH_5 >= 31
+# define BOOST_PP_ITERATION_5 31
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 32 && BOOST_PP_ITERATION_FINISH_5 >= 32
+# define BOOST_PP_ITERATION_5 32
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 33 && BOOST_PP_ITERATION_FINISH_5 >= 33
+# define BOOST_PP_ITERATION_5 33
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 34 && BOOST_PP_ITERATION_FINISH_5 >= 34
+# define BOOST_PP_ITERATION_5 34
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 35 && BOOST_PP_ITERATION_FINISH_5 >= 35
+# define BOOST_PP_ITERATION_5 35
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 36 && BOOST_PP_ITERATION_FINISH_5 >= 36
+# define BOOST_PP_ITERATION_5 36
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 37 && BOOST_PP_ITERATION_FINISH_5 >= 37
+# define BOOST_PP_ITERATION_5 37
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 38 && BOOST_PP_ITERATION_FINISH_5 >= 38
+# define BOOST_PP_ITERATION_5 38
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 39 && BOOST_PP_ITERATION_FINISH_5 >= 39
+# define BOOST_PP_ITERATION_5 39
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 40 && BOOST_PP_ITERATION_FINISH_5 >= 40
+# define BOOST_PP_ITERATION_5 40
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 41 && BOOST_PP_ITERATION_FINISH_5 >= 41
+# define BOOST_PP_ITERATION_5 41
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 42 && BOOST_PP_ITERATION_FINISH_5 >= 42
+# define BOOST_PP_ITERATION_5 42
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 43 && BOOST_PP_ITERATION_FINISH_5 >= 43
+# define BOOST_PP_ITERATION_5 43
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 44 && BOOST_PP_ITERATION_FINISH_5 >= 44
+# define BOOST_PP_ITERATION_5 44
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 45 && BOOST_PP_ITERATION_FINISH_5 >= 45
+# define BOOST_PP_ITERATION_5 45
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 46 && BOOST_PP_ITERATION_FINISH_5 >= 46
+# define BOOST_PP_ITERATION_5 46
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 47 && BOOST_PP_ITERATION_FINISH_5 >= 47
+# define BOOST_PP_ITERATION_5 47
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 48 && BOOST_PP_ITERATION_FINISH_5 >= 48
+# define BOOST_PP_ITERATION_5 48
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 49 && BOOST_PP_ITERATION_FINISH_5 >= 49
+# define BOOST_PP_ITERATION_5 49
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 50 && BOOST_PP_ITERATION_FINISH_5 >= 50
+# define BOOST_PP_ITERATION_5 50
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 51 && BOOST_PP_ITERATION_FINISH_5 >= 51
+# define BOOST_PP_ITERATION_5 51
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 52 && BOOST_PP_ITERATION_FINISH_5 >= 52
+# define BOOST_PP_ITERATION_5 52
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 53 && BOOST_PP_ITERATION_FINISH_5 >= 53
+# define BOOST_PP_ITERATION_5 53
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 54 && BOOST_PP_ITERATION_FINISH_5 >= 54
+# define BOOST_PP_ITERATION_5 54
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 55 && BOOST_PP_ITERATION_FINISH_5 >= 55
+# define BOOST_PP_ITERATION_5 55
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 56 && BOOST_PP_ITERATION_FINISH_5 >= 56
+# define BOOST_PP_ITERATION_5 56
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 57 && BOOST_PP_ITERATION_FINISH_5 >= 57
+# define BOOST_PP_ITERATION_5 57
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 58 && BOOST_PP_ITERATION_FINISH_5 >= 58
+# define BOOST_PP_ITERATION_5 58
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 59 && BOOST_PP_ITERATION_FINISH_5 >= 59
+# define BOOST_PP_ITERATION_5 59
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 60 && BOOST_PP_ITERATION_FINISH_5 >= 60
+# define BOOST_PP_ITERATION_5 60
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 61 && BOOST_PP_ITERATION_FINISH_5 >= 61
+# define BOOST_PP_ITERATION_5 61
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 62 && BOOST_PP_ITERATION_FINISH_5 >= 62
+# define BOOST_PP_ITERATION_5 62
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 63 && BOOST_PP_ITERATION_FINISH_5 >= 63
+# define BOOST_PP_ITERATION_5 63
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 64 && BOOST_PP_ITERATION_FINISH_5 >= 64
+# define BOOST_PP_ITERATION_5 64
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 65 && BOOST_PP_ITERATION_FINISH_5 >= 65
+# define BOOST_PP_ITERATION_5 65
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 66 && BOOST_PP_ITERATION_FINISH_5 >= 66
+# define BOOST_PP_ITERATION_5 66
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 67 && BOOST_PP_ITERATION_FINISH_5 >= 67
+# define BOOST_PP_ITERATION_5 67
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 68 && BOOST_PP_ITERATION_FINISH_5 >= 68
+# define BOOST_PP_ITERATION_5 68
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 69 && BOOST_PP_ITERATION_FINISH_5 >= 69
+# define BOOST_PP_ITERATION_5 69
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 70 && BOOST_PP_ITERATION_FINISH_5 >= 70
+# define BOOST_PP_ITERATION_5 70
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 71 && BOOST_PP_ITERATION_FINISH_5 >= 71
+# define BOOST_PP_ITERATION_5 71
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 72 && BOOST_PP_ITERATION_FINISH_5 >= 72
+# define BOOST_PP_ITERATION_5 72
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 73 && BOOST_PP_ITERATION_FINISH_5 >= 73
+# define BOOST_PP_ITERATION_5 73
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 74 && BOOST_PP_ITERATION_FINISH_5 >= 74
+# define BOOST_PP_ITERATION_5 74
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 75 && BOOST_PP_ITERATION_FINISH_5 >= 75
+# define BOOST_PP_ITERATION_5 75
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 76 && BOOST_PP_ITERATION_FINISH_5 >= 76
+# define BOOST_PP_ITERATION_5 76
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 77 && BOOST_PP_ITERATION_FINISH_5 >= 77
+# define BOOST_PP_ITERATION_5 77
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 78 && BOOST_PP_ITERATION_FINISH_5 >= 78
+# define BOOST_PP_ITERATION_5 78
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 79 && BOOST_PP_ITERATION_FINISH_5 >= 79
+# define BOOST_PP_ITERATION_5 79
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 80 && BOOST_PP_ITERATION_FINISH_5 >= 80
+# define BOOST_PP_ITERATION_5 80
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 81 && BOOST_PP_ITERATION_FINISH_5 >= 81
+# define BOOST_PP_ITERATION_5 81
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 82 && BOOST_PP_ITERATION_FINISH_5 >= 82
+# define BOOST_PP_ITERATION_5 82
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 83 && BOOST_PP_ITERATION_FINISH_5 >= 83
+# define BOOST_PP_ITERATION_5 83
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 84 && BOOST_PP_ITERATION_FINISH_5 >= 84
+# define BOOST_PP_ITERATION_5 84
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 85 && BOOST_PP_ITERATION_FINISH_5 >= 85
+# define BOOST_PP_ITERATION_5 85
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 86 && BOOST_PP_ITERATION_FINISH_5 >= 86
+# define BOOST_PP_ITERATION_5 86
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 87 && BOOST_PP_ITERATION_FINISH_5 >= 87
+# define BOOST_PP_ITERATION_5 87
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 88 && BOOST_PP_ITERATION_FINISH_5 >= 88
+# define BOOST_PP_ITERATION_5 88
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 89 && BOOST_PP_ITERATION_FINISH_5 >= 89
+# define BOOST_PP_ITERATION_5 89
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 90 && BOOST_PP_ITERATION_FINISH_5 >= 90
+# define BOOST_PP_ITERATION_5 90
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 91 && BOOST_PP_ITERATION_FINISH_5 >= 91
+# define BOOST_PP_ITERATION_5 91
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 92 && BOOST_PP_ITERATION_FINISH_5 >= 92
+# define BOOST_PP_ITERATION_5 92
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 93 && BOOST_PP_ITERATION_FINISH_5 >= 93
+# define BOOST_PP_ITERATION_5 93
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 94 && BOOST_PP_ITERATION_FINISH_5 >= 94
+# define BOOST_PP_ITERATION_5 94
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 95 && BOOST_PP_ITERATION_FINISH_5 >= 95
+# define BOOST_PP_ITERATION_5 95
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 96 && BOOST_PP_ITERATION_FINISH_5 >= 96
+# define BOOST_PP_ITERATION_5 96
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 97 && BOOST_PP_ITERATION_FINISH_5 >= 97
+# define BOOST_PP_ITERATION_5 97
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 98 && BOOST_PP_ITERATION_FINISH_5 >= 98
+# define BOOST_PP_ITERATION_5 98
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 99 && BOOST_PP_ITERATION_FINISH_5 >= 99
+# define BOOST_PP_ITERATION_5 99
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 100 && BOOST_PP_ITERATION_FINISH_5 >= 100
+# define BOOST_PP_ITERATION_5 100
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 101 && BOOST_PP_ITERATION_FINISH_5 >= 101
+# define BOOST_PP_ITERATION_5 101
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 102 && BOOST_PP_ITERATION_FINISH_5 >= 102
+# define BOOST_PP_ITERATION_5 102
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 103 && BOOST_PP_ITERATION_FINISH_5 >= 103
+# define BOOST_PP_ITERATION_5 103
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 104 && BOOST_PP_ITERATION_FINISH_5 >= 104
+# define BOOST_PP_ITERATION_5 104
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 105 && BOOST_PP_ITERATION_FINISH_5 >= 105
+# define BOOST_PP_ITERATION_5 105
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 106 && BOOST_PP_ITERATION_FINISH_5 >= 106
+# define BOOST_PP_ITERATION_5 106
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 107 && BOOST_PP_ITERATION_FINISH_5 >= 107
+# define BOOST_PP_ITERATION_5 107
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 108 && BOOST_PP_ITERATION_FINISH_5 >= 108
+# define BOOST_PP_ITERATION_5 108
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 109 && BOOST_PP_ITERATION_FINISH_5 >= 109
+# define BOOST_PP_ITERATION_5 109
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 110 && BOOST_PP_ITERATION_FINISH_5 >= 110
+# define BOOST_PP_ITERATION_5 110
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 111 && BOOST_PP_ITERATION_FINISH_5 >= 111
+# define BOOST_PP_ITERATION_5 111
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 112 && BOOST_PP_ITERATION_FINISH_5 >= 112
+# define BOOST_PP_ITERATION_5 112
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 113 && BOOST_PP_ITERATION_FINISH_5 >= 113
+# define BOOST_PP_ITERATION_5 113
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 114 && BOOST_PP_ITERATION_FINISH_5 >= 114
+# define BOOST_PP_ITERATION_5 114
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 115 && BOOST_PP_ITERATION_FINISH_5 >= 115
+# define BOOST_PP_ITERATION_5 115
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 116 && BOOST_PP_ITERATION_FINISH_5 >= 116
+# define BOOST_PP_ITERATION_5 116
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 117 && BOOST_PP_ITERATION_FINISH_5 >= 117
+# define BOOST_PP_ITERATION_5 117
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 118 && BOOST_PP_ITERATION_FINISH_5 >= 118
+# define BOOST_PP_ITERATION_5 118
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 119 && BOOST_PP_ITERATION_FINISH_5 >= 119
+# define BOOST_PP_ITERATION_5 119
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 120 && BOOST_PP_ITERATION_FINISH_5 >= 120
+# define BOOST_PP_ITERATION_5 120
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 121 && BOOST_PP_ITERATION_FINISH_5 >= 121
+# define BOOST_PP_ITERATION_5 121
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 122 && BOOST_PP_ITERATION_FINISH_5 >= 122
+# define BOOST_PP_ITERATION_5 122
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 123 && BOOST_PP_ITERATION_FINISH_5 >= 123
+# define BOOST_PP_ITERATION_5 123
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 124 && BOOST_PP_ITERATION_FINISH_5 >= 124
+# define BOOST_PP_ITERATION_5 124
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 125 && BOOST_PP_ITERATION_FINISH_5 >= 125
+# define BOOST_PP_ITERATION_5 125
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 126 && BOOST_PP_ITERATION_FINISH_5 >= 126
+# define BOOST_PP_ITERATION_5 126
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 127 && BOOST_PP_ITERATION_FINISH_5 >= 127
+# define BOOST_PP_ITERATION_5 127
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 128 && BOOST_PP_ITERATION_FINISH_5 >= 128
+# define BOOST_PP_ITERATION_5 128
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 129 && BOOST_PP_ITERATION_FINISH_5 >= 129
+# define BOOST_PP_ITERATION_5 129
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 130 && BOOST_PP_ITERATION_FINISH_5 >= 130
+# define BOOST_PP_ITERATION_5 130
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 131 && BOOST_PP_ITERATION_FINISH_5 >= 131
+# define BOOST_PP_ITERATION_5 131
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 132 && BOOST_PP_ITERATION_FINISH_5 >= 132
+# define BOOST_PP_ITERATION_5 132
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 133 && BOOST_PP_ITERATION_FINISH_5 >= 133
+# define BOOST_PP_ITERATION_5 133
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 134 && BOOST_PP_ITERATION_FINISH_5 >= 134
+# define BOOST_PP_ITERATION_5 134
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 135 && BOOST_PP_ITERATION_FINISH_5 >= 135
+# define BOOST_PP_ITERATION_5 135
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 136 && BOOST_PP_ITERATION_FINISH_5 >= 136
+# define BOOST_PP_ITERATION_5 136
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 137 && BOOST_PP_ITERATION_FINISH_5 >= 137
+# define BOOST_PP_ITERATION_5 137
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 138 && BOOST_PP_ITERATION_FINISH_5 >= 138
+# define BOOST_PP_ITERATION_5 138
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 139 && BOOST_PP_ITERATION_FINISH_5 >= 139
+# define BOOST_PP_ITERATION_5 139
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 140 && BOOST_PP_ITERATION_FINISH_5 >= 140
+# define BOOST_PP_ITERATION_5 140
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 141 && BOOST_PP_ITERATION_FINISH_5 >= 141
+# define BOOST_PP_ITERATION_5 141
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 142 && BOOST_PP_ITERATION_FINISH_5 >= 142
+# define BOOST_PP_ITERATION_5 142
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 143 && BOOST_PP_ITERATION_FINISH_5 >= 143
+# define BOOST_PP_ITERATION_5 143
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 144 && BOOST_PP_ITERATION_FINISH_5 >= 144
+# define BOOST_PP_ITERATION_5 144
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 145 && BOOST_PP_ITERATION_FINISH_5 >= 145
+# define BOOST_PP_ITERATION_5 145
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 146 && BOOST_PP_ITERATION_FINISH_5 >= 146
+# define BOOST_PP_ITERATION_5 146
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 147 && BOOST_PP_ITERATION_FINISH_5 >= 147
+# define BOOST_PP_ITERATION_5 147
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 148 && BOOST_PP_ITERATION_FINISH_5 >= 148
+# define BOOST_PP_ITERATION_5 148
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 149 && BOOST_PP_ITERATION_FINISH_5 >= 149
+# define BOOST_PP_ITERATION_5 149
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 150 && BOOST_PP_ITERATION_FINISH_5 >= 150
+# define BOOST_PP_ITERATION_5 150
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 151 && BOOST_PP_ITERATION_FINISH_5 >= 151
+# define BOOST_PP_ITERATION_5 151
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 152 && BOOST_PP_ITERATION_FINISH_5 >= 152
+# define BOOST_PP_ITERATION_5 152
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 153 && BOOST_PP_ITERATION_FINISH_5 >= 153
+# define BOOST_PP_ITERATION_5 153
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 154 && BOOST_PP_ITERATION_FINISH_5 >= 154
+# define BOOST_PP_ITERATION_5 154
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 155 && BOOST_PP_ITERATION_FINISH_5 >= 155
+# define BOOST_PP_ITERATION_5 155
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 156 && BOOST_PP_ITERATION_FINISH_5 >= 156
+# define BOOST_PP_ITERATION_5 156
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 157 && BOOST_PP_ITERATION_FINISH_5 >= 157
+# define BOOST_PP_ITERATION_5 157
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 158 && BOOST_PP_ITERATION_FINISH_5 >= 158
+# define BOOST_PP_ITERATION_5 158
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 159 && BOOST_PP_ITERATION_FINISH_5 >= 159
+# define BOOST_PP_ITERATION_5 159
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 160 && BOOST_PP_ITERATION_FINISH_5 >= 160
+# define BOOST_PP_ITERATION_5 160
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 161 && BOOST_PP_ITERATION_FINISH_5 >= 161
+# define BOOST_PP_ITERATION_5 161
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 162 && BOOST_PP_ITERATION_FINISH_5 >= 162
+# define BOOST_PP_ITERATION_5 162
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 163 && BOOST_PP_ITERATION_FINISH_5 >= 163
+# define BOOST_PP_ITERATION_5 163
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 164 && BOOST_PP_ITERATION_FINISH_5 >= 164
+# define BOOST_PP_ITERATION_5 164
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 165 && BOOST_PP_ITERATION_FINISH_5 >= 165
+# define BOOST_PP_ITERATION_5 165
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 166 && BOOST_PP_ITERATION_FINISH_5 >= 166
+# define BOOST_PP_ITERATION_5 166
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 167 && BOOST_PP_ITERATION_FINISH_5 >= 167
+# define BOOST_PP_ITERATION_5 167
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 168 && BOOST_PP_ITERATION_FINISH_5 >= 168
+# define BOOST_PP_ITERATION_5 168
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 169 && BOOST_PP_ITERATION_FINISH_5 >= 169
+# define BOOST_PP_ITERATION_5 169
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 170 && BOOST_PP_ITERATION_FINISH_5 >= 170
+# define BOOST_PP_ITERATION_5 170
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 171 && BOOST_PP_ITERATION_FINISH_5 >= 171
+# define BOOST_PP_ITERATION_5 171
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 172 && BOOST_PP_ITERATION_FINISH_5 >= 172
+# define BOOST_PP_ITERATION_5 172
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 173 && BOOST_PP_ITERATION_FINISH_5 >= 173
+# define BOOST_PP_ITERATION_5 173
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 174 && BOOST_PP_ITERATION_FINISH_5 >= 174
+# define BOOST_PP_ITERATION_5 174
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 175 && BOOST_PP_ITERATION_FINISH_5 >= 175
+# define BOOST_PP_ITERATION_5 175
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 176 && BOOST_PP_ITERATION_FINISH_5 >= 176
+# define BOOST_PP_ITERATION_5 176
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 177 && BOOST_PP_ITERATION_FINISH_5 >= 177
+# define BOOST_PP_ITERATION_5 177
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 178 && BOOST_PP_ITERATION_FINISH_5 >= 178
+# define BOOST_PP_ITERATION_5 178
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 179 && BOOST_PP_ITERATION_FINISH_5 >= 179
+# define BOOST_PP_ITERATION_5 179
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 180 && BOOST_PP_ITERATION_FINISH_5 >= 180
+# define BOOST_PP_ITERATION_5 180
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 181 && BOOST_PP_ITERATION_FINISH_5 >= 181
+# define BOOST_PP_ITERATION_5 181
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 182 && BOOST_PP_ITERATION_FINISH_5 >= 182
+# define BOOST_PP_ITERATION_5 182
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 183 && BOOST_PP_ITERATION_FINISH_5 >= 183
+# define BOOST_PP_ITERATION_5 183
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 184 && BOOST_PP_ITERATION_FINISH_5 >= 184
+# define BOOST_PP_ITERATION_5 184
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 185 && BOOST_PP_ITERATION_FINISH_5 >= 185
+# define BOOST_PP_ITERATION_5 185
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 186 && BOOST_PP_ITERATION_FINISH_5 >= 186
+# define BOOST_PP_ITERATION_5 186
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 187 && BOOST_PP_ITERATION_FINISH_5 >= 187
+# define BOOST_PP_ITERATION_5 187
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 188 && BOOST_PP_ITERATION_FINISH_5 >= 188
+# define BOOST_PP_ITERATION_5 188
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 189 && BOOST_PP_ITERATION_FINISH_5 >= 189
+# define BOOST_PP_ITERATION_5 189
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 190 && BOOST_PP_ITERATION_FINISH_5 >= 190
+# define BOOST_PP_ITERATION_5 190
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 191 && BOOST_PP_ITERATION_FINISH_5 >= 191
+# define BOOST_PP_ITERATION_5 191
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 192 && BOOST_PP_ITERATION_FINISH_5 >= 192
+# define BOOST_PP_ITERATION_5 192
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 193 && BOOST_PP_ITERATION_FINISH_5 >= 193
+# define BOOST_PP_ITERATION_5 193
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 194 && BOOST_PP_ITERATION_FINISH_5 >= 194
+# define BOOST_PP_ITERATION_5 194
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 195 && BOOST_PP_ITERATION_FINISH_5 >= 195
+# define BOOST_PP_ITERATION_5 195
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 196 && BOOST_PP_ITERATION_FINISH_5 >= 196
+# define BOOST_PP_ITERATION_5 196
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 197 && BOOST_PP_ITERATION_FINISH_5 >= 197
+# define BOOST_PP_ITERATION_5 197
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 198 && BOOST_PP_ITERATION_FINISH_5 >= 198
+# define BOOST_PP_ITERATION_5 198
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 199 && BOOST_PP_ITERATION_FINISH_5 >= 199
+# define BOOST_PP_ITERATION_5 199
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 200 && BOOST_PP_ITERATION_FINISH_5 >= 200
+# define BOOST_PP_ITERATION_5 200
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 201 && BOOST_PP_ITERATION_FINISH_5 >= 201
+# define BOOST_PP_ITERATION_5 201
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 202 && BOOST_PP_ITERATION_FINISH_5 >= 202
+# define BOOST_PP_ITERATION_5 202
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 203 && BOOST_PP_ITERATION_FINISH_5 >= 203
+# define BOOST_PP_ITERATION_5 203
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 204 && BOOST_PP_ITERATION_FINISH_5 >= 204
+# define BOOST_PP_ITERATION_5 204
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 205 && BOOST_PP_ITERATION_FINISH_5 >= 205
+# define BOOST_PP_ITERATION_5 205
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 206 && BOOST_PP_ITERATION_FINISH_5 >= 206
+# define BOOST_PP_ITERATION_5 206
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 207 && BOOST_PP_ITERATION_FINISH_5 >= 207
+# define BOOST_PP_ITERATION_5 207
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 208 && BOOST_PP_ITERATION_FINISH_5 >= 208
+# define BOOST_PP_ITERATION_5 208
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 209 && BOOST_PP_ITERATION_FINISH_5 >= 209
+# define BOOST_PP_ITERATION_5 209
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 210 && BOOST_PP_ITERATION_FINISH_5 >= 210
+# define BOOST_PP_ITERATION_5 210
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 211 && BOOST_PP_ITERATION_FINISH_5 >= 211
+# define BOOST_PP_ITERATION_5 211
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 212 && BOOST_PP_ITERATION_FINISH_5 >= 212
+# define BOOST_PP_ITERATION_5 212
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 213 && BOOST_PP_ITERATION_FINISH_5 >= 213
+# define BOOST_PP_ITERATION_5 213
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 214 && BOOST_PP_ITERATION_FINISH_5 >= 214
+# define BOOST_PP_ITERATION_5 214
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 215 && BOOST_PP_ITERATION_FINISH_5 >= 215
+# define BOOST_PP_ITERATION_5 215
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 216 && BOOST_PP_ITERATION_FINISH_5 >= 216
+# define BOOST_PP_ITERATION_5 216
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 217 && BOOST_PP_ITERATION_FINISH_5 >= 217
+# define BOOST_PP_ITERATION_5 217
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 218 && BOOST_PP_ITERATION_FINISH_5 >= 218
+# define BOOST_PP_ITERATION_5 218
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 219 && BOOST_PP_ITERATION_FINISH_5 >= 219
+# define BOOST_PP_ITERATION_5 219
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 220 && BOOST_PP_ITERATION_FINISH_5 >= 220
+# define BOOST_PP_ITERATION_5 220
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 221 && BOOST_PP_ITERATION_FINISH_5 >= 221
+# define BOOST_PP_ITERATION_5 221
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 222 && BOOST_PP_ITERATION_FINISH_5 >= 222
+# define BOOST_PP_ITERATION_5 222
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 223 && BOOST_PP_ITERATION_FINISH_5 >= 223
+# define BOOST_PP_ITERATION_5 223
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 224 && BOOST_PP_ITERATION_FINISH_5 >= 224
+# define BOOST_PP_ITERATION_5 224
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 225 && BOOST_PP_ITERATION_FINISH_5 >= 225
+# define BOOST_PP_ITERATION_5 225
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 226 && BOOST_PP_ITERATION_FINISH_5 >= 226
+# define BOOST_PP_ITERATION_5 226
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 227 && BOOST_PP_ITERATION_FINISH_5 >= 227
+# define BOOST_PP_ITERATION_5 227
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 228 && BOOST_PP_ITERATION_FINISH_5 >= 228
+# define BOOST_PP_ITERATION_5 228
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 229 && BOOST_PP_ITERATION_FINISH_5 >= 229
+# define BOOST_PP_ITERATION_5 229
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 230 && BOOST_PP_ITERATION_FINISH_5 >= 230
+# define BOOST_PP_ITERATION_5 230
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 231 && BOOST_PP_ITERATION_FINISH_5 >= 231
+# define BOOST_PP_ITERATION_5 231
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 232 && BOOST_PP_ITERATION_FINISH_5 >= 232
+# define BOOST_PP_ITERATION_5 232
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 233 && BOOST_PP_ITERATION_FINISH_5 >= 233
+# define BOOST_PP_ITERATION_5 233
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 234 && BOOST_PP_ITERATION_FINISH_5 >= 234
+# define BOOST_PP_ITERATION_5 234
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 235 && BOOST_PP_ITERATION_FINISH_5 >= 235
+# define BOOST_PP_ITERATION_5 235
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 236 && BOOST_PP_ITERATION_FINISH_5 >= 236
+# define BOOST_PP_ITERATION_5 236
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 237 && BOOST_PP_ITERATION_FINISH_5 >= 237
+# define BOOST_PP_ITERATION_5 237
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 238 && BOOST_PP_ITERATION_FINISH_5 >= 238
+# define BOOST_PP_ITERATION_5 238
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 239 && BOOST_PP_ITERATION_FINISH_5 >= 239
+# define BOOST_PP_ITERATION_5 239
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 240 && BOOST_PP_ITERATION_FINISH_5 >= 240
+# define BOOST_PP_ITERATION_5 240
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 241 && BOOST_PP_ITERATION_FINISH_5 >= 241
+# define BOOST_PP_ITERATION_5 241
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 242 && BOOST_PP_ITERATION_FINISH_5 >= 242
+# define BOOST_PP_ITERATION_5 242
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 243 && BOOST_PP_ITERATION_FINISH_5 >= 243
+# define BOOST_PP_ITERATION_5 243
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 244 && BOOST_PP_ITERATION_FINISH_5 >= 244
+# define BOOST_PP_ITERATION_5 244
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 245 && BOOST_PP_ITERATION_FINISH_5 >= 245
+# define BOOST_PP_ITERATION_5 245
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 246 && BOOST_PP_ITERATION_FINISH_5 >= 246
+# define BOOST_PP_ITERATION_5 246
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 247 && BOOST_PP_ITERATION_FINISH_5 >= 247
+# define BOOST_PP_ITERATION_5 247
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 248 && BOOST_PP_ITERATION_FINISH_5 >= 248
+# define BOOST_PP_ITERATION_5 248
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 249 && BOOST_PP_ITERATION_FINISH_5 >= 249
+# define BOOST_PP_ITERATION_5 249
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 250 && BOOST_PP_ITERATION_FINISH_5 >= 250
+# define BOOST_PP_ITERATION_5 250
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 251 && BOOST_PP_ITERATION_FINISH_5 >= 251
+# define BOOST_PP_ITERATION_5 251
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 252 && BOOST_PP_ITERATION_FINISH_5 >= 252
+# define BOOST_PP_ITERATION_5 252
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 253 && BOOST_PP_ITERATION_FINISH_5 >= 253
+# define BOOST_PP_ITERATION_5 253
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 254 && BOOST_PP_ITERATION_FINISH_5 >= 254
+# define BOOST_PP_ITERATION_5 254
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 255 && BOOST_PP_ITERATION_FINISH_5 >= 255
+# define BOOST_PP_ITERATION_5 255
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 256 && BOOST_PP_ITERATION_FINISH_5 >= 256
+# define BOOST_PP_ITERATION_5 256
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 4
+#
+# undef BOOST_PP_ITERATION_START_5
+# undef BOOST_PP_ITERATION_FINISH_5
+# undef BOOST_PP_FILENAME_5
+#
+# undef BOOST_PP_ITERATION_FLAGS_5
+# undef BOOST_PP_ITERATION_PARAMS_5
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp
new file mode 100644
index 0000000..bf88d2f
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse1.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if BOOST_PP_ITERATION_FINISH_1 <= 256 && BOOST_PP_ITERATION_START_1 >= 256
+# define BOOST_PP_ITERATION_1 256
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 255 && BOOST_PP_ITERATION_START_1 >= 255
+# define BOOST_PP_ITERATION_1 255
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 254 && BOOST_PP_ITERATION_START_1 >= 254
+# define BOOST_PP_ITERATION_1 254
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 253 && BOOST_PP_ITERATION_START_1 >= 253
+# define BOOST_PP_ITERATION_1 253
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 252 && BOOST_PP_ITERATION_START_1 >= 252
+# define BOOST_PP_ITERATION_1 252
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 251 && BOOST_PP_ITERATION_START_1 >= 251
+# define BOOST_PP_ITERATION_1 251
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 250 && BOOST_PP_ITERATION_START_1 >= 250
+# define BOOST_PP_ITERATION_1 250
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 249 && BOOST_PP_ITERATION_START_1 >= 249
+# define BOOST_PP_ITERATION_1 249
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 248 && BOOST_PP_ITERATION_START_1 >= 248
+# define BOOST_PP_ITERATION_1 248
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 247 && BOOST_PP_ITERATION_START_1 >= 247
+# define BOOST_PP_ITERATION_1 247
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 246 && BOOST_PP_ITERATION_START_1 >= 246
+# define BOOST_PP_ITERATION_1 246
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 245 && BOOST_PP_ITERATION_START_1 >= 245
+# define BOOST_PP_ITERATION_1 245
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 244 && BOOST_PP_ITERATION_START_1 >= 244
+# define BOOST_PP_ITERATION_1 244
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 243 && BOOST_PP_ITERATION_START_1 >= 243
+# define BOOST_PP_ITERATION_1 243
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 242 && BOOST_PP_ITERATION_START_1 >= 242
+# define BOOST_PP_ITERATION_1 242
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 241 && BOOST_PP_ITERATION_START_1 >= 241
+# define BOOST_PP_ITERATION_1 241
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 240 && BOOST_PP_ITERATION_START_1 >= 240
+# define BOOST_PP_ITERATION_1 240
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 239 && BOOST_PP_ITERATION_START_1 >= 239
+# define BOOST_PP_ITERATION_1 239
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 238 && BOOST_PP_ITERATION_START_1 >= 238
+# define BOOST_PP_ITERATION_1 238
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 237 && BOOST_PP_ITERATION_START_1 >= 237
+# define BOOST_PP_ITERATION_1 237
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 236 && BOOST_PP_ITERATION_START_1 >= 236
+# define BOOST_PP_ITERATION_1 236
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 235 && BOOST_PP_ITERATION_START_1 >= 235
+# define BOOST_PP_ITERATION_1 235
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 234 && BOOST_PP_ITERATION_START_1 >= 234
+# define BOOST_PP_ITERATION_1 234
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 233 && BOOST_PP_ITERATION_START_1 >= 233
+# define BOOST_PP_ITERATION_1 233
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 232 && BOOST_PP_ITERATION_START_1 >= 232
+# define BOOST_PP_ITERATION_1 232
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 231 && BOOST_PP_ITERATION_START_1 >= 231
+# define BOOST_PP_ITERATION_1 231
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 230 && BOOST_PP_ITERATION_START_1 >= 230
+# define BOOST_PP_ITERATION_1 230
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 229 && BOOST_PP_ITERATION_START_1 >= 229
+# define BOOST_PP_ITERATION_1 229
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 228 && BOOST_PP_ITERATION_START_1 >= 228
+# define BOOST_PP_ITERATION_1 228
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 227 && BOOST_PP_ITERATION_START_1 >= 227
+# define BOOST_PP_ITERATION_1 227
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 226 && BOOST_PP_ITERATION_START_1 >= 226
+# define BOOST_PP_ITERATION_1 226
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 225 && BOOST_PP_ITERATION_START_1 >= 225
+# define BOOST_PP_ITERATION_1 225
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 224 && BOOST_PP_ITERATION_START_1 >= 224
+# define BOOST_PP_ITERATION_1 224
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 223 && BOOST_PP_ITERATION_START_1 >= 223
+# define BOOST_PP_ITERATION_1 223
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 222 && BOOST_PP_ITERATION_START_1 >= 222
+# define BOOST_PP_ITERATION_1 222
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 221 && BOOST_PP_ITERATION_START_1 >= 221
+# define BOOST_PP_ITERATION_1 221
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 220 && BOOST_PP_ITERATION_START_1 >= 220
+# define BOOST_PP_ITERATION_1 220
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 219 && BOOST_PP_ITERATION_START_1 >= 219
+# define BOOST_PP_ITERATION_1 219
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 218 && BOOST_PP_ITERATION_START_1 >= 218
+# define BOOST_PP_ITERATION_1 218
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 217 && BOOST_PP_ITERATION_START_1 >= 217
+# define BOOST_PP_ITERATION_1 217
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 216 && BOOST_PP_ITERATION_START_1 >= 216
+# define BOOST_PP_ITERATION_1 216
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 215 && BOOST_PP_ITERATION_START_1 >= 215
+# define BOOST_PP_ITERATION_1 215
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 214 && BOOST_PP_ITERATION_START_1 >= 214
+# define BOOST_PP_ITERATION_1 214
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 213 && BOOST_PP_ITERATION_START_1 >= 213
+# define BOOST_PP_ITERATION_1 213
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 212 && BOOST_PP_ITERATION_START_1 >= 212
+# define BOOST_PP_ITERATION_1 212
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 211 && BOOST_PP_ITERATION_START_1 >= 211
+# define BOOST_PP_ITERATION_1 211
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 210 && BOOST_PP_ITERATION_START_1 >= 210
+# define BOOST_PP_ITERATION_1 210
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 209 && BOOST_PP_ITERATION_START_1 >= 209
+# define BOOST_PP_ITERATION_1 209
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 208 && BOOST_PP_ITERATION_START_1 >= 208
+# define BOOST_PP_ITERATION_1 208
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 207 && BOOST_PP_ITERATION_START_1 >= 207
+# define BOOST_PP_ITERATION_1 207
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 206 && BOOST_PP_ITERATION_START_1 >= 206
+# define BOOST_PP_ITERATION_1 206
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 205 && BOOST_PP_ITERATION_START_1 >= 205
+# define BOOST_PP_ITERATION_1 205
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 204 && BOOST_PP_ITERATION_START_1 >= 204
+# define BOOST_PP_ITERATION_1 204
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 203 && BOOST_PP_ITERATION_START_1 >= 203
+# define BOOST_PP_ITERATION_1 203
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 202 && BOOST_PP_ITERATION_START_1 >= 202
+# define BOOST_PP_ITERATION_1 202
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 201 && BOOST_PP_ITERATION_START_1 >= 201
+# define BOOST_PP_ITERATION_1 201
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 200 && BOOST_PP_ITERATION_START_1 >= 200
+# define BOOST_PP_ITERATION_1 200
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 199 && BOOST_PP_ITERATION_START_1 >= 199
+# define BOOST_PP_ITERATION_1 199
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 198 && BOOST_PP_ITERATION_START_1 >= 198
+# define BOOST_PP_ITERATION_1 198
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 197 && BOOST_PP_ITERATION_START_1 >= 197
+# define BOOST_PP_ITERATION_1 197
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 196 && BOOST_PP_ITERATION_START_1 >= 196
+# define BOOST_PP_ITERATION_1 196
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 195 && BOOST_PP_ITERATION_START_1 >= 195
+# define BOOST_PP_ITERATION_1 195
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 194 && BOOST_PP_ITERATION_START_1 >= 194
+# define BOOST_PP_ITERATION_1 194
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 193 && BOOST_PP_ITERATION_START_1 >= 193
+# define BOOST_PP_ITERATION_1 193
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 192 && BOOST_PP_ITERATION_START_1 >= 192
+# define BOOST_PP_ITERATION_1 192
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 191 && BOOST_PP_ITERATION_START_1 >= 191
+# define BOOST_PP_ITERATION_1 191
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 190 && BOOST_PP_ITERATION_START_1 >= 190
+# define BOOST_PP_ITERATION_1 190
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 189 && BOOST_PP_ITERATION_START_1 >= 189
+# define BOOST_PP_ITERATION_1 189
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 188 && BOOST_PP_ITERATION_START_1 >= 188
+# define BOOST_PP_ITERATION_1 188
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 187 && BOOST_PP_ITERATION_START_1 >= 187
+# define BOOST_PP_ITERATION_1 187
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 186 && BOOST_PP_ITERATION_START_1 >= 186
+# define BOOST_PP_ITERATION_1 186
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 185 && BOOST_PP_ITERATION_START_1 >= 185
+# define BOOST_PP_ITERATION_1 185
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 184 && BOOST_PP_ITERATION_START_1 >= 184
+# define BOOST_PP_ITERATION_1 184
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 183 && BOOST_PP_ITERATION_START_1 >= 183
+# define BOOST_PP_ITERATION_1 183
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 182 && BOOST_PP_ITERATION_START_1 >= 182
+# define BOOST_PP_ITERATION_1 182
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 181 && BOOST_PP_ITERATION_START_1 >= 181
+# define BOOST_PP_ITERATION_1 181
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 180 && BOOST_PP_ITERATION_START_1 >= 180
+# define BOOST_PP_ITERATION_1 180
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 179 && BOOST_PP_ITERATION_START_1 >= 179
+# define BOOST_PP_ITERATION_1 179
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 178 && BOOST_PP_ITERATION_START_1 >= 178
+# define BOOST_PP_ITERATION_1 178
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 177 && BOOST_PP_ITERATION_START_1 >= 177
+# define BOOST_PP_ITERATION_1 177
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 176 && BOOST_PP_ITERATION_START_1 >= 176
+# define BOOST_PP_ITERATION_1 176
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 175 && BOOST_PP_ITERATION_START_1 >= 175
+# define BOOST_PP_ITERATION_1 175
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 174 && BOOST_PP_ITERATION_START_1 >= 174
+# define BOOST_PP_ITERATION_1 174
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 173 && BOOST_PP_ITERATION_START_1 >= 173
+# define BOOST_PP_ITERATION_1 173
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 172 && BOOST_PP_ITERATION_START_1 >= 172
+# define BOOST_PP_ITERATION_1 172
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 171 && BOOST_PP_ITERATION_START_1 >= 171
+# define BOOST_PP_ITERATION_1 171
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 170 && BOOST_PP_ITERATION_START_1 >= 170
+# define BOOST_PP_ITERATION_1 170
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 169 && BOOST_PP_ITERATION_START_1 >= 169
+# define BOOST_PP_ITERATION_1 169
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 168 && BOOST_PP_ITERATION_START_1 >= 168
+# define BOOST_PP_ITERATION_1 168
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 167 && BOOST_PP_ITERATION_START_1 >= 167
+# define BOOST_PP_ITERATION_1 167
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 166 && BOOST_PP_ITERATION_START_1 >= 166
+# define BOOST_PP_ITERATION_1 166
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 165 && BOOST_PP_ITERATION_START_1 >= 165
+# define BOOST_PP_ITERATION_1 165
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 164 && BOOST_PP_ITERATION_START_1 >= 164
+# define BOOST_PP_ITERATION_1 164
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 163 && BOOST_PP_ITERATION_START_1 >= 163
+# define BOOST_PP_ITERATION_1 163
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 162 && BOOST_PP_ITERATION_START_1 >= 162
+# define BOOST_PP_ITERATION_1 162
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 161 && BOOST_PP_ITERATION_START_1 >= 161
+# define BOOST_PP_ITERATION_1 161
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 160 && BOOST_PP_ITERATION_START_1 >= 160
+# define BOOST_PP_ITERATION_1 160
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 159 && BOOST_PP_ITERATION_START_1 >= 159
+# define BOOST_PP_ITERATION_1 159
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 158 && BOOST_PP_ITERATION_START_1 >= 158
+# define BOOST_PP_ITERATION_1 158
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 157 && BOOST_PP_ITERATION_START_1 >= 157
+# define BOOST_PP_ITERATION_1 157
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 156 && BOOST_PP_ITERATION_START_1 >= 156
+# define BOOST_PP_ITERATION_1 156
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 155 && BOOST_PP_ITERATION_START_1 >= 155
+# define BOOST_PP_ITERATION_1 155
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 154 && BOOST_PP_ITERATION_START_1 >= 154
+# define BOOST_PP_ITERATION_1 154
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 153 && BOOST_PP_ITERATION_START_1 >= 153
+# define BOOST_PP_ITERATION_1 153
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 152 && BOOST_PP_ITERATION_START_1 >= 152
+# define BOOST_PP_ITERATION_1 152
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 151 && BOOST_PP_ITERATION_START_1 >= 151
+# define BOOST_PP_ITERATION_1 151
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 150 && BOOST_PP_ITERATION_START_1 >= 150
+# define BOOST_PP_ITERATION_1 150
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 149 && BOOST_PP_ITERATION_START_1 >= 149
+# define BOOST_PP_ITERATION_1 149
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 148 && BOOST_PP_ITERATION_START_1 >= 148
+# define BOOST_PP_ITERATION_1 148
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 147 && BOOST_PP_ITERATION_START_1 >= 147
+# define BOOST_PP_ITERATION_1 147
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 146 && BOOST_PP_ITERATION_START_1 >= 146
+# define BOOST_PP_ITERATION_1 146
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 145 && BOOST_PP_ITERATION_START_1 >= 145
+# define BOOST_PP_ITERATION_1 145
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 144 && BOOST_PP_ITERATION_START_1 >= 144
+# define BOOST_PP_ITERATION_1 144
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 143 && BOOST_PP_ITERATION_START_1 >= 143
+# define BOOST_PP_ITERATION_1 143
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 142 && BOOST_PP_ITERATION_START_1 >= 142
+# define BOOST_PP_ITERATION_1 142
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 141 && BOOST_PP_ITERATION_START_1 >= 141
+# define BOOST_PP_ITERATION_1 141
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 140 && BOOST_PP_ITERATION_START_1 >= 140
+# define BOOST_PP_ITERATION_1 140
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 139 && BOOST_PP_ITERATION_START_1 >= 139
+# define BOOST_PP_ITERATION_1 139
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 138 && BOOST_PP_ITERATION_START_1 >= 138
+# define BOOST_PP_ITERATION_1 138
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 137 && BOOST_PP_ITERATION_START_1 >= 137
+# define BOOST_PP_ITERATION_1 137
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 136 && BOOST_PP_ITERATION_START_1 >= 136
+# define BOOST_PP_ITERATION_1 136
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 135 && BOOST_PP_ITERATION_START_1 >= 135
+# define BOOST_PP_ITERATION_1 135
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 134 && BOOST_PP_ITERATION_START_1 >= 134
+# define BOOST_PP_ITERATION_1 134
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 133 && BOOST_PP_ITERATION_START_1 >= 133
+# define BOOST_PP_ITERATION_1 133
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 132 && BOOST_PP_ITERATION_START_1 >= 132
+# define BOOST_PP_ITERATION_1 132
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 131 && BOOST_PP_ITERATION_START_1 >= 131
+# define BOOST_PP_ITERATION_1 131
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 130 && BOOST_PP_ITERATION_START_1 >= 130
+# define BOOST_PP_ITERATION_1 130
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 129 && BOOST_PP_ITERATION_START_1 >= 129
+# define BOOST_PP_ITERATION_1 129
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 128 && BOOST_PP_ITERATION_START_1 >= 128
+# define BOOST_PP_ITERATION_1 128
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 127 && BOOST_PP_ITERATION_START_1 >= 127
+# define BOOST_PP_ITERATION_1 127
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 126 && BOOST_PP_ITERATION_START_1 >= 126
+# define BOOST_PP_ITERATION_1 126
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 125 && BOOST_PP_ITERATION_START_1 >= 125
+# define BOOST_PP_ITERATION_1 125
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 124 && BOOST_PP_ITERATION_START_1 >= 124
+# define BOOST_PP_ITERATION_1 124
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 123 && BOOST_PP_ITERATION_START_1 >= 123
+# define BOOST_PP_ITERATION_1 123
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 122 && BOOST_PP_ITERATION_START_1 >= 122
+# define BOOST_PP_ITERATION_1 122
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 121 && BOOST_PP_ITERATION_START_1 >= 121
+# define BOOST_PP_ITERATION_1 121
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 120 && BOOST_PP_ITERATION_START_1 >= 120
+# define BOOST_PP_ITERATION_1 120
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 119 && BOOST_PP_ITERATION_START_1 >= 119
+# define BOOST_PP_ITERATION_1 119
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 118 && BOOST_PP_ITERATION_START_1 >= 118
+# define BOOST_PP_ITERATION_1 118
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 117 && BOOST_PP_ITERATION_START_1 >= 117
+# define BOOST_PP_ITERATION_1 117
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 116 && BOOST_PP_ITERATION_START_1 >= 116
+# define BOOST_PP_ITERATION_1 116
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 115 && BOOST_PP_ITERATION_START_1 >= 115
+# define BOOST_PP_ITERATION_1 115
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 114 && BOOST_PP_ITERATION_START_1 >= 114
+# define BOOST_PP_ITERATION_1 114
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 113 && BOOST_PP_ITERATION_START_1 >= 113
+# define BOOST_PP_ITERATION_1 113
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 112 && BOOST_PP_ITERATION_START_1 >= 112
+# define BOOST_PP_ITERATION_1 112
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 111 && BOOST_PP_ITERATION_START_1 >= 111
+# define BOOST_PP_ITERATION_1 111
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 110 && BOOST_PP_ITERATION_START_1 >= 110
+# define BOOST_PP_ITERATION_1 110
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 109 && BOOST_PP_ITERATION_START_1 >= 109
+# define BOOST_PP_ITERATION_1 109
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 108 && BOOST_PP_ITERATION_START_1 >= 108
+# define BOOST_PP_ITERATION_1 108
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 107 && BOOST_PP_ITERATION_START_1 >= 107
+# define BOOST_PP_ITERATION_1 107
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 106 && BOOST_PP_ITERATION_START_1 >= 106
+# define BOOST_PP_ITERATION_1 106
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 105 && BOOST_PP_ITERATION_START_1 >= 105
+# define BOOST_PP_ITERATION_1 105
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 104 && BOOST_PP_ITERATION_START_1 >= 104
+# define BOOST_PP_ITERATION_1 104
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 103 && BOOST_PP_ITERATION_START_1 >= 103
+# define BOOST_PP_ITERATION_1 103
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 102 && BOOST_PP_ITERATION_START_1 >= 102
+# define BOOST_PP_ITERATION_1 102
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 101 && BOOST_PP_ITERATION_START_1 >= 101
+# define BOOST_PP_ITERATION_1 101
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 100 && BOOST_PP_ITERATION_START_1 >= 100
+# define BOOST_PP_ITERATION_1 100
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 99 && BOOST_PP_ITERATION_START_1 >= 99
+# define BOOST_PP_ITERATION_1 99
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 98 && BOOST_PP_ITERATION_START_1 >= 98
+# define BOOST_PP_ITERATION_1 98
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 97 && BOOST_PP_ITERATION_START_1 >= 97
+# define BOOST_PP_ITERATION_1 97
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 96 && BOOST_PP_ITERATION_START_1 >= 96
+# define BOOST_PP_ITERATION_1 96
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 95 && BOOST_PP_ITERATION_START_1 >= 95
+# define BOOST_PP_ITERATION_1 95
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 94 && BOOST_PP_ITERATION_START_1 >= 94
+# define BOOST_PP_ITERATION_1 94
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 93 && BOOST_PP_ITERATION_START_1 >= 93
+# define BOOST_PP_ITERATION_1 93
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 92 && BOOST_PP_ITERATION_START_1 >= 92
+# define BOOST_PP_ITERATION_1 92
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 91 && BOOST_PP_ITERATION_START_1 >= 91
+# define BOOST_PP_ITERATION_1 91
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 90 && BOOST_PP_ITERATION_START_1 >= 90
+# define BOOST_PP_ITERATION_1 90
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 89 && BOOST_PP_ITERATION_START_1 >= 89
+# define BOOST_PP_ITERATION_1 89
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 88 && BOOST_PP_ITERATION_START_1 >= 88
+# define BOOST_PP_ITERATION_1 88
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 87 && BOOST_PP_ITERATION_START_1 >= 87
+# define BOOST_PP_ITERATION_1 87
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 86 && BOOST_PP_ITERATION_START_1 >= 86
+# define BOOST_PP_ITERATION_1 86
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 85 && BOOST_PP_ITERATION_START_1 >= 85
+# define BOOST_PP_ITERATION_1 85
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 84 && BOOST_PP_ITERATION_START_1 >= 84
+# define BOOST_PP_ITERATION_1 84
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 83 && BOOST_PP_ITERATION_START_1 >= 83
+# define BOOST_PP_ITERATION_1 83
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 82 && BOOST_PP_ITERATION_START_1 >= 82
+# define BOOST_PP_ITERATION_1 82
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 81 && BOOST_PP_ITERATION_START_1 >= 81
+# define BOOST_PP_ITERATION_1 81
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 80 && BOOST_PP_ITERATION_START_1 >= 80
+# define BOOST_PP_ITERATION_1 80
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 79 && BOOST_PP_ITERATION_START_1 >= 79
+# define BOOST_PP_ITERATION_1 79
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 78 && BOOST_PP_ITERATION_START_1 >= 78
+# define BOOST_PP_ITERATION_1 78
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 77 && BOOST_PP_ITERATION_START_1 >= 77
+# define BOOST_PP_ITERATION_1 77
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 76 && BOOST_PP_ITERATION_START_1 >= 76
+# define BOOST_PP_ITERATION_1 76
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 75 && BOOST_PP_ITERATION_START_1 >= 75
+# define BOOST_PP_ITERATION_1 75
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 74 && BOOST_PP_ITERATION_START_1 >= 74
+# define BOOST_PP_ITERATION_1 74
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 73 && BOOST_PP_ITERATION_START_1 >= 73
+# define BOOST_PP_ITERATION_1 73
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 72 && BOOST_PP_ITERATION_START_1 >= 72
+# define BOOST_PP_ITERATION_1 72
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 71 && BOOST_PP_ITERATION_START_1 >= 71
+# define BOOST_PP_ITERATION_1 71
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 70 && BOOST_PP_ITERATION_START_1 >= 70
+# define BOOST_PP_ITERATION_1 70
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 69 && BOOST_PP_ITERATION_START_1 >= 69
+# define BOOST_PP_ITERATION_1 69
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 68 && BOOST_PP_ITERATION_START_1 >= 68
+# define BOOST_PP_ITERATION_1 68
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 67 && BOOST_PP_ITERATION_START_1 >= 67
+# define BOOST_PP_ITERATION_1 67
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 66 && BOOST_PP_ITERATION_START_1 >= 66
+# define BOOST_PP_ITERATION_1 66
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 65 && BOOST_PP_ITERATION_START_1 >= 65
+# define BOOST_PP_ITERATION_1 65
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 64 && BOOST_PP_ITERATION_START_1 >= 64
+# define BOOST_PP_ITERATION_1 64
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 63 && BOOST_PP_ITERATION_START_1 >= 63
+# define BOOST_PP_ITERATION_1 63
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 62 && BOOST_PP_ITERATION_START_1 >= 62
+# define BOOST_PP_ITERATION_1 62
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 61 && BOOST_PP_ITERATION_START_1 >= 61
+# define BOOST_PP_ITERATION_1 61
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 60 && BOOST_PP_ITERATION_START_1 >= 60
+# define BOOST_PP_ITERATION_1 60
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 59 && BOOST_PP_ITERATION_START_1 >= 59
+# define BOOST_PP_ITERATION_1 59
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 58 && BOOST_PP_ITERATION_START_1 >= 58
+# define BOOST_PP_ITERATION_1 58
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 57 && BOOST_PP_ITERATION_START_1 >= 57
+# define BOOST_PP_ITERATION_1 57
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 56 && BOOST_PP_ITERATION_START_1 >= 56
+# define BOOST_PP_ITERATION_1 56
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 55 && BOOST_PP_ITERATION_START_1 >= 55
+# define BOOST_PP_ITERATION_1 55
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 54 && BOOST_PP_ITERATION_START_1 >= 54
+# define BOOST_PP_ITERATION_1 54
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 53 && BOOST_PP_ITERATION_START_1 >= 53
+# define BOOST_PP_ITERATION_1 53
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 52 && BOOST_PP_ITERATION_START_1 >= 52
+# define BOOST_PP_ITERATION_1 52
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 51 && BOOST_PP_ITERATION_START_1 >= 51
+# define BOOST_PP_ITERATION_1 51
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 50 && BOOST_PP_ITERATION_START_1 >= 50
+# define BOOST_PP_ITERATION_1 50
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 49 && BOOST_PP_ITERATION_START_1 >= 49
+# define BOOST_PP_ITERATION_1 49
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 48 && BOOST_PP_ITERATION_START_1 >= 48
+# define BOOST_PP_ITERATION_1 48
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 47 && BOOST_PP_ITERATION_START_1 >= 47
+# define BOOST_PP_ITERATION_1 47
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 46 && BOOST_PP_ITERATION_START_1 >= 46
+# define BOOST_PP_ITERATION_1 46
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 45 && BOOST_PP_ITERATION_START_1 >= 45
+# define BOOST_PP_ITERATION_1 45
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 44 && BOOST_PP_ITERATION_START_1 >= 44
+# define BOOST_PP_ITERATION_1 44
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 43 && BOOST_PP_ITERATION_START_1 >= 43
+# define BOOST_PP_ITERATION_1 43
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 42 && BOOST_PP_ITERATION_START_1 >= 42
+# define BOOST_PP_ITERATION_1 42
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 41 && BOOST_PP_ITERATION_START_1 >= 41
+# define BOOST_PP_ITERATION_1 41
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 40 && BOOST_PP_ITERATION_START_1 >= 40
+# define BOOST_PP_ITERATION_1 40
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 39 && BOOST_PP_ITERATION_START_1 >= 39
+# define BOOST_PP_ITERATION_1 39
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 38 && BOOST_PP_ITERATION_START_1 >= 38
+# define BOOST_PP_ITERATION_1 38
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 37 && BOOST_PP_ITERATION_START_1 >= 37
+# define BOOST_PP_ITERATION_1 37
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 36 && BOOST_PP_ITERATION_START_1 >= 36
+# define BOOST_PP_ITERATION_1 36
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 35 && BOOST_PP_ITERATION_START_1 >= 35
+# define BOOST_PP_ITERATION_1 35
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 34 && BOOST_PP_ITERATION_START_1 >= 34
+# define BOOST_PP_ITERATION_1 34
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 33 && BOOST_PP_ITERATION_START_1 >= 33
+# define BOOST_PP_ITERATION_1 33
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 32 && BOOST_PP_ITERATION_START_1 >= 32
+# define BOOST_PP_ITERATION_1 32
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 31 && BOOST_PP_ITERATION_START_1 >= 31
+# define BOOST_PP_ITERATION_1 31
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 30 && BOOST_PP_ITERATION_START_1 >= 30
+# define BOOST_PP_ITERATION_1 30
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 29 && BOOST_PP_ITERATION_START_1 >= 29
+# define BOOST_PP_ITERATION_1 29
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 28 && BOOST_PP_ITERATION_START_1 >= 28
+# define BOOST_PP_ITERATION_1 28
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 27 && BOOST_PP_ITERATION_START_1 >= 27
+# define BOOST_PP_ITERATION_1 27
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 26 && BOOST_PP_ITERATION_START_1 >= 26
+# define BOOST_PP_ITERATION_1 26
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 25 && BOOST_PP_ITERATION_START_1 >= 25
+# define BOOST_PP_ITERATION_1 25
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 24 && BOOST_PP_ITERATION_START_1 >= 24
+# define BOOST_PP_ITERATION_1 24
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 23 && BOOST_PP_ITERATION_START_1 >= 23
+# define BOOST_PP_ITERATION_1 23
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 22 && BOOST_PP_ITERATION_START_1 >= 22
+# define BOOST_PP_ITERATION_1 22
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 21 && BOOST_PP_ITERATION_START_1 >= 21
+# define BOOST_PP_ITERATION_1 21
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 20 && BOOST_PP_ITERATION_START_1 >= 20
+# define BOOST_PP_ITERATION_1 20
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 19 && BOOST_PP_ITERATION_START_1 >= 19
+# define BOOST_PP_ITERATION_1 19
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 18 && BOOST_PP_ITERATION_START_1 >= 18
+# define BOOST_PP_ITERATION_1 18
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 17 && BOOST_PP_ITERATION_START_1 >= 17
+# define BOOST_PP_ITERATION_1 17
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 16 && BOOST_PP_ITERATION_START_1 >= 16
+# define BOOST_PP_ITERATION_1 16
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 15 && BOOST_PP_ITERATION_START_1 >= 15
+# define BOOST_PP_ITERATION_1 15
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 14 && BOOST_PP_ITERATION_START_1 >= 14
+# define BOOST_PP_ITERATION_1 14
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 13 && BOOST_PP_ITERATION_START_1 >= 13
+# define BOOST_PP_ITERATION_1 13
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 12 && BOOST_PP_ITERATION_START_1 >= 12
+# define BOOST_PP_ITERATION_1 12
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 11 && BOOST_PP_ITERATION_START_1 >= 11
+# define BOOST_PP_ITERATION_1 11
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 10 && BOOST_PP_ITERATION_START_1 >= 10
+# define BOOST_PP_ITERATION_1 10
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 9 && BOOST_PP_ITERATION_START_1 >= 9
+# define BOOST_PP_ITERATION_1 9
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 8 && BOOST_PP_ITERATION_START_1 >= 8
+# define BOOST_PP_ITERATION_1 8
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 7 && BOOST_PP_ITERATION_START_1 >= 7
+# define BOOST_PP_ITERATION_1 7
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 6 && BOOST_PP_ITERATION_START_1 >= 6
+# define BOOST_PP_ITERATION_1 6
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 5 && BOOST_PP_ITERATION_START_1 >= 5
+# define BOOST_PP_ITERATION_1 5
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 4 && BOOST_PP_ITERATION_START_1 >= 4
+# define BOOST_PP_ITERATION_1 4
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 3 && BOOST_PP_ITERATION_START_1 >= 3
+# define BOOST_PP_ITERATION_1 3
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 2 && BOOST_PP_ITERATION_START_1 >= 2
+# define BOOST_PP_ITERATION_1 2
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 1 && BOOST_PP_ITERATION_START_1 >= 1
+# define BOOST_PP_ITERATION_1 1
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 0 && BOOST_PP_ITERATION_START_1 >= 0
+# define BOOST_PP_ITERATION_1 0
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp
new file mode 100644
index 0000000..521bd24
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse2.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if BOOST_PP_ITERATION_FINISH_2 <= 256 && BOOST_PP_ITERATION_START_2 >= 256
+# define BOOST_PP_ITERATION_2 256
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 255 && BOOST_PP_ITERATION_START_2 >= 255
+# define BOOST_PP_ITERATION_2 255
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 254 && BOOST_PP_ITERATION_START_2 >= 254
+# define BOOST_PP_ITERATION_2 254
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 253 && BOOST_PP_ITERATION_START_2 >= 253
+# define BOOST_PP_ITERATION_2 253
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 252 && BOOST_PP_ITERATION_START_2 >= 252
+# define BOOST_PP_ITERATION_2 252
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 251 && BOOST_PP_ITERATION_START_2 >= 251
+# define BOOST_PP_ITERATION_2 251
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 250 && BOOST_PP_ITERATION_START_2 >= 250
+# define BOOST_PP_ITERATION_2 250
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 249 && BOOST_PP_ITERATION_START_2 >= 249
+# define BOOST_PP_ITERATION_2 249
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 248 && BOOST_PP_ITERATION_START_2 >= 248
+# define BOOST_PP_ITERATION_2 248
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 247 && BOOST_PP_ITERATION_START_2 >= 247
+# define BOOST_PP_ITERATION_2 247
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 246 && BOOST_PP_ITERATION_START_2 >= 246
+# define BOOST_PP_ITERATION_2 246
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 245 && BOOST_PP_ITERATION_START_2 >= 245
+# define BOOST_PP_ITERATION_2 245
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 244 && BOOST_PP_ITERATION_START_2 >= 244
+# define BOOST_PP_ITERATION_2 244
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 243 && BOOST_PP_ITERATION_START_2 >= 243
+# define BOOST_PP_ITERATION_2 243
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 242 && BOOST_PP_ITERATION_START_2 >= 242
+# define BOOST_PP_ITERATION_2 242
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 241 && BOOST_PP_ITERATION_START_2 >= 241
+# define BOOST_PP_ITERATION_2 241
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 240 && BOOST_PP_ITERATION_START_2 >= 240
+# define BOOST_PP_ITERATION_2 240
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 239 && BOOST_PP_ITERATION_START_2 >= 239
+# define BOOST_PP_ITERATION_2 239
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 238 && BOOST_PP_ITERATION_START_2 >= 238
+# define BOOST_PP_ITERATION_2 238
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 237 && BOOST_PP_ITERATION_START_2 >= 237
+# define BOOST_PP_ITERATION_2 237
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 236 && BOOST_PP_ITERATION_START_2 >= 236
+# define BOOST_PP_ITERATION_2 236
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 235 && BOOST_PP_ITERATION_START_2 >= 235
+# define BOOST_PP_ITERATION_2 235
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 234 && BOOST_PP_ITERATION_START_2 >= 234
+# define BOOST_PP_ITERATION_2 234
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 233 && BOOST_PP_ITERATION_START_2 >= 233
+# define BOOST_PP_ITERATION_2 233
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 232 && BOOST_PP_ITERATION_START_2 >= 232
+# define BOOST_PP_ITERATION_2 232
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 231 && BOOST_PP_ITERATION_START_2 >= 231
+# define BOOST_PP_ITERATION_2 231
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 230 && BOOST_PP_ITERATION_START_2 >= 230
+# define BOOST_PP_ITERATION_2 230
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 229 && BOOST_PP_ITERATION_START_2 >= 229
+# define BOOST_PP_ITERATION_2 229
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 228 && BOOST_PP_ITERATION_START_2 >= 228
+# define BOOST_PP_ITERATION_2 228
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 227 && BOOST_PP_ITERATION_START_2 >= 227
+# define BOOST_PP_ITERATION_2 227
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 226 && BOOST_PP_ITERATION_START_2 >= 226
+# define BOOST_PP_ITERATION_2 226
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 225 && BOOST_PP_ITERATION_START_2 >= 225
+# define BOOST_PP_ITERATION_2 225
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 224 && BOOST_PP_ITERATION_START_2 >= 224
+# define BOOST_PP_ITERATION_2 224
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 223 && BOOST_PP_ITERATION_START_2 >= 223
+# define BOOST_PP_ITERATION_2 223
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 222 && BOOST_PP_ITERATION_START_2 >= 222
+# define BOOST_PP_ITERATION_2 222
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 221 && BOOST_PP_ITERATION_START_2 >= 221
+# define BOOST_PP_ITERATION_2 221
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 220 && BOOST_PP_ITERATION_START_2 >= 220
+# define BOOST_PP_ITERATION_2 220
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 219 && BOOST_PP_ITERATION_START_2 >= 219
+# define BOOST_PP_ITERATION_2 219
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 218 && BOOST_PP_ITERATION_START_2 >= 218
+# define BOOST_PP_ITERATION_2 218
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 217 && BOOST_PP_ITERATION_START_2 >= 217
+# define BOOST_PP_ITERATION_2 217
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 216 && BOOST_PP_ITERATION_START_2 >= 216
+# define BOOST_PP_ITERATION_2 216
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 215 && BOOST_PP_ITERATION_START_2 >= 215
+# define BOOST_PP_ITERATION_2 215
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 214 && BOOST_PP_ITERATION_START_2 >= 214
+# define BOOST_PP_ITERATION_2 214
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 213 && BOOST_PP_ITERATION_START_2 >= 213
+# define BOOST_PP_ITERATION_2 213
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 212 && BOOST_PP_ITERATION_START_2 >= 212
+# define BOOST_PP_ITERATION_2 212
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 211 && BOOST_PP_ITERATION_START_2 >= 211
+# define BOOST_PP_ITERATION_2 211
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 210 && BOOST_PP_ITERATION_START_2 >= 210
+# define BOOST_PP_ITERATION_2 210
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 209 && BOOST_PP_ITERATION_START_2 >= 209
+# define BOOST_PP_ITERATION_2 209
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 208 && BOOST_PP_ITERATION_START_2 >= 208
+# define BOOST_PP_ITERATION_2 208
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 207 && BOOST_PP_ITERATION_START_2 >= 207
+# define BOOST_PP_ITERATION_2 207
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 206 && BOOST_PP_ITERATION_START_2 >= 206
+# define BOOST_PP_ITERATION_2 206
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 205 && BOOST_PP_ITERATION_START_2 >= 205
+# define BOOST_PP_ITERATION_2 205
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 204 && BOOST_PP_ITERATION_START_2 >= 204
+# define BOOST_PP_ITERATION_2 204
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 203 && BOOST_PP_ITERATION_START_2 >= 203
+# define BOOST_PP_ITERATION_2 203
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 202 && BOOST_PP_ITERATION_START_2 >= 202
+# define BOOST_PP_ITERATION_2 202
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 201 && BOOST_PP_ITERATION_START_2 >= 201
+# define BOOST_PP_ITERATION_2 201
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 200 && BOOST_PP_ITERATION_START_2 >= 200
+# define BOOST_PP_ITERATION_2 200
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 199 && BOOST_PP_ITERATION_START_2 >= 199
+# define BOOST_PP_ITERATION_2 199
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 198 && BOOST_PP_ITERATION_START_2 >= 198
+# define BOOST_PP_ITERATION_2 198
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 197 && BOOST_PP_ITERATION_START_2 >= 197
+# define BOOST_PP_ITERATION_2 197
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 196 && BOOST_PP_ITERATION_START_2 >= 196
+# define BOOST_PP_ITERATION_2 196
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 195 && BOOST_PP_ITERATION_START_2 >= 195
+# define BOOST_PP_ITERATION_2 195
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 194 && BOOST_PP_ITERATION_START_2 >= 194
+# define BOOST_PP_ITERATION_2 194
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 193 && BOOST_PP_ITERATION_START_2 >= 193
+# define BOOST_PP_ITERATION_2 193
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 192 && BOOST_PP_ITERATION_START_2 >= 192
+# define BOOST_PP_ITERATION_2 192
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 191 && BOOST_PP_ITERATION_START_2 >= 191
+# define BOOST_PP_ITERATION_2 191
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 190 && BOOST_PP_ITERATION_START_2 >= 190
+# define BOOST_PP_ITERATION_2 190
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 189 && BOOST_PP_ITERATION_START_2 >= 189
+# define BOOST_PP_ITERATION_2 189
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 188 && BOOST_PP_ITERATION_START_2 >= 188
+# define BOOST_PP_ITERATION_2 188
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 187 && BOOST_PP_ITERATION_START_2 >= 187
+# define BOOST_PP_ITERATION_2 187
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 186 && BOOST_PP_ITERATION_START_2 >= 186
+# define BOOST_PP_ITERATION_2 186
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 185 && BOOST_PP_ITERATION_START_2 >= 185
+# define BOOST_PP_ITERATION_2 185
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 184 && BOOST_PP_ITERATION_START_2 >= 184
+# define BOOST_PP_ITERATION_2 184
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 183 && BOOST_PP_ITERATION_START_2 >= 183
+# define BOOST_PP_ITERATION_2 183
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 182 && BOOST_PP_ITERATION_START_2 >= 182
+# define BOOST_PP_ITERATION_2 182
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 181 && BOOST_PP_ITERATION_START_2 >= 181
+# define BOOST_PP_ITERATION_2 181
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 180 && BOOST_PP_ITERATION_START_2 >= 180
+# define BOOST_PP_ITERATION_2 180
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 179 && BOOST_PP_ITERATION_START_2 >= 179
+# define BOOST_PP_ITERATION_2 179
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 178 && BOOST_PP_ITERATION_START_2 >= 178
+# define BOOST_PP_ITERATION_2 178
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 177 && BOOST_PP_ITERATION_START_2 >= 177
+# define BOOST_PP_ITERATION_2 177
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 176 && BOOST_PP_ITERATION_START_2 >= 176
+# define BOOST_PP_ITERATION_2 176
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 175 && BOOST_PP_ITERATION_START_2 >= 175
+# define BOOST_PP_ITERATION_2 175
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 174 && BOOST_PP_ITERATION_START_2 >= 174
+# define BOOST_PP_ITERATION_2 174
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 173 && BOOST_PP_ITERATION_START_2 >= 173
+# define BOOST_PP_ITERATION_2 173
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 172 && BOOST_PP_ITERATION_START_2 >= 172
+# define BOOST_PP_ITERATION_2 172
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 171 && BOOST_PP_ITERATION_START_2 >= 171
+# define BOOST_PP_ITERATION_2 171
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 170 && BOOST_PP_ITERATION_START_2 >= 170
+# define BOOST_PP_ITERATION_2 170
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 169 && BOOST_PP_ITERATION_START_2 >= 169
+# define BOOST_PP_ITERATION_2 169
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 168 && BOOST_PP_ITERATION_START_2 >= 168
+# define BOOST_PP_ITERATION_2 168
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 167 && BOOST_PP_ITERATION_START_2 >= 167
+# define BOOST_PP_ITERATION_2 167
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 166 && BOOST_PP_ITERATION_START_2 >= 166
+# define BOOST_PP_ITERATION_2 166
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 165 && BOOST_PP_ITERATION_START_2 >= 165
+# define BOOST_PP_ITERATION_2 165
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 164 && BOOST_PP_ITERATION_START_2 >= 164
+# define BOOST_PP_ITERATION_2 164
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 163 && BOOST_PP_ITERATION_START_2 >= 163
+# define BOOST_PP_ITERATION_2 163
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 162 && BOOST_PP_ITERATION_START_2 >= 162
+# define BOOST_PP_ITERATION_2 162
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 161 && BOOST_PP_ITERATION_START_2 >= 161
+# define BOOST_PP_ITERATION_2 161
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 160 && BOOST_PP_ITERATION_START_2 >= 160
+# define BOOST_PP_ITERATION_2 160
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 159 && BOOST_PP_ITERATION_START_2 >= 159
+# define BOOST_PP_ITERATION_2 159
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 158 && BOOST_PP_ITERATION_START_2 >= 158
+# define BOOST_PP_ITERATION_2 158
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 157 && BOOST_PP_ITERATION_START_2 >= 157
+# define BOOST_PP_ITERATION_2 157
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 156 && BOOST_PP_ITERATION_START_2 >= 156
+# define BOOST_PP_ITERATION_2 156
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 155 && BOOST_PP_ITERATION_START_2 >= 155
+# define BOOST_PP_ITERATION_2 155
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 154 && BOOST_PP_ITERATION_START_2 >= 154
+# define BOOST_PP_ITERATION_2 154
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 153 && BOOST_PP_ITERATION_START_2 >= 153
+# define BOOST_PP_ITERATION_2 153
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 152 && BOOST_PP_ITERATION_START_2 >= 152
+# define BOOST_PP_ITERATION_2 152
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 151 && BOOST_PP_ITERATION_START_2 >= 151
+# define BOOST_PP_ITERATION_2 151
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 150 && BOOST_PP_ITERATION_START_2 >= 150
+# define BOOST_PP_ITERATION_2 150
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 149 && BOOST_PP_ITERATION_START_2 >= 149
+# define BOOST_PP_ITERATION_2 149
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 148 && BOOST_PP_ITERATION_START_2 >= 148
+# define BOOST_PP_ITERATION_2 148
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 147 && BOOST_PP_ITERATION_START_2 >= 147
+# define BOOST_PP_ITERATION_2 147
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 146 && BOOST_PP_ITERATION_START_2 >= 146
+# define BOOST_PP_ITERATION_2 146
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 145 && BOOST_PP_ITERATION_START_2 >= 145
+# define BOOST_PP_ITERATION_2 145
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 144 && BOOST_PP_ITERATION_START_2 >= 144
+# define BOOST_PP_ITERATION_2 144
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 143 && BOOST_PP_ITERATION_START_2 >= 143
+# define BOOST_PP_ITERATION_2 143
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 142 && BOOST_PP_ITERATION_START_2 >= 142
+# define BOOST_PP_ITERATION_2 142
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 141 && BOOST_PP_ITERATION_START_2 >= 141
+# define BOOST_PP_ITERATION_2 141
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 140 && BOOST_PP_ITERATION_START_2 >= 140
+# define BOOST_PP_ITERATION_2 140
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 139 && BOOST_PP_ITERATION_START_2 >= 139
+# define BOOST_PP_ITERATION_2 139
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 138 && BOOST_PP_ITERATION_START_2 >= 138
+# define BOOST_PP_ITERATION_2 138
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 137 && BOOST_PP_ITERATION_START_2 >= 137
+# define BOOST_PP_ITERATION_2 137
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 136 && BOOST_PP_ITERATION_START_2 >= 136
+# define BOOST_PP_ITERATION_2 136
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 135 && BOOST_PP_ITERATION_START_2 >= 135
+# define BOOST_PP_ITERATION_2 135
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 134 && BOOST_PP_ITERATION_START_2 >= 134
+# define BOOST_PP_ITERATION_2 134
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 133 && BOOST_PP_ITERATION_START_2 >= 133
+# define BOOST_PP_ITERATION_2 133
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 132 && BOOST_PP_ITERATION_START_2 >= 132
+# define BOOST_PP_ITERATION_2 132
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 131 && BOOST_PP_ITERATION_START_2 >= 131
+# define BOOST_PP_ITERATION_2 131
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 130 && BOOST_PP_ITERATION_START_2 >= 130
+# define BOOST_PP_ITERATION_2 130
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 129 && BOOST_PP_ITERATION_START_2 >= 129
+# define BOOST_PP_ITERATION_2 129
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 128 && BOOST_PP_ITERATION_START_2 >= 128
+# define BOOST_PP_ITERATION_2 128
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 127 && BOOST_PP_ITERATION_START_2 >= 127
+# define BOOST_PP_ITERATION_2 127
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 126 && BOOST_PP_ITERATION_START_2 >= 126
+# define BOOST_PP_ITERATION_2 126
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 125 && BOOST_PP_ITERATION_START_2 >= 125
+# define BOOST_PP_ITERATION_2 125
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 124 && BOOST_PP_ITERATION_START_2 >= 124
+# define BOOST_PP_ITERATION_2 124
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 123 && BOOST_PP_ITERATION_START_2 >= 123
+# define BOOST_PP_ITERATION_2 123
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 122 && BOOST_PP_ITERATION_START_2 >= 122
+# define BOOST_PP_ITERATION_2 122
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 121 && BOOST_PP_ITERATION_START_2 >= 121
+# define BOOST_PP_ITERATION_2 121
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 120 && BOOST_PP_ITERATION_START_2 >= 120
+# define BOOST_PP_ITERATION_2 120
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 119 && BOOST_PP_ITERATION_START_2 >= 119
+# define BOOST_PP_ITERATION_2 119
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 118 && BOOST_PP_ITERATION_START_2 >= 118
+# define BOOST_PP_ITERATION_2 118
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 117 && BOOST_PP_ITERATION_START_2 >= 117
+# define BOOST_PP_ITERATION_2 117
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 116 && BOOST_PP_ITERATION_START_2 >= 116
+# define BOOST_PP_ITERATION_2 116
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 115 && BOOST_PP_ITERATION_START_2 >= 115
+# define BOOST_PP_ITERATION_2 115
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 114 && BOOST_PP_ITERATION_START_2 >= 114
+# define BOOST_PP_ITERATION_2 114
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 113 && BOOST_PP_ITERATION_START_2 >= 113
+# define BOOST_PP_ITERATION_2 113
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 112 && BOOST_PP_ITERATION_START_2 >= 112
+# define BOOST_PP_ITERATION_2 112
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 111 && BOOST_PP_ITERATION_START_2 >= 111
+# define BOOST_PP_ITERATION_2 111
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 110 && BOOST_PP_ITERATION_START_2 >= 110
+# define BOOST_PP_ITERATION_2 110
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 109 && BOOST_PP_ITERATION_START_2 >= 109
+# define BOOST_PP_ITERATION_2 109
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 108 && BOOST_PP_ITERATION_START_2 >= 108
+# define BOOST_PP_ITERATION_2 108
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 107 && BOOST_PP_ITERATION_START_2 >= 107
+# define BOOST_PP_ITERATION_2 107
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 106 && BOOST_PP_ITERATION_START_2 >= 106
+# define BOOST_PP_ITERATION_2 106
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 105 && BOOST_PP_ITERATION_START_2 >= 105
+# define BOOST_PP_ITERATION_2 105
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 104 && BOOST_PP_ITERATION_START_2 >= 104
+# define BOOST_PP_ITERATION_2 104
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 103 && BOOST_PP_ITERATION_START_2 >= 103
+# define BOOST_PP_ITERATION_2 103
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 102 && BOOST_PP_ITERATION_START_2 >= 102
+# define BOOST_PP_ITERATION_2 102
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 101 && BOOST_PP_ITERATION_START_2 >= 101
+# define BOOST_PP_ITERATION_2 101
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 100 && BOOST_PP_ITERATION_START_2 >= 100
+# define BOOST_PP_ITERATION_2 100
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 99 && BOOST_PP_ITERATION_START_2 >= 99
+# define BOOST_PP_ITERATION_2 99
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 98 && BOOST_PP_ITERATION_START_2 >= 98
+# define BOOST_PP_ITERATION_2 98
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 97 && BOOST_PP_ITERATION_START_2 >= 97
+# define BOOST_PP_ITERATION_2 97
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 96 && BOOST_PP_ITERATION_START_2 >= 96
+# define BOOST_PP_ITERATION_2 96
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 95 && BOOST_PP_ITERATION_START_2 >= 95
+# define BOOST_PP_ITERATION_2 95
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 94 && BOOST_PP_ITERATION_START_2 >= 94
+# define BOOST_PP_ITERATION_2 94
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 93 && BOOST_PP_ITERATION_START_2 >= 93
+# define BOOST_PP_ITERATION_2 93
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 92 && BOOST_PP_ITERATION_START_2 >= 92
+# define BOOST_PP_ITERATION_2 92
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 91 && BOOST_PP_ITERATION_START_2 >= 91
+# define BOOST_PP_ITERATION_2 91
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 90 && BOOST_PP_ITERATION_START_2 >= 90
+# define BOOST_PP_ITERATION_2 90
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 89 && BOOST_PP_ITERATION_START_2 >= 89
+# define BOOST_PP_ITERATION_2 89
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 88 && BOOST_PP_ITERATION_START_2 >= 88
+# define BOOST_PP_ITERATION_2 88
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 87 && BOOST_PP_ITERATION_START_2 >= 87
+# define BOOST_PP_ITERATION_2 87
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 86 && BOOST_PP_ITERATION_START_2 >= 86
+# define BOOST_PP_ITERATION_2 86
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 85 && BOOST_PP_ITERATION_START_2 >= 85
+# define BOOST_PP_ITERATION_2 85
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 84 && BOOST_PP_ITERATION_START_2 >= 84
+# define BOOST_PP_ITERATION_2 84
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 83 && BOOST_PP_ITERATION_START_2 >= 83
+# define BOOST_PP_ITERATION_2 83
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 82 && BOOST_PP_ITERATION_START_2 >= 82
+# define BOOST_PP_ITERATION_2 82
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 81 && BOOST_PP_ITERATION_START_2 >= 81
+# define BOOST_PP_ITERATION_2 81
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 80 && BOOST_PP_ITERATION_START_2 >= 80
+# define BOOST_PP_ITERATION_2 80
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 79 && BOOST_PP_ITERATION_START_2 >= 79
+# define BOOST_PP_ITERATION_2 79
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 78 && BOOST_PP_ITERATION_START_2 >= 78
+# define BOOST_PP_ITERATION_2 78
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 77 && BOOST_PP_ITERATION_START_2 >= 77
+# define BOOST_PP_ITERATION_2 77
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 76 && BOOST_PP_ITERATION_START_2 >= 76
+# define BOOST_PP_ITERATION_2 76
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 75 && BOOST_PP_ITERATION_START_2 >= 75
+# define BOOST_PP_ITERATION_2 75
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 74 && BOOST_PP_ITERATION_START_2 >= 74
+# define BOOST_PP_ITERATION_2 74
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 73 && BOOST_PP_ITERATION_START_2 >= 73
+# define BOOST_PP_ITERATION_2 73
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 72 && BOOST_PP_ITERATION_START_2 >= 72
+# define BOOST_PP_ITERATION_2 72
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 71 && BOOST_PP_ITERATION_START_2 >= 71
+# define BOOST_PP_ITERATION_2 71
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 70 && BOOST_PP_ITERATION_START_2 >= 70
+# define BOOST_PP_ITERATION_2 70
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 69 && BOOST_PP_ITERATION_START_2 >= 69
+# define BOOST_PP_ITERATION_2 69
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 68 && BOOST_PP_ITERATION_START_2 >= 68
+# define BOOST_PP_ITERATION_2 68
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 67 && BOOST_PP_ITERATION_START_2 >= 67
+# define BOOST_PP_ITERATION_2 67
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 66 && BOOST_PP_ITERATION_START_2 >= 66
+# define BOOST_PP_ITERATION_2 66
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 65 && BOOST_PP_ITERATION_START_2 >= 65
+# define BOOST_PP_ITERATION_2 65
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 64 && BOOST_PP_ITERATION_START_2 >= 64
+# define BOOST_PP_ITERATION_2 64
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 63 && BOOST_PP_ITERATION_START_2 >= 63
+# define BOOST_PP_ITERATION_2 63
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 62 && BOOST_PP_ITERATION_START_2 >= 62
+# define BOOST_PP_ITERATION_2 62
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 61 && BOOST_PP_ITERATION_START_2 >= 61
+# define BOOST_PP_ITERATION_2 61
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 60 && BOOST_PP_ITERATION_START_2 >= 60
+# define BOOST_PP_ITERATION_2 60
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 59 && BOOST_PP_ITERATION_START_2 >= 59
+# define BOOST_PP_ITERATION_2 59
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 58 && BOOST_PP_ITERATION_START_2 >= 58
+# define BOOST_PP_ITERATION_2 58
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 57 && BOOST_PP_ITERATION_START_2 >= 57
+# define BOOST_PP_ITERATION_2 57
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 56 && BOOST_PP_ITERATION_START_2 >= 56
+# define BOOST_PP_ITERATION_2 56
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 55 && BOOST_PP_ITERATION_START_2 >= 55
+# define BOOST_PP_ITERATION_2 55
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 54 && BOOST_PP_ITERATION_START_2 >= 54
+# define BOOST_PP_ITERATION_2 54
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 53 && BOOST_PP_ITERATION_START_2 >= 53
+# define BOOST_PP_ITERATION_2 53
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 52 && BOOST_PP_ITERATION_START_2 >= 52
+# define BOOST_PP_ITERATION_2 52
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 51 && BOOST_PP_ITERATION_START_2 >= 51
+# define BOOST_PP_ITERATION_2 51
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 50 && BOOST_PP_ITERATION_START_2 >= 50
+# define BOOST_PP_ITERATION_2 50
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 49 && BOOST_PP_ITERATION_START_2 >= 49
+# define BOOST_PP_ITERATION_2 49
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 48 && BOOST_PP_ITERATION_START_2 >= 48
+# define BOOST_PP_ITERATION_2 48
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 47 && BOOST_PP_ITERATION_START_2 >= 47
+# define BOOST_PP_ITERATION_2 47
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 46 && BOOST_PP_ITERATION_START_2 >= 46
+# define BOOST_PP_ITERATION_2 46
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 45 && BOOST_PP_ITERATION_START_2 >= 45
+# define BOOST_PP_ITERATION_2 45
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 44 && BOOST_PP_ITERATION_START_2 >= 44
+# define BOOST_PP_ITERATION_2 44
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 43 && BOOST_PP_ITERATION_START_2 >= 43
+# define BOOST_PP_ITERATION_2 43
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 42 && BOOST_PP_ITERATION_START_2 >= 42
+# define BOOST_PP_ITERATION_2 42
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 41 && BOOST_PP_ITERATION_START_2 >= 41
+# define BOOST_PP_ITERATION_2 41
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 40 && BOOST_PP_ITERATION_START_2 >= 40
+# define BOOST_PP_ITERATION_2 40
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 39 && BOOST_PP_ITERATION_START_2 >= 39
+# define BOOST_PP_ITERATION_2 39
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 38 && BOOST_PP_ITERATION_START_2 >= 38
+# define BOOST_PP_ITERATION_2 38
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 37 && BOOST_PP_ITERATION_START_2 >= 37
+# define BOOST_PP_ITERATION_2 37
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 36 && BOOST_PP_ITERATION_START_2 >= 36
+# define BOOST_PP_ITERATION_2 36
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 35 && BOOST_PP_ITERATION_START_2 >= 35
+# define BOOST_PP_ITERATION_2 35
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 34 && BOOST_PP_ITERATION_START_2 >= 34
+# define BOOST_PP_ITERATION_2 34
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 33 && BOOST_PP_ITERATION_START_2 >= 33
+# define BOOST_PP_ITERATION_2 33
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 32 && BOOST_PP_ITERATION_START_2 >= 32
+# define BOOST_PP_ITERATION_2 32
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 31 && BOOST_PP_ITERATION_START_2 >= 31
+# define BOOST_PP_ITERATION_2 31
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 30 && BOOST_PP_ITERATION_START_2 >= 30
+# define BOOST_PP_ITERATION_2 30
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 29 && BOOST_PP_ITERATION_START_2 >= 29
+# define BOOST_PP_ITERATION_2 29
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 28 && BOOST_PP_ITERATION_START_2 >= 28
+# define BOOST_PP_ITERATION_2 28
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 27 && BOOST_PP_ITERATION_START_2 >= 27
+# define BOOST_PP_ITERATION_2 27
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 26 && BOOST_PP_ITERATION_START_2 >= 26
+# define BOOST_PP_ITERATION_2 26
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 25 && BOOST_PP_ITERATION_START_2 >= 25
+# define BOOST_PP_ITERATION_2 25
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 24 && BOOST_PP_ITERATION_START_2 >= 24
+# define BOOST_PP_ITERATION_2 24
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 23 && BOOST_PP_ITERATION_START_2 >= 23
+# define BOOST_PP_ITERATION_2 23
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 22 && BOOST_PP_ITERATION_START_2 >= 22
+# define BOOST_PP_ITERATION_2 22
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 21 && BOOST_PP_ITERATION_START_2 >= 21
+# define BOOST_PP_ITERATION_2 21
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 20 && BOOST_PP_ITERATION_START_2 >= 20
+# define BOOST_PP_ITERATION_2 20
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 19 && BOOST_PP_ITERATION_START_2 >= 19
+# define BOOST_PP_ITERATION_2 19
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 18 && BOOST_PP_ITERATION_START_2 >= 18
+# define BOOST_PP_ITERATION_2 18
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 17 && BOOST_PP_ITERATION_START_2 >= 17
+# define BOOST_PP_ITERATION_2 17
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 16 && BOOST_PP_ITERATION_START_2 >= 16
+# define BOOST_PP_ITERATION_2 16
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 15 && BOOST_PP_ITERATION_START_2 >= 15
+# define BOOST_PP_ITERATION_2 15
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 14 && BOOST_PP_ITERATION_START_2 >= 14
+# define BOOST_PP_ITERATION_2 14
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 13 && BOOST_PP_ITERATION_START_2 >= 13
+# define BOOST_PP_ITERATION_2 13
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 12 && BOOST_PP_ITERATION_START_2 >= 12
+# define BOOST_PP_ITERATION_2 12
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 11 && BOOST_PP_ITERATION_START_2 >= 11
+# define BOOST_PP_ITERATION_2 11
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 10 && BOOST_PP_ITERATION_START_2 >= 10
+# define BOOST_PP_ITERATION_2 10
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 9 && BOOST_PP_ITERATION_START_2 >= 9
+# define BOOST_PP_ITERATION_2 9
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 8 && BOOST_PP_ITERATION_START_2 >= 8
+# define BOOST_PP_ITERATION_2 8
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 7 && BOOST_PP_ITERATION_START_2 >= 7
+# define BOOST_PP_ITERATION_2 7
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 6 && BOOST_PP_ITERATION_START_2 >= 6
+# define BOOST_PP_ITERATION_2 6
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 5 && BOOST_PP_ITERATION_START_2 >= 5
+# define BOOST_PP_ITERATION_2 5
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 4 && BOOST_PP_ITERATION_START_2 >= 4
+# define BOOST_PP_ITERATION_2 4
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 3 && BOOST_PP_ITERATION_START_2 >= 3
+# define BOOST_PP_ITERATION_2 3
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 2 && BOOST_PP_ITERATION_START_2 >= 2
+# define BOOST_PP_ITERATION_2 2
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 1 && BOOST_PP_ITERATION_START_2 >= 1
+# define BOOST_PP_ITERATION_2 1
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 0 && BOOST_PP_ITERATION_START_2 >= 0
+# define BOOST_PP_ITERATION_2 0
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp
new file mode 100644
index 0000000..0a65514
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse3.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if BOOST_PP_ITERATION_FINISH_3 <= 256 && BOOST_PP_ITERATION_START_3 >= 256
+# define BOOST_PP_ITERATION_3 256
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 255 && BOOST_PP_ITERATION_START_3 >= 255
+# define BOOST_PP_ITERATION_3 255
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 254 && BOOST_PP_ITERATION_START_3 >= 254
+# define BOOST_PP_ITERATION_3 254
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 253 && BOOST_PP_ITERATION_START_3 >= 253
+# define BOOST_PP_ITERATION_3 253
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 252 && BOOST_PP_ITERATION_START_3 >= 252
+# define BOOST_PP_ITERATION_3 252
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 251 && BOOST_PP_ITERATION_START_3 >= 251
+# define BOOST_PP_ITERATION_3 251
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 250 && BOOST_PP_ITERATION_START_3 >= 250
+# define BOOST_PP_ITERATION_3 250
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 249 && BOOST_PP_ITERATION_START_3 >= 249
+# define BOOST_PP_ITERATION_3 249
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 248 && BOOST_PP_ITERATION_START_3 >= 248
+# define BOOST_PP_ITERATION_3 248
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 247 && BOOST_PP_ITERATION_START_3 >= 247
+# define BOOST_PP_ITERATION_3 247
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 246 && BOOST_PP_ITERATION_START_3 >= 246
+# define BOOST_PP_ITERATION_3 246
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 245 && BOOST_PP_ITERATION_START_3 >= 245
+# define BOOST_PP_ITERATION_3 245
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 244 && BOOST_PP_ITERATION_START_3 >= 244
+# define BOOST_PP_ITERATION_3 244
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 243 && BOOST_PP_ITERATION_START_3 >= 243
+# define BOOST_PP_ITERATION_3 243
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 242 && BOOST_PP_ITERATION_START_3 >= 242
+# define BOOST_PP_ITERATION_3 242
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 241 && BOOST_PP_ITERATION_START_3 >= 241
+# define BOOST_PP_ITERATION_3 241
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 240 && BOOST_PP_ITERATION_START_3 >= 240
+# define BOOST_PP_ITERATION_3 240
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 239 && BOOST_PP_ITERATION_START_3 >= 239
+# define BOOST_PP_ITERATION_3 239
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 238 && BOOST_PP_ITERATION_START_3 >= 238
+# define BOOST_PP_ITERATION_3 238
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 237 && BOOST_PP_ITERATION_START_3 >= 237
+# define BOOST_PP_ITERATION_3 237
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 236 && BOOST_PP_ITERATION_START_3 >= 236
+# define BOOST_PP_ITERATION_3 236
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 235 && BOOST_PP_ITERATION_START_3 >= 235
+# define BOOST_PP_ITERATION_3 235
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 234 && BOOST_PP_ITERATION_START_3 >= 234
+# define BOOST_PP_ITERATION_3 234
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 233 && BOOST_PP_ITERATION_START_3 >= 233
+# define BOOST_PP_ITERATION_3 233
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 232 && BOOST_PP_ITERATION_START_3 >= 232
+# define BOOST_PP_ITERATION_3 232
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 231 && BOOST_PP_ITERATION_START_3 >= 231
+# define BOOST_PP_ITERATION_3 231
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 230 && BOOST_PP_ITERATION_START_3 >= 230
+# define BOOST_PP_ITERATION_3 230
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 229 && BOOST_PP_ITERATION_START_3 >= 229
+# define BOOST_PP_ITERATION_3 229
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 228 && BOOST_PP_ITERATION_START_3 >= 228
+# define BOOST_PP_ITERATION_3 228
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 227 && BOOST_PP_ITERATION_START_3 >= 227
+# define BOOST_PP_ITERATION_3 227
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 226 && BOOST_PP_ITERATION_START_3 >= 226
+# define BOOST_PP_ITERATION_3 226
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 225 && BOOST_PP_ITERATION_START_3 >= 225
+# define BOOST_PP_ITERATION_3 225
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 224 && BOOST_PP_ITERATION_START_3 >= 224
+# define BOOST_PP_ITERATION_3 224
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 223 && BOOST_PP_ITERATION_START_3 >= 223
+# define BOOST_PP_ITERATION_3 223
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 222 && BOOST_PP_ITERATION_START_3 >= 222
+# define BOOST_PP_ITERATION_3 222
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 221 && BOOST_PP_ITERATION_START_3 >= 221
+# define BOOST_PP_ITERATION_3 221
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 220 && BOOST_PP_ITERATION_START_3 >= 220
+# define BOOST_PP_ITERATION_3 220
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 219 && BOOST_PP_ITERATION_START_3 >= 219
+# define BOOST_PP_ITERATION_3 219
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 218 && BOOST_PP_ITERATION_START_3 >= 218
+# define BOOST_PP_ITERATION_3 218
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 217 && BOOST_PP_ITERATION_START_3 >= 217
+# define BOOST_PP_ITERATION_3 217
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 216 && BOOST_PP_ITERATION_START_3 >= 216
+# define BOOST_PP_ITERATION_3 216
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 215 && BOOST_PP_ITERATION_START_3 >= 215
+# define BOOST_PP_ITERATION_3 215
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 214 && BOOST_PP_ITERATION_START_3 >= 214
+# define BOOST_PP_ITERATION_3 214
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 213 && BOOST_PP_ITERATION_START_3 >= 213
+# define BOOST_PP_ITERATION_3 213
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 212 && BOOST_PP_ITERATION_START_3 >= 212
+# define BOOST_PP_ITERATION_3 212
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 211 && BOOST_PP_ITERATION_START_3 >= 211
+# define BOOST_PP_ITERATION_3 211
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 210 && BOOST_PP_ITERATION_START_3 >= 210
+# define BOOST_PP_ITERATION_3 210
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 209 && BOOST_PP_ITERATION_START_3 >= 209
+# define BOOST_PP_ITERATION_3 209
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 208 && BOOST_PP_ITERATION_START_3 >= 208
+# define BOOST_PP_ITERATION_3 208
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 207 && BOOST_PP_ITERATION_START_3 >= 207
+# define BOOST_PP_ITERATION_3 207
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 206 && BOOST_PP_ITERATION_START_3 >= 206
+# define BOOST_PP_ITERATION_3 206
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 205 && BOOST_PP_ITERATION_START_3 >= 205
+# define BOOST_PP_ITERATION_3 205
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 204 && BOOST_PP_ITERATION_START_3 >= 204
+# define BOOST_PP_ITERATION_3 204
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 203 && BOOST_PP_ITERATION_START_3 >= 203
+# define BOOST_PP_ITERATION_3 203
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 202 && BOOST_PP_ITERATION_START_3 >= 202
+# define BOOST_PP_ITERATION_3 202
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 201 && BOOST_PP_ITERATION_START_3 >= 201
+# define BOOST_PP_ITERATION_3 201
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 200 && BOOST_PP_ITERATION_START_3 >= 200
+# define BOOST_PP_ITERATION_3 200
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 199 && BOOST_PP_ITERATION_START_3 >= 199
+# define BOOST_PP_ITERATION_3 199
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 198 && BOOST_PP_ITERATION_START_3 >= 198
+# define BOOST_PP_ITERATION_3 198
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 197 && BOOST_PP_ITERATION_START_3 >= 197
+# define BOOST_PP_ITERATION_3 197
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 196 && BOOST_PP_ITERATION_START_3 >= 196
+# define BOOST_PP_ITERATION_3 196
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 195 && BOOST_PP_ITERATION_START_3 >= 195
+# define BOOST_PP_ITERATION_3 195
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 194 && BOOST_PP_ITERATION_START_3 >= 194
+# define BOOST_PP_ITERATION_3 194
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 193 && BOOST_PP_ITERATION_START_3 >= 193
+# define BOOST_PP_ITERATION_3 193
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 192 && BOOST_PP_ITERATION_START_3 >= 192
+# define BOOST_PP_ITERATION_3 192
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 191 && BOOST_PP_ITERATION_START_3 >= 191
+# define BOOST_PP_ITERATION_3 191
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 190 && BOOST_PP_ITERATION_START_3 >= 190
+# define BOOST_PP_ITERATION_3 190
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 189 && BOOST_PP_ITERATION_START_3 >= 189
+# define BOOST_PP_ITERATION_3 189
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 188 && BOOST_PP_ITERATION_START_3 >= 188
+# define BOOST_PP_ITERATION_3 188
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 187 && BOOST_PP_ITERATION_START_3 >= 187
+# define BOOST_PP_ITERATION_3 187
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 186 && BOOST_PP_ITERATION_START_3 >= 186
+# define BOOST_PP_ITERATION_3 186
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 185 && BOOST_PP_ITERATION_START_3 >= 185
+# define BOOST_PP_ITERATION_3 185
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 184 && BOOST_PP_ITERATION_START_3 >= 184
+# define BOOST_PP_ITERATION_3 184
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 183 && BOOST_PP_ITERATION_START_3 >= 183
+# define BOOST_PP_ITERATION_3 183
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 182 && BOOST_PP_ITERATION_START_3 >= 182
+# define BOOST_PP_ITERATION_3 182
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 181 && BOOST_PP_ITERATION_START_3 >= 181
+# define BOOST_PP_ITERATION_3 181
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 180 && BOOST_PP_ITERATION_START_3 >= 180
+# define BOOST_PP_ITERATION_3 180
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 179 && BOOST_PP_ITERATION_START_3 >= 179
+# define BOOST_PP_ITERATION_3 179
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 178 && BOOST_PP_ITERATION_START_3 >= 178
+# define BOOST_PP_ITERATION_3 178
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 177 && BOOST_PP_ITERATION_START_3 >= 177
+# define BOOST_PP_ITERATION_3 177
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 176 && BOOST_PP_ITERATION_START_3 >= 176
+# define BOOST_PP_ITERATION_3 176
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 175 && BOOST_PP_ITERATION_START_3 >= 175
+# define BOOST_PP_ITERATION_3 175
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 174 && BOOST_PP_ITERATION_START_3 >= 174
+# define BOOST_PP_ITERATION_3 174
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 173 && BOOST_PP_ITERATION_START_3 >= 173
+# define BOOST_PP_ITERATION_3 173
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 172 && BOOST_PP_ITERATION_START_3 >= 172
+# define BOOST_PP_ITERATION_3 172
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 171 && BOOST_PP_ITERATION_START_3 >= 171
+# define BOOST_PP_ITERATION_3 171
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 170 && BOOST_PP_ITERATION_START_3 >= 170
+# define BOOST_PP_ITERATION_3 170
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 169 && BOOST_PP_ITERATION_START_3 >= 169
+# define BOOST_PP_ITERATION_3 169
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 168 && BOOST_PP_ITERATION_START_3 >= 168
+# define BOOST_PP_ITERATION_3 168
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 167 && BOOST_PP_ITERATION_START_3 >= 167
+# define BOOST_PP_ITERATION_3 167
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 166 && BOOST_PP_ITERATION_START_3 >= 166
+# define BOOST_PP_ITERATION_3 166
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 165 && BOOST_PP_ITERATION_START_3 >= 165
+# define BOOST_PP_ITERATION_3 165
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 164 && BOOST_PP_ITERATION_START_3 >= 164
+# define BOOST_PP_ITERATION_3 164
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 163 && BOOST_PP_ITERATION_START_3 >= 163
+# define BOOST_PP_ITERATION_3 163
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 162 && BOOST_PP_ITERATION_START_3 >= 162
+# define BOOST_PP_ITERATION_3 162
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 161 && BOOST_PP_ITERATION_START_3 >= 161
+# define BOOST_PP_ITERATION_3 161
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 160 && BOOST_PP_ITERATION_START_3 >= 160
+# define BOOST_PP_ITERATION_3 160
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 159 && BOOST_PP_ITERATION_START_3 >= 159
+# define BOOST_PP_ITERATION_3 159
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 158 && BOOST_PP_ITERATION_START_3 >= 158
+# define BOOST_PP_ITERATION_3 158
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 157 && BOOST_PP_ITERATION_START_3 >= 157
+# define BOOST_PP_ITERATION_3 157
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 156 && BOOST_PP_ITERATION_START_3 >= 156
+# define BOOST_PP_ITERATION_3 156
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 155 && BOOST_PP_ITERATION_START_3 >= 155
+# define BOOST_PP_ITERATION_3 155
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 154 && BOOST_PP_ITERATION_START_3 >= 154
+# define BOOST_PP_ITERATION_3 154
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 153 && BOOST_PP_ITERATION_START_3 >= 153
+# define BOOST_PP_ITERATION_3 153
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 152 && BOOST_PP_ITERATION_START_3 >= 152
+# define BOOST_PP_ITERATION_3 152
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 151 && BOOST_PP_ITERATION_START_3 >= 151
+# define BOOST_PP_ITERATION_3 151
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 150 && BOOST_PP_ITERATION_START_3 >= 150
+# define BOOST_PP_ITERATION_3 150
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 149 && BOOST_PP_ITERATION_START_3 >= 149
+# define BOOST_PP_ITERATION_3 149
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 148 && BOOST_PP_ITERATION_START_3 >= 148
+# define BOOST_PP_ITERATION_3 148
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 147 && BOOST_PP_ITERATION_START_3 >= 147
+# define BOOST_PP_ITERATION_3 147
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 146 && BOOST_PP_ITERATION_START_3 >= 146
+# define BOOST_PP_ITERATION_3 146
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 145 && BOOST_PP_ITERATION_START_3 >= 145
+# define BOOST_PP_ITERATION_3 145
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 144 && BOOST_PP_ITERATION_START_3 >= 144
+# define BOOST_PP_ITERATION_3 144
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 143 && BOOST_PP_ITERATION_START_3 >= 143
+# define BOOST_PP_ITERATION_3 143
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 142 && BOOST_PP_ITERATION_START_3 >= 142
+# define BOOST_PP_ITERATION_3 142
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 141 && BOOST_PP_ITERATION_START_3 >= 141
+# define BOOST_PP_ITERATION_3 141
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 140 && BOOST_PP_ITERATION_START_3 >= 140
+# define BOOST_PP_ITERATION_3 140
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 139 && BOOST_PP_ITERATION_START_3 >= 139
+# define BOOST_PP_ITERATION_3 139
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 138 && BOOST_PP_ITERATION_START_3 >= 138
+# define BOOST_PP_ITERATION_3 138
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 137 && BOOST_PP_ITERATION_START_3 >= 137
+# define BOOST_PP_ITERATION_3 137
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 136 && BOOST_PP_ITERATION_START_3 >= 136
+# define BOOST_PP_ITERATION_3 136
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 135 && BOOST_PP_ITERATION_START_3 >= 135
+# define BOOST_PP_ITERATION_3 135
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 134 && BOOST_PP_ITERATION_START_3 >= 134
+# define BOOST_PP_ITERATION_3 134
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 133 && BOOST_PP_ITERATION_START_3 >= 133
+# define BOOST_PP_ITERATION_3 133
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 132 && BOOST_PP_ITERATION_START_3 >= 132
+# define BOOST_PP_ITERATION_3 132
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 131 && BOOST_PP_ITERATION_START_3 >= 131
+# define BOOST_PP_ITERATION_3 131
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 130 && BOOST_PP_ITERATION_START_3 >= 130
+# define BOOST_PP_ITERATION_3 130
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 129 && BOOST_PP_ITERATION_START_3 >= 129
+# define BOOST_PP_ITERATION_3 129
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 128 && BOOST_PP_ITERATION_START_3 >= 128
+# define BOOST_PP_ITERATION_3 128
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 127 && BOOST_PP_ITERATION_START_3 >= 127
+# define BOOST_PP_ITERATION_3 127
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 126 && BOOST_PP_ITERATION_START_3 >= 126
+# define BOOST_PP_ITERATION_3 126
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 125 && BOOST_PP_ITERATION_START_3 >= 125
+# define BOOST_PP_ITERATION_3 125
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 124 && BOOST_PP_ITERATION_START_3 >= 124
+# define BOOST_PP_ITERATION_3 124
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 123 && BOOST_PP_ITERATION_START_3 >= 123
+# define BOOST_PP_ITERATION_3 123
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 122 && BOOST_PP_ITERATION_START_3 >= 122
+# define BOOST_PP_ITERATION_3 122
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 121 && BOOST_PP_ITERATION_START_3 >= 121
+# define BOOST_PP_ITERATION_3 121
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 120 && BOOST_PP_ITERATION_START_3 >= 120
+# define BOOST_PP_ITERATION_3 120
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 119 && BOOST_PP_ITERATION_START_3 >= 119
+# define BOOST_PP_ITERATION_3 119
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 118 && BOOST_PP_ITERATION_START_3 >= 118
+# define BOOST_PP_ITERATION_3 118
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 117 && BOOST_PP_ITERATION_START_3 >= 117
+# define BOOST_PP_ITERATION_3 117
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 116 && BOOST_PP_ITERATION_START_3 >= 116
+# define BOOST_PP_ITERATION_3 116
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 115 && BOOST_PP_ITERATION_START_3 >= 115
+# define BOOST_PP_ITERATION_3 115
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 114 && BOOST_PP_ITERATION_START_3 >= 114
+# define BOOST_PP_ITERATION_3 114
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 113 && BOOST_PP_ITERATION_START_3 >= 113
+# define BOOST_PP_ITERATION_3 113
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 112 && BOOST_PP_ITERATION_START_3 >= 112
+# define BOOST_PP_ITERATION_3 112
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 111 && BOOST_PP_ITERATION_START_3 >= 111
+# define BOOST_PP_ITERATION_3 111
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 110 && BOOST_PP_ITERATION_START_3 >= 110
+# define BOOST_PP_ITERATION_3 110
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 109 && BOOST_PP_ITERATION_START_3 >= 109
+# define BOOST_PP_ITERATION_3 109
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 108 && BOOST_PP_ITERATION_START_3 >= 108
+# define BOOST_PP_ITERATION_3 108
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 107 && BOOST_PP_ITERATION_START_3 >= 107
+# define BOOST_PP_ITERATION_3 107
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 106 && BOOST_PP_ITERATION_START_3 >= 106
+# define BOOST_PP_ITERATION_3 106
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 105 && BOOST_PP_ITERATION_START_3 >= 105
+# define BOOST_PP_ITERATION_3 105
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 104 && BOOST_PP_ITERATION_START_3 >= 104
+# define BOOST_PP_ITERATION_3 104
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 103 && BOOST_PP_ITERATION_START_3 >= 103
+# define BOOST_PP_ITERATION_3 103
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 102 && BOOST_PP_ITERATION_START_3 >= 102
+# define BOOST_PP_ITERATION_3 102
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 101 && BOOST_PP_ITERATION_START_3 >= 101
+# define BOOST_PP_ITERATION_3 101
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 100 && BOOST_PP_ITERATION_START_3 >= 100
+# define BOOST_PP_ITERATION_3 100
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 99 && BOOST_PP_ITERATION_START_3 >= 99
+# define BOOST_PP_ITERATION_3 99
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 98 && BOOST_PP_ITERATION_START_3 >= 98
+# define BOOST_PP_ITERATION_3 98
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 97 && BOOST_PP_ITERATION_START_3 >= 97
+# define BOOST_PP_ITERATION_3 97
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 96 && BOOST_PP_ITERATION_START_3 >= 96
+# define BOOST_PP_ITERATION_3 96
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 95 && BOOST_PP_ITERATION_START_3 >= 95
+# define BOOST_PP_ITERATION_3 95
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 94 && BOOST_PP_ITERATION_START_3 >= 94
+# define BOOST_PP_ITERATION_3 94
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 93 && BOOST_PP_ITERATION_START_3 >= 93
+# define BOOST_PP_ITERATION_3 93
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 92 && BOOST_PP_ITERATION_START_3 >= 92
+# define BOOST_PP_ITERATION_3 92
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 91 && BOOST_PP_ITERATION_START_3 >= 91
+# define BOOST_PP_ITERATION_3 91
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 90 && BOOST_PP_ITERATION_START_3 >= 90
+# define BOOST_PP_ITERATION_3 90
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 89 && BOOST_PP_ITERATION_START_3 >= 89
+# define BOOST_PP_ITERATION_3 89
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 88 && BOOST_PP_ITERATION_START_3 >= 88
+# define BOOST_PP_ITERATION_3 88
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 87 && BOOST_PP_ITERATION_START_3 >= 87
+# define BOOST_PP_ITERATION_3 87
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 86 && BOOST_PP_ITERATION_START_3 >= 86
+# define BOOST_PP_ITERATION_3 86
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 85 && BOOST_PP_ITERATION_START_3 >= 85
+# define BOOST_PP_ITERATION_3 85
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 84 && BOOST_PP_ITERATION_START_3 >= 84
+# define BOOST_PP_ITERATION_3 84
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 83 && BOOST_PP_ITERATION_START_3 >= 83
+# define BOOST_PP_ITERATION_3 83
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 82 && BOOST_PP_ITERATION_START_3 >= 82
+# define BOOST_PP_ITERATION_3 82
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 81 && BOOST_PP_ITERATION_START_3 >= 81
+# define BOOST_PP_ITERATION_3 81
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 80 && BOOST_PP_ITERATION_START_3 >= 80
+# define BOOST_PP_ITERATION_3 80
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 79 && BOOST_PP_ITERATION_START_3 >= 79
+# define BOOST_PP_ITERATION_3 79
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 78 && BOOST_PP_ITERATION_START_3 >= 78
+# define BOOST_PP_ITERATION_3 78
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 77 && BOOST_PP_ITERATION_START_3 >= 77
+# define BOOST_PP_ITERATION_3 77
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 76 && BOOST_PP_ITERATION_START_3 >= 76
+# define BOOST_PP_ITERATION_3 76
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 75 && BOOST_PP_ITERATION_START_3 >= 75
+# define BOOST_PP_ITERATION_3 75
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 74 && BOOST_PP_ITERATION_START_3 >= 74
+# define BOOST_PP_ITERATION_3 74
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 73 && BOOST_PP_ITERATION_START_3 >= 73
+# define BOOST_PP_ITERATION_3 73
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 72 && BOOST_PP_ITERATION_START_3 >= 72
+# define BOOST_PP_ITERATION_3 72
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 71 && BOOST_PP_ITERATION_START_3 >= 71
+# define BOOST_PP_ITERATION_3 71
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 70 && BOOST_PP_ITERATION_START_3 >= 70
+# define BOOST_PP_ITERATION_3 70
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 69 && BOOST_PP_ITERATION_START_3 >= 69
+# define BOOST_PP_ITERATION_3 69
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 68 && BOOST_PP_ITERATION_START_3 >= 68
+# define BOOST_PP_ITERATION_3 68
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 67 && BOOST_PP_ITERATION_START_3 >= 67
+# define BOOST_PP_ITERATION_3 67
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 66 && BOOST_PP_ITERATION_START_3 >= 66
+# define BOOST_PP_ITERATION_3 66
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 65 && BOOST_PP_ITERATION_START_3 >= 65
+# define BOOST_PP_ITERATION_3 65
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 64 && BOOST_PP_ITERATION_START_3 >= 64
+# define BOOST_PP_ITERATION_3 64
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 63 && BOOST_PP_ITERATION_START_3 >= 63
+# define BOOST_PP_ITERATION_3 63
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 62 && BOOST_PP_ITERATION_START_3 >= 62
+# define BOOST_PP_ITERATION_3 62
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 61 && BOOST_PP_ITERATION_START_3 >= 61
+# define BOOST_PP_ITERATION_3 61
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 60 && BOOST_PP_ITERATION_START_3 >= 60
+# define BOOST_PP_ITERATION_3 60
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 59 && BOOST_PP_ITERATION_START_3 >= 59
+# define BOOST_PP_ITERATION_3 59
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 58 && BOOST_PP_ITERATION_START_3 >= 58
+# define BOOST_PP_ITERATION_3 58
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 57 && BOOST_PP_ITERATION_START_3 >= 57
+# define BOOST_PP_ITERATION_3 57
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 56 && BOOST_PP_ITERATION_START_3 >= 56
+# define BOOST_PP_ITERATION_3 56
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 55 && BOOST_PP_ITERATION_START_3 >= 55
+# define BOOST_PP_ITERATION_3 55
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 54 && BOOST_PP_ITERATION_START_3 >= 54
+# define BOOST_PP_ITERATION_3 54
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 53 && BOOST_PP_ITERATION_START_3 >= 53
+# define BOOST_PP_ITERATION_3 53
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 52 && BOOST_PP_ITERATION_START_3 >= 52
+# define BOOST_PP_ITERATION_3 52
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 51 && BOOST_PP_ITERATION_START_3 >= 51
+# define BOOST_PP_ITERATION_3 51
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 50 && BOOST_PP_ITERATION_START_3 >= 50
+# define BOOST_PP_ITERATION_3 50
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 49 && BOOST_PP_ITERATION_START_3 >= 49
+# define BOOST_PP_ITERATION_3 49
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 48 && BOOST_PP_ITERATION_START_3 >= 48
+# define BOOST_PP_ITERATION_3 48
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 47 && BOOST_PP_ITERATION_START_3 >= 47
+# define BOOST_PP_ITERATION_3 47
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 46 && BOOST_PP_ITERATION_START_3 >= 46
+# define BOOST_PP_ITERATION_3 46
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 45 && BOOST_PP_ITERATION_START_3 >= 45
+# define BOOST_PP_ITERATION_3 45
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 44 && BOOST_PP_ITERATION_START_3 >= 44
+# define BOOST_PP_ITERATION_3 44
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 43 && BOOST_PP_ITERATION_START_3 >= 43
+# define BOOST_PP_ITERATION_3 43
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 42 && BOOST_PP_ITERATION_START_3 >= 42
+# define BOOST_PP_ITERATION_3 42
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 41 && BOOST_PP_ITERATION_START_3 >= 41
+# define BOOST_PP_ITERATION_3 41
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 40 && BOOST_PP_ITERATION_START_3 >= 40
+# define BOOST_PP_ITERATION_3 40
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 39 && BOOST_PP_ITERATION_START_3 >= 39
+# define BOOST_PP_ITERATION_3 39
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 38 && BOOST_PP_ITERATION_START_3 >= 38
+# define BOOST_PP_ITERATION_3 38
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 37 && BOOST_PP_ITERATION_START_3 >= 37
+# define BOOST_PP_ITERATION_3 37
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 36 && BOOST_PP_ITERATION_START_3 >= 36
+# define BOOST_PP_ITERATION_3 36
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 35 && BOOST_PP_ITERATION_START_3 >= 35
+# define BOOST_PP_ITERATION_3 35
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 34 && BOOST_PP_ITERATION_START_3 >= 34
+# define BOOST_PP_ITERATION_3 34
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 33 && BOOST_PP_ITERATION_START_3 >= 33
+# define BOOST_PP_ITERATION_3 33
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 32 && BOOST_PP_ITERATION_START_3 >= 32
+# define BOOST_PP_ITERATION_3 32
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 31 && BOOST_PP_ITERATION_START_3 >= 31
+# define BOOST_PP_ITERATION_3 31
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 30 && BOOST_PP_ITERATION_START_3 >= 30
+# define BOOST_PP_ITERATION_3 30
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 29 && BOOST_PP_ITERATION_START_3 >= 29
+# define BOOST_PP_ITERATION_3 29
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 28 && BOOST_PP_ITERATION_START_3 >= 28
+# define BOOST_PP_ITERATION_3 28
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 27 && BOOST_PP_ITERATION_START_3 >= 27
+# define BOOST_PP_ITERATION_3 27
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 26 && BOOST_PP_ITERATION_START_3 >= 26
+# define BOOST_PP_ITERATION_3 26
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 25 && BOOST_PP_ITERATION_START_3 >= 25
+# define BOOST_PP_ITERATION_3 25
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 24 && BOOST_PP_ITERATION_START_3 >= 24
+# define BOOST_PP_ITERATION_3 24
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 23 && BOOST_PP_ITERATION_START_3 >= 23
+# define BOOST_PP_ITERATION_3 23
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 22 && BOOST_PP_ITERATION_START_3 >= 22
+# define BOOST_PP_ITERATION_3 22
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 21 && BOOST_PP_ITERATION_START_3 >= 21
+# define BOOST_PP_ITERATION_3 21
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 20 && BOOST_PP_ITERATION_START_3 >= 20
+# define BOOST_PP_ITERATION_3 20
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 19 && BOOST_PP_ITERATION_START_3 >= 19
+# define BOOST_PP_ITERATION_3 19
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 18 && BOOST_PP_ITERATION_START_3 >= 18
+# define BOOST_PP_ITERATION_3 18
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 17 && BOOST_PP_ITERATION_START_3 >= 17
+# define BOOST_PP_ITERATION_3 17
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 16 && BOOST_PP_ITERATION_START_3 >= 16
+# define BOOST_PP_ITERATION_3 16
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 15 && BOOST_PP_ITERATION_START_3 >= 15
+# define BOOST_PP_ITERATION_3 15
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 14 && BOOST_PP_ITERATION_START_3 >= 14
+# define BOOST_PP_ITERATION_3 14
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 13 && BOOST_PP_ITERATION_START_3 >= 13
+# define BOOST_PP_ITERATION_3 13
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 12 && BOOST_PP_ITERATION_START_3 >= 12
+# define BOOST_PP_ITERATION_3 12
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 11 && BOOST_PP_ITERATION_START_3 >= 11
+# define BOOST_PP_ITERATION_3 11
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 10 && BOOST_PP_ITERATION_START_3 >= 10
+# define BOOST_PP_ITERATION_3 10
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 9 && BOOST_PP_ITERATION_START_3 >= 9
+# define BOOST_PP_ITERATION_3 9
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 8 && BOOST_PP_ITERATION_START_3 >= 8
+# define BOOST_PP_ITERATION_3 8
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 7 && BOOST_PP_ITERATION_START_3 >= 7
+# define BOOST_PP_ITERATION_3 7
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 6 && BOOST_PP_ITERATION_START_3 >= 6
+# define BOOST_PP_ITERATION_3 6
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 5 && BOOST_PP_ITERATION_START_3 >= 5
+# define BOOST_PP_ITERATION_3 5
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 4 && BOOST_PP_ITERATION_START_3 >= 4
+# define BOOST_PP_ITERATION_3 4
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 3 && BOOST_PP_ITERATION_START_3 >= 3
+# define BOOST_PP_ITERATION_3 3
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 2 && BOOST_PP_ITERATION_START_3 >= 2
+# define BOOST_PP_ITERATION_3 2
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 1 && BOOST_PP_ITERATION_START_3 >= 1
+# define BOOST_PP_ITERATION_3 1
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 0 && BOOST_PP_ITERATION_START_3 >= 0
+# define BOOST_PP_ITERATION_3 0
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp
new file mode 100644
index 0000000..3bcfba0
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse4.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if BOOST_PP_ITERATION_FINISH_4 <= 256 && BOOST_PP_ITERATION_START_4 >= 256
+# define BOOST_PP_ITERATION_4 256
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 255 && BOOST_PP_ITERATION_START_4 >= 255
+# define BOOST_PP_ITERATION_4 255
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 254 && BOOST_PP_ITERATION_START_4 >= 254
+# define BOOST_PP_ITERATION_4 254
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 253 && BOOST_PP_ITERATION_START_4 >= 253
+# define BOOST_PP_ITERATION_4 253
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 252 && BOOST_PP_ITERATION_START_4 >= 252
+# define BOOST_PP_ITERATION_4 252
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 251 && BOOST_PP_ITERATION_START_4 >= 251
+# define BOOST_PP_ITERATION_4 251
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 250 && BOOST_PP_ITERATION_START_4 >= 250
+# define BOOST_PP_ITERATION_4 250
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 249 && BOOST_PP_ITERATION_START_4 >= 249
+# define BOOST_PP_ITERATION_4 249
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 248 && BOOST_PP_ITERATION_START_4 >= 248
+# define BOOST_PP_ITERATION_4 248
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 247 && BOOST_PP_ITERATION_START_4 >= 247
+# define BOOST_PP_ITERATION_4 247
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 246 && BOOST_PP_ITERATION_START_4 >= 246
+# define BOOST_PP_ITERATION_4 246
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 245 && BOOST_PP_ITERATION_START_4 >= 245
+# define BOOST_PP_ITERATION_4 245
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 244 && BOOST_PP_ITERATION_START_4 >= 244
+# define BOOST_PP_ITERATION_4 244
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 243 && BOOST_PP_ITERATION_START_4 >= 243
+# define BOOST_PP_ITERATION_4 243
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 242 && BOOST_PP_ITERATION_START_4 >= 242
+# define BOOST_PP_ITERATION_4 242
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 241 && BOOST_PP_ITERATION_START_4 >= 241
+# define BOOST_PP_ITERATION_4 241
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 240 && BOOST_PP_ITERATION_START_4 >= 240
+# define BOOST_PP_ITERATION_4 240
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 239 && BOOST_PP_ITERATION_START_4 >= 239
+# define BOOST_PP_ITERATION_4 239
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 238 && BOOST_PP_ITERATION_START_4 >= 238
+# define BOOST_PP_ITERATION_4 238
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 237 && BOOST_PP_ITERATION_START_4 >= 237
+# define BOOST_PP_ITERATION_4 237
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 236 && BOOST_PP_ITERATION_START_4 >= 236
+# define BOOST_PP_ITERATION_4 236
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 235 && BOOST_PP_ITERATION_START_4 >= 235
+# define BOOST_PP_ITERATION_4 235
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 234 && BOOST_PP_ITERATION_START_4 >= 234
+# define BOOST_PP_ITERATION_4 234
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 233 && BOOST_PP_ITERATION_START_4 >= 233
+# define BOOST_PP_ITERATION_4 233
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 232 && BOOST_PP_ITERATION_START_4 >= 232
+# define BOOST_PP_ITERATION_4 232
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 231 && BOOST_PP_ITERATION_START_4 >= 231
+# define BOOST_PP_ITERATION_4 231
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 230 && BOOST_PP_ITERATION_START_4 >= 230
+# define BOOST_PP_ITERATION_4 230
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 229 && BOOST_PP_ITERATION_START_4 >= 229
+# define BOOST_PP_ITERATION_4 229
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 228 && BOOST_PP_ITERATION_START_4 >= 228
+# define BOOST_PP_ITERATION_4 228
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 227 && BOOST_PP_ITERATION_START_4 >= 227
+# define BOOST_PP_ITERATION_4 227
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 226 && BOOST_PP_ITERATION_START_4 >= 226
+# define BOOST_PP_ITERATION_4 226
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 225 && BOOST_PP_ITERATION_START_4 >= 225
+# define BOOST_PP_ITERATION_4 225
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 224 && BOOST_PP_ITERATION_START_4 >= 224
+# define BOOST_PP_ITERATION_4 224
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 223 && BOOST_PP_ITERATION_START_4 >= 223
+# define BOOST_PP_ITERATION_4 223
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 222 && BOOST_PP_ITERATION_START_4 >= 222
+# define BOOST_PP_ITERATION_4 222
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 221 && BOOST_PP_ITERATION_START_4 >= 221
+# define BOOST_PP_ITERATION_4 221
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 220 && BOOST_PP_ITERATION_START_4 >= 220
+# define BOOST_PP_ITERATION_4 220
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 219 && BOOST_PP_ITERATION_START_4 >= 219
+# define BOOST_PP_ITERATION_4 219
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 218 && BOOST_PP_ITERATION_START_4 >= 218
+# define BOOST_PP_ITERATION_4 218
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 217 && BOOST_PP_ITERATION_START_4 >= 217
+# define BOOST_PP_ITERATION_4 217
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 216 && BOOST_PP_ITERATION_START_4 >= 216
+# define BOOST_PP_ITERATION_4 216
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 215 && BOOST_PP_ITERATION_START_4 >= 215
+# define BOOST_PP_ITERATION_4 215
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 214 && BOOST_PP_ITERATION_START_4 >= 214
+# define BOOST_PP_ITERATION_4 214
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 213 && BOOST_PP_ITERATION_START_4 >= 213
+# define BOOST_PP_ITERATION_4 213
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 212 && BOOST_PP_ITERATION_START_4 >= 212
+# define BOOST_PP_ITERATION_4 212
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 211 && BOOST_PP_ITERATION_START_4 >= 211
+# define BOOST_PP_ITERATION_4 211
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 210 && BOOST_PP_ITERATION_START_4 >= 210
+# define BOOST_PP_ITERATION_4 210
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 209 && BOOST_PP_ITERATION_START_4 >= 209
+# define BOOST_PP_ITERATION_4 209
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 208 && BOOST_PP_ITERATION_START_4 >= 208
+# define BOOST_PP_ITERATION_4 208
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 207 && BOOST_PP_ITERATION_START_4 >= 207
+# define BOOST_PP_ITERATION_4 207
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 206 && BOOST_PP_ITERATION_START_4 >= 206
+# define BOOST_PP_ITERATION_4 206
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 205 && BOOST_PP_ITERATION_START_4 >= 205
+# define BOOST_PP_ITERATION_4 205
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 204 && BOOST_PP_ITERATION_START_4 >= 204
+# define BOOST_PP_ITERATION_4 204
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 203 && BOOST_PP_ITERATION_START_4 >= 203
+# define BOOST_PP_ITERATION_4 203
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 202 && BOOST_PP_ITERATION_START_4 >= 202
+# define BOOST_PP_ITERATION_4 202
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 201 && BOOST_PP_ITERATION_START_4 >= 201
+# define BOOST_PP_ITERATION_4 201
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 200 && BOOST_PP_ITERATION_START_4 >= 200
+# define BOOST_PP_ITERATION_4 200
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 199 && BOOST_PP_ITERATION_START_4 >= 199
+# define BOOST_PP_ITERATION_4 199
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 198 && BOOST_PP_ITERATION_START_4 >= 198
+# define BOOST_PP_ITERATION_4 198
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 197 && BOOST_PP_ITERATION_START_4 >= 197
+# define BOOST_PP_ITERATION_4 197
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 196 && BOOST_PP_ITERATION_START_4 >= 196
+# define BOOST_PP_ITERATION_4 196
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 195 && BOOST_PP_ITERATION_START_4 >= 195
+# define BOOST_PP_ITERATION_4 195
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 194 && BOOST_PP_ITERATION_START_4 >= 194
+# define BOOST_PP_ITERATION_4 194
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 193 && BOOST_PP_ITERATION_START_4 >= 193
+# define BOOST_PP_ITERATION_4 193
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 192 && BOOST_PP_ITERATION_START_4 >= 192
+# define BOOST_PP_ITERATION_4 192
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 191 && BOOST_PP_ITERATION_START_4 >= 191
+# define BOOST_PP_ITERATION_4 191
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 190 && BOOST_PP_ITERATION_START_4 >= 190
+# define BOOST_PP_ITERATION_4 190
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 189 && BOOST_PP_ITERATION_START_4 >= 189
+# define BOOST_PP_ITERATION_4 189
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 188 && BOOST_PP_ITERATION_START_4 >= 188
+# define BOOST_PP_ITERATION_4 188
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 187 && BOOST_PP_ITERATION_START_4 >= 187
+# define BOOST_PP_ITERATION_4 187
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 186 && BOOST_PP_ITERATION_START_4 >= 186
+# define BOOST_PP_ITERATION_4 186
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 185 && BOOST_PP_ITERATION_START_4 >= 185
+# define BOOST_PP_ITERATION_4 185
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 184 && BOOST_PP_ITERATION_START_4 >= 184
+# define BOOST_PP_ITERATION_4 184
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 183 && BOOST_PP_ITERATION_START_4 >= 183
+# define BOOST_PP_ITERATION_4 183
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 182 && BOOST_PP_ITERATION_START_4 >= 182
+# define BOOST_PP_ITERATION_4 182
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 181 && BOOST_PP_ITERATION_START_4 >= 181
+# define BOOST_PP_ITERATION_4 181
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 180 && BOOST_PP_ITERATION_START_4 >= 180
+# define BOOST_PP_ITERATION_4 180
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 179 && BOOST_PP_ITERATION_START_4 >= 179
+# define BOOST_PP_ITERATION_4 179
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 178 && BOOST_PP_ITERATION_START_4 >= 178
+# define BOOST_PP_ITERATION_4 178
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 177 && BOOST_PP_ITERATION_START_4 >= 177
+# define BOOST_PP_ITERATION_4 177
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 176 && BOOST_PP_ITERATION_START_4 >= 176
+# define BOOST_PP_ITERATION_4 176
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 175 && BOOST_PP_ITERATION_START_4 >= 175
+# define BOOST_PP_ITERATION_4 175
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 174 && BOOST_PP_ITERATION_START_4 >= 174
+# define BOOST_PP_ITERATION_4 174
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 173 && BOOST_PP_ITERATION_START_4 >= 173
+# define BOOST_PP_ITERATION_4 173
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 172 && BOOST_PP_ITERATION_START_4 >= 172
+# define BOOST_PP_ITERATION_4 172
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 171 && BOOST_PP_ITERATION_START_4 >= 171
+# define BOOST_PP_ITERATION_4 171
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 170 && BOOST_PP_ITERATION_START_4 >= 170
+# define BOOST_PP_ITERATION_4 170
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 169 && BOOST_PP_ITERATION_START_4 >= 169
+# define BOOST_PP_ITERATION_4 169
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 168 && BOOST_PP_ITERATION_START_4 >= 168
+# define BOOST_PP_ITERATION_4 168
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 167 && BOOST_PP_ITERATION_START_4 >= 167
+# define BOOST_PP_ITERATION_4 167
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 166 && BOOST_PP_ITERATION_START_4 >= 166
+# define BOOST_PP_ITERATION_4 166
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 165 && BOOST_PP_ITERATION_START_4 >= 165
+# define BOOST_PP_ITERATION_4 165
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 164 && BOOST_PP_ITERATION_START_4 >= 164
+# define BOOST_PP_ITERATION_4 164
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 163 && BOOST_PP_ITERATION_START_4 >= 163
+# define BOOST_PP_ITERATION_4 163
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 162 && BOOST_PP_ITERATION_START_4 >= 162
+# define BOOST_PP_ITERATION_4 162
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 161 && BOOST_PP_ITERATION_START_4 >= 161
+# define BOOST_PP_ITERATION_4 161
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 160 && BOOST_PP_ITERATION_START_4 >= 160
+# define BOOST_PP_ITERATION_4 160
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 159 && BOOST_PP_ITERATION_START_4 >= 159
+# define BOOST_PP_ITERATION_4 159
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 158 && BOOST_PP_ITERATION_START_4 >= 158
+# define BOOST_PP_ITERATION_4 158
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 157 && BOOST_PP_ITERATION_START_4 >= 157
+# define BOOST_PP_ITERATION_4 157
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 156 && BOOST_PP_ITERATION_START_4 >= 156
+# define BOOST_PP_ITERATION_4 156
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 155 && BOOST_PP_ITERATION_START_4 >= 155
+# define BOOST_PP_ITERATION_4 155
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 154 && BOOST_PP_ITERATION_START_4 >= 154
+# define BOOST_PP_ITERATION_4 154
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 153 && BOOST_PP_ITERATION_START_4 >= 153
+# define BOOST_PP_ITERATION_4 153
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 152 && BOOST_PP_ITERATION_START_4 >= 152
+# define BOOST_PP_ITERATION_4 152
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 151 && BOOST_PP_ITERATION_START_4 >= 151
+# define BOOST_PP_ITERATION_4 151
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 150 && BOOST_PP_ITERATION_START_4 >= 150
+# define BOOST_PP_ITERATION_4 150
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 149 && BOOST_PP_ITERATION_START_4 >= 149
+# define BOOST_PP_ITERATION_4 149
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 148 && BOOST_PP_ITERATION_START_4 >= 148
+# define BOOST_PP_ITERATION_4 148
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 147 && BOOST_PP_ITERATION_START_4 >= 147
+# define BOOST_PP_ITERATION_4 147
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 146 && BOOST_PP_ITERATION_START_4 >= 146
+# define BOOST_PP_ITERATION_4 146
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 145 && BOOST_PP_ITERATION_START_4 >= 145
+# define BOOST_PP_ITERATION_4 145
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 144 && BOOST_PP_ITERATION_START_4 >= 144
+# define BOOST_PP_ITERATION_4 144
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 143 && BOOST_PP_ITERATION_START_4 >= 143
+# define BOOST_PP_ITERATION_4 143
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 142 && BOOST_PP_ITERATION_START_4 >= 142
+# define BOOST_PP_ITERATION_4 142
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 141 && BOOST_PP_ITERATION_START_4 >= 141
+# define BOOST_PP_ITERATION_4 141
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 140 && BOOST_PP_ITERATION_START_4 >= 140
+# define BOOST_PP_ITERATION_4 140
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 139 && BOOST_PP_ITERATION_START_4 >= 139
+# define BOOST_PP_ITERATION_4 139
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 138 && BOOST_PP_ITERATION_START_4 >= 138
+# define BOOST_PP_ITERATION_4 138
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 137 && BOOST_PP_ITERATION_START_4 >= 137
+# define BOOST_PP_ITERATION_4 137
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 136 && BOOST_PP_ITERATION_START_4 >= 136
+# define BOOST_PP_ITERATION_4 136
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 135 && BOOST_PP_ITERATION_START_4 >= 135
+# define BOOST_PP_ITERATION_4 135
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 134 && BOOST_PP_ITERATION_START_4 >= 134
+# define BOOST_PP_ITERATION_4 134
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 133 && BOOST_PP_ITERATION_START_4 >= 133
+# define BOOST_PP_ITERATION_4 133
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 132 && BOOST_PP_ITERATION_START_4 >= 132
+# define BOOST_PP_ITERATION_4 132
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 131 && BOOST_PP_ITERATION_START_4 >= 131
+# define BOOST_PP_ITERATION_4 131
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 130 && BOOST_PP_ITERATION_START_4 >= 130
+# define BOOST_PP_ITERATION_4 130
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 129 && BOOST_PP_ITERATION_START_4 >= 129
+# define BOOST_PP_ITERATION_4 129
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 128 && BOOST_PP_ITERATION_START_4 >= 128
+# define BOOST_PP_ITERATION_4 128
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 127 && BOOST_PP_ITERATION_START_4 >= 127
+# define BOOST_PP_ITERATION_4 127
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 126 && BOOST_PP_ITERATION_START_4 >= 126
+# define BOOST_PP_ITERATION_4 126
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 125 && BOOST_PP_ITERATION_START_4 >= 125
+# define BOOST_PP_ITERATION_4 125
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 124 && BOOST_PP_ITERATION_START_4 >= 124
+# define BOOST_PP_ITERATION_4 124
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 123 && BOOST_PP_ITERATION_START_4 >= 123
+# define BOOST_PP_ITERATION_4 123
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 122 && BOOST_PP_ITERATION_START_4 >= 122
+# define BOOST_PP_ITERATION_4 122
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 121 && BOOST_PP_ITERATION_START_4 >= 121
+# define BOOST_PP_ITERATION_4 121
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 120 && BOOST_PP_ITERATION_START_4 >= 120
+# define BOOST_PP_ITERATION_4 120
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 119 && BOOST_PP_ITERATION_START_4 >= 119
+# define BOOST_PP_ITERATION_4 119
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 118 && BOOST_PP_ITERATION_START_4 >= 118
+# define BOOST_PP_ITERATION_4 118
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 117 && BOOST_PP_ITERATION_START_4 >= 117
+# define BOOST_PP_ITERATION_4 117
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 116 && BOOST_PP_ITERATION_START_4 >= 116
+# define BOOST_PP_ITERATION_4 116
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 115 && BOOST_PP_ITERATION_START_4 >= 115
+# define BOOST_PP_ITERATION_4 115
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 114 && BOOST_PP_ITERATION_START_4 >= 114
+# define BOOST_PP_ITERATION_4 114
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 113 && BOOST_PP_ITERATION_START_4 >= 113
+# define BOOST_PP_ITERATION_4 113
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 112 && BOOST_PP_ITERATION_START_4 >= 112
+# define BOOST_PP_ITERATION_4 112
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 111 && BOOST_PP_ITERATION_START_4 >= 111
+# define BOOST_PP_ITERATION_4 111
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 110 && BOOST_PP_ITERATION_START_4 >= 110
+# define BOOST_PP_ITERATION_4 110
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 109 && BOOST_PP_ITERATION_START_4 >= 109
+# define BOOST_PP_ITERATION_4 109
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 108 && BOOST_PP_ITERATION_START_4 >= 108
+# define BOOST_PP_ITERATION_4 108
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 107 && BOOST_PP_ITERATION_START_4 >= 107
+# define BOOST_PP_ITERATION_4 107
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 106 && BOOST_PP_ITERATION_START_4 >= 106
+# define BOOST_PP_ITERATION_4 106
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 105 && BOOST_PP_ITERATION_START_4 >= 105
+# define BOOST_PP_ITERATION_4 105
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 104 && BOOST_PP_ITERATION_START_4 >= 104
+# define BOOST_PP_ITERATION_4 104
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 103 && BOOST_PP_ITERATION_START_4 >= 103
+# define BOOST_PP_ITERATION_4 103
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 102 && BOOST_PP_ITERATION_START_4 >= 102
+# define BOOST_PP_ITERATION_4 102
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 101 && BOOST_PP_ITERATION_START_4 >= 101
+# define BOOST_PP_ITERATION_4 101
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 100 && BOOST_PP_ITERATION_START_4 >= 100
+# define BOOST_PP_ITERATION_4 100
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 99 && BOOST_PP_ITERATION_START_4 >= 99
+# define BOOST_PP_ITERATION_4 99
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 98 && BOOST_PP_ITERATION_START_4 >= 98
+# define BOOST_PP_ITERATION_4 98
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 97 && BOOST_PP_ITERATION_START_4 >= 97
+# define BOOST_PP_ITERATION_4 97
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 96 && BOOST_PP_ITERATION_START_4 >= 96
+# define BOOST_PP_ITERATION_4 96
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 95 && BOOST_PP_ITERATION_START_4 >= 95
+# define BOOST_PP_ITERATION_4 95
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 94 && BOOST_PP_ITERATION_START_4 >= 94
+# define BOOST_PP_ITERATION_4 94
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 93 && BOOST_PP_ITERATION_START_4 >= 93
+# define BOOST_PP_ITERATION_4 93
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 92 && BOOST_PP_ITERATION_START_4 >= 92
+# define BOOST_PP_ITERATION_4 92
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 91 && BOOST_PP_ITERATION_START_4 >= 91
+# define BOOST_PP_ITERATION_4 91
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 90 && BOOST_PP_ITERATION_START_4 >= 90
+# define BOOST_PP_ITERATION_4 90
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 89 && BOOST_PP_ITERATION_START_4 >= 89
+# define BOOST_PP_ITERATION_4 89
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 88 && BOOST_PP_ITERATION_START_4 >= 88
+# define BOOST_PP_ITERATION_4 88
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 87 && BOOST_PP_ITERATION_START_4 >= 87
+# define BOOST_PP_ITERATION_4 87
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 86 && BOOST_PP_ITERATION_START_4 >= 86
+# define BOOST_PP_ITERATION_4 86
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 85 && BOOST_PP_ITERATION_START_4 >= 85
+# define BOOST_PP_ITERATION_4 85
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 84 && BOOST_PP_ITERATION_START_4 >= 84
+# define BOOST_PP_ITERATION_4 84
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 83 && BOOST_PP_ITERATION_START_4 >= 83
+# define BOOST_PP_ITERATION_4 83
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 82 && BOOST_PP_ITERATION_START_4 >= 82
+# define BOOST_PP_ITERATION_4 82
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 81 && BOOST_PP_ITERATION_START_4 >= 81
+# define BOOST_PP_ITERATION_4 81
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 80 && BOOST_PP_ITERATION_START_4 >= 80
+# define BOOST_PP_ITERATION_4 80
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 79 && BOOST_PP_ITERATION_START_4 >= 79
+# define BOOST_PP_ITERATION_4 79
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 78 && BOOST_PP_ITERATION_START_4 >= 78
+# define BOOST_PP_ITERATION_4 78
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 77 && BOOST_PP_ITERATION_START_4 >= 77
+# define BOOST_PP_ITERATION_4 77
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 76 && BOOST_PP_ITERATION_START_4 >= 76
+# define BOOST_PP_ITERATION_4 76
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 75 && BOOST_PP_ITERATION_START_4 >= 75
+# define BOOST_PP_ITERATION_4 75
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 74 && BOOST_PP_ITERATION_START_4 >= 74
+# define BOOST_PP_ITERATION_4 74
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 73 && BOOST_PP_ITERATION_START_4 >= 73
+# define BOOST_PP_ITERATION_4 73
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 72 && BOOST_PP_ITERATION_START_4 >= 72
+# define BOOST_PP_ITERATION_4 72
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 71 && BOOST_PP_ITERATION_START_4 >= 71
+# define BOOST_PP_ITERATION_4 71
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 70 && BOOST_PP_ITERATION_START_4 >= 70
+# define BOOST_PP_ITERATION_4 70
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 69 && BOOST_PP_ITERATION_START_4 >= 69
+# define BOOST_PP_ITERATION_4 69
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 68 && BOOST_PP_ITERATION_START_4 >= 68
+# define BOOST_PP_ITERATION_4 68
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 67 && BOOST_PP_ITERATION_START_4 >= 67
+# define BOOST_PP_ITERATION_4 67
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 66 && BOOST_PP_ITERATION_START_4 >= 66
+# define BOOST_PP_ITERATION_4 66
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 65 && BOOST_PP_ITERATION_START_4 >= 65
+# define BOOST_PP_ITERATION_4 65
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 64 && BOOST_PP_ITERATION_START_4 >= 64
+# define BOOST_PP_ITERATION_4 64
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 63 && BOOST_PP_ITERATION_START_4 >= 63
+# define BOOST_PP_ITERATION_4 63
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 62 && BOOST_PP_ITERATION_START_4 >= 62
+# define BOOST_PP_ITERATION_4 62
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 61 && BOOST_PP_ITERATION_START_4 >= 61
+# define BOOST_PP_ITERATION_4 61
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 60 && BOOST_PP_ITERATION_START_4 >= 60
+# define BOOST_PP_ITERATION_4 60
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 59 && BOOST_PP_ITERATION_START_4 >= 59
+# define BOOST_PP_ITERATION_4 59
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 58 && BOOST_PP_ITERATION_START_4 >= 58
+# define BOOST_PP_ITERATION_4 58
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 57 && BOOST_PP_ITERATION_START_4 >= 57
+# define BOOST_PP_ITERATION_4 57
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 56 && BOOST_PP_ITERATION_START_4 >= 56
+# define BOOST_PP_ITERATION_4 56
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 55 && BOOST_PP_ITERATION_START_4 >= 55
+# define BOOST_PP_ITERATION_4 55
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 54 && BOOST_PP_ITERATION_START_4 >= 54
+# define BOOST_PP_ITERATION_4 54
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 53 && BOOST_PP_ITERATION_START_4 >= 53
+# define BOOST_PP_ITERATION_4 53
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 52 && BOOST_PP_ITERATION_START_4 >= 52
+# define BOOST_PP_ITERATION_4 52
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 51 && BOOST_PP_ITERATION_START_4 >= 51
+# define BOOST_PP_ITERATION_4 51
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 50 && BOOST_PP_ITERATION_START_4 >= 50
+# define BOOST_PP_ITERATION_4 50
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 49 && BOOST_PP_ITERATION_START_4 >= 49
+# define BOOST_PP_ITERATION_4 49
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 48 && BOOST_PP_ITERATION_START_4 >= 48
+# define BOOST_PP_ITERATION_4 48
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 47 && BOOST_PP_ITERATION_START_4 >= 47
+# define BOOST_PP_ITERATION_4 47
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 46 && BOOST_PP_ITERATION_START_4 >= 46
+# define BOOST_PP_ITERATION_4 46
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 45 && BOOST_PP_ITERATION_START_4 >= 45
+# define BOOST_PP_ITERATION_4 45
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 44 && BOOST_PP_ITERATION_START_4 >= 44
+# define BOOST_PP_ITERATION_4 44
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 43 && BOOST_PP_ITERATION_START_4 >= 43
+# define BOOST_PP_ITERATION_4 43
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 42 && BOOST_PP_ITERATION_START_4 >= 42
+# define BOOST_PP_ITERATION_4 42
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 41 && BOOST_PP_ITERATION_START_4 >= 41
+# define BOOST_PP_ITERATION_4 41
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 40 && BOOST_PP_ITERATION_START_4 >= 40
+# define BOOST_PP_ITERATION_4 40
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 39 && BOOST_PP_ITERATION_START_4 >= 39
+# define BOOST_PP_ITERATION_4 39
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 38 && BOOST_PP_ITERATION_START_4 >= 38
+# define BOOST_PP_ITERATION_4 38
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 37 && BOOST_PP_ITERATION_START_4 >= 37
+# define BOOST_PP_ITERATION_4 37
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 36 && BOOST_PP_ITERATION_START_4 >= 36
+# define BOOST_PP_ITERATION_4 36
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 35 && BOOST_PP_ITERATION_START_4 >= 35
+# define BOOST_PP_ITERATION_4 35
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 34 && BOOST_PP_ITERATION_START_4 >= 34
+# define BOOST_PP_ITERATION_4 34
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 33 && BOOST_PP_ITERATION_START_4 >= 33
+# define BOOST_PP_ITERATION_4 33
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 32 && BOOST_PP_ITERATION_START_4 >= 32
+# define BOOST_PP_ITERATION_4 32
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 31 && BOOST_PP_ITERATION_START_4 >= 31
+# define BOOST_PP_ITERATION_4 31
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 30 && BOOST_PP_ITERATION_START_4 >= 30
+# define BOOST_PP_ITERATION_4 30
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 29 && BOOST_PP_ITERATION_START_4 >= 29
+# define BOOST_PP_ITERATION_4 29
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 28 && BOOST_PP_ITERATION_START_4 >= 28
+# define BOOST_PP_ITERATION_4 28
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 27 && BOOST_PP_ITERATION_START_4 >= 27
+# define BOOST_PP_ITERATION_4 27
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 26 && BOOST_PP_ITERATION_START_4 >= 26
+# define BOOST_PP_ITERATION_4 26
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 25 && BOOST_PP_ITERATION_START_4 >= 25
+# define BOOST_PP_ITERATION_4 25
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 24 && BOOST_PP_ITERATION_START_4 >= 24
+# define BOOST_PP_ITERATION_4 24
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 23 && BOOST_PP_ITERATION_START_4 >= 23
+# define BOOST_PP_ITERATION_4 23
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 22 && BOOST_PP_ITERATION_START_4 >= 22
+# define BOOST_PP_ITERATION_4 22
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 21 && BOOST_PP_ITERATION_START_4 >= 21
+# define BOOST_PP_ITERATION_4 21
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 20 && BOOST_PP_ITERATION_START_4 >= 20
+# define BOOST_PP_ITERATION_4 20
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 19 && BOOST_PP_ITERATION_START_4 >= 19
+# define BOOST_PP_ITERATION_4 19
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 18 && BOOST_PP_ITERATION_START_4 >= 18
+# define BOOST_PP_ITERATION_4 18
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 17 && BOOST_PP_ITERATION_START_4 >= 17
+# define BOOST_PP_ITERATION_4 17
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 16 && BOOST_PP_ITERATION_START_4 >= 16
+# define BOOST_PP_ITERATION_4 16
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 15 && BOOST_PP_ITERATION_START_4 >= 15
+# define BOOST_PP_ITERATION_4 15
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 14 && BOOST_PP_ITERATION_START_4 >= 14
+# define BOOST_PP_ITERATION_4 14
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 13 && BOOST_PP_ITERATION_START_4 >= 13
+# define BOOST_PP_ITERATION_4 13
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 12 && BOOST_PP_ITERATION_START_4 >= 12
+# define BOOST_PP_ITERATION_4 12
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 11 && BOOST_PP_ITERATION_START_4 >= 11
+# define BOOST_PP_ITERATION_4 11
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 10 && BOOST_PP_ITERATION_START_4 >= 10
+# define BOOST_PP_ITERATION_4 10
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 9 && BOOST_PP_ITERATION_START_4 >= 9
+# define BOOST_PP_ITERATION_4 9
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 8 && BOOST_PP_ITERATION_START_4 >= 8
+# define BOOST_PP_ITERATION_4 8
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 7 && BOOST_PP_ITERATION_START_4 >= 7
+# define BOOST_PP_ITERATION_4 7
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 6 && BOOST_PP_ITERATION_START_4 >= 6
+# define BOOST_PP_ITERATION_4 6
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 5 && BOOST_PP_ITERATION_START_4 >= 5
+# define BOOST_PP_ITERATION_4 5
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 4 && BOOST_PP_ITERATION_START_4 >= 4
+# define BOOST_PP_ITERATION_4 4
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 3 && BOOST_PP_ITERATION_START_4 >= 3
+# define BOOST_PP_ITERATION_4 3
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 2 && BOOST_PP_ITERATION_START_4 >= 2
+# define BOOST_PP_ITERATION_4 2
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 1 && BOOST_PP_ITERATION_START_4 >= 1
+# define BOOST_PP_ITERATION_4 1
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 0 && BOOST_PP_ITERATION_START_4 >= 0
+# define BOOST_PP_ITERATION_4 0
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp
new file mode 100644
index 0000000..225a557
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/iter/reverse5.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if BOOST_PP_ITERATION_FINISH_5 <= 256 && BOOST_PP_ITERATION_START_5 >= 256
+# define BOOST_PP_ITERATION_5 256
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 255 && BOOST_PP_ITERATION_START_5 >= 255
+# define BOOST_PP_ITERATION_5 255
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 254 && BOOST_PP_ITERATION_START_5 >= 254
+# define BOOST_PP_ITERATION_5 254
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 253 && BOOST_PP_ITERATION_START_5 >= 253
+# define BOOST_PP_ITERATION_5 253
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 252 && BOOST_PP_ITERATION_START_5 >= 252
+# define BOOST_PP_ITERATION_5 252
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 251 && BOOST_PP_ITERATION_START_5 >= 251
+# define BOOST_PP_ITERATION_5 251
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 250 && BOOST_PP_ITERATION_START_5 >= 250
+# define BOOST_PP_ITERATION_5 250
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 249 && BOOST_PP_ITERATION_START_5 >= 249
+# define BOOST_PP_ITERATION_5 249
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 248 && BOOST_PP_ITERATION_START_5 >= 248
+# define BOOST_PP_ITERATION_5 248
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 247 && BOOST_PP_ITERATION_START_5 >= 247
+# define BOOST_PP_ITERATION_5 247
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 246 && BOOST_PP_ITERATION_START_5 >= 246
+# define BOOST_PP_ITERATION_5 246
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 245 && BOOST_PP_ITERATION_START_5 >= 245
+# define BOOST_PP_ITERATION_5 245
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 244 && BOOST_PP_ITERATION_START_5 >= 244
+# define BOOST_PP_ITERATION_5 244
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 243 && BOOST_PP_ITERATION_START_5 >= 243
+# define BOOST_PP_ITERATION_5 243
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 242 && BOOST_PP_ITERATION_START_5 >= 242
+# define BOOST_PP_ITERATION_5 242
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 241 && BOOST_PP_ITERATION_START_5 >= 241
+# define BOOST_PP_ITERATION_5 241
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 240 && BOOST_PP_ITERATION_START_5 >= 240
+# define BOOST_PP_ITERATION_5 240
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 239 && BOOST_PP_ITERATION_START_5 >= 239
+# define BOOST_PP_ITERATION_5 239
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 238 && BOOST_PP_ITERATION_START_5 >= 238
+# define BOOST_PP_ITERATION_5 238
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 237 && BOOST_PP_ITERATION_START_5 >= 237
+# define BOOST_PP_ITERATION_5 237
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 236 && BOOST_PP_ITERATION_START_5 >= 236
+# define BOOST_PP_ITERATION_5 236
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 235 && BOOST_PP_ITERATION_START_5 >= 235
+# define BOOST_PP_ITERATION_5 235
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 234 && BOOST_PP_ITERATION_START_5 >= 234
+# define BOOST_PP_ITERATION_5 234
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 233 && BOOST_PP_ITERATION_START_5 >= 233
+# define BOOST_PP_ITERATION_5 233
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 232 && BOOST_PP_ITERATION_START_5 >= 232
+# define BOOST_PP_ITERATION_5 232
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 231 && BOOST_PP_ITERATION_START_5 >= 231
+# define BOOST_PP_ITERATION_5 231
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 230 && BOOST_PP_ITERATION_START_5 >= 230
+# define BOOST_PP_ITERATION_5 230
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 229 && BOOST_PP_ITERATION_START_5 >= 229
+# define BOOST_PP_ITERATION_5 229
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 228 && BOOST_PP_ITERATION_START_5 >= 228
+# define BOOST_PP_ITERATION_5 228
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 227 && BOOST_PP_ITERATION_START_5 >= 227
+# define BOOST_PP_ITERATION_5 227
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 226 && BOOST_PP_ITERATION_START_5 >= 226
+# define BOOST_PP_ITERATION_5 226
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 225 && BOOST_PP_ITERATION_START_5 >= 225
+# define BOOST_PP_ITERATION_5 225
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 224 && BOOST_PP_ITERATION_START_5 >= 224
+# define BOOST_PP_ITERATION_5 224
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 223 && BOOST_PP_ITERATION_START_5 >= 223
+# define BOOST_PP_ITERATION_5 223
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 222 && BOOST_PP_ITERATION_START_5 >= 222
+# define BOOST_PP_ITERATION_5 222
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 221 && BOOST_PP_ITERATION_START_5 >= 221
+# define BOOST_PP_ITERATION_5 221
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 220 && BOOST_PP_ITERATION_START_5 >= 220
+# define BOOST_PP_ITERATION_5 220
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 219 && BOOST_PP_ITERATION_START_5 >= 219
+# define BOOST_PP_ITERATION_5 219
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 218 && BOOST_PP_ITERATION_START_5 >= 218
+# define BOOST_PP_ITERATION_5 218
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 217 && BOOST_PP_ITERATION_START_5 >= 217
+# define BOOST_PP_ITERATION_5 217
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 216 && BOOST_PP_ITERATION_START_5 >= 216
+# define BOOST_PP_ITERATION_5 216
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 215 && BOOST_PP_ITERATION_START_5 >= 215
+# define BOOST_PP_ITERATION_5 215
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 214 && BOOST_PP_ITERATION_START_5 >= 214
+# define BOOST_PP_ITERATION_5 214
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 213 && BOOST_PP_ITERATION_START_5 >= 213
+# define BOOST_PP_ITERATION_5 213
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 212 && BOOST_PP_ITERATION_START_5 >= 212
+# define BOOST_PP_ITERATION_5 212
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 211 && BOOST_PP_ITERATION_START_5 >= 211
+# define BOOST_PP_ITERATION_5 211
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 210 && BOOST_PP_ITERATION_START_5 >= 210
+# define BOOST_PP_ITERATION_5 210
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 209 && BOOST_PP_ITERATION_START_5 >= 209
+# define BOOST_PP_ITERATION_5 209
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 208 && BOOST_PP_ITERATION_START_5 >= 208
+# define BOOST_PP_ITERATION_5 208
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 207 && BOOST_PP_ITERATION_START_5 >= 207
+# define BOOST_PP_ITERATION_5 207
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 206 && BOOST_PP_ITERATION_START_5 >= 206
+# define BOOST_PP_ITERATION_5 206
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 205 && BOOST_PP_ITERATION_START_5 >= 205
+# define BOOST_PP_ITERATION_5 205
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 204 && BOOST_PP_ITERATION_START_5 >= 204
+# define BOOST_PP_ITERATION_5 204
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 203 && BOOST_PP_ITERATION_START_5 >= 203
+# define BOOST_PP_ITERATION_5 203
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 202 && BOOST_PP_ITERATION_START_5 >= 202
+# define BOOST_PP_ITERATION_5 202
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 201 && BOOST_PP_ITERATION_START_5 >= 201
+# define BOOST_PP_ITERATION_5 201
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 200 && BOOST_PP_ITERATION_START_5 >= 200
+# define BOOST_PP_ITERATION_5 200
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 199 && BOOST_PP_ITERATION_START_5 >= 199
+# define BOOST_PP_ITERATION_5 199
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 198 && BOOST_PP_ITERATION_START_5 >= 198
+# define BOOST_PP_ITERATION_5 198
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 197 && BOOST_PP_ITERATION_START_5 >= 197
+# define BOOST_PP_ITERATION_5 197
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 196 && BOOST_PP_ITERATION_START_5 >= 196
+# define BOOST_PP_ITERATION_5 196
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 195 && BOOST_PP_ITERATION_START_5 >= 195
+# define BOOST_PP_ITERATION_5 195
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 194 && BOOST_PP_ITERATION_START_5 >= 194
+# define BOOST_PP_ITERATION_5 194
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 193 && BOOST_PP_ITERATION_START_5 >= 193
+# define BOOST_PP_ITERATION_5 193
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 192 && BOOST_PP_ITERATION_START_5 >= 192
+# define BOOST_PP_ITERATION_5 192
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 191 && BOOST_PP_ITERATION_START_5 >= 191
+# define BOOST_PP_ITERATION_5 191
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 190 && BOOST_PP_ITERATION_START_5 >= 190
+# define BOOST_PP_ITERATION_5 190
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 189 && BOOST_PP_ITERATION_START_5 >= 189
+# define BOOST_PP_ITERATION_5 189
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 188 && BOOST_PP_ITERATION_START_5 >= 188
+# define BOOST_PP_ITERATION_5 188
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 187 && BOOST_PP_ITERATION_START_5 >= 187
+# define BOOST_PP_ITERATION_5 187
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 186 && BOOST_PP_ITERATION_START_5 >= 186
+# define BOOST_PP_ITERATION_5 186
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 185 && BOOST_PP_ITERATION_START_5 >= 185
+# define BOOST_PP_ITERATION_5 185
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 184 && BOOST_PP_ITERATION_START_5 >= 184
+# define BOOST_PP_ITERATION_5 184
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 183 && BOOST_PP_ITERATION_START_5 >= 183
+# define BOOST_PP_ITERATION_5 183
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 182 && BOOST_PP_ITERATION_START_5 >= 182
+# define BOOST_PP_ITERATION_5 182
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 181 && BOOST_PP_ITERATION_START_5 >= 181
+# define BOOST_PP_ITERATION_5 181
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 180 && BOOST_PP_ITERATION_START_5 >= 180
+# define BOOST_PP_ITERATION_5 180
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 179 && BOOST_PP_ITERATION_START_5 >= 179
+# define BOOST_PP_ITERATION_5 179
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 178 && BOOST_PP_ITERATION_START_5 >= 178
+# define BOOST_PP_ITERATION_5 178
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 177 && BOOST_PP_ITERATION_START_5 >= 177
+# define BOOST_PP_ITERATION_5 177
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 176 && BOOST_PP_ITERATION_START_5 >= 176
+# define BOOST_PP_ITERATION_5 176
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 175 && BOOST_PP_ITERATION_START_5 >= 175
+# define BOOST_PP_ITERATION_5 175
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 174 && BOOST_PP_ITERATION_START_5 >= 174
+# define BOOST_PP_ITERATION_5 174
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 173 && BOOST_PP_ITERATION_START_5 >= 173
+# define BOOST_PP_ITERATION_5 173
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 172 && BOOST_PP_ITERATION_START_5 >= 172
+# define BOOST_PP_ITERATION_5 172
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 171 && BOOST_PP_ITERATION_START_5 >= 171
+# define BOOST_PP_ITERATION_5 171
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 170 && BOOST_PP_ITERATION_START_5 >= 170
+# define BOOST_PP_ITERATION_5 170
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 169 && BOOST_PP_ITERATION_START_5 >= 169
+# define BOOST_PP_ITERATION_5 169
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 168 && BOOST_PP_ITERATION_START_5 >= 168
+# define BOOST_PP_ITERATION_5 168
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 167 && BOOST_PP_ITERATION_START_5 >= 167
+# define BOOST_PP_ITERATION_5 167
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 166 && BOOST_PP_ITERATION_START_5 >= 166
+# define BOOST_PP_ITERATION_5 166
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 165 && BOOST_PP_ITERATION_START_5 >= 165
+# define BOOST_PP_ITERATION_5 165
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 164 && BOOST_PP_ITERATION_START_5 >= 164
+# define BOOST_PP_ITERATION_5 164
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 163 && BOOST_PP_ITERATION_START_5 >= 163
+# define BOOST_PP_ITERATION_5 163
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 162 && BOOST_PP_ITERATION_START_5 >= 162
+# define BOOST_PP_ITERATION_5 162
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 161 && BOOST_PP_ITERATION_START_5 >= 161
+# define BOOST_PP_ITERATION_5 161
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 160 && BOOST_PP_ITERATION_START_5 >= 160
+# define BOOST_PP_ITERATION_5 160
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 159 && BOOST_PP_ITERATION_START_5 >= 159
+# define BOOST_PP_ITERATION_5 159
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 158 && BOOST_PP_ITERATION_START_5 >= 158
+# define BOOST_PP_ITERATION_5 158
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 157 && BOOST_PP_ITERATION_START_5 >= 157
+# define BOOST_PP_ITERATION_5 157
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 156 && BOOST_PP_ITERATION_START_5 >= 156
+# define BOOST_PP_ITERATION_5 156
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 155 && BOOST_PP_ITERATION_START_5 >= 155
+# define BOOST_PP_ITERATION_5 155
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 154 && BOOST_PP_ITERATION_START_5 >= 154
+# define BOOST_PP_ITERATION_5 154
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 153 && BOOST_PP_ITERATION_START_5 >= 153
+# define BOOST_PP_ITERATION_5 153
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 152 && BOOST_PP_ITERATION_START_5 >= 152
+# define BOOST_PP_ITERATION_5 152
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 151 && BOOST_PP_ITERATION_START_5 >= 151
+# define BOOST_PP_ITERATION_5 151
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 150 && BOOST_PP_ITERATION_START_5 >= 150
+# define BOOST_PP_ITERATION_5 150
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 149 && BOOST_PP_ITERATION_START_5 >= 149
+# define BOOST_PP_ITERATION_5 149
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 148 && BOOST_PP_ITERATION_START_5 >= 148
+# define BOOST_PP_ITERATION_5 148
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 147 && BOOST_PP_ITERATION_START_5 >= 147
+# define BOOST_PP_ITERATION_5 147
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 146 && BOOST_PP_ITERATION_START_5 >= 146
+# define BOOST_PP_ITERATION_5 146
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 145 && BOOST_PP_ITERATION_START_5 >= 145
+# define BOOST_PP_ITERATION_5 145
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 144 && BOOST_PP_ITERATION_START_5 >= 144
+# define BOOST_PP_ITERATION_5 144
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 143 && BOOST_PP_ITERATION_START_5 >= 143
+# define BOOST_PP_ITERATION_5 143
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 142 && BOOST_PP_ITERATION_START_5 >= 142
+# define BOOST_PP_ITERATION_5 142
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 141 && BOOST_PP_ITERATION_START_5 >= 141
+# define BOOST_PP_ITERATION_5 141
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 140 && BOOST_PP_ITERATION_START_5 >= 140
+# define BOOST_PP_ITERATION_5 140
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 139 && BOOST_PP_ITERATION_START_5 >= 139
+# define BOOST_PP_ITERATION_5 139
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 138 && BOOST_PP_ITERATION_START_5 >= 138
+# define BOOST_PP_ITERATION_5 138
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 137 && BOOST_PP_ITERATION_START_5 >= 137
+# define BOOST_PP_ITERATION_5 137
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 136 && BOOST_PP_ITERATION_START_5 >= 136
+# define BOOST_PP_ITERATION_5 136
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 135 && BOOST_PP_ITERATION_START_5 >= 135
+# define BOOST_PP_ITERATION_5 135
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 134 && BOOST_PP_ITERATION_START_5 >= 134
+# define BOOST_PP_ITERATION_5 134
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 133 && BOOST_PP_ITERATION_START_5 >= 133
+# define BOOST_PP_ITERATION_5 133
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 132 && BOOST_PP_ITERATION_START_5 >= 132
+# define BOOST_PP_ITERATION_5 132
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 131 && BOOST_PP_ITERATION_START_5 >= 131
+# define BOOST_PP_ITERATION_5 131
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 130 && BOOST_PP_ITERATION_START_5 >= 130
+# define BOOST_PP_ITERATION_5 130
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 129 && BOOST_PP_ITERATION_START_5 >= 129
+# define BOOST_PP_ITERATION_5 129
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 128 && BOOST_PP_ITERATION_START_5 >= 128
+# define BOOST_PP_ITERATION_5 128
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 127 && BOOST_PP_ITERATION_START_5 >= 127
+# define BOOST_PP_ITERATION_5 127
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 126 && BOOST_PP_ITERATION_START_5 >= 126
+# define BOOST_PP_ITERATION_5 126
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 125 && BOOST_PP_ITERATION_START_5 >= 125
+# define BOOST_PP_ITERATION_5 125
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 124 && BOOST_PP_ITERATION_START_5 >= 124
+# define BOOST_PP_ITERATION_5 124
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 123 && BOOST_PP_ITERATION_START_5 >= 123
+# define BOOST_PP_ITERATION_5 123
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 122 && BOOST_PP_ITERATION_START_5 >= 122
+# define BOOST_PP_ITERATION_5 122
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 121 && BOOST_PP_ITERATION_START_5 >= 121
+# define BOOST_PP_ITERATION_5 121
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 120 && BOOST_PP_ITERATION_START_5 >= 120
+# define BOOST_PP_ITERATION_5 120
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 119 && BOOST_PP_ITERATION_START_5 >= 119
+# define BOOST_PP_ITERATION_5 119
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 118 && BOOST_PP_ITERATION_START_5 >= 118
+# define BOOST_PP_ITERATION_5 118
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 117 && BOOST_PP_ITERATION_START_5 >= 117
+# define BOOST_PP_ITERATION_5 117
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 116 && BOOST_PP_ITERATION_START_5 >= 116
+# define BOOST_PP_ITERATION_5 116
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 115 && BOOST_PP_ITERATION_START_5 >= 115
+# define BOOST_PP_ITERATION_5 115
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 114 && BOOST_PP_ITERATION_START_5 >= 114
+# define BOOST_PP_ITERATION_5 114
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 113 && BOOST_PP_ITERATION_START_5 >= 113
+# define BOOST_PP_ITERATION_5 113
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 112 && BOOST_PP_ITERATION_START_5 >= 112
+# define BOOST_PP_ITERATION_5 112
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 111 && BOOST_PP_ITERATION_START_5 >= 111
+# define BOOST_PP_ITERATION_5 111
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 110 && BOOST_PP_ITERATION_START_5 >= 110
+# define BOOST_PP_ITERATION_5 110
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 109 && BOOST_PP_ITERATION_START_5 >= 109
+# define BOOST_PP_ITERATION_5 109
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 108 && BOOST_PP_ITERATION_START_5 >= 108
+# define BOOST_PP_ITERATION_5 108
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 107 && BOOST_PP_ITERATION_START_5 >= 107
+# define BOOST_PP_ITERATION_5 107
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 106 && BOOST_PP_ITERATION_START_5 >= 106
+# define BOOST_PP_ITERATION_5 106
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 105 && BOOST_PP_ITERATION_START_5 >= 105
+# define BOOST_PP_ITERATION_5 105
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 104 && BOOST_PP_ITERATION_START_5 >= 104
+# define BOOST_PP_ITERATION_5 104
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 103 && BOOST_PP_ITERATION_START_5 >= 103
+# define BOOST_PP_ITERATION_5 103
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 102 && BOOST_PP_ITERATION_START_5 >= 102
+# define BOOST_PP_ITERATION_5 102
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 101 && BOOST_PP_ITERATION_START_5 >= 101
+# define BOOST_PP_ITERATION_5 101
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 100 && BOOST_PP_ITERATION_START_5 >= 100
+# define BOOST_PP_ITERATION_5 100
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 99 && BOOST_PP_ITERATION_START_5 >= 99
+# define BOOST_PP_ITERATION_5 99
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 98 && BOOST_PP_ITERATION_START_5 >= 98
+# define BOOST_PP_ITERATION_5 98
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 97 && BOOST_PP_ITERATION_START_5 >= 97
+# define BOOST_PP_ITERATION_5 97
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 96 && BOOST_PP_ITERATION_START_5 >= 96
+# define BOOST_PP_ITERATION_5 96
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 95 && BOOST_PP_ITERATION_START_5 >= 95
+# define BOOST_PP_ITERATION_5 95
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 94 && BOOST_PP_ITERATION_START_5 >= 94
+# define BOOST_PP_ITERATION_5 94
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 93 && BOOST_PP_ITERATION_START_5 >= 93
+# define BOOST_PP_ITERATION_5 93
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 92 && BOOST_PP_ITERATION_START_5 >= 92
+# define BOOST_PP_ITERATION_5 92
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 91 && BOOST_PP_ITERATION_START_5 >= 91
+# define BOOST_PP_ITERATION_5 91
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 90 && BOOST_PP_ITERATION_START_5 >= 90
+# define BOOST_PP_ITERATION_5 90
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 89 && BOOST_PP_ITERATION_START_5 >= 89
+# define BOOST_PP_ITERATION_5 89
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 88 && BOOST_PP_ITERATION_START_5 >= 88
+# define BOOST_PP_ITERATION_5 88
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 87 && BOOST_PP_ITERATION_START_5 >= 87
+# define BOOST_PP_ITERATION_5 87
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 86 && BOOST_PP_ITERATION_START_5 >= 86
+# define BOOST_PP_ITERATION_5 86
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 85 && BOOST_PP_ITERATION_START_5 >= 85
+# define BOOST_PP_ITERATION_5 85
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 84 && BOOST_PP_ITERATION_START_5 >= 84
+# define BOOST_PP_ITERATION_5 84
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 83 && BOOST_PP_ITERATION_START_5 >= 83
+# define BOOST_PP_ITERATION_5 83
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 82 && BOOST_PP_ITERATION_START_5 >= 82
+# define BOOST_PP_ITERATION_5 82
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 81 && BOOST_PP_ITERATION_START_5 >= 81
+# define BOOST_PP_ITERATION_5 81
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 80 && BOOST_PP_ITERATION_START_5 >= 80
+# define BOOST_PP_ITERATION_5 80
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 79 && BOOST_PP_ITERATION_START_5 >= 79
+# define BOOST_PP_ITERATION_5 79
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 78 && BOOST_PP_ITERATION_START_5 >= 78
+# define BOOST_PP_ITERATION_5 78
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 77 && BOOST_PP_ITERATION_START_5 >= 77
+# define BOOST_PP_ITERATION_5 77
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 76 && BOOST_PP_ITERATION_START_5 >= 76
+# define BOOST_PP_ITERATION_5 76
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 75 && BOOST_PP_ITERATION_START_5 >= 75
+# define BOOST_PP_ITERATION_5 75
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 74 && BOOST_PP_ITERATION_START_5 >= 74
+# define BOOST_PP_ITERATION_5 74
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 73 && BOOST_PP_ITERATION_START_5 >= 73
+# define BOOST_PP_ITERATION_5 73
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 72 && BOOST_PP_ITERATION_START_5 >= 72
+# define BOOST_PP_ITERATION_5 72
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 71 && BOOST_PP_ITERATION_START_5 >= 71
+# define BOOST_PP_ITERATION_5 71
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 70 && BOOST_PP_ITERATION_START_5 >= 70
+# define BOOST_PP_ITERATION_5 70
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 69 && BOOST_PP_ITERATION_START_5 >= 69
+# define BOOST_PP_ITERATION_5 69
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 68 && BOOST_PP_ITERATION_START_5 >= 68
+# define BOOST_PP_ITERATION_5 68
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 67 && BOOST_PP_ITERATION_START_5 >= 67
+# define BOOST_PP_ITERATION_5 67
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 66 && BOOST_PP_ITERATION_START_5 >= 66
+# define BOOST_PP_ITERATION_5 66
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 65 && BOOST_PP_ITERATION_START_5 >= 65
+# define BOOST_PP_ITERATION_5 65
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 64 && BOOST_PP_ITERATION_START_5 >= 64
+# define BOOST_PP_ITERATION_5 64
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 63 && BOOST_PP_ITERATION_START_5 >= 63
+# define BOOST_PP_ITERATION_5 63
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 62 && BOOST_PP_ITERATION_START_5 >= 62
+# define BOOST_PP_ITERATION_5 62
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 61 && BOOST_PP_ITERATION_START_5 >= 61
+# define BOOST_PP_ITERATION_5 61
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 60 && BOOST_PP_ITERATION_START_5 >= 60
+# define BOOST_PP_ITERATION_5 60
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 59 && BOOST_PP_ITERATION_START_5 >= 59
+# define BOOST_PP_ITERATION_5 59
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 58 && BOOST_PP_ITERATION_START_5 >= 58
+# define BOOST_PP_ITERATION_5 58
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 57 && BOOST_PP_ITERATION_START_5 >= 57
+# define BOOST_PP_ITERATION_5 57
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 56 && BOOST_PP_ITERATION_START_5 >= 56
+# define BOOST_PP_ITERATION_5 56
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 55 && BOOST_PP_ITERATION_START_5 >= 55
+# define BOOST_PP_ITERATION_5 55
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 54 && BOOST_PP_ITERATION_START_5 >= 54
+# define BOOST_PP_ITERATION_5 54
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 53 && BOOST_PP_ITERATION_START_5 >= 53
+# define BOOST_PP_ITERATION_5 53
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 52 && BOOST_PP_ITERATION_START_5 >= 52
+# define BOOST_PP_ITERATION_5 52
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 51 && BOOST_PP_ITERATION_START_5 >= 51
+# define BOOST_PP_ITERATION_5 51
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 50 && BOOST_PP_ITERATION_START_5 >= 50
+# define BOOST_PP_ITERATION_5 50
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 49 && BOOST_PP_ITERATION_START_5 >= 49
+# define BOOST_PP_ITERATION_5 49
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 48 && BOOST_PP_ITERATION_START_5 >= 48
+# define BOOST_PP_ITERATION_5 48
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 47 && BOOST_PP_ITERATION_START_5 >= 47
+# define BOOST_PP_ITERATION_5 47
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 46 && BOOST_PP_ITERATION_START_5 >= 46
+# define BOOST_PP_ITERATION_5 46
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 45 && BOOST_PP_ITERATION_START_5 >= 45
+# define BOOST_PP_ITERATION_5 45
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 44 && BOOST_PP_ITERATION_START_5 >= 44
+# define BOOST_PP_ITERATION_5 44
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 43 && BOOST_PP_ITERATION_START_5 >= 43
+# define BOOST_PP_ITERATION_5 43
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 42 && BOOST_PP_ITERATION_START_5 >= 42
+# define BOOST_PP_ITERATION_5 42
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 41 && BOOST_PP_ITERATION_START_5 >= 41
+# define BOOST_PP_ITERATION_5 41
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 40 && BOOST_PP_ITERATION_START_5 >= 40
+# define BOOST_PP_ITERATION_5 40
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 39 && BOOST_PP_ITERATION_START_5 >= 39
+# define BOOST_PP_ITERATION_5 39
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 38 && BOOST_PP_ITERATION_START_5 >= 38
+# define BOOST_PP_ITERATION_5 38
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 37 && BOOST_PP_ITERATION_START_5 >= 37
+# define BOOST_PP_ITERATION_5 37
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 36 && BOOST_PP_ITERATION_START_5 >= 36
+# define BOOST_PP_ITERATION_5 36
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 35 && BOOST_PP_ITERATION_START_5 >= 35
+# define BOOST_PP_ITERATION_5 35
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 34 && BOOST_PP_ITERATION_START_5 >= 34
+# define BOOST_PP_ITERATION_5 34
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 33 && BOOST_PP_ITERATION_START_5 >= 33
+# define BOOST_PP_ITERATION_5 33
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 32 && BOOST_PP_ITERATION_START_5 >= 32
+# define BOOST_PP_ITERATION_5 32
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 31 && BOOST_PP_ITERATION_START_5 >= 31
+# define BOOST_PP_ITERATION_5 31
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 30 && BOOST_PP_ITERATION_START_5 >= 30
+# define BOOST_PP_ITERATION_5 30
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 29 && BOOST_PP_ITERATION_START_5 >= 29
+# define BOOST_PP_ITERATION_5 29
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 28 && BOOST_PP_ITERATION_START_5 >= 28
+# define BOOST_PP_ITERATION_5 28
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 27 && BOOST_PP_ITERATION_START_5 >= 27
+# define BOOST_PP_ITERATION_5 27
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 26 && BOOST_PP_ITERATION_START_5 >= 26
+# define BOOST_PP_ITERATION_5 26
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 25 && BOOST_PP_ITERATION_START_5 >= 25
+# define BOOST_PP_ITERATION_5 25
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 24 && BOOST_PP_ITERATION_START_5 >= 24
+# define BOOST_PP_ITERATION_5 24
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 23 && BOOST_PP_ITERATION_START_5 >= 23
+# define BOOST_PP_ITERATION_5 23
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 22 && BOOST_PP_ITERATION_START_5 >= 22
+# define BOOST_PP_ITERATION_5 22
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 21 && BOOST_PP_ITERATION_START_5 >= 21
+# define BOOST_PP_ITERATION_5 21
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 20 && BOOST_PP_ITERATION_START_5 >= 20
+# define BOOST_PP_ITERATION_5 20
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 19 && BOOST_PP_ITERATION_START_5 >= 19
+# define BOOST_PP_ITERATION_5 19
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 18 && BOOST_PP_ITERATION_START_5 >= 18
+# define BOOST_PP_ITERATION_5 18
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 17 && BOOST_PP_ITERATION_START_5 >= 17
+# define BOOST_PP_ITERATION_5 17
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 16 && BOOST_PP_ITERATION_START_5 >= 16
+# define BOOST_PP_ITERATION_5 16
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 15 && BOOST_PP_ITERATION_START_5 >= 15
+# define BOOST_PP_ITERATION_5 15
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 14 && BOOST_PP_ITERATION_START_5 >= 14
+# define BOOST_PP_ITERATION_5 14
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 13 && BOOST_PP_ITERATION_START_5 >= 13
+# define BOOST_PP_ITERATION_5 13
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 12 && BOOST_PP_ITERATION_START_5 >= 12
+# define BOOST_PP_ITERATION_5 12
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 11 && BOOST_PP_ITERATION_START_5 >= 11
+# define BOOST_PP_ITERATION_5 11
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 10 && BOOST_PP_ITERATION_START_5 >= 10
+# define BOOST_PP_ITERATION_5 10
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 9 && BOOST_PP_ITERATION_START_5 >= 9
+# define BOOST_PP_ITERATION_5 9
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 8 && BOOST_PP_ITERATION_START_5 >= 8
+# define BOOST_PP_ITERATION_5 8
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 7 && BOOST_PP_ITERATION_START_5 >= 7
+# define BOOST_PP_ITERATION_5 7
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 6 && BOOST_PP_ITERATION_START_5 >= 6
+# define BOOST_PP_ITERATION_5 6
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 5 && BOOST_PP_ITERATION_START_5 >= 5
+# define BOOST_PP_ITERATION_5 5
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 4 && BOOST_PP_ITERATION_START_5 >= 4
+# define BOOST_PP_ITERATION_5 4
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 3 && BOOST_PP_ITERATION_START_5 >= 3
+# define BOOST_PP_ITERATION_5 3
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 2 && BOOST_PP_ITERATION_START_5 >= 2
+# define BOOST_PP_ITERATION_5 2
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 1 && BOOST_PP_ITERATION_START_5 >= 1
+# define BOOST_PP_ITERATION_5 1
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 0 && BOOST_PP_ITERATION_START_5 >= 0
+# define BOOST_PP_ITERATION_5 0
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/local.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/local.hpp
new file mode 100644
index 0000000..ccddd5e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/local.hpp
@@ -0,0 +1,812 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if !defined(BOOST_PP_LOCAL_LIMITS)
+# error BOOST_PP_ERROR: local iteration boundaries are not defined
+# elif !defined(BOOST_PP_LOCAL_MACRO)
+# error BOOST_PP_ERROR: local iteration target macro is not defined
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LOCAL_S BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_LOCAL_LIMITS)
+# define BOOST_PP_LOCAL_F BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_LOCAL_LIMITS)
+# else
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_LOCAL_LIMITS)
+# include <boost/preprocessor/iteration/detail/start.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_LOCAL_LIMITS)
+# include <boost/preprocessor/iteration/detail/finish.hpp>
+# define BOOST_PP_LOCAL_S BOOST_PP_LOCAL_SE()
+# define BOOST_PP_LOCAL_F BOOST_PP_LOCAL_FE()
+# endif
+# endif
+#
+# if (BOOST_PP_LOCAL_S) > (BOOST_PP_LOCAL_F)
+# include <boost/preprocessor/iteration/detail/rlocal.hpp>
+# else
+# if BOOST_PP_LOCAL_C(0)
+ BOOST_PP_LOCAL_MACRO(0)
+# endif
+# if BOOST_PP_LOCAL_C(1)
+ BOOST_PP_LOCAL_MACRO(1)
+# endif
+# if BOOST_PP_LOCAL_C(2)
+ BOOST_PP_LOCAL_MACRO(2)
+# endif
+# if BOOST_PP_LOCAL_C(3)
+ BOOST_PP_LOCAL_MACRO(3)
+# endif
+# if BOOST_PP_LOCAL_C(4)
+ BOOST_PP_LOCAL_MACRO(4)
+# endif
+# if BOOST_PP_LOCAL_C(5)
+ BOOST_PP_LOCAL_MACRO(5)
+# endif
+# if BOOST_PP_LOCAL_C(6)
+ BOOST_PP_LOCAL_MACRO(6)
+# endif
+# if BOOST_PP_LOCAL_C(7)
+ BOOST_PP_LOCAL_MACRO(7)
+# endif
+# if BOOST_PP_LOCAL_C(8)
+ BOOST_PP_LOCAL_MACRO(8)
+# endif
+# if BOOST_PP_LOCAL_C(9)
+ BOOST_PP_LOCAL_MACRO(9)
+# endif
+# if BOOST_PP_LOCAL_C(10)
+ BOOST_PP_LOCAL_MACRO(10)
+# endif
+# if BOOST_PP_LOCAL_C(11)
+ BOOST_PP_LOCAL_MACRO(11)
+# endif
+# if BOOST_PP_LOCAL_C(12)
+ BOOST_PP_LOCAL_MACRO(12)
+# endif
+# if BOOST_PP_LOCAL_C(13)
+ BOOST_PP_LOCAL_MACRO(13)
+# endif
+# if BOOST_PP_LOCAL_C(14)
+ BOOST_PP_LOCAL_MACRO(14)
+# endif
+# if BOOST_PP_LOCAL_C(15)
+ BOOST_PP_LOCAL_MACRO(15)
+# endif
+# if BOOST_PP_LOCAL_C(16)
+ BOOST_PP_LOCAL_MACRO(16)
+# endif
+# if BOOST_PP_LOCAL_C(17)
+ BOOST_PP_LOCAL_MACRO(17)
+# endif
+# if BOOST_PP_LOCAL_C(18)
+ BOOST_PP_LOCAL_MACRO(18)
+# endif
+# if BOOST_PP_LOCAL_C(19)
+ BOOST_PP_LOCAL_MACRO(19)
+# endif
+# if BOOST_PP_LOCAL_C(20)
+ BOOST_PP_LOCAL_MACRO(20)
+# endif
+# if BOOST_PP_LOCAL_C(21)
+ BOOST_PP_LOCAL_MACRO(21)
+# endif
+# if BOOST_PP_LOCAL_C(22)
+ BOOST_PP_LOCAL_MACRO(22)
+# endif
+# if BOOST_PP_LOCAL_C(23)
+ BOOST_PP_LOCAL_MACRO(23)
+# endif
+# if BOOST_PP_LOCAL_C(24)
+ BOOST_PP_LOCAL_MACRO(24)
+# endif
+# if BOOST_PP_LOCAL_C(25)
+ BOOST_PP_LOCAL_MACRO(25)
+# endif
+# if BOOST_PP_LOCAL_C(26)
+ BOOST_PP_LOCAL_MACRO(26)
+# endif
+# if BOOST_PP_LOCAL_C(27)
+ BOOST_PP_LOCAL_MACRO(27)
+# endif
+# if BOOST_PP_LOCAL_C(28)
+ BOOST_PP_LOCAL_MACRO(28)
+# endif
+# if BOOST_PP_LOCAL_C(29)
+ BOOST_PP_LOCAL_MACRO(29)
+# endif
+# if BOOST_PP_LOCAL_C(30)
+ BOOST_PP_LOCAL_MACRO(30)
+# endif
+# if BOOST_PP_LOCAL_C(31)
+ BOOST_PP_LOCAL_MACRO(31)
+# endif
+# if BOOST_PP_LOCAL_C(32)
+ BOOST_PP_LOCAL_MACRO(32)
+# endif
+# if BOOST_PP_LOCAL_C(33)
+ BOOST_PP_LOCAL_MACRO(33)
+# endif
+# if BOOST_PP_LOCAL_C(34)
+ BOOST_PP_LOCAL_MACRO(34)
+# endif
+# if BOOST_PP_LOCAL_C(35)
+ BOOST_PP_LOCAL_MACRO(35)
+# endif
+# if BOOST_PP_LOCAL_C(36)
+ BOOST_PP_LOCAL_MACRO(36)
+# endif
+# if BOOST_PP_LOCAL_C(37)
+ BOOST_PP_LOCAL_MACRO(37)
+# endif
+# if BOOST_PP_LOCAL_C(38)
+ BOOST_PP_LOCAL_MACRO(38)
+# endif
+# if BOOST_PP_LOCAL_C(39)
+ BOOST_PP_LOCAL_MACRO(39)
+# endif
+# if BOOST_PP_LOCAL_C(40)
+ BOOST_PP_LOCAL_MACRO(40)
+# endif
+# if BOOST_PP_LOCAL_C(41)
+ BOOST_PP_LOCAL_MACRO(41)
+# endif
+# if BOOST_PP_LOCAL_C(42)
+ BOOST_PP_LOCAL_MACRO(42)
+# endif
+# if BOOST_PP_LOCAL_C(43)
+ BOOST_PP_LOCAL_MACRO(43)
+# endif
+# if BOOST_PP_LOCAL_C(44)
+ BOOST_PP_LOCAL_MACRO(44)
+# endif
+# if BOOST_PP_LOCAL_C(45)
+ BOOST_PP_LOCAL_MACRO(45)
+# endif
+# if BOOST_PP_LOCAL_C(46)
+ BOOST_PP_LOCAL_MACRO(46)
+# endif
+# if BOOST_PP_LOCAL_C(47)
+ BOOST_PP_LOCAL_MACRO(47)
+# endif
+# if BOOST_PP_LOCAL_C(48)
+ BOOST_PP_LOCAL_MACRO(48)
+# endif
+# if BOOST_PP_LOCAL_C(49)
+ BOOST_PP_LOCAL_MACRO(49)
+# endif
+# if BOOST_PP_LOCAL_C(50)
+ BOOST_PP_LOCAL_MACRO(50)
+# endif
+# if BOOST_PP_LOCAL_C(51)
+ BOOST_PP_LOCAL_MACRO(51)
+# endif
+# if BOOST_PP_LOCAL_C(52)
+ BOOST_PP_LOCAL_MACRO(52)
+# endif
+# if BOOST_PP_LOCAL_C(53)
+ BOOST_PP_LOCAL_MACRO(53)
+# endif
+# if BOOST_PP_LOCAL_C(54)
+ BOOST_PP_LOCAL_MACRO(54)
+# endif
+# if BOOST_PP_LOCAL_C(55)
+ BOOST_PP_LOCAL_MACRO(55)
+# endif
+# if BOOST_PP_LOCAL_C(56)
+ BOOST_PP_LOCAL_MACRO(56)
+# endif
+# if BOOST_PP_LOCAL_C(57)
+ BOOST_PP_LOCAL_MACRO(57)
+# endif
+# if BOOST_PP_LOCAL_C(58)
+ BOOST_PP_LOCAL_MACRO(58)
+# endif
+# if BOOST_PP_LOCAL_C(59)
+ BOOST_PP_LOCAL_MACRO(59)
+# endif
+# if BOOST_PP_LOCAL_C(60)
+ BOOST_PP_LOCAL_MACRO(60)
+# endif
+# if BOOST_PP_LOCAL_C(61)
+ BOOST_PP_LOCAL_MACRO(61)
+# endif
+# if BOOST_PP_LOCAL_C(62)
+ BOOST_PP_LOCAL_MACRO(62)
+# endif
+# if BOOST_PP_LOCAL_C(63)
+ BOOST_PP_LOCAL_MACRO(63)
+# endif
+# if BOOST_PP_LOCAL_C(64)
+ BOOST_PP_LOCAL_MACRO(64)
+# endif
+# if BOOST_PP_LOCAL_C(65)
+ BOOST_PP_LOCAL_MACRO(65)
+# endif
+# if BOOST_PP_LOCAL_C(66)
+ BOOST_PP_LOCAL_MACRO(66)
+# endif
+# if BOOST_PP_LOCAL_C(67)
+ BOOST_PP_LOCAL_MACRO(67)
+# endif
+# if BOOST_PP_LOCAL_C(68)
+ BOOST_PP_LOCAL_MACRO(68)
+# endif
+# if BOOST_PP_LOCAL_C(69)
+ BOOST_PP_LOCAL_MACRO(69)
+# endif
+# if BOOST_PP_LOCAL_C(70)
+ BOOST_PP_LOCAL_MACRO(70)
+# endif
+# if BOOST_PP_LOCAL_C(71)
+ BOOST_PP_LOCAL_MACRO(71)
+# endif
+# if BOOST_PP_LOCAL_C(72)
+ BOOST_PP_LOCAL_MACRO(72)
+# endif
+# if BOOST_PP_LOCAL_C(73)
+ BOOST_PP_LOCAL_MACRO(73)
+# endif
+# if BOOST_PP_LOCAL_C(74)
+ BOOST_PP_LOCAL_MACRO(74)
+# endif
+# if BOOST_PP_LOCAL_C(75)
+ BOOST_PP_LOCAL_MACRO(75)
+# endif
+# if BOOST_PP_LOCAL_C(76)
+ BOOST_PP_LOCAL_MACRO(76)
+# endif
+# if BOOST_PP_LOCAL_C(77)
+ BOOST_PP_LOCAL_MACRO(77)
+# endif
+# if BOOST_PP_LOCAL_C(78)
+ BOOST_PP_LOCAL_MACRO(78)
+# endif
+# if BOOST_PP_LOCAL_C(79)
+ BOOST_PP_LOCAL_MACRO(79)
+# endif
+# if BOOST_PP_LOCAL_C(80)
+ BOOST_PP_LOCAL_MACRO(80)
+# endif
+# if BOOST_PP_LOCAL_C(81)
+ BOOST_PP_LOCAL_MACRO(81)
+# endif
+# if BOOST_PP_LOCAL_C(82)
+ BOOST_PP_LOCAL_MACRO(82)
+# endif
+# if BOOST_PP_LOCAL_C(83)
+ BOOST_PP_LOCAL_MACRO(83)
+# endif
+# if BOOST_PP_LOCAL_C(84)
+ BOOST_PP_LOCAL_MACRO(84)
+# endif
+# if BOOST_PP_LOCAL_C(85)
+ BOOST_PP_LOCAL_MACRO(85)
+# endif
+# if BOOST_PP_LOCAL_C(86)
+ BOOST_PP_LOCAL_MACRO(86)
+# endif
+# if BOOST_PP_LOCAL_C(87)
+ BOOST_PP_LOCAL_MACRO(87)
+# endif
+# if BOOST_PP_LOCAL_C(88)
+ BOOST_PP_LOCAL_MACRO(88)
+# endif
+# if BOOST_PP_LOCAL_C(89)
+ BOOST_PP_LOCAL_MACRO(89)
+# endif
+# if BOOST_PP_LOCAL_C(90)
+ BOOST_PP_LOCAL_MACRO(90)
+# endif
+# if BOOST_PP_LOCAL_C(91)
+ BOOST_PP_LOCAL_MACRO(91)
+# endif
+# if BOOST_PP_LOCAL_C(92)
+ BOOST_PP_LOCAL_MACRO(92)
+# endif
+# if BOOST_PP_LOCAL_C(93)
+ BOOST_PP_LOCAL_MACRO(93)
+# endif
+# if BOOST_PP_LOCAL_C(94)
+ BOOST_PP_LOCAL_MACRO(94)
+# endif
+# if BOOST_PP_LOCAL_C(95)
+ BOOST_PP_LOCAL_MACRO(95)
+# endif
+# if BOOST_PP_LOCAL_C(96)
+ BOOST_PP_LOCAL_MACRO(96)
+# endif
+# if BOOST_PP_LOCAL_C(97)
+ BOOST_PP_LOCAL_MACRO(97)
+# endif
+# if BOOST_PP_LOCAL_C(98)
+ BOOST_PP_LOCAL_MACRO(98)
+# endif
+# if BOOST_PP_LOCAL_C(99)
+ BOOST_PP_LOCAL_MACRO(99)
+# endif
+# if BOOST_PP_LOCAL_C(100)
+ BOOST_PP_LOCAL_MACRO(100)
+# endif
+# if BOOST_PP_LOCAL_C(101)
+ BOOST_PP_LOCAL_MACRO(101)
+# endif
+# if BOOST_PP_LOCAL_C(102)
+ BOOST_PP_LOCAL_MACRO(102)
+# endif
+# if BOOST_PP_LOCAL_C(103)
+ BOOST_PP_LOCAL_MACRO(103)
+# endif
+# if BOOST_PP_LOCAL_C(104)
+ BOOST_PP_LOCAL_MACRO(104)
+# endif
+# if BOOST_PP_LOCAL_C(105)
+ BOOST_PP_LOCAL_MACRO(105)
+# endif
+# if BOOST_PP_LOCAL_C(106)
+ BOOST_PP_LOCAL_MACRO(106)
+# endif
+# if BOOST_PP_LOCAL_C(107)
+ BOOST_PP_LOCAL_MACRO(107)
+# endif
+# if BOOST_PP_LOCAL_C(108)
+ BOOST_PP_LOCAL_MACRO(108)
+# endif
+# if BOOST_PP_LOCAL_C(109)
+ BOOST_PP_LOCAL_MACRO(109)
+# endif
+# if BOOST_PP_LOCAL_C(110)
+ BOOST_PP_LOCAL_MACRO(110)
+# endif
+# if BOOST_PP_LOCAL_C(111)
+ BOOST_PP_LOCAL_MACRO(111)
+# endif
+# if BOOST_PP_LOCAL_C(112)
+ BOOST_PP_LOCAL_MACRO(112)
+# endif
+# if BOOST_PP_LOCAL_C(113)
+ BOOST_PP_LOCAL_MACRO(113)
+# endif
+# if BOOST_PP_LOCAL_C(114)
+ BOOST_PP_LOCAL_MACRO(114)
+# endif
+# if BOOST_PP_LOCAL_C(115)
+ BOOST_PP_LOCAL_MACRO(115)
+# endif
+# if BOOST_PP_LOCAL_C(116)
+ BOOST_PP_LOCAL_MACRO(116)
+# endif
+# if BOOST_PP_LOCAL_C(117)
+ BOOST_PP_LOCAL_MACRO(117)
+# endif
+# if BOOST_PP_LOCAL_C(118)
+ BOOST_PP_LOCAL_MACRO(118)
+# endif
+# if BOOST_PP_LOCAL_C(119)
+ BOOST_PP_LOCAL_MACRO(119)
+# endif
+# if BOOST_PP_LOCAL_C(120)
+ BOOST_PP_LOCAL_MACRO(120)
+# endif
+# if BOOST_PP_LOCAL_C(121)
+ BOOST_PP_LOCAL_MACRO(121)
+# endif
+# if BOOST_PP_LOCAL_C(122)
+ BOOST_PP_LOCAL_MACRO(122)
+# endif
+# if BOOST_PP_LOCAL_C(123)
+ BOOST_PP_LOCAL_MACRO(123)
+# endif
+# if BOOST_PP_LOCAL_C(124)
+ BOOST_PP_LOCAL_MACRO(124)
+# endif
+# if BOOST_PP_LOCAL_C(125)
+ BOOST_PP_LOCAL_MACRO(125)
+# endif
+# if BOOST_PP_LOCAL_C(126)
+ BOOST_PP_LOCAL_MACRO(126)
+# endif
+# if BOOST_PP_LOCAL_C(127)
+ BOOST_PP_LOCAL_MACRO(127)
+# endif
+# if BOOST_PP_LOCAL_C(128)
+ BOOST_PP_LOCAL_MACRO(128)
+# endif
+# if BOOST_PP_LOCAL_C(129)
+ BOOST_PP_LOCAL_MACRO(129)
+# endif
+# if BOOST_PP_LOCAL_C(130)
+ BOOST_PP_LOCAL_MACRO(130)
+# endif
+# if BOOST_PP_LOCAL_C(131)
+ BOOST_PP_LOCAL_MACRO(131)
+# endif
+# if BOOST_PP_LOCAL_C(132)
+ BOOST_PP_LOCAL_MACRO(132)
+# endif
+# if BOOST_PP_LOCAL_C(133)
+ BOOST_PP_LOCAL_MACRO(133)
+# endif
+# if BOOST_PP_LOCAL_C(134)
+ BOOST_PP_LOCAL_MACRO(134)
+# endif
+# if BOOST_PP_LOCAL_C(135)
+ BOOST_PP_LOCAL_MACRO(135)
+# endif
+# if BOOST_PP_LOCAL_C(136)
+ BOOST_PP_LOCAL_MACRO(136)
+# endif
+# if BOOST_PP_LOCAL_C(137)
+ BOOST_PP_LOCAL_MACRO(137)
+# endif
+# if BOOST_PP_LOCAL_C(138)
+ BOOST_PP_LOCAL_MACRO(138)
+# endif
+# if BOOST_PP_LOCAL_C(139)
+ BOOST_PP_LOCAL_MACRO(139)
+# endif
+# if BOOST_PP_LOCAL_C(140)
+ BOOST_PP_LOCAL_MACRO(140)
+# endif
+# if BOOST_PP_LOCAL_C(141)
+ BOOST_PP_LOCAL_MACRO(141)
+# endif
+# if BOOST_PP_LOCAL_C(142)
+ BOOST_PP_LOCAL_MACRO(142)
+# endif
+# if BOOST_PP_LOCAL_C(143)
+ BOOST_PP_LOCAL_MACRO(143)
+# endif
+# if BOOST_PP_LOCAL_C(144)
+ BOOST_PP_LOCAL_MACRO(144)
+# endif
+# if BOOST_PP_LOCAL_C(145)
+ BOOST_PP_LOCAL_MACRO(145)
+# endif
+# if BOOST_PP_LOCAL_C(146)
+ BOOST_PP_LOCAL_MACRO(146)
+# endif
+# if BOOST_PP_LOCAL_C(147)
+ BOOST_PP_LOCAL_MACRO(147)
+# endif
+# if BOOST_PP_LOCAL_C(148)
+ BOOST_PP_LOCAL_MACRO(148)
+# endif
+# if BOOST_PP_LOCAL_C(149)
+ BOOST_PP_LOCAL_MACRO(149)
+# endif
+# if BOOST_PP_LOCAL_C(150)
+ BOOST_PP_LOCAL_MACRO(150)
+# endif
+# if BOOST_PP_LOCAL_C(151)
+ BOOST_PP_LOCAL_MACRO(151)
+# endif
+# if BOOST_PP_LOCAL_C(152)
+ BOOST_PP_LOCAL_MACRO(152)
+# endif
+# if BOOST_PP_LOCAL_C(153)
+ BOOST_PP_LOCAL_MACRO(153)
+# endif
+# if BOOST_PP_LOCAL_C(154)
+ BOOST_PP_LOCAL_MACRO(154)
+# endif
+# if BOOST_PP_LOCAL_C(155)
+ BOOST_PP_LOCAL_MACRO(155)
+# endif
+# if BOOST_PP_LOCAL_C(156)
+ BOOST_PP_LOCAL_MACRO(156)
+# endif
+# if BOOST_PP_LOCAL_C(157)
+ BOOST_PP_LOCAL_MACRO(157)
+# endif
+# if BOOST_PP_LOCAL_C(158)
+ BOOST_PP_LOCAL_MACRO(158)
+# endif
+# if BOOST_PP_LOCAL_C(159)
+ BOOST_PP_LOCAL_MACRO(159)
+# endif
+# if BOOST_PP_LOCAL_C(160)
+ BOOST_PP_LOCAL_MACRO(160)
+# endif
+# if BOOST_PP_LOCAL_C(161)
+ BOOST_PP_LOCAL_MACRO(161)
+# endif
+# if BOOST_PP_LOCAL_C(162)
+ BOOST_PP_LOCAL_MACRO(162)
+# endif
+# if BOOST_PP_LOCAL_C(163)
+ BOOST_PP_LOCAL_MACRO(163)
+# endif
+# if BOOST_PP_LOCAL_C(164)
+ BOOST_PP_LOCAL_MACRO(164)
+# endif
+# if BOOST_PP_LOCAL_C(165)
+ BOOST_PP_LOCAL_MACRO(165)
+# endif
+# if BOOST_PP_LOCAL_C(166)
+ BOOST_PP_LOCAL_MACRO(166)
+# endif
+# if BOOST_PP_LOCAL_C(167)
+ BOOST_PP_LOCAL_MACRO(167)
+# endif
+# if BOOST_PP_LOCAL_C(168)
+ BOOST_PP_LOCAL_MACRO(168)
+# endif
+# if BOOST_PP_LOCAL_C(169)
+ BOOST_PP_LOCAL_MACRO(169)
+# endif
+# if BOOST_PP_LOCAL_C(170)
+ BOOST_PP_LOCAL_MACRO(170)
+# endif
+# if BOOST_PP_LOCAL_C(171)
+ BOOST_PP_LOCAL_MACRO(171)
+# endif
+# if BOOST_PP_LOCAL_C(172)
+ BOOST_PP_LOCAL_MACRO(172)
+# endif
+# if BOOST_PP_LOCAL_C(173)
+ BOOST_PP_LOCAL_MACRO(173)
+# endif
+# if BOOST_PP_LOCAL_C(174)
+ BOOST_PP_LOCAL_MACRO(174)
+# endif
+# if BOOST_PP_LOCAL_C(175)
+ BOOST_PP_LOCAL_MACRO(175)
+# endif
+# if BOOST_PP_LOCAL_C(176)
+ BOOST_PP_LOCAL_MACRO(176)
+# endif
+# if BOOST_PP_LOCAL_C(177)
+ BOOST_PP_LOCAL_MACRO(177)
+# endif
+# if BOOST_PP_LOCAL_C(178)
+ BOOST_PP_LOCAL_MACRO(178)
+# endif
+# if BOOST_PP_LOCAL_C(179)
+ BOOST_PP_LOCAL_MACRO(179)
+# endif
+# if BOOST_PP_LOCAL_C(180)
+ BOOST_PP_LOCAL_MACRO(180)
+# endif
+# if BOOST_PP_LOCAL_C(181)
+ BOOST_PP_LOCAL_MACRO(181)
+# endif
+# if BOOST_PP_LOCAL_C(182)
+ BOOST_PP_LOCAL_MACRO(182)
+# endif
+# if BOOST_PP_LOCAL_C(183)
+ BOOST_PP_LOCAL_MACRO(183)
+# endif
+# if BOOST_PP_LOCAL_C(184)
+ BOOST_PP_LOCAL_MACRO(184)
+# endif
+# if BOOST_PP_LOCAL_C(185)
+ BOOST_PP_LOCAL_MACRO(185)
+# endif
+# if BOOST_PP_LOCAL_C(186)
+ BOOST_PP_LOCAL_MACRO(186)
+# endif
+# if BOOST_PP_LOCAL_C(187)
+ BOOST_PP_LOCAL_MACRO(187)
+# endif
+# if BOOST_PP_LOCAL_C(188)
+ BOOST_PP_LOCAL_MACRO(188)
+# endif
+# if BOOST_PP_LOCAL_C(189)
+ BOOST_PP_LOCAL_MACRO(189)
+# endif
+# if BOOST_PP_LOCAL_C(190)
+ BOOST_PP_LOCAL_MACRO(190)
+# endif
+# if BOOST_PP_LOCAL_C(191)
+ BOOST_PP_LOCAL_MACRO(191)
+# endif
+# if BOOST_PP_LOCAL_C(192)
+ BOOST_PP_LOCAL_MACRO(192)
+# endif
+# if BOOST_PP_LOCAL_C(193)
+ BOOST_PP_LOCAL_MACRO(193)
+# endif
+# if BOOST_PP_LOCAL_C(194)
+ BOOST_PP_LOCAL_MACRO(194)
+# endif
+# if BOOST_PP_LOCAL_C(195)
+ BOOST_PP_LOCAL_MACRO(195)
+# endif
+# if BOOST_PP_LOCAL_C(196)
+ BOOST_PP_LOCAL_MACRO(196)
+# endif
+# if BOOST_PP_LOCAL_C(197)
+ BOOST_PP_LOCAL_MACRO(197)
+# endif
+# if BOOST_PP_LOCAL_C(198)
+ BOOST_PP_LOCAL_MACRO(198)
+# endif
+# if BOOST_PP_LOCAL_C(199)
+ BOOST_PP_LOCAL_MACRO(199)
+# endif
+# if BOOST_PP_LOCAL_C(200)
+ BOOST_PP_LOCAL_MACRO(200)
+# endif
+# if BOOST_PP_LOCAL_C(201)
+ BOOST_PP_LOCAL_MACRO(201)
+# endif
+# if BOOST_PP_LOCAL_C(202)
+ BOOST_PP_LOCAL_MACRO(202)
+# endif
+# if BOOST_PP_LOCAL_C(203)
+ BOOST_PP_LOCAL_MACRO(203)
+# endif
+# if BOOST_PP_LOCAL_C(204)
+ BOOST_PP_LOCAL_MACRO(204)
+# endif
+# if BOOST_PP_LOCAL_C(205)
+ BOOST_PP_LOCAL_MACRO(205)
+# endif
+# if BOOST_PP_LOCAL_C(206)
+ BOOST_PP_LOCAL_MACRO(206)
+# endif
+# if BOOST_PP_LOCAL_C(207)
+ BOOST_PP_LOCAL_MACRO(207)
+# endif
+# if BOOST_PP_LOCAL_C(208)
+ BOOST_PP_LOCAL_MACRO(208)
+# endif
+# if BOOST_PP_LOCAL_C(209)
+ BOOST_PP_LOCAL_MACRO(209)
+# endif
+# if BOOST_PP_LOCAL_C(210)
+ BOOST_PP_LOCAL_MACRO(210)
+# endif
+# if BOOST_PP_LOCAL_C(211)
+ BOOST_PP_LOCAL_MACRO(211)
+# endif
+# if BOOST_PP_LOCAL_C(212)
+ BOOST_PP_LOCAL_MACRO(212)
+# endif
+# if BOOST_PP_LOCAL_C(213)
+ BOOST_PP_LOCAL_MACRO(213)
+# endif
+# if BOOST_PP_LOCAL_C(214)
+ BOOST_PP_LOCAL_MACRO(214)
+# endif
+# if BOOST_PP_LOCAL_C(215)
+ BOOST_PP_LOCAL_MACRO(215)
+# endif
+# if BOOST_PP_LOCAL_C(216)
+ BOOST_PP_LOCAL_MACRO(216)
+# endif
+# if BOOST_PP_LOCAL_C(217)
+ BOOST_PP_LOCAL_MACRO(217)
+# endif
+# if BOOST_PP_LOCAL_C(218)
+ BOOST_PP_LOCAL_MACRO(218)
+# endif
+# if BOOST_PP_LOCAL_C(219)
+ BOOST_PP_LOCAL_MACRO(219)
+# endif
+# if BOOST_PP_LOCAL_C(220)
+ BOOST_PP_LOCAL_MACRO(220)
+# endif
+# if BOOST_PP_LOCAL_C(221)
+ BOOST_PP_LOCAL_MACRO(221)
+# endif
+# if BOOST_PP_LOCAL_C(222)
+ BOOST_PP_LOCAL_MACRO(222)
+# endif
+# if BOOST_PP_LOCAL_C(223)
+ BOOST_PP_LOCAL_MACRO(223)
+# endif
+# if BOOST_PP_LOCAL_C(224)
+ BOOST_PP_LOCAL_MACRO(224)
+# endif
+# if BOOST_PP_LOCAL_C(225)
+ BOOST_PP_LOCAL_MACRO(225)
+# endif
+# if BOOST_PP_LOCAL_C(226)
+ BOOST_PP_LOCAL_MACRO(226)
+# endif
+# if BOOST_PP_LOCAL_C(227)
+ BOOST_PP_LOCAL_MACRO(227)
+# endif
+# if BOOST_PP_LOCAL_C(228)
+ BOOST_PP_LOCAL_MACRO(228)
+# endif
+# if BOOST_PP_LOCAL_C(229)
+ BOOST_PP_LOCAL_MACRO(229)
+# endif
+# if BOOST_PP_LOCAL_C(230)
+ BOOST_PP_LOCAL_MACRO(230)
+# endif
+# if BOOST_PP_LOCAL_C(231)
+ BOOST_PP_LOCAL_MACRO(231)
+# endif
+# if BOOST_PP_LOCAL_C(232)
+ BOOST_PP_LOCAL_MACRO(232)
+# endif
+# if BOOST_PP_LOCAL_C(233)
+ BOOST_PP_LOCAL_MACRO(233)
+# endif
+# if BOOST_PP_LOCAL_C(234)
+ BOOST_PP_LOCAL_MACRO(234)
+# endif
+# if BOOST_PP_LOCAL_C(235)
+ BOOST_PP_LOCAL_MACRO(235)
+# endif
+# if BOOST_PP_LOCAL_C(236)
+ BOOST_PP_LOCAL_MACRO(236)
+# endif
+
+# if BOOST_PP_LOCAL_C(237)
+ BOOST_PP_LOCAL_MACRO(237)
+# endif
+# if BOOST_PP_LOCAL_C(238)
+ BOOST_PP_LOCAL_MACRO(238)
+# endif
+# if BOOST_PP_LOCAL_C(239)
+ BOOST_PP_LOCAL_MACRO(239)
+# endif
+# if BOOST_PP_LOCAL_C(240)
+ BOOST_PP_LOCAL_MACRO(240)
+# endif
+# if BOOST_PP_LOCAL_C(241)
+ BOOST_PP_LOCAL_MACRO(241)
+# endif
+# if BOOST_PP_LOCAL_C(242)
+ BOOST_PP_LOCAL_MACRO(242)
+# endif
+# if BOOST_PP_LOCAL_C(243)
+ BOOST_PP_LOCAL_MACRO(243)
+# endif
+# if BOOST_PP_LOCAL_C(244)
+ BOOST_PP_LOCAL_MACRO(244)
+# endif
+# if BOOST_PP_LOCAL_C(245)
+ BOOST_PP_LOCAL_MACRO(245)
+# endif
+# if BOOST_PP_LOCAL_C(246)
+ BOOST_PP_LOCAL_MACRO(246)
+# endif
+# if BOOST_PP_LOCAL_C(247)
+ BOOST_PP_LOCAL_MACRO(247)
+# endif
+# if BOOST_PP_LOCAL_C(248)
+ BOOST_PP_LOCAL_MACRO(248)
+# endif
+# if BOOST_PP_LOCAL_C(249)
+ BOOST_PP_LOCAL_MACRO(249)
+# endif
+# if BOOST_PP_LOCAL_C(250)
+ BOOST_PP_LOCAL_MACRO(250)
+# endif
+# if BOOST_PP_LOCAL_C(251)
+ BOOST_PP_LOCAL_MACRO(251)
+# endif
+# if BOOST_PP_LOCAL_C(252)
+ BOOST_PP_LOCAL_MACRO(252)
+# endif
+# if BOOST_PP_LOCAL_C(253)
+ BOOST_PP_LOCAL_MACRO(253)
+# endif
+# if BOOST_PP_LOCAL_C(254)
+ BOOST_PP_LOCAL_MACRO(254)
+# endif
+# if BOOST_PP_LOCAL_C(255)
+ BOOST_PP_LOCAL_MACRO(255)
+# endif
+# if BOOST_PP_LOCAL_C(256)
+ BOOST_PP_LOCAL_MACRO(256)
+# endif
+# endif
+#
+# undef BOOST_PP_LOCAL_LIMITS
+#
+# undef BOOST_PP_LOCAL_S
+# undef BOOST_PP_LOCAL_F
+#
+# undef BOOST_PP_LOCAL_MACRO
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/rlocal.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/rlocal.hpp
new file mode 100644
index 0000000..413afa0
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/rlocal.hpp
@@ -0,0 +1,782 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if BOOST_PP_LOCAL_R(256)
+ BOOST_PP_LOCAL_MACRO(256)
+# endif
+# if BOOST_PP_LOCAL_R(255)
+ BOOST_PP_LOCAL_MACRO(255)
+# endif
+# if BOOST_PP_LOCAL_R(254)
+ BOOST_PP_LOCAL_MACRO(254)
+# endif
+# if BOOST_PP_LOCAL_R(253)
+ BOOST_PP_LOCAL_MACRO(253)
+# endif
+# if BOOST_PP_LOCAL_R(252)
+ BOOST_PP_LOCAL_MACRO(252)
+# endif
+# if BOOST_PP_LOCAL_R(251)
+ BOOST_PP_LOCAL_MACRO(251)
+# endif
+# if BOOST_PP_LOCAL_R(250)
+ BOOST_PP_LOCAL_MACRO(250)
+# endif
+# if BOOST_PP_LOCAL_R(249)
+ BOOST_PP_LOCAL_MACRO(249)
+# endif
+# if BOOST_PP_LOCAL_R(248)
+ BOOST_PP_LOCAL_MACRO(248)
+# endif
+# if BOOST_PP_LOCAL_R(247)
+ BOOST_PP_LOCAL_MACRO(247)
+# endif
+# if BOOST_PP_LOCAL_R(246)
+ BOOST_PP_LOCAL_MACRO(246)
+# endif
+# if BOOST_PP_LOCAL_R(245)
+ BOOST_PP_LOCAL_MACRO(245)
+# endif
+# if BOOST_PP_LOCAL_R(244)
+ BOOST_PP_LOCAL_MACRO(244)
+# endif
+# if BOOST_PP_LOCAL_R(243)
+ BOOST_PP_LOCAL_MACRO(243)
+# endif
+# if BOOST_PP_LOCAL_R(242)
+ BOOST_PP_LOCAL_MACRO(242)
+# endif
+# if BOOST_PP_LOCAL_R(241)
+ BOOST_PP_LOCAL_MACRO(241)
+# endif
+# if BOOST_PP_LOCAL_R(240)
+ BOOST_PP_LOCAL_MACRO(240)
+# endif
+# if BOOST_PP_LOCAL_R(239)
+ BOOST_PP_LOCAL_MACRO(239)
+# endif
+# if BOOST_PP_LOCAL_R(238)
+ BOOST_PP_LOCAL_MACRO(238)
+# endif
+# if BOOST_PP_LOCAL_R(237)
+ BOOST_PP_LOCAL_MACRO(237)
+# endif
+# if BOOST_PP_LOCAL_R(236)
+ BOOST_PP_LOCAL_MACRO(236)
+# endif
+# if BOOST_PP_LOCAL_R(235)
+ BOOST_PP_LOCAL_MACRO(235)
+# endif
+# if BOOST_PP_LOCAL_R(234)
+ BOOST_PP_LOCAL_MACRO(234)
+# endif
+# if BOOST_PP_LOCAL_R(233)
+ BOOST_PP_LOCAL_MACRO(233)
+# endif
+# if BOOST_PP_LOCAL_R(232)
+ BOOST_PP_LOCAL_MACRO(232)
+# endif
+# if BOOST_PP_LOCAL_R(231)
+ BOOST_PP_LOCAL_MACRO(231)
+# endif
+# if BOOST_PP_LOCAL_R(230)
+ BOOST_PP_LOCAL_MACRO(230)
+# endif
+# if BOOST_PP_LOCAL_R(229)
+ BOOST_PP_LOCAL_MACRO(229)
+# endif
+# if BOOST_PP_LOCAL_R(228)
+ BOOST_PP_LOCAL_MACRO(228)
+# endif
+# if BOOST_PP_LOCAL_R(227)
+ BOOST_PP_LOCAL_MACRO(227)
+# endif
+# if BOOST_PP_LOCAL_R(226)
+ BOOST_PP_LOCAL_MACRO(226)
+# endif
+# if BOOST_PP_LOCAL_R(225)
+ BOOST_PP_LOCAL_MACRO(225)
+# endif
+# if BOOST_PP_LOCAL_R(224)
+ BOOST_PP_LOCAL_MACRO(224)
+# endif
+# if BOOST_PP_LOCAL_R(223)
+ BOOST_PP_LOCAL_MACRO(223)
+# endif
+# if BOOST_PP_LOCAL_R(222)
+ BOOST_PP_LOCAL_MACRO(222)
+# endif
+# if BOOST_PP_LOCAL_R(221)
+ BOOST_PP_LOCAL_MACRO(221)
+# endif
+# if BOOST_PP_LOCAL_R(220)
+ BOOST_PP_LOCAL_MACRO(220)
+# endif
+# if BOOST_PP_LOCAL_R(219)
+ BOOST_PP_LOCAL_MACRO(219)
+# endif
+# if BOOST_PP_LOCAL_R(218)
+ BOOST_PP_LOCAL_MACRO(218)
+# endif
+# if BOOST_PP_LOCAL_R(217)
+ BOOST_PP_LOCAL_MACRO(217)
+# endif
+# if BOOST_PP_LOCAL_R(216)
+ BOOST_PP_LOCAL_MACRO(216)
+# endif
+# if BOOST_PP_LOCAL_R(215)
+ BOOST_PP_LOCAL_MACRO(215)
+# endif
+# if BOOST_PP_LOCAL_R(214)
+ BOOST_PP_LOCAL_MACRO(214)
+# endif
+# if BOOST_PP_LOCAL_R(213)
+ BOOST_PP_LOCAL_MACRO(213)
+# endif
+# if BOOST_PP_LOCAL_R(212)
+ BOOST_PP_LOCAL_MACRO(212)
+# endif
+# if BOOST_PP_LOCAL_R(211)
+ BOOST_PP_LOCAL_MACRO(211)
+# endif
+# if BOOST_PP_LOCAL_R(210)
+ BOOST_PP_LOCAL_MACRO(210)
+# endif
+# if BOOST_PP_LOCAL_R(209)
+ BOOST_PP_LOCAL_MACRO(209)
+# endif
+# if BOOST_PP_LOCAL_R(208)
+ BOOST_PP_LOCAL_MACRO(208)
+# endif
+# if BOOST_PP_LOCAL_R(207)
+ BOOST_PP_LOCAL_MACRO(207)
+# endif
+# if BOOST_PP_LOCAL_R(206)
+ BOOST_PP_LOCAL_MACRO(206)
+# endif
+# if BOOST_PP_LOCAL_R(205)
+ BOOST_PP_LOCAL_MACRO(205)
+# endif
+# if BOOST_PP_LOCAL_R(204)
+ BOOST_PP_LOCAL_MACRO(204)
+# endif
+# if BOOST_PP_LOCAL_R(203)
+ BOOST_PP_LOCAL_MACRO(203)
+# endif
+# if BOOST_PP_LOCAL_R(202)
+ BOOST_PP_LOCAL_MACRO(202)
+# endif
+# if BOOST_PP_LOCAL_R(201)
+ BOOST_PP_LOCAL_MACRO(201)
+# endif
+# if BOOST_PP_LOCAL_R(200)
+ BOOST_PP_LOCAL_MACRO(200)
+# endif
+# if BOOST_PP_LOCAL_R(199)
+ BOOST_PP_LOCAL_MACRO(199)
+# endif
+# if BOOST_PP_LOCAL_R(198)
+ BOOST_PP_LOCAL_MACRO(198)
+# endif
+# if BOOST_PP_LOCAL_R(197)
+ BOOST_PP_LOCAL_MACRO(197)
+# endif
+# if BOOST_PP_LOCAL_R(196)
+ BOOST_PP_LOCAL_MACRO(196)
+# endif
+# if BOOST_PP_LOCAL_R(195)
+ BOOST_PP_LOCAL_MACRO(195)
+# endif
+# if BOOST_PP_LOCAL_R(194)
+ BOOST_PP_LOCAL_MACRO(194)
+# endif
+# if BOOST_PP_LOCAL_R(193)
+ BOOST_PP_LOCAL_MACRO(193)
+# endif
+# if BOOST_PP_LOCAL_R(192)
+ BOOST_PP_LOCAL_MACRO(192)
+# endif
+# if BOOST_PP_LOCAL_R(191)
+ BOOST_PP_LOCAL_MACRO(191)
+# endif
+# if BOOST_PP_LOCAL_R(190)
+ BOOST_PP_LOCAL_MACRO(190)
+# endif
+# if BOOST_PP_LOCAL_R(189)
+ BOOST_PP_LOCAL_MACRO(189)
+# endif
+# if BOOST_PP_LOCAL_R(188)
+ BOOST_PP_LOCAL_MACRO(188)
+# endif
+# if BOOST_PP_LOCAL_R(187)
+ BOOST_PP_LOCAL_MACRO(187)
+# endif
+# if BOOST_PP_LOCAL_R(186)
+ BOOST_PP_LOCAL_MACRO(186)
+# endif
+# if BOOST_PP_LOCAL_R(185)
+ BOOST_PP_LOCAL_MACRO(185)
+# endif
+# if BOOST_PP_LOCAL_R(184)
+ BOOST_PP_LOCAL_MACRO(184)
+# endif
+# if BOOST_PP_LOCAL_R(183)
+ BOOST_PP_LOCAL_MACRO(183)
+# endif
+# if BOOST_PP_LOCAL_R(182)
+ BOOST_PP_LOCAL_MACRO(182)
+# endif
+# if BOOST_PP_LOCAL_R(181)
+ BOOST_PP_LOCAL_MACRO(181)
+# endif
+# if BOOST_PP_LOCAL_R(180)
+ BOOST_PP_LOCAL_MACRO(180)
+# endif
+# if BOOST_PP_LOCAL_R(179)
+ BOOST_PP_LOCAL_MACRO(179)
+# endif
+# if BOOST_PP_LOCAL_R(178)
+ BOOST_PP_LOCAL_MACRO(178)
+# endif
+# if BOOST_PP_LOCAL_R(177)
+ BOOST_PP_LOCAL_MACRO(177)
+# endif
+# if BOOST_PP_LOCAL_R(176)
+ BOOST_PP_LOCAL_MACRO(176)
+# endif
+# if BOOST_PP_LOCAL_R(175)
+ BOOST_PP_LOCAL_MACRO(175)
+# endif
+# if BOOST_PP_LOCAL_R(174)
+ BOOST_PP_LOCAL_MACRO(174)
+# endif
+# if BOOST_PP_LOCAL_R(173)
+ BOOST_PP_LOCAL_MACRO(173)
+# endif
+# if BOOST_PP_LOCAL_R(172)
+ BOOST_PP_LOCAL_MACRO(172)
+# endif
+# if BOOST_PP_LOCAL_R(171)
+ BOOST_PP_LOCAL_MACRO(171)
+# endif
+# if BOOST_PP_LOCAL_R(170)
+ BOOST_PP_LOCAL_MACRO(170)
+# endif
+# if BOOST_PP_LOCAL_R(169)
+ BOOST_PP_LOCAL_MACRO(169)
+# endif
+# if BOOST_PP_LOCAL_R(168)
+ BOOST_PP_LOCAL_MACRO(168)
+# endif
+# if BOOST_PP_LOCAL_R(167)
+ BOOST_PP_LOCAL_MACRO(167)
+# endif
+# if BOOST_PP_LOCAL_R(166)
+ BOOST_PP_LOCAL_MACRO(166)
+# endif
+# if BOOST_PP_LOCAL_R(165)
+ BOOST_PP_LOCAL_MACRO(165)
+# endif
+# if BOOST_PP_LOCAL_R(164)
+ BOOST_PP_LOCAL_MACRO(164)
+# endif
+# if BOOST_PP_LOCAL_R(163)
+ BOOST_PP_LOCAL_MACRO(163)
+# endif
+# if BOOST_PP_LOCAL_R(162)
+ BOOST_PP_LOCAL_MACRO(162)
+# endif
+# if BOOST_PP_LOCAL_R(161)
+ BOOST_PP_LOCAL_MACRO(161)
+# endif
+# if BOOST_PP_LOCAL_R(160)
+ BOOST_PP_LOCAL_MACRO(160)
+# endif
+# if BOOST_PP_LOCAL_R(159)
+ BOOST_PP_LOCAL_MACRO(159)
+# endif
+# if BOOST_PP_LOCAL_R(158)
+ BOOST_PP_LOCAL_MACRO(158)
+# endif
+# if BOOST_PP_LOCAL_R(157)
+ BOOST_PP_LOCAL_MACRO(157)
+# endif
+# if BOOST_PP_LOCAL_R(156)
+ BOOST_PP_LOCAL_MACRO(156)
+# endif
+# if BOOST_PP_LOCAL_R(155)
+ BOOST_PP_LOCAL_MACRO(155)
+# endif
+# if BOOST_PP_LOCAL_R(154)
+ BOOST_PP_LOCAL_MACRO(154)
+# endif
+# if BOOST_PP_LOCAL_R(153)
+ BOOST_PP_LOCAL_MACRO(153)
+# endif
+# if BOOST_PP_LOCAL_R(152)
+ BOOST_PP_LOCAL_MACRO(152)
+# endif
+# if BOOST_PP_LOCAL_R(151)
+ BOOST_PP_LOCAL_MACRO(151)
+# endif
+# if BOOST_PP_LOCAL_R(150)
+ BOOST_PP_LOCAL_MACRO(150)
+# endif
+# if BOOST_PP_LOCAL_R(149)
+ BOOST_PP_LOCAL_MACRO(149)
+# endif
+# if BOOST_PP_LOCAL_R(148)
+ BOOST_PP_LOCAL_MACRO(148)
+# endif
+# if BOOST_PP_LOCAL_R(147)
+ BOOST_PP_LOCAL_MACRO(147)
+# endif
+# if BOOST_PP_LOCAL_R(146)
+ BOOST_PP_LOCAL_MACRO(146)
+# endif
+# if BOOST_PP_LOCAL_R(145)
+ BOOST_PP_LOCAL_MACRO(145)
+# endif
+# if BOOST_PP_LOCAL_R(144)
+ BOOST_PP_LOCAL_MACRO(144)
+# endif
+# if BOOST_PP_LOCAL_R(143)
+ BOOST_PP_LOCAL_MACRO(143)
+# endif
+# if BOOST_PP_LOCAL_R(142)
+ BOOST_PP_LOCAL_MACRO(142)
+# endif
+# if BOOST_PP_LOCAL_R(141)
+ BOOST_PP_LOCAL_MACRO(141)
+# endif
+# if BOOST_PP_LOCAL_R(140)
+ BOOST_PP_LOCAL_MACRO(140)
+# endif
+# if BOOST_PP_LOCAL_R(139)
+ BOOST_PP_LOCAL_MACRO(139)
+# endif
+# if BOOST_PP_LOCAL_R(138)
+ BOOST_PP_LOCAL_MACRO(138)
+# endif
+# if BOOST_PP_LOCAL_R(137)
+ BOOST_PP_LOCAL_MACRO(137)
+# endif
+# if BOOST_PP_LOCAL_R(136)
+ BOOST_PP_LOCAL_MACRO(136)
+# endif
+# if BOOST_PP_LOCAL_R(135)
+ BOOST_PP_LOCAL_MACRO(135)
+# endif
+# if BOOST_PP_LOCAL_R(134)
+ BOOST_PP_LOCAL_MACRO(134)
+# endif
+# if BOOST_PP_LOCAL_R(133)
+ BOOST_PP_LOCAL_MACRO(133)
+# endif
+# if BOOST_PP_LOCAL_R(132)
+ BOOST_PP_LOCAL_MACRO(132)
+# endif
+# if BOOST_PP_LOCAL_R(131)
+ BOOST_PP_LOCAL_MACRO(131)
+# endif
+# if BOOST_PP_LOCAL_R(130)
+ BOOST_PP_LOCAL_MACRO(130)
+# endif
+# if BOOST_PP_LOCAL_R(129)
+ BOOST_PP_LOCAL_MACRO(129)
+# endif
+# if BOOST_PP_LOCAL_R(128)
+ BOOST_PP_LOCAL_MACRO(128)
+# endif
+# if BOOST_PP_LOCAL_R(127)
+ BOOST_PP_LOCAL_MACRO(127)
+# endif
+# if BOOST_PP_LOCAL_R(126)
+ BOOST_PP_LOCAL_MACRO(126)
+# endif
+# if BOOST_PP_LOCAL_R(125)
+ BOOST_PP_LOCAL_MACRO(125)
+# endif
+# if BOOST_PP_LOCAL_R(124)
+ BOOST_PP_LOCAL_MACRO(124)
+# endif
+# if BOOST_PP_LOCAL_R(123)
+ BOOST_PP_LOCAL_MACRO(123)
+# endif
+# if BOOST_PP_LOCAL_R(122)
+ BOOST_PP_LOCAL_MACRO(122)
+# endif
+# if BOOST_PP_LOCAL_R(121)
+ BOOST_PP_LOCAL_MACRO(121)
+# endif
+# if BOOST_PP_LOCAL_R(120)
+ BOOST_PP_LOCAL_MACRO(120)
+# endif
+# if BOOST_PP_LOCAL_R(119)
+ BOOST_PP_LOCAL_MACRO(119)
+# endif
+# if BOOST_PP_LOCAL_R(118)
+ BOOST_PP_LOCAL_MACRO(118)
+# endif
+# if BOOST_PP_LOCAL_R(117)
+ BOOST_PP_LOCAL_MACRO(117)
+# endif
+# if BOOST_PP_LOCAL_R(116)
+ BOOST_PP_LOCAL_MACRO(116)
+# endif
+# if BOOST_PP_LOCAL_R(115)
+ BOOST_PP_LOCAL_MACRO(115)
+# endif
+# if BOOST_PP_LOCAL_R(114)
+ BOOST_PP_LOCAL_MACRO(114)
+# endif
+# if BOOST_PP_LOCAL_R(113)
+ BOOST_PP_LOCAL_MACRO(113)
+# endif
+# if BOOST_PP_LOCAL_R(112)
+ BOOST_PP_LOCAL_MACRO(112)
+# endif
+# if BOOST_PP_LOCAL_R(111)
+ BOOST_PP_LOCAL_MACRO(111)
+# endif
+# if BOOST_PP_LOCAL_R(110)
+ BOOST_PP_LOCAL_MACRO(110)
+# endif
+# if BOOST_PP_LOCAL_R(109)
+ BOOST_PP_LOCAL_MACRO(109)
+# endif
+# if BOOST_PP_LOCAL_R(108)
+ BOOST_PP_LOCAL_MACRO(108)
+# endif
+# if BOOST_PP_LOCAL_R(107)
+ BOOST_PP_LOCAL_MACRO(107)
+# endif
+# if BOOST_PP_LOCAL_R(106)
+ BOOST_PP_LOCAL_MACRO(106)
+# endif
+# if BOOST_PP_LOCAL_R(105)
+ BOOST_PP_LOCAL_MACRO(105)
+# endif
+# if BOOST_PP_LOCAL_R(104)
+ BOOST_PP_LOCAL_MACRO(104)
+# endif
+# if BOOST_PP_LOCAL_R(103)
+ BOOST_PP_LOCAL_MACRO(103)
+# endif
+# if BOOST_PP_LOCAL_R(102)
+ BOOST_PP_LOCAL_MACRO(102)
+# endif
+# if BOOST_PP_LOCAL_R(101)
+ BOOST_PP_LOCAL_MACRO(101)
+# endif
+# if BOOST_PP_LOCAL_R(100)
+ BOOST_PP_LOCAL_MACRO(100)
+# endif
+# if BOOST_PP_LOCAL_R(99)
+ BOOST_PP_LOCAL_MACRO(99)
+# endif
+# if BOOST_PP_LOCAL_R(98)
+ BOOST_PP_LOCAL_MACRO(98)
+# endif
+# if BOOST_PP_LOCAL_R(97)
+ BOOST_PP_LOCAL_MACRO(97)
+# endif
+# if BOOST_PP_LOCAL_R(96)
+ BOOST_PP_LOCAL_MACRO(96)
+# endif
+# if BOOST_PP_LOCAL_R(95)
+ BOOST_PP_LOCAL_MACRO(95)
+# endif
+# if BOOST_PP_LOCAL_R(94)
+ BOOST_PP_LOCAL_MACRO(94)
+# endif
+# if BOOST_PP_LOCAL_R(93)
+ BOOST_PP_LOCAL_MACRO(93)
+# endif
+# if BOOST_PP_LOCAL_R(92)
+ BOOST_PP_LOCAL_MACRO(92)
+# endif
+# if BOOST_PP_LOCAL_R(91)
+ BOOST_PP_LOCAL_MACRO(91)
+# endif
+# if BOOST_PP_LOCAL_R(90)
+ BOOST_PP_LOCAL_MACRO(90)
+# endif
+# if BOOST_PP_LOCAL_R(89)
+ BOOST_PP_LOCAL_MACRO(89)
+# endif
+# if BOOST_PP_LOCAL_R(88)
+ BOOST_PP_LOCAL_MACRO(88)
+# endif
+# if BOOST_PP_LOCAL_R(87)
+ BOOST_PP_LOCAL_MACRO(87)
+# endif
+# if BOOST_PP_LOCAL_R(86)
+ BOOST_PP_LOCAL_MACRO(86)
+# endif
+# if BOOST_PP_LOCAL_R(85)
+ BOOST_PP_LOCAL_MACRO(85)
+# endif
+# if BOOST_PP_LOCAL_R(84)
+ BOOST_PP_LOCAL_MACRO(84)
+# endif
+# if BOOST_PP_LOCAL_R(83)
+ BOOST_PP_LOCAL_MACRO(83)
+# endif
+# if BOOST_PP_LOCAL_R(82)
+ BOOST_PP_LOCAL_MACRO(82)
+# endif
+# if BOOST_PP_LOCAL_R(81)
+ BOOST_PP_LOCAL_MACRO(81)
+# endif
+# if BOOST_PP_LOCAL_R(80)
+ BOOST_PP_LOCAL_MACRO(80)
+# endif
+# if BOOST_PP_LOCAL_R(79)
+ BOOST_PP_LOCAL_MACRO(79)
+# endif
+# if BOOST_PP_LOCAL_R(78)
+ BOOST_PP_LOCAL_MACRO(78)
+# endif
+# if BOOST_PP_LOCAL_R(77)
+ BOOST_PP_LOCAL_MACRO(77)
+# endif
+# if BOOST_PP_LOCAL_R(76)
+ BOOST_PP_LOCAL_MACRO(76)
+# endif
+# if BOOST_PP_LOCAL_R(75)
+ BOOST_PP_LOCAL_MACRO(75)
+# endif
+# if BOOST_PP_LOCAL_R(74)
+ BOOST_PP_LOCAL_MACRO(74)
+# endif
+# if BOOST_PP_LOCAL_R(73)
+ BOOST_PP_LOCAL_MACRO(73)
+# endif
+# if BOOST_PP_LOCAL_R(72)
+ BOOST_PP_LOCAL_MACRO(72)
+# endif
+# if BOOST_PP_LOCAL_R(71)
+ BOOST_PP_LOCAL_MACRO(71)
+# endif
+# if BOOST_PP_LOCAL_R(70)
+ BOOST_PP_LOCAL_MACRO(70)
+# endif
+# if BOOST_PP_LOCAL_R(69)
+ BOOST_PP_LOCAL_MACRO(69)
+# endif
+# if BOOST_PP_LOCAL_R(68)
+ BOOST_PP_LOCAL_MACRO(68)
+# endif
+# if BOOST_PP_LOCAL_R(67)
+ BOOST_PP_LOCAL_MACRO(67)
+# endif
+# if BOOST_PP_LOCAL_R(66)
+ BOOST_PP_LOCAL_MACRO(66)
+# endif
+# if BOOST_PP_LOCAL_R(65)
+ BOOST_PP_LOCAL_MACRO(65)
+# endif
+# if BOOST_PP_LOCAL_R(64)
+ BOOST_PP_LOCAL_MACRO(64)
+# endif
+# if BOOST_PP_LOCAL_R(63)
+ BOOST_PP_LOCAL_MACRO(63)
+# endif
+# if BOOST_PP_LOCAL_R(62)
+ BOOST_PP_LOCAL_MACRO(62)
+# endif
+# if BOOST_PP_LOCAL_R(61)
+ BOOST_PP_LOCAL_MACRO(61)
+# endif
+# if BOOST_PP_LOCAL_R(60)
+ BOOST_PP_LOCAL_MACRO(60)
+# endif
+# if BOOST_PP_LOCAL_R(59)
+ BOOST_PP_LOCAL_MACRO(59)
+# endif
+# if BOOST_PP_LOCAL_R(58)
+ BOOST_PP_LOCAL_MACRO(58)
+# endif
+# if BOOST_PP_LOCAL_R(57)
+ BOOST_PP_LOCAL_MACRO(57)
+# endif
+# if BOOST_PP_LOCAL_R(56)
+ BOOST_PP_LOCAL_MACRO(56)
+# endif
+# if BOOST_PP_LOCAL_R(55)
+ BOOST_PP_LOCAL_MACRO(55)
+# endif
+# if BOOST_PP_LOCAL_R(54)
+ BOOST_PP_LOCAL_MACRO(54)
+# endif
+# if BOOST_PP_LOCAL_R(53)
+ BOOST_PP_LOCAL_MACRO(53)
+# endif
+# if BOOST_PP_LOCAL_R(52)
+ BOOST_PP_LOCAL_MACRO(52)
+# endif
+# if BOOST_PP_LOCAL_R(51)
+ BOOST_PP_LOCAL_MACRO(51)
+# endif
+# if BOOST_PP_LOCAL_R(50)
+ BOOST_PP_LOCAL_MACRO(50)
+# endif
+# if BOOST_PP_LOCAL_R(49)
+ BOOST_PP_LOCAL_MACRO(49)
+# endif
+# if BOOST_PP_LOCAL_R(48)
+ BOOST_PP_LOCAL_MACRO(48)
+# endif
+# if BOOST_PP_LOCAL_R(47)
+ BOOST_PP_LOCAL_MACRO(47)
+# endif
+# if BOOST_PP_LOCAL_R(46)
+ BOOST_PP_LOCAL_MACRO(46)
+# endif
+# if BOOST_PP_LOCAL_R(45)
+ BOOST_PP_LOCAL_MACRO(45)
+# endif
+# if BOOST_PP_LOCAL_R(44)
+ BOOST_PP_LOCAL_MACRO(44)
+# endif
+# if BOOST_PP_LOCAL_R(43)
+ BOOST_PP_LOCAL_MACRO(43)
+# endif
+# if BOOST_PP_LOCAL_R(42)
+ BOOST_PP_LOCAL_MACRO(42)
+# endif
+# if BOOST_PP_LOCAL_R(41)
+ BOOST_PP_LOCAL_MACRO(41)
+# endif
+# if BOOST_PP_LOCAL_R(40)
+ BOOST_PP_LOCAL_MACRO(40)
+# endif
+# if BOOST_PP_LOCAL_R(39)
+ BOOST_PP_LOCAL_MACRO(39)
+# endif
+# if BOOST_PP_LOCAL_R(38)
+ BOOST_PP_LOCAL_MACRO(38)
+# endif
+# if BOOST_PP_LOCAL_R(37)
+ BOOST_PP_LOCAL_MACRO(37)
+# endif
+# if BOOST_PP_LOCAL_R(36)
+ BOOST_PP_LOCAL_MACRO(36)
+# endif
+# if BOOST_PP_LOCAL_R(35)
+ BOOST_PP_LOCAL_MACRO(35)
+# endif
+# if BOOST_PP_LOCAL_R(34)
+ BOOST_PP_LOCAL_MACRO(34)
+# endif
+# if BOOST_PP_LOCAL_R(33)
+ BOOST_PP_LOCAL_MACRO(33)
+# endif
+# if BOOST_PP_LOCAL_R(32)
+ BOOST_PP_LOCAL_MACRO(32)
+# endif
+# if BOOST_PP_LOCAL_R(31)
+ BOOST_PP_LOCAL_MACRO(31)
+# endif
+# if BOOST_PP_LOCAL_R(30)
+ BOOST_PP_LOCAL_MACRO(30)
+# endif
+# if BOOST_PP_LOCAL_R(29)
+ BOOST_PP_LOCAL_MACRO(29)
+# endif
+# if BOOST_PP_LOCAL_R(28)
+ BOOST_PP_LOCAL_MACRO(28)
+# endif
+# if BOOST_PP_LOCAL_R(27)
+ BOOST_PP_LOCAL_MACRO(27)
+# endif
+# if BOOST_PP_LOCAL_R(26)
+ BOOST_PP_LOCAL_MACRO(26)
+# endif
+# if BOOST_PP_LOCAL_R(25)
+ BOOST_PP_LOCAL_MACRO(25)
+# endif
+# if BOOST_PP_LOCAL_R(24)
+ BOOST_PP_LOCAL_MACRO(24)
+# endif
+# if BOOST_PP_LOCAL_R(23)
+ BOOST_PP_LOCAL_MACRO(23)
+# endif
+# if BOOST_PP_LOCAL_R(22)
+ BOOST_PP_LOCAL_MACRO(22)
+# endif
+# if BOOST_PP_LOCAL_R(21)
+ BOOST_PP_LOCAL_MACRO(21)
+# endif
+# if BOOST_PP_LOCAL_R(20)
+ BOOST_PP_LOCAL_MACRO(20)
+# endif
+# if BOOST_PP_LOCAL_R(19)
+ BOOST_PP_LOCAL_MACRO(19)
+# endif
+# if BOOST_PP_LOCAL_R(18)
+ BOOST_PP_LOCAL_MACRO(18)
+# endif
+# if BOOST_PP_LOCAL_R(17)
+ BOOST_PP_LOCAL_MACRO(17)
+# endif
+# if BOOST_PP_LOCAL_R(16)
+ BOOST_PP_LOCAL_MACRO(16)
+# endif
+# if BOOST_PP_LOCAL_R(15)
+ BOOST_PP_LOCAL_MACRO(15)
+# endif
+# if BOOST_PP_LOCAL_R(14)
+ BOOST_PP_LOCAL_MACRO(14)
+# endif
+# if BOOST_PP_LOCAL_R(13)
+ BOOST_PP_LOCAL_MACRO(13)
+# endif
+# if BOOST_PP_LOCAL_R(12)
+ BOOST_PP_LOCAL_MACRO(12)
+# endif
+# if BOOST_PP_LOCAL_R(11)
+ BOOST_PP_LOCAL_MACRO(11)
+# endif
+# if BOOST_PP_LOCAL_R(10)
+ BOOST_PP_LOCAL_MACRO(10)
+# endif
+# if BOOST_PP_LOCAL_R(9)
+ BOOST_PP_LOCAL_MACRO(9)
+# endif
+# if BOOST_PP_LOCAL_R(8)
+ BOOST_PP_LOCAL_MACRO(8)
+# endif
+# if BOOST_PP_LOCAL_R(7)
+ BOOST_PP_LOCAL_MACRO(7)
+# endif
+# if BOOST_PP_LOCAL_R(6)
+ BOOST_PP_LOCAL_MACRO(6)
+# endif
+# if BOOST_PP_LOCAL_R(5)
+ BOOST_PP_LOCAL_MACRO(5)
+# endif
+# if BOOST_PP_LOCAL_R(4)
+ BOOST_PP_LOCAL_MACRO(4)
+# endif
+# if BOOST_PP_LOCAL_R(3)
+ BOOST_PP_LOCAL_MACRO(3)
+# endif
+# if BOOST_PP_LOCAL_R(2)
+ BOOST_PP_LOCAL_MACRO(2)
+# endif
+# if BOOST_PP_LOCAL_R(1)
+ BOOST_PP_LOCAL_MACRO(1)
+# endif
+# if BOOST_PP_LOCAL_R(0)
+ BOOST_PP_LOCAL_MACRO(0)
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/self.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/self.hpp
new file mode 100644
index 0000000..757185c
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/self.hpp
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# if !defined(BOOST_PP_INDIRECT_SELF)
+# error BOOST_PP_ERROR: no indirect file to include
+# endif
+#
+# define BOOST_PP_IS_SELFISH 1
+#
+# include BOOST_PP_INDIRECT_SELF
+#
+# undef BOOST_PP_IS_SELFISH
+# undef BOOST_PP_INDIRECT_SELF
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/detail/start.hpp b/3rdParty/Boost/boost/preprocessor/iteration/detail/start.hpp
new file mode 100644
index 0000000..cbf0381
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/detail/start.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_LOCAL_SE
+#
+# undef BOOST_PP_LOCAL_SE_DIGIT_1
+# undef BOOST_PP_LOCAL_SE_DIGIT_2
+# undef BOOST_PP_LOCAL_SE_DIGIT_3
+# undef BOOST_PP_LOCAL_SE_DIGIT_4
+# undef BOOST_PP_LOCAL_SE_DIGIT_5
+# undef BOOST_PP_LOCAL_SE_DIGIT_6
+# undef BOOST_PP_LOCAL_SE_DIGIT_7
+# undef BOOST_PP_LOCAL_SE_DIGIT_8
+# undef BOOST_PP_LOCAL_SE_DIGIT_9
+# undef BOOST_PP_LOCAL_SE_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_LOCAL_SE_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_LOCAL_SE_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_LOCAL_SE_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_LOCAL_SE_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_LOCAL_SE_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_LOCAL_SE_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_LOCAL_SE_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_LOCAL_SE_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_LOCAL_SE_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_LOCAL_SE_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_LOCAL_SE_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_LOCAL_SE_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_LOCAL_SE_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_LOCAL_SE_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_LOCAL_SE_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_LOCAL_SE_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_LOCAL_SE_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_LOCAL_SE_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_LOCAL_SE_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_LOCAL_SE_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_LOCAL_SE_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_LOCAL_SE_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_LOCAL_SE_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_LOCAL_SE_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_LOCAL_SE_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_LOCAL_SE_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_LOCAL_SE_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_LOCAL_SE_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_LOCAL_SE_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_LOCAL_SE_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_LOCAL_SE_DIGIT_3
+# define BOOST_PP_LOCAL_SE() BOOST_PP_SLOT_CC_3(BOOST_PP_LOCAL_SE_DIGIT_3, BOOST_PP_LOCAL_SE_DIGIT_2, BOOST_PP_LOCAL_SE_DIGIT_1)
+# elif BOOST_PP_LOCAL_SE_DIGIT_2
+# define BOOST_PP_LOCAL_SE() BOOST_PP_SLOT_CC_2(BOOST_PP_LOCAL_SE_DIGIT_2, BOOST_PP_LOCAL_SE_DIGIT_1)
+# else
+# define BOOST_PP_LOCAL_SE() BOOST_PP_LOCAL_SE_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/iterate.hpp b/3rdParty/Boost/boost/preprocessor/iteration/iterate.hpp
new file mode 100644
index 0000000..aa0af67
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/iterate.hpp
@@ -0,0 +1,82 @@
+# /* **************************************************************************
+# * *
+# * (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_ITERATION_ITERATE_HPP
+# define BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/slot/slot.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ITERATION_DEPTH */
+#
+# define BOOST_PP_ITERATION_DEPTH() 0
+#
+# /* BOOST_PP_ITERATION */
+#
+# define BOOST_PP_ITERATION() BOOST_PP_CAT(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
+#
+# /* BOOST_PP_ITERATION_START && BOOST_PP_ITERATION_FINISH */
+#
+# define BOOST_PP_ITERATION_START() BOOST_PP_CAT(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
+# define BOOST_PP_ITERATION_FINISH() BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
+#
+# /* BOOST_PP_ITERATION_FLAGS */
+#
+# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH()))
+#
+# /* BOOST_PP_FRAME_ITERATION */
+#
+# define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_CAT(BOOST_PP_ITERATION_, i)
+#
+# /* BOOST_PP_FRAME_START && BOOST_PP_FRAME_FINISH */
+#
+# define BOOST_PP_FRAME_START(i) BOOST_PP_CAT(BOOST_PP_ITERATION_START_, i)
+# define BOOST_PP_FRAME_FINISH(i) BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, i)
+#
+# /* BOOST_PP_FRAME_FLAGS */
+#
+# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i))
+#
+# /* BOOST_PP_RELATIVE_ITERATION */
+#
+# define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
+#
+# define BOOST_PP_RELATIVE_0(m) BOOST_PP_CAT(m, BOOST_PP_ITERATION_DEPTH())
+# define BOOST_PP_RELATIVE_1(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
+# define BOOST_PP_RELATIVE_2(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
+# define BOOST_PP_RELATIVE_3(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
+# define BOOST_PP_RELATIVE_4(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
+#
+# /* BOOST_PP_RELATIVE_START && BOOST_PP_RELATIVE_FINISH */
+#
+# define BOOST_PP_RELATIVE_START(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
+# define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
+#
+# /* BOOST_PP_RELATIVE_FLAGS */
+#
+# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_))
+#
+# /* BOOST_PP_ITERATE */
+#
+# define BOOST_PP_ITERATE() BOOST_PP_CAT(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
+#
+# define BOOST_PP_ITERATE_1 <boost/preprocessor/iteration/detail/iter/forward1.hpp>
+# define BOOST_PP_ITERATE_2 <boost/preprocessor/iteration/detail/iter/forward2.hpp>
+# define BOOST_PP_ITERATE_3 <boost/preprocessor/iteration/detail/iter/forward3.hpp>
+# define BOOST_PP_ITERATE_4 <boost/preprocessor/iteration/detail/iter/forward4.hpp>
+# define BOOST_PP_ITERATE_5 <boost/preprocessor/iteration/detail/iter/forward5.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/local.hpp b/3rdParty/Boost/boost/preprocessor/iteration/local.hpp
new file mode 100644
index 0000000..289fb1a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/local.hpp
@@ -0,0 +1,26 @@
+# /* **************************************************************************
+# * *
+# * (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_ITERATION_LOCAL_HPP
+# define BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/slot/slot.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_LOCAL_ITERATE */
+#
+# define BOOST_PP_LOCAL_ITERATE() <boost/preprocessor/iteration/detail/local.hpp>
+#
+# define BOOST_PP_LOCAL_C(n) (BOOST_PP_LOCAL_S) <= n && (BOOST_PP_LOCAL_F) >= n
+# define BOOST_PP_LOCAL_R(n) (BOOST_PP_LOCAL_F) <= n && (BOOST_PP_LOCAL_S) >= n
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/iteration/self.hpp b/3rdParty/Boost/boost/preprocessor/iteration/self.hpp
new file mode 100644
index 0000000..6e0464c
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/iteration/self.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (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_ITERATION_SELF_HPP
+# define BOOST_PREPROCESSOR_ITERATION_SELF_HPP
+#
+# /* BOOST_PP_INCLUDE_SELF */
+#
+# define BOOST_PP_INCLUDE_SELF() <boost/preprocessor/iteration/detail/self.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/adt.hpp b/3rdParty/Boost/boost/preprocessor/list/adt.hpp
new file mode 100644
index 0000000..b4f12ba
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/adt.hpp
@@ -0,0 +1,73 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# *
+# * See http://www.boost.org for most recent version.
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_ADT_HPP
+# define BOOST_PREPROCESSOR_LIST_ADT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/is_binary.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_LIST_CONS */
+#
+# define BOOST_PP_LIST_CONS(head, tail) (head, tail)
+#
+# /* BOOST_PP_LIST_NIL */
+#
+# define BOOST_PP_LIST_NIL BOOST_PP_NIL
+#
+# /* BOOST_PP_LIST_FIRST */
+#
+# define BOOST_PP_LIST_FIRST(list) BOOST_PP_LIST_FIRST_D(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I list
+# else
+# define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I ## list
+# endif
+#
+# define BOOST_PP_LIST_FIRST_I(head, tail) head
+#
+# /* BOOST_PP_LIST_REST */
+#
+# define BOOST_PP_LIST_REST(list) BOOST_PP_LIST_REST_D(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I list
+# else
+# define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I ## list
+# endif
+#
+# define BOOST_PP_LIST_REST_I(head, tail) tail
+#
+# /* BOOST_PP_LIST_IS_CONS */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+# define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_LIST_IS_CONS_D(list)
+# define BOOST_PP_LIST_IS_CONS_D(list) BOOST_PP_LIST_IS_CONS_ ## list
+# define BOOST_PP_LIST_IS_CONS_(head, tail) 1
+# define BOOST_PP_LIST_IS_CONS_BOOST_PP_NIL 0
+# else
+# define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_IS_BINARY(list)
+# endif
+#
+# /* BOOST_PP_LIST_IS_NIL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+# define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_IS_BINARY(list))
+# else
+# define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_LIST_IS_CONS(list))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/append.hpp b/3rdParty/Boost/boost/preprocessor/list/append.hpp
new file mode 100644
index 0000000..26e9d74
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/append.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_APPEND_HPP
+# define BOOST_PREPROCESSOR_LIST_APPEND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+#
+# /* BOOST_PP_LIST_APPEND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
+# else
+# define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_APPEND_I(a, b)
+# define BOOST_PP_LIST_APPEND_I(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# define BOOST_PP_LIST_APPEND_O(d, s, x) (x, s)
+#
+# /* BOOST_PP_LIST_APPEND_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
+# else
+# define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_APPEND_D_I(d, a, b)
+# define BOOST_PP_LIST_APPEND_D_I(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/detail/dmc/fold_left.hpp b/3rdParty/Boost/boost/preprocessor/list/detail/dmc/fold_left.hpp
new file mode 100644
index 0000000..844ac5b
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/detail/dmc/fold_left.hpp
@@ -0,0 +1,279 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_left.hpp b/3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_left.hpp
new file mode 100644
index 0000000..ae9524f
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_left.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l)
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_right.hpp b/3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_right.hpp
new file mode 100644
index 0000000..d372d2e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/detail/edg/fold_right.hpp
@@ -0,0 +1,794 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l)
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_2, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(3, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_3, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(4, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_4, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(5, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_5, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(6, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_6, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(7, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_7, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(8, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_8, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(9, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_9, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(10, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_10, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(11, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_11, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(12, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_12, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(13, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_13, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(14, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_14, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(15, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_15, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(16, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_16, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(17, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_17, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(18, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_18, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(19, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_19, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(20, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_20, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(21, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_21, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(22, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_22, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(23, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_23, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(24, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_24, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(25, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_25, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(26, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_26, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(27, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_27, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(28, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_28, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(29, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_29, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(30, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_30, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(31, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_31, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(32, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_32, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(33, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_33, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(34, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_34, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(35, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_35, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(36, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_36, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(37, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_37, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(38, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_38, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(39, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_39, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(40, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_40, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(41, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_41, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(42, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_42, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(43, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_43, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(44, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_44, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(45, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_45, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(46, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_46, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(47, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_47, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(48, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_48, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(49, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_49, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(50, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_50, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(51, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_51, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(52, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_52, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(53, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_53, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(54, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_54, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(55, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_55, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(56, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_56, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(57, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_57, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(58, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_58, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(59, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_59, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(60, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_60, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(61, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_61, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(62, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_62, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(63, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_63, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(64, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_64, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(65, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_65, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(66, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_66, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(67, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_67, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(68, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_68, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(69, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_69, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(70, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_70, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(71, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_71, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(72, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_72, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(73, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_73, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(74, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_74, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(75, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_75, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(76, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_76, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(77, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_77, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(78, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_78, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(79, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_79, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(80, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_80, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(81, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_81, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(82, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_82, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(83, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_83, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(84, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_84, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(85, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_85, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(86, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_86, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(87, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_87, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(88, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_88, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(89, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_89, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(90, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_90, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(91, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_91, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(92, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_92, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(93, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_93, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(94, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_94, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(95, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_95, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(96, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_96, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(97, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_97, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(98, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_98, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(99, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_99, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(100, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_100, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(101, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_101, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(102, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_102, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(103, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_103, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(104, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_104, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(105, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_105, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(106, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_106, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(107, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_107, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(108, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_108, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(109, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_109, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(110, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_110, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(111, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_111, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(112, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_112, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(113, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_113, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(114, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_114, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(115, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_115, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(116, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_116, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(117, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_117, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(118, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_118, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(119, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_119, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(120, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_120, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(121, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_121, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(122, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_122, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(123, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_123, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(124, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_124, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(125, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_125, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(126, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_126, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(127, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_127, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(128, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_128, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(129, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_129, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(130, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_130, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(131, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_131, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(132, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_132, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(133, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_133, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(134, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_134, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(135, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_135, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(136, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_136, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(137, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_137, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(138, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_138, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(139, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_139, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(140, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_140, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(141, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_141, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(142, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_142, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(143, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_143, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(144, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_144, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(145, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_145, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(146, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_146, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(147, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_147, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(148, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_148, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(149, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_149, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(150, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_150, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(151, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_151, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(152, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_152, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(153, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_153, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(154, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_154, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(155, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_155, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(156, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_156, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(157, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_157, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(158, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_158, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(159, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_159, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(160, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_160, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(161, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_161, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(162, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_162, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(163, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_163, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(164, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_164, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(165, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_165, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(166, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_166, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(167, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_167, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(168, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_168, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(169, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_169, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(170, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_170, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(171, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_171, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(172, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_172, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(173, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_173, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(174, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_174, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(175, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_175, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(176, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_176, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(177, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_177, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(178, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_178, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(179, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_179, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(180, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_180, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(181, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_181, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(182, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_182, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(183, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_183, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(184, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_184, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(185, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_185, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(186, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_186, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(187, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_187, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(188, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_188, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(189, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_189, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(190, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_190, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(191, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_191, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(192, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_192, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(193, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_193, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(194, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_194, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(195, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_195, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(196, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_196, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(197, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_197, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(198, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_198, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(199, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_199, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(200, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_200, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(201, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_201, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(202, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_202, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(203, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_203, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(204, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_204, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(205, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_205, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(206, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_206, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(207, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_207, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(208, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_208, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(209, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_209, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(210, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_210, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(211, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_211, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(212, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_212, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(213, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_213, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(214, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_214, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(215, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_215, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(216, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_216, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(217, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_217, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(218, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_218, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(219, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_219, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(220, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_220, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(221, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_221, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(222, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_222, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(223, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_223, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(224, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_224, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(225, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_225, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(226, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_226, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(227, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_227, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(228, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_228, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(229, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_229, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(230, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_230, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(231, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_231, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(232, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_232, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(233, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_233, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(234, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_234, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(235, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_235, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(236, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_236, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(237, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_237, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(238, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_238, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(239, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_239, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(240, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_240, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(241, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_241, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(242, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_242, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(243, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_243, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(244, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_244, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(245, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_245, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(246, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_246, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(247, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_247, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(248, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_248, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(249, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_249, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(250, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_250, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(251, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_251, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(252, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_252, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(253, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_253, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(254, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_254, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(255, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_255, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(256, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_256, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(257, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_257, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) 0
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/detail/fold_left.hpp b/3rdParty/Boost/boost/preprocessor/list/detail/fold_left.hpp
new file mode 100644
index 0000000..f5fcab7
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/detail/fold_left.hpp
@@ -0,0 +1,279 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/detail/fold_right.hpp b/3rdParty/Boost/boost/preprocessor/list/detail/fold_right.hpp
new file mode 100644
index 0000000..29146d5
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/detail/fold_right.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/list/fold_left.hpp>
+# include <boost/preprocessor/list/reverse.hpp>
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1(o, s, BOOST_PP_LIST_REVERSE_D(1, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2(o, s, BOOST_PP_LIST_REVERSE_D(2, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3(o, s, BOOST_PP_LIST_REVERSE_D(3, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4(o, s, BOOST_PP_LIST_REVERSE_D(4, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5(o, s, BOOST_PP_LIST_REVERSE_D(5, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6(o, s, BOOST_PP_LIST_REVERSE_D(6, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7(o, s, BOOST_PP_LIST_REVERSE_D(7, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8(o, s, BOOST_PP_LIST_REVERSE_D(8, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9(o, s, BOOST_PP_LIST_REVERSE_D(9, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10(o, s, BOOST_PP_LIST_REVERSE_D(10, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11(o, s, BOOST_PP_LIST_REVERSE_D(11, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12(o, s, BOOST_PP_LIST_REVERSE_D(12, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13(o, s, BOOST_PP_LIST_REVERSE_D(13, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14(o, s, BOOST_PP_LIST_REVERSE_D(14, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15(o, s, BOOST_PP_LIST_REVERSE_D(15, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16(o, s, BOOST_PP_LIST_REVERSE_D(16, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17(o, s, BOOST_PP_LIST_REVERSE_D(17, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18(o, s, BOOST_PP_LIST_REVERSE_D(18, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19(o, s, BOOST_PP_LIST_REVERSE_D(19, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20(o, s, BOOST_PP_LIST_REVERSE_D(20, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21(o, s, BOOST_PP_LIST_REVERSE_D(21, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22(o, s, BOOST_PP_LIST_REVERSE_D(22, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23(o, s, BOOST_PP_LIST_REVERSE_D(23, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24(o, s, BOOST_PP_LIST_REVERSE_D(24, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25(o, s, BOOST_PP_LIST_REVERSE_D(25, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26(o, s, BOOST_PP_LIST_REVERSE_D(26, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27(o, s, BOOST_PP_LIST_REVERSE_D(27, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28(o, s, BOOST_PP_LIST_REVERSE_D(28, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29(o, s, BOOST_PP_LIST_REVERSE_D(29, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30(o, s, BOOST_PP_LIST_REVERSE_D(30, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31(o, s, BOOST_PP_LIST_REVERSE_D(31, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32(o, s, BOOST_PP_LIST_REVERSE_D(32, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33(o, s, BOOST_PP_LIST_REVERSE_D(33, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34(o, s, BOOST_PP_LIST_REVERSE_D(34, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35(o, s, BOOST_PP_LIST_REVERSE_D(35, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36(o, s, BOOST_PP_LIST_REVERSE_D(36, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37(o, s, BOOST_PP_LIST_REVERSE_D(37, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38(o, s, BOOST_PP_LIST_REVERSE_D(38, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39(o, s, BOOST_PP_LIST_REVERSE_D(39, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40(o, s, BOOST_PP_LIST_REVERSE_D(40, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41(o, s, BOOST_PP_LIST_REVERSE_D(41, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42(o, s, BOOST_PP_LIST_REVERSE_D(42, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43(o, s, BOOST_PP_LIST_REVERSE_D(43, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44(o, s, BOOST_PP_LIST_REVERSE_D(44, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45(o, s, BOOST_PP_LIST_REVERSE_D(45, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46(o, s, BOOST_PP_LIST_REVERSE_D(46, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47(o, s, BOOST_PP_LIST_REVERSE_D(47, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48(o, s, BOOST_PP_LIST_REVERSE_D(48, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49(o, s, BOOST_PP_LIST_REVERSE_D(49, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50(o, s, BOOST_PP_LIST_REVERSE_D(50, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51(o, s, BOOST_PP_LIST_REVERSE_D(51, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52(o, s, BOOST_PP_LIST_REVERSE_D(52, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53(o, s, BOOST_PP_LIST_REVERSE_D(53, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54(o, s, BOOST_PP_LIST_REVERSE_D(54, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55(o, s, BOOST_PP_LIST_REVERSE_D(55, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56(o, s, BOOST_PP_LIST_REVERSE_D(56, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57(o, s, BOOST_PP_LIST_REVERSE_D(57, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58(o, s, BOOST_PP_LIST_REVERSE_D(58, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59(o, s, BOOST_PP_LIST_REVERSE_D(59, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60(o, s, BOOST_PP_LIST_REVERSE_D(60, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61(o, s, BOOST_PP_LIST_REVERSE_D(61, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62(o, s, BOOST_PP_LIST_REVERSE_D(62, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63(o, s, BOOST_PP_LIST_REVERSE_D(63, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64(o, s, BOOST_PP_LIST_REVERSE_D(64, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65(o, s, BOOST_PP_LIST_REVERSE_D(65, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66(o, s, BOOST_PP_LIST_REVERSE_D(66, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67(o, s, BOOST_PP_LIST_REVERSE_D(67, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68(o, s, BOOST_PP_LIST_REVERSE_D(68, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69(o, s, BOOST_PP_LIST_REVERSE_D(69, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70(o, s, BOOST_PP_LIST_REVERSE_D(70, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71(o, s, BOOST_PP_LIST_REVERSE_D(71, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72(o, s, BOOST_PP_LIST_REVERSE_D(72, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73(o, s, BOOST_PP_LIST_REVERSE_D(73, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74(o, s, BOOST_PP_LIST_REVERSE_D(74, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75(o, s, BOOST_PP_LIST_REVERSE_D(75, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76(o, s, BOOST_PP_LIST_REVERSE_D(76, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77(o, s, BOOST_PP_LIST_REVERSE_D(77, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78(o, s, BOOST_PP_LIST_REVERSE_D(78, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79(o, s, BOOST_PP_LIST_REVERSE_D(79, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80(o, s, BOOST_PP_LIST_REVERSE_D(80, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81(o, s, BOOST_PP_LIST_REVERSE_D(81, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82(o, s, BOOST_PP_LIST_REVERSE_D(82, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83(o, s, BOOST_PP_LIST_REVERSE_D(83, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84(o, s, BOOST_PP_LIST_REVERSE_D(84, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85(o, s, BOOST_PP_LIST_REVERSE_D(85, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86(o, s, BOOST_PP_LIST_REVERSE_D(86, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87(o, s, BOOST_PP_LIST_REVERSE_D(87, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88(o, s, BOOST_PP_LIST_REVERSE_D(88, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89(o, s, BOOST_PP_LIST_REVERSE_D(89, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90(o, s, BOOST_PP_LIST_REVERSE_D(90, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91(o, s, BOOST_PP_LIST_REVERSE_D(91, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92(o, s, BOOST_PP_LIST_REVERSE_D(92, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93(o, s, BOOST_PP_LIST_REVERSE_D(93, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94(o, s, BOOST_PP_LIST_REVERSE_D(94, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95(o, s, BOOST_PP_LIST_REVERSE_D(95, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96(o, s, BOOST_PP_LIST_REVERSE_D(96, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97(o, s, BOOST_PP_LIST_REVERSE_D(97, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98(o, s, BOOST_PP_LIST_REVERSE_D(98, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99(o, s, BOOST_PP_LIST_REVERSE_D(99, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100(o, s, BOOST_PP_LIST_REVERSE_D(100, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101(o, s, BOOST_PP_LIST_REVERSE_D(101, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102(o, s, BOOST_PP_LIST_REVERSE_D(102, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103(o, s, BOOST_PP_LIST_REVERSE_D(103, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104(o, s, BOOST_PP_LIST_REVERSE_D(104, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105(o, s, BOOST_PP_LIST_REVERSE_D(105, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106(o, s, BOOST_PP_LIST_REVERSE_D(106, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107(o, s, BOOST_PP_LIST_REVERSE_D(107, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108(o, s, BOOST_PP_LIST_REVERSE_D(108, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109(o, s, BOOST_PP_LIST_REVERSE_D(109, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110(o, s, BOOST_PP_LIST_REVERSE_D(110, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111(o, s, BOOST_PP_LIST_REVERSE_D(111, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112(o, s, BOOST_PP_LIST_REVERSE_D(112, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113(o, s, BOOST_PP_LIST_REVERSE_D(113, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114(o, s, BOOST_PP_LIST_REVERSE_D(114, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115(o, s, BOOST_PP_LIST_REVERSE_D(115, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116(o, s, BOOST_PP_LIST_REVERSE_D(116, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117(o, s, BOOST_PP_LIST_REVERSE_D(117, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118(o, s, BOOST_PP_LIST_REVERSE_D(118, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119(o, s, BOOST_PP_LIST_REVERSE_D(119, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120(o, s, BOOST_PP_LIST_REVERSE_D(120, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121(o, s, BOOST_PP_LIST_REVERSE_D(121, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122(o, s, BOOST_PP_LIST_REVERSE_D(122, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123(o, s, BOOST_PP_LIST_REVERSE_D(123, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124(o, s, BOOST_PP_LIST_REVERSE_D(124, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125(o, s, BOOST_PP_LIST_REVERSE_D(125, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126(o, s, BOOST_PP_LIST_REVERSE_D(126, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127(o, s, BOOST_PP_LIST_REVERSE_D(127, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128(o, s, BOOST_PP_LIST_REVERSE_D(128, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129(o, s, BOOST_PP_LIST_REVERSE_D(129, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130(o, s, BOOST_PP_LIST_REVERSE_D(130, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131(o, s, BOOST_PP_LIST_REVERSE_D(131, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132(o, s, BOOST_PP_LIST_REVERSE_D(132, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133(o, s, BOOST_PP_LIST_REVERSE_D(133, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134(o, s, BOOST_PP_LIST_REVERSE_D(134, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135(o, s, BOOST_PP_LIST_REVERSE_D(135, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136(o, s, BOOST_PP_LIST_REVERSE_D(136, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137(o, s, BOOST_PP_LIST_REVERSE_D(137, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138(o, s, BOOST_PP_LIST_REVERSE_D(138, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139(o, s, BOOST_PP_LIST_REVERSE_D(139, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140(o, s, BOOST_PP_LIST_REVERSE_D(140, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141(o, s, BOOST_PP_LIST_REVERSE_D(141, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142(o, s, BOOST_PP_LIST_REVERSE_D(142, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143(o, s, BOOST_PP_LIST_REVERSE_D(143, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144(o, s, BOOST_PP_LIST_REVERSE_D(144, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145(o, s, BOOST_PP_LIST_REVERSE_D(145, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146(o, s, BOOST_PP_LIST_REVERSE_D(146, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147(o, s, BOOST_PP_LIST_REVERSE_D(147, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148(o, s, BOOST_PP_LIST_REVERSE_D(148, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149(o, s, BOOST_PP_LIST_REVERSE_D(149, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150(o, s, BOOST_PP_LIST_REVERSE_D(150, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151(o, s, BOOST_PP_LIST_REVERSE_D(151, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152(o, s, BOOST_PP_LIST_REVERSE_D(152, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153(o, s, BOOST_PP_LIST_REVERSE_D(153, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154(o, s, BOOST_PP_LIST_REVERSE_D(154, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155(o, s, BOOST_PP_LIST_REVERSE_D(155, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156(o, s, BOOST_PP_LIST_REVERSE_D(156, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157(o, s, BOOST_PP_LIST_REVERSE_D(157, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158(o, s, BOOST_PP_LIST_REVERSE_D(158, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159(o, s, BOOST_PP_LIST_REVERSE_D(159, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160(o, s, BOOST_PP_LIST_REVERSE_D(160, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161(o, s, BOOST_PP_LIST_REVERSE_D(161, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162(o, s, BOOST_PP_LIST_REVERSE_D(162, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163(o, s, BOOST_PP_LIST_REVERSE_D(163, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164(o, s, BOOST_PP_LIST_REVERSE_D(164, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165(o, s, BOOST_PP_LIST_REVERSE_D(165, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166(o, s, BOOST_PP_LIST_REVERSE_D(166, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167(o, s, BOOST_PP_LIST_REVERSE_D(167, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168(o, s, BOOST_PP_LIST_REVERSE_D(168, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169(o, s, BOOST_PP_LIST_REVERSE_D(169, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170(o, s, BOOST_PP_LIST_REVERSE_D(170, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171(o, s, BOOST_PP_LIST_REVERSE_D(171, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172(o, s, BOOST_PP_LIST_REVERSE_D(172, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173(o, s, BOOST_PP_LIST_REVERSE_D(173, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174(o, s, BOOST_PP_LIST_REVERSE_D(174, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175(o, s, BOOST_PP_LIST_REVERSE_D(175, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176(o, s, BOOST_PP_LIST_REVERSE_D(176, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177(o, s, BOOST_PP_LIST_REVERSE_D(177, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178(o, s, BOOST_PP_LIST_REVERSE_D(178, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179(o, s, BOOST_PP_LIST_REVERSE_D(179, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180(o, s, BOOST_PP_LIST_REVERSE_D(180, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181(o, s, BOOST_PP_LIST_REVERSE_D(181, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182(o, s, BOOST_PP_LIST_REVERSE_D(182, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183(o, s, BOOST_PP_LIST_REVERSE_D(183, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184(o, s, BOOST_PP_LIST_REVERSE_D(184, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185(o, s, BOOST_PP_LIST_REVERSE_D(185, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186(o, s, BOOST_PP_LIST_REVERSE_D(186, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187(o, s, BOOST_PP_LIST_REVERSE_D(187, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188(o, s, BOOST_PP_LIST_REVERSE_D(188, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189(o, s, BOOST_PP_LIST_REVERSE_D(189, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190(o, s, BOOST_PP_LIST_REVERSE_D(190, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191(o, s, BOOST_PP_LIST_REVERSE_D(191, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192(o, s, BOOST_PP_LIST_REVERSE_D(192, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193(o, s, BOOST_PP_LIST_REVERSE_D(193, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194(o, s, BOOST_PP_LIST_REVERSE_D(194, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195(o, s, BOOST_PP_LIST_REVERSE_D(195, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196(o, s, BOOST_PP_LIST_REVERSE_D(196, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197(o, s, BOOST_PP_LIST_REVERSE_D(197, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198(o, s, BOOST_PP_LIST_REVERSE_D(198, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199(o, s, BOOST_PP_LIST_REVERSE_D(199, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200(o, s, BOOST_PP_LIST_REVERSE_D(200, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201(o, s, BOOST_PP_LIST_REVERSE_D(201, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202(o, s, BOOST_PP_LIST_REVERSE_D(202, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203(o, s, BOOST_PP_LIST_REVERSE_D(203, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204(o, s, BOOST_PP_LIST_REVERSE_D(204, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205(o, s, BOOST_PP_LIST_REVERSE_D(205, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206(o, s, BOOST_PP_LIST_REVERSE_D(206, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207(o, s, BOOST_PP_LIST_REVERSE_D(207, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208(o, s, BOOST_PP_LIST_REVERSE_D(208, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209(o, s, BOOST_PP_LIST_REVERSE_D(209, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210(o, s, BOOST_PP_LIST_REVERSE_D(210, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211(o, s, BOOST_PP_LIST_REVERSE_D(211, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212(o, s, BOOST_PP_LIST_REVERSE_D(212, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213(o, s, BOOST_PP_LIST_REVERSE_D(213, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214(o, s, BOOST_PP_LIST_REVERSE_D(214, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215(o, s, BOOST_PP_LIST_REVERSE_D(215, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216(o, s, BOOST_PP_LIST_REVERSE_D(216, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217(o, s, BOOST_PP_LIST_REVERSE_D(217, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218(o, s, BOOST_PP_LIST_REVERSE_D(218, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219(o, s, BOOST_PP_LIST_REVERSE_D(219, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220(o, s, BOOST_PP_LIST_REVERSE_D(220, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221(o, s, BOOST_PP_LIST_REVERSE_D(221, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222(o, s, BOOST_PP_LIST_REVERSE_D(222, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223(o, s, BOOST_PP_LIST_REVERSE_D(223, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224(o, s, BOOST_PP_LIST_REVERSE_D(224, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225(o, s, BOOST_PP_LIST_REVERSE_D(225, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226(o, s, BOOST_PP_LIST_REVERSE_D(226, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227(o, s, BOOST_PP_LIST_REVERSE_D(227, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228(o, s, BOOST_PP_LIST_REVERSE_D(228, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229(o, s, BOOST_PP_LIST_REVERSE_D(229, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230(o, s, BOOST_PP_LIST_REVERSE_D(230, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231(o, s, BOOST_PP_LIST_REVERSE_D(231, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232(o, s, BOOST_PP_LIST_REVERSE_D(232, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233(o, s, BOOST_PP_LIST_REVERSE_D(233, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234(o, s, BOOST_PP_LIST_REVERSE_D(234, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235(o, s, BOOST_PP_LIST_REVERSE_D(235, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236(o, s, BOOST_PP_LIST_REVERSE_D(236, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237(o, s, BOOST_PP_LIST_REVERSE_D(237, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238(o, s, BOOST_PP_LIST_REVERSE_D(238, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239(o, s, BOOST_PP_LIST_REVERSE_D(239, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240(o, s, BOOST_PP_LIST_REVERSE_D(240, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241(o, s, BOOST_PP_LIST_REVERSE_D(241, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242(o, s, BOOST_PP_LIST_REVERSE_D(242, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243(o, s, BOOST_PP_LIST_REVERSE_D(243, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244(o, s, BOOST_PP_LIST_REVERSE_D(244, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245(o, s, BOOST_PP_LIST_REVERSE_D(245, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246(o, s, BOOST_PP_LIST_REVERSE_D(246, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247(o, s, BOOST_PP_LIST_REVERSE_D(247, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248(o, s, BOOST_PP_LIST_REVERSE_D(248, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249(o, s, BOOST_PP_LIST_REVERSE_D(249, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250(o, s, BOOST_PP_LIST_REVERSE_D(250, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251(o, s, BOOST_PP_LIST_REVERSE_D(251, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252(o, s, BOOST_PP_LIST_REVERSE_D(252, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253(o, s, BOOST_PP_LIST_REVERSE_D(253, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254(o, s, BOOST_PP_LIST_REVERSE_D(254, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255(o, s, BOOST_PP_LIST_REVERSE_D(255, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256(o, s, BOOST_PP_LIST_REVERSE_D(256, l))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/fold_left.hpp b/3rdParty/Boost/boost/preprocessor/list/fold_left.hpp
new file mode 100644
index 0000000..f235aec
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/fold_left.hpp
@@ -0,0 +1,303 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_LIST_FOLD_LEFT */
+#
+# if 0
+# define BOOST_PP_LIST_FOLD_LEFT(op, state, list)
+# endif
+#
+# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_ERROR(0x0004)
+#
+# define BOOST_PP_LIST_FOLD_LEFT_D(d, o, s, l) BOOST_PP_LIST_FOLD_LEFT_ ## d(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT
+# define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/list/detail/edg/fold_left.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/list/detail/dmc/fold_left.hpp>
+# else
+# include <boost/preprocessor/list/detail/fold_left.hpp>
+# endif
+#
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) 0
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/fold_right.hpp b/3rdParty/Boost/boost/preprocessor/list/fold_right.hpp
new file mode 100644
index 0000000..ce18afe
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/fold_right.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# if 0
+# define BOOST_PP_LIST_FOLD_RIGHT(op, state, list)
+# endif
+#
+# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004)
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_D(d, o, s, l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT
+# define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/list/detail/edg/fold_right.hpp>
+# else
+# include <boost/preprocessor/list/detail/fold_right.hpp>
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/for_each_i.hpp b/3rdParty/Boost/boost/preprocessor/list/for_each_i.hpp
new file mode 100644
index 0000000..8f02e2e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/for_each_i.hpp
@@ -0,0 +1,65 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+# define BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH_I */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# else
+# define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list)
+# define BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_FOR_EACH_I_P_D x
+# define BOOST_PP_LIST_FOR_EACH_I_P_D(m, d, l, i) BOOST_PP_LIST_IS_CONS(l)
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(4, 2, x))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FOR_EACH_I_O(r, x) BOOST_PP_LIST_FOR_EACH_I_O_D x
+# define BOOST_PP_LIST_FOR_EACH_I_O_D(m, d, l, i) (m, d, BOOST_PP_LIST_REST(l), BOOST_PP_INC(i))
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_O(r, x) (BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(4, 2, x)), BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 3, x)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_D(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_REM_4 x)
+# define BOOST_PP_LIST_FOR_EACH_I_M_I(r, x_e) BOOST_PP_LIST_FOR_EACH_I_M_D(r, x_e)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_I_M_D(r, m, d, l, i) m(r, d, i, BOOST_PP_LIST_FIRST(l))
+#
+# /* BOOST_PP_LIST_FOR_EACH_I_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list)
+# define BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/reverse.hpp b/3rdParty/Boost/boost/preprocessor/list/reverse.hpp
new file mode 100644
index 0000000..651da05
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/reverse.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_REVERSE_HPP
+# define BOOST_PREPROCESSOR_LIST_REVERSE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+#
+# /* BOOST_PP_LIST_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# else
+# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list)
+# define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# endif
+#
+# define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s)
+#
+# /* BOOST_PP_LIST_REVERSE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# else
+# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list)
+# define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/list/transform.hpp b/3rdParty/Boost/boost/preprocessor/list/transform.hpp
new file mode 100644
index 0000000..840f306
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/list/transform.hpp
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_TRANSFORM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# else
+# define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_LIST_TRANSFORM_I(op, data, list)
+# define BOOST_PP_LIST_TRANSFORM_I(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, BOOST_PP_TUPLE_ELEM(3, 0, odr), BOOST_PP_TUPLE_ELEM(3, 1, odr), BOOST_PP_TUPLE_ELEM(3, 2, odr), elem)
+# else
+# define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_I(d, BOOST_PP_TUPLE_REM_3 odr, elem)
+# define BOOST_PP_LIST_TRANSFORM_O_I(d, im, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, im, elem)
+# endif
+#
+# define BOOST_PP_LIST_TRANSFORM_O_D(d, op, data, res, elem) (op, data, (op(d, data, elem), res))
+#
+# /* BOOST_PP_LIST_TRANSFORM_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# else
+# define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list)
+# define BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/and.hpp b/3rdParty/Boost/boost/preprocessor/logical/and.hpp
new file mode 100644
index 0000000..8590365
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/and.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+#
+# /* BOOST_PP_AND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q)
+# define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/bitand.hpp b/3rdParty/Boost/boost/preprocessor/logical/bitand.hpp
new file mode 100644
index 0000000..74e9527
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/bitand.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (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_LOGICAL_BITAND_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITAND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_I(x, y)
+# else
+# define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_OO((x, y))
+# define BOOST_PP_BITAND_OO(par) BOOST_PP_BITAND_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ ## x ## y
+# else
+# define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ID(BOOST_PP_BITAND_ ## x ## y)
+# define BOOST_PP_BITAND_ID(res) res
+# endif
+#
+# define BOOST_PP_BITAND_00 0
+# define BOOST_PP_BITAND_01 0
+# define BOOST_PP_BITAND_10 0
+# define BOOST_PP_BITAND_11 1
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/bitor.hpp b/3rdParty/Boost/boost/preprocessor/logical/bitor.hpp
new file mode 100644
index 0000000..c0bc2c6
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/bitor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (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_LOGICAL_BITOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y)
+# else
+# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y))
+# define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y
+# else
+# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y)
+# define BOOST_PP_BITOR_ID(id) id
+# endif
+#
+# define BOOST_PP_BITOR_00 0
+# define BOOST_PP_BITOR_01 1
+# define BOOST_PP_BITOR_10 1
+# define BOOST_PP_BITOR_11 1
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/bool.hpp b/3rdParty/Boost/boost/preprocessor/logical/bool.hpp
new file mode 100644
index 0000000..fc01b5b
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/bool.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BOOL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
+# else
+# define BOOST_PP_BOOL(x) BOOST_PP_BOOL_OO((x))
+# define BOOST_PP_BOOL_OO(par) BOOST_PP_BOOL_I ## par
+# endif
+#
+# define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
+#
+# define BOOST_PP_BOOL_0 0
+# define BOOST_PP_BOOL_1 1
+# define BOOST_PP_BOOL_2 1
+# define BOOST_PP_BOOL_3 1
+# define BOOST_PP_BOOL_4 1
+# define BOOST_PP_BOOL_5 1
+# define BOOST_PP_BOOL_6 1
+# define BOOST_PP_BOOL_7 1
+# define BOOST_PP_BOOL_8 1
+# define BOOST_PP_BOOL_9 1
+# define BOOST_PP_BOOL_10 1
+# define BOOST_PP_BOOL_11 1
+# define BOOST_PP_BOOL_12 1
+# define BOOST_PP_BOOL_13 1
+# define BOOST_PP_BOOL_14 1
+# define BOOST_PP_BOOL_15 1
+# define BOOST_PP_BOOL_16 1
+# define BOOST_PP_BOOL_17 1
+# define BOOST_PP_BOOL_18 1
+# define BOOST_PP_BOOL_19 1
+# define BOOST_PP_BOOL_20 1
+# define BOOST_PP_BOOL_21 1
+# define BOOST_PP_BOOL_22 1
+# define BOOST_PP_BOOL_23 1
+# define BOOST_PP_BOOL_24 1
+# define BOOST_PP_BOOL_25 1
+# define BOOST_PP_BOOL_26 1
+# define BOOST_PP_BOOL_27 1
+# define BOOST_PP_BOOL_28 1
+# define BOOST_PP_BOOL_29 1
+# define BOOST_PP_BOOL_30 1
+# define BOOST_PP_BOOL_31 1
+# define BOOST_PP_BOOL_32 1
+# define BOOST_PP_BOOL_33 1
+# define BOOST_PP_BOOL_34 1
+# define BOOST_PP_BOOL_35 1
+# define BOOST_PP_BOOL_36 1
+# define BOOST_PP_BOOL_37 1
+# define BOOST_PP_BOOL_38 1
+# define BOOST_PP_BOOL_39 1
+# define BOOST_PP_BOOL_40 1
+# define BOOST_PP_BOOL_41 1
+# define BOOST_PP_BOOL_42 1
+# define BOOST_PP_BOOL_43 1
+# define BOOST_PP_BOOL_44 1
+# define BOOST_PP_BOOL_45 1
+# define BOOST_PP_BOOL_46 1
+# define BOOST_PP_BOOL_47 1
+# define BOOST_PP_BOOL_48 1
+# define BOOST_PP_BOOL_49 1
+# define BOOST_PP_BOOL_50 1
+# define BOOST_PP_BOOL_51 1
+# define BOOST_PP_BOOL_52 1
+# define BOOST_PP_BOOL_53 1
+# define BOOST_PP_BOOL_54 1
+# define BOOST_PP_BOOL_55 1
+# define BOOST_PP_BOOL_56 1
+# define BOOST_PP_BOOL_57 1
+# define BOOST_PP_BOOL_58 1
+# define BOOST_PP_BOOL_59 1
+# define BOOST_PP_BOOL_60 1
+# define BOOST_PP_BOOL_61 1
+# define BOOST_PP_BOOL_62 1
+# define BOOST_PP_BOOL_63 1
+# define BOOST_PP_BOOL_64 1
+# define BOOST_PP_BOOL_65 1
+# define BOOST_PP_BOOL_66 1
+# define BOOST_PP_BOOL_67 1
+# define BOOST_PP_BOOL_68 1
+# define BOOST_PP_BOOL_69 1
+# define BOOST_PP_BOOL_70 1
+# define BOOST_PP_BOOL_71 1
+# define BOOST_PP_BOOL_72 1
+# define BOOST_PP_BOOL_73 1
+# define BOOST_PP_BOOL_74 1
+# define BOOST_PP_BOOL_75 1
+# define BOOST_PP_BOOL_76 1
+# define BOOST_PP_BOOL_77 1
+# define BOOST_PP_BOOL_78 1
+# define BOOST_PP_BOOL_79 1
+# define BOOST_PP_BOOL_80 1
+# define BOOST_PP_BOOL_81 1
+# define BOOST_PP_BOOL_82 1
+# define BOOST_PP_BOOL_83 1
+# define BOOST_PP_BOOL_84 1
+# define BOOST_PP_BOOL_85 1
+# define BOOST_PP_BOOL_86 1
+# define BOOST_PP_BOOL_87 1
+# define BOOST_PP_BOOL_88 1
+# define BOOST_PP_BOOL_89 1
+# define BOOST_PP_BOOL_90 1
+# define BOOST_PP_BOOL_91 1
+# define BOOST_PP_BOOL_92 1
+# define BOOST_PP_BOOL_93 1
+# define BOOST_PP_BOOL_94 1
+# define BOOST_PP_BOOL_95 1
+# define BOOST_PP_BOOL_96 1
+# define BOOST_PP_BOOL_97 1
+# define BOOST_PP_BOOL_98 1
+# define BOOST_PP_BOOL_99 1
+# define BOOST_PP_BOOL_100 1
+# define BOOST_PP_BOOL_101 1
+# define BOOST_PP_BOOL_102 1
+# define BOOST_PP_BOOL_103 1
+# define BOOST_PP_BOOL_104 1
+# define BOOST_PP_BOOL_105 1
+# define BOOST_PP_BOOL_106 1
+# define BOOST_PP_BOOL_107 1
+# define BOOST_PP_BOOL_108 1
+# define BOOST_PP_BOOL_109 1
+# define BOOST_PP_BOOL_110 1
+# define BOOST_PP_BOOL_111 1
+# define BOOST_PP_BOOL_112 1
+# define BOOST_PP_BOOL_113 1
+# define BOOST_PP_BOOL_114 1
+# define BOOST_PP_BOOL_115 1
+# define BOOST_PP_BOOL_116 1
+# define BOOST_PP_BOOL_117 1
+# define BOOST_PP_BOOL_118 1
+# define BOOST_PP_BOOL_119 1
+# define BOOST_PP_BOOL_120 1
+# define BOOST_PP_BOOL_121 1
+# define BOOST_PP_BOOL_122 1
+# define BOOST_PP_BOOL_123 1
+# define BOOST_PP_BOOL_124 1
+# define BOOST_PP_BOOL_125 1
+# define BOOST_PP_BOOL_126 1
+# define BOOST_PP_BOOL_127 1
+# define BOOST_PP_BOOL_128 1
+# define BOOST_PP_BOOL_129 1
+# define BOOST_PP_BOOL_130 1
+# define BOOST_PP_BOOL_131 1
+# define BOOST_PP_BOOL_132 1
+# define BOOST_PP_BOOL_133 1
+# define BOOST_PP_BOOL_134 1
+# define BOOST_PP_BOOL_135 1
+# define BOOST_PP_BOOL_136 1
+# define BOOST_PP_BOOL_137 1
+# define BOOST_PP_BOOL_138 1
+# define BOOST_PP_BOOL_139 1
+# define BOOST_PP_BOOL_140 1
+# define BOOST_PP_BOOL_141 1
+# define BOOST_PP_BOOL_142 1
+# define BOOST_PP_BOOL_143 1
+# define BOOST_PP_BOOL_144 1
+# define BOOST_PP_BOOL_145 1
+# define BOOST_PP_BOOL_146 1
+# define BOOST_PP_BOOL_147 1
+# define BOOST_PP_BOOL_148 1
+# define BOOST_PP_BOOL_149 1
+# define BOOST_PP_BOOL_150 1
+# define BOOST_PP_BOOL_151 1
+# define BOOST_PP_BOOL_152 1
+# define BOOST_PP_BOOL_153 1
+# define BOOST_PP_BOOL_154 1
+# define BOOST_PP_BOOL_155 1
+# define BOOST_PP_BOOL_156 1
+# define BOOST_PP_BOOL_157 1
+# define BOOST_PP_BOOL_158 1
+# define BOOST_PP_BOOL_159 1
+# define BOOST_PP_BOOL_160 1
+# define BOOST_PP_BOOL_161 1
+# define BOOST_PP_BOOL_162 1
+# define BOOST_PP_BOOL_163 1
+# define BOOST_PP_BOOL_164 1
+# define BOOST_PP_BOOL_165 1
+# define BOOST_PP_BOOL_166 1
+# define BOOST_PP_BOOL_167 1
+# define BOOST_PP_BOOL_168 1
+# define BOOST_PP_BOOL_169 1
+# define BOOST_PP_BOOL_170 1
+# define BOOST_PP_BOOL_171 1
+# define BOOST_PP_BOOL_172 1
+# define BOOST_PP_BOOL_173 1
+# define BOOST_PP_BOOL_174 1
+# define BOOST_PP_BOOL_175 1
+# define BOOST_PP_BOOL_176 1
+# define BOOST_PP_BOOL_177 1
+# define BOOST_PP_BOOL_178 1
+# define BOOST_PP_BOOL_179 1
+# define BOOST_PP_BOOL_180 1
+# define BOOST_PP_BOOL_181 1
+# define BOOST_PP_BOOL_182 1
+# define BOOST_PP_BOOL_183 1
+# define BOOST_PP_BOOL_184 1
+# define BOOST_PP_BOOL_185 1
+# define BOOST_PP_BOOL_186 1
+# define BOOST_PP_BOOL_187 1
+# define BOOST_PP_BOOL_188 1
+# define BOOST_PP_BOOL_189 1
+# define BOOST_PP_BOOL_190 1
+# define BOOST_PP_BOOL_191 1
+# define BOOST_PP_BOOL_192 1
+# define BOOST_PP_BOOL_193 1
+# define BOOST_PP_BOOL_194 1
+# define BOOST_PP_BOOL_195 1
+# define BOOST_PP_BOOL_196 1
+# define BOOST_PP_BOOL_197 1
+# define BOOST_PP_BOOL_198 1
+# define BOOST_PP_BOOL_199 1
+# define BOOST_PP_BOOL_200 1
+# define BOOST_PP_BOOL_201 1
+# define BOOST_PP_BOOL_202 1
+# define BOOST_PP_BOOL_203 1
+# define BOOST_PP_BOOL_204 1
+# define BOOST_PP_BOOL_205 1
+# define BOOST_PP_BOOL_206 1
+# define BOOST_PP_BOOL_207 1
+# define BOOST_PP_BOOL_208 1
+# define BOOST_PP_BOOL_209 1
+# define BOOST_PP_BOOL_210 1
+# define BOOST_PP_BOOL_211 1
+# define BOOST_PP_BOOL_212 1
+# define BOOST_PP_BOOL_213 1
+# define BOOST_PP_BOOL_214 1
+# define BOOST_PP_BOOL_215 1
+# define BOOST_PP_BOOL_216 1
+# define BOOST_PP_BOOL_217 1
+# define BOOST_PP_BOOL_218 1
+# define BOOST_PP_BOOL_219 1
+# define BOOST_PP_BOOL_220 1
+# define BOOST_PP_BOOL_221 1
+# define BOOST_PP_BOOL_222 1
+# define BOOST_PP_BOOL_223 1
+# define BOOST_PP_BOOL_224 1
+# define BOOST_PP_BOOL_225 1
+# define BOOST_PP_BOOL_226 1
+# define BOOST_PP_BOOL_227 1
+# define BOOST_PP_BOOL_228 1
+# define BOOST_PP_BOOL_229 1
+# define BOOST_PP_BOOL_230 1
+# define BOOST_PP_BOOL_231 1
+# define BOOST_PP_BOOL_232 1
+# define BOOST_PP_BOOL_233 1
+# define BOOST_PP_BOOL_234 1
+# define BOOST_PP_BOOL_235 1
+# define BOOST_PP_BOOL_236 1
+# define BOOST_PP_BOOL_237 1
+# define BOOST_PP_BOOL_238 1
+# define BOOST_PP_BOOL_239 1
+# define BOOST_PP_BOOL_240 1
+# define BOOST_PP_BOOL_241 1
+# define BOOST_PP_BOOL_242 1
+# define BOOST_PP_BOOL_243 1
+# define BOOST_PP_BOOL_244 1
+# define BOOST_PP_BOOL_245 1
+# define BOOST_PP_BOOL_246 1
+# define BOOST_PP_BOOL_247 1
+# define BOOST_PP_BOOL_248 1
+# define BOOST_PP_BOOL_249 1
+# define BOOST_PP_BOOL_250 1
+# define BOOST_PP_BOOL_251 1
+# define BOOST_PP_BOOL_252 1
+# define BOOST_PP_BOOL_253 1
+# define BOOST_PP_BOOL_254 1
+# define BOOST_PP_BOOL_255 1
+# define BOOST_PP_BOOL_256 1
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/compl.hpp b/3rdParty/Boost/boost/preprocessor/logical/compl.hpp
new file mode 100644
index 0000000..ad4c7a4
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/compl.hpp
@@ -0,0 +1,36 @@
+# /* **************************************************************************
+# * *
+# * (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_LOGICAL_COMPL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_COMPL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_COMPL(x) BOOST_PP_COMPL_I(x)
+# else
+# define BOOST_PP_COMPL(x) BOOST_PP_COMPL_OO((x))
+# define BOOST_PP_COMPL_OO(par) BOOST_PP_COMPL_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ ## x
+# else
+# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ID(BOOST_PP_COMPL_ ## x)
+# define BOOST_PP_COMPL_ID(id) id
+# endif
+#
+# define BOOST_PP_COMPL_0 1
+# define BOOST_PP_COMPL_1 0
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/not.hpp b/3rdParty/Boost/boost/preprocessor/logical/not.hpp
new file mode 100644
index 0000000..b509d3f
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/not.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_NOT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# else
+# define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
+# define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/logical/or.hpp b/3rdParty/Boost/boost/preprocessor/logical/or.hpp
new file mode 100644
index 0000000..88d5207
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/logical/or.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitor.hpp>
+#
+# /* BOOST_PP_OR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
+# define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/punctuation/comma.hpp b/3rdParty/Boost/boost/preprocessor/punctuation/comma.hpp
new file mode 100644
index 0000000..38c2e0e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/punctuation/comma.hpp
@@ -0,0 +1,21 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
+#
+# /* BOOST_PP_COMMA */
+#
+# define BOOST_PP_COMMA() ,
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/punctuation/comma_if.hpp b/3rdParty/Boost/boost/preprocessor/punctuation/comma_if.hpp
new file mode 100644
index 0000000..c711f36
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/punctuation/comma_if.hpp
@@ -0,0 +1,31 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/punctuation/comma.hpp>
+#
+# /* BOOST_PP_COMMA_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
+# else
+# define BOOST_PP_COMMA_IF(cond) BOOST_PP_COMMA_IF_I(cond)
+# define BOOST_PP_COMMA_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repeat.hpp b/3rdParty/Boost/boost/preprocessor/repeat.hpp
new file mode 100644
index 0000000..7c47ee8
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repeat.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_REPEAT_HPP
+# define BOOST_PREPROCESSOR_REPEAT_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repeat_from_to.hpp b/3rdParty/Boost/boost/preprocessor/repeat_from_to.hpp
new file mode 100644
index 0000000..4ddc3be
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repeat_from_to.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (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_REPEAT_FROM_TO_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/detail/dmc/for.hpp b/3rdParty/Boost/boost/preprocessor/repetition/detail/dmc/for.hpp
new file mode 100644
index 0000000..1d907ff
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/detail/dmc/for.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p##(2, s)), s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p##(3, s)), s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p##(4, s)), s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p##(5, s)), s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p##(6, s)), s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p##(7, s)), s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p##(8, s)), s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p##(9, s)), s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p##(10, s)), s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p##(11, s)), s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p##(12, s)), s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p##(13, s)), s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p##(14, s)), s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p##(15, s)), s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p##(16, s)), s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p##(17, s)), s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p##(18, s)), s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p##(19, s)), s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p##(20, s)), s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p##(21, s)), s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p##(22, s)), s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p##(23, s)), s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p##(24, s)), s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p##(25, s)), s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p##(26, s)), s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p##(27, s)), s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p##(28, s)), s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p##(29, s)), s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p##(30, s)), s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p##(31, s)), s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p##(32, s)), s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p##(33, s)), s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p##(34, s)), s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p##(35, s)), s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p##(36, s)), s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p##(37, s)), s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p##(38, s)), s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p##(39, s)), s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p##(40, s)), s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p##(41, s)), s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p##(42, s)), s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p##(43, s)), s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p##(44, s)), s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p##(45, s)), s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p##(46, s)), s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p##(47, s)), s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p##(48, s)), s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p##(49, s)), s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p##(50, s)), s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p##(51, s)), s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p##(52, s)), s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p##(53, s)), s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p##(54, s)), s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p##(55, s)), s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p##(56, s)), s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p##(57, s)), s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p##(58, s)), s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p##(59, s)), s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p##(60, s)), s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p##(61, s)), s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p##(62, s)), s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p##(63, s)), s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p##(64, s)), s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p##(65, s)), s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p##(66, s)), s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p##(67, s)), s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p##(68, s)), s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p##(69, s)), s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p##(70, s)), s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p##(71, s)), s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p##(72, s)), s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p##(73, s)), s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p##(74, s)), s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p##(75, s)), s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p##(76, s)), s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p##(77, s)), s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p##(78, s)), s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p##(79, s)), s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p##(80, s)), s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p##(81, s)), s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p##(82, s)), s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p##(83, s)), s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p##(84, s)), s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p##(85, s)), s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p##(86, s)), s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p##(87, s)), s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p##(88, s)), s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p##(89, s)), s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p##(90, s)), s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p##(91, s)), s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p##(92, s)), s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p##(93, s)), s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p##(94, s)), s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p##(95, s)), s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p##(96, s)), s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p##(97, s)), s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p##(98, s)), s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p##(99, s)), s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p##(100, s)), s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p##(101, s)), s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p##(102, s)), s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p##(103, s)), s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p##(104, s)), s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p##(105, s)), s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p##(106, s)), s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p##(107, s)), s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p##(108, s)), s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p##(109, s)), s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p##(110, s)), s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p##(111, s)), s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p##(112, s)), s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p##(113, s)), s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p##(114, s)), s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p##(115, s)), s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p##(116, s)), s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p##(117, s)), s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p##(118, s)), s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p##(119, s)), s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p##(120, s)), s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p##(121, s)), s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p##(122, s)), s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p##(123, s)), s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p##(124, s)), s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p##(125, s)), s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p##(126, s)), s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p##(127, s)), s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p##(128, s)), s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p##(129, s)), s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p##(130, s)), s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p##(131, s)), s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p##(132, s)), s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p##(133, s)), s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p##(134, s)), s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p##(135, s)), s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p##(136, s)), s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p##(137, s)), s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p##(138, s)), s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p##(139, s)), s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p##(140, s)), s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p##(141, s)), s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p##(142, s)), s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p##(143, s)), s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p##(144, s)), s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p##(145, s)), s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p##(146, s)), s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p##(147, s)), s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p##(148, s)), s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p##(149, s)), s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p##(150, s)), s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p##(151, s)), s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p##(152, s)), s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p##(153, s)), s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p##(154, s)), s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p##(155, s)), s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p##(156, s)), s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p##(157, s)), s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p##(158, s)), s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p##(159, s)), s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p##(160, s)), s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p##(161, s)), s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p##(162, s)), s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p##(163, s)), s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p##(164, s)), s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p##(165, s)), s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p##(166, s)), s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p##(167, s)), s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p##(168, s)), s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p##(169, s)), s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p##(170, s)), s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p##(171, s)), s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p##(172, s)), s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p##(173, s)), s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p##(174, s)), s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p##(175, s)), s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p##(176, s)), s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p##(177, s)), s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p##(178, s)), s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p##(179, s)), s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p##(180, s)), s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p##(181, s)), s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p##(182, s)), s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p##(183, s)), s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p##(184, s)), s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p##(185, s)), s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p##(186, s)), s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p##(187, s)), s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p##(188, s)), s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p##(189, s)), s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p##(190, s)), s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p##(191, s)), s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p##(192, s)), s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p##(193, s)), s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p##(194, s)), s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p##(195, s)), s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p##(196, s)), s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p##(197, s)), s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p##(198, s)), s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p##(199, s)), s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p##(200, s)), s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p##(201, s)), s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p##(202, s)), s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p##(203, s)), s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p##(204, s)), s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p##(205, s)), s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p##(206, s)), s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p##(207, s)), s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p##(208, s)), s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p##(209, s)), s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p##(210, s)), s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p##(211, s)), s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p##(212, s)), s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p##(213, s)), s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p##(214, s)), s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p##(215, s)), s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p##(216, s)), s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p##(217, s)), s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p##(218, s)), s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p##(219, s)), s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p##(220, s)), s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p##(221, s)), s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p##(222, s)), s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p##(223, s)), s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p##(224, s)), s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p##(225, s)), s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p##(226, s)), s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p##(227, s)), s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p##(228, s)), s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p##(229, s)), s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p##(230, s)), s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p##(231, s)), s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p##(232, s)), s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p##(233, s)), s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p##(234, s)), s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p##(235, s)), s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p##(236, s)), s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p##(237, s)), s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p##(238, s)), s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p##(239, s)), s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p##(240, s)), s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p##(241, s)), s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p##(242, s)), s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p##(243, s)), s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p##(244, s)), s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p##(245, s)), s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p##(246, s)), s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p##(247, s)), s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p##(248, s)), s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p##(249, s)), s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p##(250, s)), s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p##(251, s)), s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p##(252, s)), s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p##(253, s)), s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p##(254, s)), s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p##(255, s)), s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p##(256, s)), s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p##(257, s)), s, p, o, m)
+#
+# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/detail/edg/for.hpp b/3rdParty/Boost/boost/preprocessor/repetition/detail/edg/for.hpp
new file mode 100644
index 0000000..212921a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/detail/edg/for.hpp
@@ -0,0 +1,534 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_I(s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_I(s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_I(s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_I(s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_I(s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_I(s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_I(s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_I(s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_I(s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_I(s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_I(s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_I(s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_I(s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_I(s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_I(s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_I(s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_I(s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_I(s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_I(s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_I(s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_I(s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_I(s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_I(s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_I(s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_I(s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_I(s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_I(s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_I(s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_I(s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_I(s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_I(s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_I(s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_I(s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_I(s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_I(s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_I(s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_I(s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_I(s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_I(s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_I(s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_I(s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_I(s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_I(s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_I(s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_I(s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_I(s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_I(s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_I(s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_I(s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_I(s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_I(s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_I(s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_I(s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_I(s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_I(s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_I(s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_I(s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_I(s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_I(s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_I(s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_I(s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_I(s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_I(s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_I(s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_I(s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_I(s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_I(s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_I(s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_I(s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_I(s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_I(s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_I(s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_I(s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_I(s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_I(s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_I(s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_I(s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_I(s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_I(s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_I(s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_I(s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_I(s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_I(s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_I(s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_I(s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_I(s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_I(s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_I(s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_I(s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_I(s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_I(s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_I(s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_I(s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_I(s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_I(s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_I(s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_I(s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_I(s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_I(s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_I(s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_I(s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_I(s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_I(s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_I(s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_I(s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_I(s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_I(s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_I(s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_I(s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_I(s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_I(s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_I(s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_I(s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_I(s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_I(s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_I(s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_I(s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_I(s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_I(s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_I(s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_I(s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_I(s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_I(s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_I(s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_I(s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_I(s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_I(s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_I(s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_I(s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_I(s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_I(s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_I(s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_I(s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_I(s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_I(s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_I(s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_I(s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_I(s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_I(s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_I(s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_I(s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_I(s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_I(s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_I(s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_I(s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_I(s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_I(s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_I(s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_I(s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_I(s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_I(s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_I(s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_I(s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_I(s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_I(s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_I(s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_I(s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_I(s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_I(s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_I(s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_I(s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_I(s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_I(s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_I(s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_I(s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_I(s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_I(s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_I(s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_I(s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_I(s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_I(s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_I(s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_I(s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_I(s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_I(s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_I(s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_I(s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_I(s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_I(s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_I(s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_I(s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_I(s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_I(s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_I(s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_I(s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_I(s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_I(s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_I(s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_I(s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_I(s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_I(s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_I(s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_I(s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_I(s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_I(s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_I(s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_I(s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_I(s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_I(s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_I(s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_I(s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_I(s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_I(s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_I(s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_I(s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_I(s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_I(s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_I(s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_I(s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_I(s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_I(s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_I(s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_I(s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_I(s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_I(s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_I(s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_I(s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_I(s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_I(s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_I(s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_I(s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_I(s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_I(s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_I(s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_I(s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_I(s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_I(s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_I(s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_I(s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_I(s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_I(s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_I(s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_I(s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_I(s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_I(s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_I(s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_I(s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_I(s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_I(s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_I(s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_I(s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_I(s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_I(s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_I(s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_I(s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_I(s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_I(s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_I(s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_I(s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_I(s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_I(s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_I(s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_I(s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_I(s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_I(s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_I(s, p, o, m)
+#
+# define BOOST_PP_FOR_1_I(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
+# define BOOST_PP_FOR_2_I(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
+# define BOOST_PP_FOR_3_I(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
+# define BOOST_PP_FOR_4_I(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
+# define BOOST_PP_FOR_5_I(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
+# define BOOST_PP_FOR_6_I(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
+# define BOOST_PP_FOR_7_I(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
+# define BOOST_PP_FOR_8_I(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
+# define BOOST_PP_FOR_9_I(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
+# define BOOST_PP_FOR_10_I(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
+# define BOOST_PP_FOR_11_I(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
+# define BOOST_PP_FOR_12_I(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
+# define BOOST_PP_FOR_13_I(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
+# define BOOST_PP_FOR_14_I(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
+# define BOOST_PP_FOR_15_I(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
+# define BOOST_PP_FOR_16_I(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
+# define BOOST_PP_FOR_17_I(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
+# define BOOST_PP_FOR_18_I(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
+# define BOOST_PP_FOR_19_I(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
+# define BOOST_PP_FOR_20_I(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
+# define BOOST_PP_FOR_21_I(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
+# define BOOST_PP_FOR_22_I(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
+# define BOOST_PP_FOR_23_I(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
+# define BOOST_PP_FOR_24_I(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
+# define BOOST_PP_FOR_25_I(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
+# define BOOST_PP_FOR_26_I(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
+# define BOOST_PP_FOR_27_I(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
+# define BOOST_PP_FOR_28_I(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
+# define BOOST_PP_FOR_29_I(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
+# define BOOST_PP_FOR_30_I(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
+# define BOOST_PP_FOR_31_I(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
+# define BOOST_PP_FOR_32_I(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
+# define BOOST_PP_FOR_33_I(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
+# define BOOST_PP_FOR_34_I(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
+# define BOOST_PP_FOR_35_I(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
+# define BOOST_PP_FOR_36_I(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
+# define BOOST_PP_FOR_37_I(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
+# define BOOST_PP_FOR_38_I(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
+# define BOOST_PP_FOR_39_I(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
+# define BOOST_PP_FOR_40_I(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
+# define BOOST_PP_FOR_41_I(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
+# define BOOST_PP_FOR_42_I(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
+# define BOOST_PP_FOR_43_I(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
+# define BOOST_PP_FOR_44_I(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
+# define BOOST_PP_FOR_45_I(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
+# define BOOST_PP_FOR_46_I(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
+# define BOOST_PP_FOR_47_I(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
+# define BOOST_PP_FOR_48_I(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
+# define BOOST_PP_FOR_49_I(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
+# define BOOST_PP_FOR_50_I(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
+# define BOOST_PP_FOR_51_I(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
+# define BOOST_PP_FOR_52_I(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
+# define BOOST_PP_FOR_53_I(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
+# define BOOST_PP_FOR_54_I(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
+# define BOOST_PP_FOR_55_I(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
+# define BOOST_PP_FOR_56_I(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
+# define BOOST_PP_FOR_57_I(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
+# define BOOST_PP_FOR_58_I(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
+# define BOOST_PP_FOR_59_I(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
+# define BOOST_PP_FOR_60_I(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
+# define BOOST_PP_FOR_61_I(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
+# define BOOST_PP_FOR_62_I(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
+# define BOOST_PP_FOR_63_I(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
+# define BOOST_PP_FOR_64_I(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
+# define BOOST_PP_FOR_65_I(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
+# define BOOST_PP_FOR_66_I(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
+# define BOOST_PP_FOR_67_I(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
+# define BOOST_PP_FOR_68_I(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
+# define BOOST_PP_FOR_69_I(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
+# define BOOST_PP_FOR_70_I(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
+# define BOOST_PP_FOR_71_I(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
+# define BOOST_PP_FOR_72_I(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
+# define BOOST_PP_FOR_73_I(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
+# define BOOST_PP_FOR_74_I(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
+# define BOOST_PP_FOR_75_I(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
+# define BOOST_PP_FOR_76_I(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
+# define BOOST_PP_FOR_77_I(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
+# define BOOST_PP_FOR_78_I(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
+# define BOOST_PP_FOR_79_I(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
+# define BOOST_PP_FOR_80_I(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
+# define BOOST_PP_FOR_81_I(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
+# define BOOST_PP_FOR_82_I(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
+# define BOOST_PP_FOR_83_I(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
+# define BOOST_PP_FOR_84_I(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
+# define BOOST_PP_FOR_85_I(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
+# define BOOST_PP_FOR_86_I(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
+# define BOOST_PP_FOR_87_I(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
+# define BOOST_PP_FOR_88_I(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
+# define BOOST_PP_FOR_89_I(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
+# define BOOST_PP_FOR_90_I(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
+# define BOOST_PP_FOR_91_I(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
+# define BOOST_PP_FOR_92_I(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
+# define BOOST_PP_FOR_93_I(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
+# define BOOST_PP_FOR_94_I(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
+# define BOOST_PP_FOR_95_I(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
+# define BOOST_PP_FOR_96_I(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
+# define BOOST_PP_FOR_97_I(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
+# define BOOST_PP_FOR_98_I(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
+# define BOOST_PP_FOR_99_I(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
+# define BOOST_PP_FOR_100_I(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
+# define BOOST_PP_FOR_101_I(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
+# define BOOST_PP_FOR_102_I(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
+# define BOOST_PP_FOR_103_I(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
+# define BOOST_PP_FOR_104_I(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
+# define BOOST_PP_FOR_105_I(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
+# define BOOST_PP_FOR_106_I(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
+# define BOOST_PP_FOR_107_I(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
+# define BOOST_PP_FOR_108_I(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
+# define BOOST_PP_FOR_109_I(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
+# define BOOST_PP_FOR_110_I(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
+# define BOOST_PP_FOR_111_I(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
+# define BOOST_PP_FOR_112_I(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
+# define BOOST_PP_FOR_113_I(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
+# define BOOST_PP_FOR_114_I(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
+# define BOOST_PP_FOR_115_I(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
+# define BOOST_PP_FOR_116_I(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
+# define BOOST_PP_FOR_117_I(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
+# define BOOST_PP_FOR_118_I(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
+# define BOOST_PP_FOR_119_I(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
+# define BOOST_PP_FOR_120_I(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
+# define BOOST_PP_FOR_121_I(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
+# define BOOST_PP_FOR_122_I(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
+# define BOOST_PP_FOR_123_I(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
+# define BOOST_PP_FOR_124_I(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
+# define BOOST_PP_FOR_125_I(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
+# define BOOST_PP_FOR_126_I(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
+# define BOOST_PP_FOR_127_I(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
+# define BOOST_PP_FOR_128_I(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
+# define BOOST_PP_FOR_129_I(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
+# define BOOST_PP_FOR_130_I(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
+# define BOOST_PP_FOR_131_I(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
+# define BOOST_PP_FOR_132_I(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
+# define BOOST_PP_FOR_133_I(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
+# define BOOST_PP_FOR_134_I(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
+# define BOOST_PP_FOR_135_I(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
+# define BOOST_PP_FOR_136_I(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
+# define BOOST_PP_FOR_137_I(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
+# define BOOST_PP_FOR_138_I(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
+# define BOOST_PP_FOR_139_I(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
+# define BOOST_PP_FOR_140_I(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
+# define BOOST_PP_FOR_141_I(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
+# define BOOST_PP_FOR_142_I(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
+# define BOOST_PP_FOR_143_I(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
+# define BOOST_PP_FOR_144_I(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
+# define BOOST_PP_FOR_145_I(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
+# define BOOST_PP_FOR_146_I(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
+# define BOOST_PP_FOR_147_I(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
+# define BOOST_PP_FOR_148_I(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
+# define BOOST_PP_FOR_149_I(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
+# define BOOST_PP_FOR_150_I(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
+# define BOOST_PP_FOR_151_I(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
+# define BOOST_PP_FOR_152_I(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
+# define BOOST_PP_FOR_153_I(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
+# define BOOST_PP_FOR_154_I(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
+# define BOOST_PP_FOR_155_I(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
+# define BOOST_PP_FOR_156_I(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
+# define BOOST_PP_FOR_157_I(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
+# define BOOST_PP_FOR_158_I(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
+# define BOOST_PP_FOR_159_I(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
+# define BOOST_PP_FOR_160_I(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
+# define BOOST_PP_FOR_161_I(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
+# define BOOST_PP_FOR_162_I(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
+# define BOOST_PP_FOR_163_I(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
+# define BOOST_PP_FOR_164_I(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
+# define BOOST_PP_FOR_165_I(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
+# define BOOST_PP_FOR_166_I(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
+# define BOOST_PP_FOR_167_I(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
+# define BOOST_PP_FOR_168_I(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
+# define BOOST_PP_FOR_169_I(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
+# define BOOST_PP_FOR_170_I(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
+# define BOOST_PP_FOR_171_I(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
+# define BOOST_PP_FOR_172_I(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
+# define BOOST_PP_FOR_173_I(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
+# define BOOST_PP_FOR_174_I(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
+# define BOOST_PP_FOR_175_I(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
+# define BOOST_PP_FOR_176_I(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
+# define BOOST_PP_FOR_177_I(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
+# define BOOST_PP_FOR_178_I(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
+# define BOOST_PP_FOR_179_I(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
+# define BOOST_PP_FOR_180_I(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
+# define BOOST_PP_FOR_181_I(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
+# define BOOST_PP_FOR_182_I(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
+# define BOOST_PP_FOR_183_I(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
+# define BOOST_PP_FOR_184_I(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
+# define BOOST_PP_FOR_185_I(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
+# define BOOST_PP_FOR_186_I(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
+# define BOOST_PP_FOR_187_I(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
+# define BOOST_PP_FOR_188_I(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
+# define BOOST_PP_FOR_189_I(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
+# define BOOST_PP_FOR_190_I(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
+# define BOOST_PP_FOR_191_I(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
+# define BOOST_PP_FOR_192_I(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
+# define BOOST_PP_FOR_193_I(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
+# define BOOST_PP_FOR_194_I(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
+# define BOOST_PP_FOR_195_I(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
+# define BOOST_PP_FOR_196_I(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
+# define BOOST_PP_FOR_197_I(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
+# define BOOST_PP_FOR_198_I(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
+# define BOOST_PP_FOR_199_I(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
+# define BOOST_PP_FOR_200_I(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
+# define BOOST_PP_FOR_201_I(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
+# define BOOST_PP_FOR_202_I(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
+# define BOOST_PP_FOR_203_I(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
+# define BOOST_PP_FOR_204_I(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
+# define BOOST_PP_FOR_205_I(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
+# define BOOST_PP_FOR_206_I(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
+# define BOOST_PP_FOR_207_I(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
+# define BOOST_PP_FOR_208_I(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
+# define BOOST_PP_FOR_209_I(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
+# define BOOST_PP_FOR_210_I(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
+# define BOOST_PP_FOR_211_I(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
+# define BOOST_PP_FOR_212_I(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
+# define BOOST_PP_FOR_213_I(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
+# define BOOST_PP_FOR_214_I(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
+# define BOOST_PP_FOR_215_I(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
+# define BOOST_PP_FOR_216_I(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
+# define BOOST_PP_FOR_217_I(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
+# define BOOST_PP_FOR_218_I(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
+# define BOOST_PP_FOR_219_I(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
+# define BOOST_PP_FOR_220_I(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
+# define BOOST_PP_FOR_221_I(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
+# define BOOST_PP_FOR_222_I(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
+# define BOOST_PP_FOR_223_I(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
+# define BOOST_PP_FOR_224_I(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
+# define BOOST_PP_FOR_225_I(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
+# define BOOST_PP_FOR_226_I(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
+# define BOOST_PP_FOR_227_I(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
+# define BOOST_PP_FOR_228_I(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
+# define BOOST_PP_FOR_229_I(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
+# define BOOST_PP_FOR_230_I(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
+# define BOOST_PP_FOR_231_I(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
+# define BOOST_PP_FOR_232_I(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
+# define BOOST_PP_FOR_233_I(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
+# define BOOST_PP_FOR_234_I(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
+# define BOOST_PP_FOR_235_I(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
+# define BOOST_PP_FOR_236_I(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
+# define BOOST_PP_FOR_237_I(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
+# define BOOST_PP_FOR_238_I(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
+# define BOOST_PP_FOR_239_I(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
+# define BOOST_PP_FOR_240_I(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
+# define BOOST_PP_FOR_241_I(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
+# define BOOST_PP_FOR_242_I(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
+# define BOOST_PP_FOR_243_I(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
+# define BOOST_PP_FOR_244_I(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
+# define BOOST_PP_FOR_245_I(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
+# define BOOST_PP_FOR_246_I(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
+# define BOOST_PP_FOR_247_I(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
+# define BOOST_PP_FOR_248_I(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
+# define BOOST_PP_FOR_249_I(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
+# define BOOST_PP_FOR_250_I(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
+# define BOOST_PP_FOR_251_I(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
+# define BOOST_PP_FOR_252_I(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
+# define BOOST_PP_FOR_253_I(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
+# define BOOST_PP_FOR_254_I(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
+# define BOOST_PP_FOR_255_I(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
+# define BOOST_PP_FOR_256_I(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/detail/for.hpp b/3rdParty/Boost/boost/preprocessor/repetition/detail/for.hpp
new file mode 100644
index 0000000..2770f2c
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/detail/for.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p(2, s)), s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p(3, s)), s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p(4, s)), s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p(5, s)), s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p(6, s)), s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p(7, s)), s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p(8, s)), s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p(9, s)), s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p(10, s)), s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p(11, s)), s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p(12, s)), s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p(13, s)), s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p(14, s)), s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p(15, s)), s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p(16, s)), s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p(17, s)), s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p(18, s)), s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p(19, s)), s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p(20, s)), s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p(21, s)), s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p(22, s)), s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p(23, s)), s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p(24, s)), s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p(25, s)), s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p(26, s)), s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p(27, s)), s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p(28, s)), s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p(29, s)), s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p(30, s)), s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p(31, s)), s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p(32, s)), s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p(33, s)), s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p(34, s)), s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p(35, s)), s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p(36, s)), s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p(37, s)), s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p(38, s)), s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p(39, s)), s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p(40, s)), s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p(41, s)), s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p(42, s)), s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p(43, s)), s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p(44, s)), s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p(45, s)), s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p(46, s)), s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p(47, s)), s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p(48, s)), s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p(49, s)), s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p(50, s)), s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p(51, s)), s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p(52, s)), s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p(53, s)), s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p(54, s)), s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p(55, s)), s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p(56, s)), s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p(57, s)), s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p(58, s)), s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p(59, s)), s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p(60, s)), s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p(61, s)), s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p(62, s)), s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p(63, s)), s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p(64, s)), s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p(65, s)), s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p(66, s)), s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p(67, s)), s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p(68, s)), s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p(69, s)), s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p(70, s)), s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p(71, s)), s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p(72, s)), s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p(73, s)), s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p(74, s)), s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p(75, s)), s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p(76, s)), s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p(77, s)), s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p(78, s)), s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p(79, s)), s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p(80, s)), s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p(81, s)), s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p(82, s)), s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p(83, s)), s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p(84, s)), s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p(85, s)), s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p(86, s)), s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p(87, s)), s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p(88, s)), s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p(89, s)), s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p(90, s)), s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p(91, s)), s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p(92, s)), s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p(93, s)), s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p(94, s)), s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p(95, s)), s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p(96, s)), s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p(97, s)), s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p(98, s)), s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p(99, s)), s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p(100, s)), s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p(101, s)), s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p(102, s)), s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p(103, s)), s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p(104, s)), s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p(105, s)), s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p(106, s)), s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p(107, s)), s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p(108, s)), s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p(109, s)), s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p(110, s)), s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p(111, s)), s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p(112, s)), s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p(113, s)), s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p(114, s)), s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p(115, s)), s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p(116, s)), s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p(117, s)), s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p(118, s)), s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p(119, s)), s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p(120, s)), s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p(121, s)), s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p(122, s)), s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p(123, s)), s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p(124, s)), s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p(125, s)), s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p(126, s)), s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p(127, s)), s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p(128, s)), s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p(129, s)), s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p(130, s)), s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p(131, s)), s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p(132, s)), s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p(133, s)), s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p(134, s)), s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p(135, s)), s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p(136, s)), s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p(137, s)), s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p(138, s)), s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p(139, s)), s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p(140, s)), s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p(141, s)), s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p(142, s)), s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p(143, s)), s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p(144, s)), s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p(145, s)), s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p(146, s)), s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p(147, s)), s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p(148, s)), s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p(149, s)), s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p(150, s)), s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p(151, s)), s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p(152, s)), s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p(153, s)), s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p(154, s)), s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p(155, s)), s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p(156, s)), s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p(157, s)), s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p(158, s)), s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p(159, s)), s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p(160, s)), s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p(161, s)), s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p(162, s)), s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p(163, s)), s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p(164, s)), s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p(165, s)), s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p(166, s)), s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p(167, s)), s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p(168, s)), s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p(169, s)), s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p(170, s)), s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p(171, s)), s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p(172, s)), s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p(173, s)), s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p(174, s)), s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p(175, s)), s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p(176, s)), s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p(177, s)), s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p(178, s)), s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p(179, s)), s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p(180, s)), s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p(181, s)), s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p(182, s)), s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p(183, s)), s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p(184, s)), s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p(185, s)), s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p(186, s)), s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p(187, s)), s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p(188, s)), s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p(189, s)), s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p(190, s)), s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p(191, s)), s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p(192, s)), s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p(193, s)), s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p(194, s)), s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p(195, s)), s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p(196, s)), s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p(197, s)), s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p(198, s)), s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p(199, s)), s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p(200, s)), s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p(201, s)), s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p(202, s)), s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p(203, s)), s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p(204, s)), s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p(205, s)), s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p(206, s)), s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p(207, s)), s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p(208, s)), s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p(209, s)), s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p(210, s)), s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p(211, s)), s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p(212, s)), s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p(213, s)), s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p(214, s)), s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p(215, s)), s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p(216, s)), s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p(217, s)), s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p(218, s)), s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p(219, s)), s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p(220, s)), s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p(221, s)), s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p(222, s)), s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p(223, s)), s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p(224, s)), s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p(225, s)), s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p(226, s)), s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p(227, s)), s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p(228, s)), s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p(229, s)), s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p(230, s)), s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p(231, s)), s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p(232, s)), s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p(233, s)), s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p(234, s)), s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p(235, s)), s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p(236, s)), s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p(237, s)), s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p(238, s)), s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p(239, s)), s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p(240, s)), s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p(241, s)), s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p(242, s)), s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p(243, s)), s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p(244, s)), s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p(245, s)), s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p(246, s)), s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p(247, s)), s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p(248, s)), s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p(249, s)), s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p(250, s)), s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p(251, s)), s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p(252, s)), s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p(253, s)), s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p(254, s)), s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p(255, s)), s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p(256, s)), s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p(257, s)), s, p, o, m)
+#
+# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/detail/msvc/for.hpp b/3rdParty/Boost/boost/preprocessor/repetition/detail/msvc/for.hpp
new file mode 100644
index 0000000..35c1996
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/detail/msvc/for.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum.hpp
new file mode 100644
index 0000000..0198cd9
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum.hpp
@@ -0,0 +1,66 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM */
+#
+# if 0
+# define BOOST_PP_ENUM(count, macro, data)
+# endif
+#
+# define BOOST_PP_ENUM BOOST_PP_CAT(BOOST_PP_ENUM_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))
+# define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))
+# define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))
+# else
+# define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_ENUM_1_I(c, m, d)
+# define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_ENUM_2_I(c, m, d)
+# define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_ENUM_3_I(c, m, d)
+# define BOOST_PP_ENUM_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))
+# define BOOST_PP_ENUM_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))
+# define BOOST_PP_ENUM_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))
+# endif
+#
+# define BOOST_PP_ENUM_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_M_1_IM(z, n, im) BOOST_PP_ENUM_M_1_I(z, n, im)
+# define BOOST_PP_ENUM_M_2_IM(z, n, im) BOOST_PP_ENUM_M_2_I(z, n, im)
+# define BOOST_PP_ENUM_M_3_IM(z, n, im) BOOST_PP_ENUM_M_3_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define BOOST_PP_ENUM_M_1_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)
+# define BOOST_PP_ENUM_M_2_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)
+# define BOOST_PP_ENUM_M_3_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum_binary_params.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum_binary_params.hpp
new file mode 100644
index 0000000..a2c1048
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum_binary_params.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (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_REPETITION_ENUM_BINARY_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_BINARY_PARAMS_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_BINARY_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_BINARY_PARAMS(count, p1, p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS(count, p1, p2) BOOST_PP_ENUM_BINARY_PARAMS_I(count, p1, p2)
+# define BOOST_PP_ENUM_BINARY_PARAMS_I(count, p1, p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_BINARY_PARAMS_M_IM(z, n, BOOST_PP_TUPLE_REM_2 pp)
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_IM(z, n, im) BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, pp), BOOST_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2)
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2) BOOST_PP_COMMA_IF(n) p1 ## n p2 ## n
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(p1, n) BOOST_PP_CAT(p2, n)
+# endif
+#
+# /* BOOST_PP_ENUM_BINARY_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_ENUM_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define BOOST_PP_ENUM_BINARY_PARAMS_Z_I(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum_params.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum_params.hpp
new file mode 100644
index 0000000..65a2369
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum_params.hpp
@@ -0,0 +1,41 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_ENUM_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_ENUM_PARAMS_I(count, param)
+# define BOOST_PP_ENUM_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
+# endif
+#
+# define BOOST_PP_ENUM_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) param ## n
+#
+# /* BOOST_PP_ENUM_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_ENUM_PARAMS_Z_I(z, count, param)
+# define BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp
new file mode 100644
index 0000000..7496df6
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum_params_with_a_default.hpp
@@ -0,0 +1,25 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/intercept.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#
+# /* BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT */
+#
+# define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(count, param, def) BOOST_PP_ENUM_BINARY_PARAMS(count, param, = def BOOST_PP_INTERCEPT)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum_shifted_params.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum_shifted_params.hpp
new file mode 100644
index 0000000..88b2bf4
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum_shifted_params.hpp
@@ -0,0 +1,44 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_ENUM_SHIFTED_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param)
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# endif
+#
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
+#
+# /* BOOST_PP_ENUM_SHIFTED_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param)
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum_trailing.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum_trailing.hpp
new file mode 100644
index 0000000..20af2d5
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum_trailing.hpp
@@ -0,0 +1,63 @@
+# /* **************************************************************************
+# * *
+# * (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_REPETITION_ENUM_TRAILING_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_TRAILING */
+#
+# if 0
+# define BOOST_PP_ENUM_TRAILING(count, macro, data)
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_TRAILING_M_1, (m, d))
+# define BOOST_PP_ENUM_TRAILING_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_TRAILING_M_2, (m, d))
+# define BOOST_PP_ENUM_TRAILING_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_TRAILING_M_3, (m, d))
+# else
+# define BOOST_PP_ENUM_TRAILING_1(c, m, d) BOOST_PP_ENUM_TRAILING_1_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_2(c, m, d) BOOST_PP_ENUM_TRAILING_2_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_3(c, m, d) BOOST_PP_ENUM_TRAILING_3_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_TRAILING_M_1, (m, d))
+# define BOOST_PP_ENUM_TRAILING_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_TRAILING_M_2, (m, d))
+# define BOOST_PP_ENUM_TRAILING_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_TRAILING_M_3, (m, d))
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_TRAILING_M_1(z, n, md) BOOST_PP_ENUM_TRAILING_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_2(z, n, md) BOOST_PP_ENUM_TRAILING_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_3(z, n, md) BOOST_PP_ENUM_TRAILING_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_1_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_1_I(z, n, im)
+# define BOOST_PP_ENUM_TRAILING_M_2_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_2_I(z, n, im)
+# define BOOST_PP_ENUM_TRAILING_M_3_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_3_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_TRAILING_M_1(z, n, md) BOOST_PP_ENUM_TRAILING_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_TRAILING_M_2(z, n, md) BOOST_PP_ENUM_TRAILING_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_TRAILING_M_3(z, n, md) BOOST_PP_ENUM_TRAILING_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_M_1_I(z, n, m, d) , m(z, n, d)
+# define BOOST_PP_ENUM_TRAILING_M_2_I(z, n, m, d) , m(z, n, d)
+# define BOOST_PP_ENUM_TRAILING_M_3_I(z, n, m, d) , m(z, n, d)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/enum_trailing_params.hpp b/3rdParty/Boost/boost/preprocessor/repetition/enum_trailing_params.hpp
new file mode 100644
index 0000000..f7520db
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/enum_trailing_params.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (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_REPETITION_ENUM_TRAILING_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_ENUM_TRAILING_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_TRAILING_PARAMS(count, param) BOOST_PP_ENUM_TRAILING_PARAMS_I(count, param)
+# define BOOST_PP_ENUM_TRAILING_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_PARAMS_M(z, n, param) , param ## n
+#
+# /* BOOST_PP_ENUM_TRAILING_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) BOOST_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param)
+# define BOOST_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/for.hpp b/3rdParty/Boost/boost/preprocessor/repetition/for.hpp
new file mode 100644
index 0000000..5a63753
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/for.hpp
@@ -0,0 +1,306 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_FOR */
+#
+# if 0
+# define BOOST_PP_FOR(state, pred, op, macro)
+# endif
+#
+# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
+#
+# define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
+#
+# define BOOST_PP_FOR_SR_P(r, s) s
+# define BOOST_PP_FOR_SR_O(r, s) 0
+# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/repetition/detail/edg/for.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# include <boost/preprocessor/repetition/detail/msvc/for.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/repetition/detail/dmc/for.hpp>
+# else
+# include <boost/preprocessor/repetition/detail/for.hpp>
+# endif
+#
+# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002)
+#
+# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/repeat.hpp b/3rdParty/Boost/boost/preprocessor/repetition/repeat.hpp
new file mode 100644
index 0000000..0172738
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/repeat.hpp
@@ -0,0 +1,825 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
+# define BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_REPEAT */
+#
+# if 0
+# define BOOST_PP_REPEAT(count, macro, data)
+# endif
+#
+# define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))
+#
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_1(c, m, d) 0
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_2(c, m, d) 0
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_3(c, m, d) 0
+#
+# define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
+# define BOOST_PP_REPEAT_2(c, m, d) BOOST_PP_REPEAT_2_I(c, m, d)
+# define BOOST_PP_REPEAT_3(c, m, d) BOOST_PP_REPEAT_3_I(c, m, d)
+# define BOOST_PP_REPEAT_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
+# define BOOST_PP_REPEAT_2_I(c, m, d) BOOST_PP_REPEAT_2_ ## c(m, d)
+# define BOOST_PP_REPEAT_3_I(c, m, d) BOOST_PP_REPEAT_3_ ## c(m, d)
+#
+# define BOOST_PP_REPEAT_1ST BOOST_PP_REPEAT_1
+# define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2
+# define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3
+#
+# define BOOST_PP_REPEAT_1_0(m, d)
+# define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
+# define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
+# define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
+# define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
+# define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
+# define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
+# define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
+# define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
+# define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
+# define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
+# define BOOST_PP_REPEAT_1_11(m, d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d)
+# define BOOST_PP_REPEAT_1_12(m, d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d)
+# define BOOST_PP_REPEAT_1_13(m, d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d)
+# define BOOST_PP_REPEAT_1_14(m, d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d)
+# define BOOST_PP_REPEAT_1_15(m, d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d)
+# define BOOST_PP_REPEAT_1_16(m, d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d)
+# define BOOST_PP_REPEAT_1_17(m, d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d)
+# define BOOST_PP_REPEAT_1_18(m, d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d)
+# define BOOST_PP_REPEAT_1_19(m, d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d)
+# define BOOST_PP_REPEAT_1_20(m, d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d)
+# define BOOST_PP_REPEAT_1_21(m, d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d)
+# define BOOST_PP_REPEAT_1_22(m, d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d)
+# define BOOST_PP_REPEAT_1_23(m, d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d)
+# define BOOST_PP_REPEAT_1_24(m, d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d)
+# define BOOST_PP_REPEAT_1_25(m, d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d)
+# define BOOST_PP_REPEAT_1_26(m, d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d)
+# define BOOST_PP_REPEAT_1_27(m, d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d)
+# define BOOST_PP_REPEAT_1_28(m, d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d)
+# define BOOST_PP_REPEAT_1_29(m, d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d)
+# define BOOST_PP_REPEAT_1_30(m, d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d)
+# define BOOST_PP_REPEAT_1_31(m, d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d)
+# define BOOST_PP_REPEAT_1_32(m, d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d)
+# define BOOST_PP_REPEAT_1_33(m, d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d)
+# define BOOST_PP_REPEAT_1_34(m, d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d)
+# define BOOST_PP_REPEAT_1_35(m, d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d)
+# define BOOST_PP_REPEAT_1_36(m, d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d)
+# define BOOST_PP_REPEAT_1_37(m, d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d)
+# define BOOST_PP_REPEAT_1_38(m, d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d)
+# define BOOST_PP_REPEAT_1_39(m, d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d)
+# define BOOST_PP_REPEAT_1_40(m, d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d)
+# define BOOST_PP_REPEAT_1_41(m, d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d)
+# define BOOST_PP_REPEAT_1_42(m, d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d)
+# define BOOST_PP_REPEAT_1_43(m, d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d)
+# define BOOST_PP_REPEAT_1_44(m, d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d)
+# define BOOST_PP_REPEAT_1_45(m, d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d)
+# define BOOST_PP_REPEAT_1_46(m, d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d)
+# define BOOST_PP_REPEAT_1_47(m, d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d)
+# define BOOST_PP_REPEAT_1_48(m, d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d)
+# define BOOST_PP_REPEAT_1_49(m, d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d)
+# define BOOST_PP_REPEAT_1_50(m, d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d)
+# define BOOST_PP_REPEAT_1_51(m, d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d)
+# define BOOST_PP_REPEAT_1_52(m, d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d)
+# define BOOST_PP_REPEAT_1_53(m, d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d)
+# define BOOST_PP_REPEAT_1_54(m, d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d)
+# define BOOST_PP_REPEAT_1_55(m, d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d)
+# define BOOST_PP_REPEAT_1_56(m, d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d)
+# define BOOST_PP_REPEAT_1_57(m, d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d)
+# define BOOST_PP_REPEAT_1_58(m, d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d)
+# define BOOST_PP_REPEAT_1_59(m, d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d)
+# define BOOST_PP_REPEAT_1_60(m, d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d)
+# define BOOST_PP_REPEAT_1_61(m, d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d)
+# define BOOST_PP_REPEAT_1_62(m, d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d)
+# define BOOST_PP_REPEAT_1_63(m, d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d)
+# define BOOST_PP_REPEAT_1_64(m, d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d)
+# define BOOST_PP_REPEAT_1_65(m, d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d)
+# define BOOST_PP_REPEAT_1_66(m, d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d)
+# define BOOST_PP_REPEAT_1_67(m, d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d)
+# define BOOST_PP_REPEAT_1_68(m, d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d)
+# define BOOST_PP_REPEAT_1_69(m, d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d)
+# define BOOST_PP_REPEAT_1_70(m, d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d)
+# define BOOST_PP_REPEAT_1_71(m, d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d)
+# define BOOST_PP_REPEAT_1_72(m, d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d)
+# define BOOST_PP_REPEAT_1_73(m, d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d)
+# define BOOST_PP_REPEAT_1_74(m, d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d)
+# define BOOST_PP_REPEAT_1_75(m, d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d)
+# define BOOST_PP_REPEAT_1_76(m, d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d)
+# define BOOST_PP_REPEAT_1_77(m, d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d)
+# define BOOST_PP_REPEAT_1_78(m, d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d)
+# define BOOST_PP_REPEAT_1_79(m, d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d)
+# define BOOST_PP_REPEAT_1_80(m, d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d)
+# define BOOST_PP_REPEAT_1_81(m, d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d)
+# define BOOST_PP_REPEAT_1_82(m, d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d)
+# define BOOST_PP_REPEAT_1_83(m, d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d)
+# define BOOST_PP_REPEAT_1_84(m, d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d)
+# define BOOST_PP_REPEAT_1_85(m, d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d)
+# define BOOST_PP_REPEAT_1_86(m, d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d)
+# define BOOST_PP_REPEAT_1_87(m, d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d)
+# define BOOST_PP_REPEAT_1_88(m, d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d)
+# define BOOST_PP_REPEAT_1_89(m, d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d)
+# define BOOST_PP_REPEAT_1_90(m, d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d)
+# define BOOST_PP_REPEAT_1_91(m, d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d)
+# define BOOST_PP_REPEAT_1_92(m, d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d)
+# define BOOST_PP_REPEAT_1_93(m, d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d)
+# define BOOST_PP_REPEAT_1_94(m, d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d)
+# define BOOST_PP_REPEAT_1_95(m, d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d)
+# define BOOST_PP_REPEAT_1_96(m, d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d)
+# define BOOST_PP_REPEAT_1_97(m, d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d)
+# define BOOST_PP_REPEAT_1_98(m, d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d)
+# define BOOST_PP_REPEAT_1_99(m, d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d)
+# define BOOST_PP_REPEAT_1_100(m, d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d)
+# define BOOST_PP_REPEAT_1_101(m, d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d)
+# define BOOST_PP_REPEAT_1_102(m, d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d)
+# define BOOST_PP_REPEAT_1_103(m, d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d)
+# define BOOST_PP_REPEAT_1_104(m, d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d)
+# define BOOST_PP_REPEAT_1_105(m, d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d)
+# define BOOST_PP_REPEAT_1_106(m, d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d)
+# define BOOST_PP_REPEAT_1_107(m, d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d)
+# define BOOST_PP_REPEAT_1_108(m, d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d)
+# define BOOST_PP_REPEAT_1_109(m, d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d)
+# define BOOST_PP_REPEAT_1_110(m, d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d)
+# define BOOST_PP_REPEAT_1_111(m, d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d)
+# define BOOST_PP_REPEAT_1_112(m, d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d)
+# define BOOST_PP_REPEAT_1_113(m, d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d)
+# define BOOST_PP_REPEAT_1_114(m, d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d)
+# define BOOST_PP_REPEAT_1_115(m, d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d)
+# define BOOST_PP_REPEAT_1_116(m, d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d)
+# define BOOST_PP_REPEAT_1_117(m, d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d)
+# define BOOST_PP_REPEAT_1_118(m, d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d)
+# define BOOST_PP_REPEAT_1_119(m, d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d)
+# define BOOST_PP_REPEAT_1_120(m, d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d)
+# define BOOST_PP_REPEAT_1_121(m, d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d)
+# define BOOST_PP_REPEAT_1_122(m, d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d)
+# define BOOST_PP_REPEAT_1_123(m, d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d)
+# define BOOST_PP_REPEAT_1_124(m, d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d)
+# define BOOST_PP_REPEAT_1_125(m, d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d)
+# define BOOST_PP_REPEAT_1_126(m, d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d)
+# define BOOST_PP_REPEAT_1_127(m, d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d)
+# define BOOST_PP_REPEAT_1_128(m, d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d)
+# define BOOST_PP_REPEAT_1_129(m, d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d)
+# define BOOST_PP_REPEAT_1_130(m, d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d)
+# define BOOST_PP_REPEAT_1_131(m, d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d)
+# define BOOST_PP_REPEAT_1_132(m, d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d)
+# define BOOST_PP_REPEAT_1_133(m, d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d)
+# define BOOST_PP_REPEAT_1_134(m, d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d)
+# define BOOST_PP_REPEAT_1_135(m, d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d)
+# define BOOST_PP_REPEAT_1_136(m, d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d)
+# define BOOST_PP_REPEAT_1_137(m, d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d)
+# define BOOST_PP_REPEAT_1_138(m, d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d)
+# define BOOST_PP_REPEAT_1_139(m, d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d)
+# define BOOST_PP_REPEAT_1_140(m, d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d)
+# define BOOST_PP_REPEAT_1_141(m, d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d)
+# define BOOST_PP_REPEAT_1_142(m, d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d)
+# define BOOST_PP_REPEAT_1_143(m, d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d)
+# define BOOST_PP_REPEAT_1_144(m, d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d)
+# define BOOST_PP_REPEAT_1_145(m, d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d)
+# define BOOST_PP_REPEAT_1_146(m, d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d)
+# define BOOST_PP_REPEAT_1_147(m, d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d)
+# define BOOST_PP_REPEAT_1_148(m, d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d)
+# define BOOST_PP_REPEAT_1_149(m, d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d)
+# define BOOST_PP_REPEAT_1_150(m, d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d)
+# define BOOST_PP_REPEAT_1_151(m, d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d)
+# define BOOST_PP_REPEAT_1_152(m, d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d)
+# define BOOST_PP_REPEAT_1_153(m, d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d)
+# define BOOST_PP_REPEAT_1_154(m, d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d)
+# define BOOST_PP_REPEAT_1_155(m, d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d)
+# define BOOST_PP_REPEAT_1_156(m, d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d)
+# define BOOST_PP_REPEAT_1_157(m, d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d)
+# define BOOST_PP_REPEAT_1_158(m, d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d)
+# define BOOST_PP_REPEAT_1_159(m, d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d)
+# define BOOST_PP_REPEAT_1_160(m, d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d)
+# define BOOST_PP_REPEAT_1_161(m, d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d)
+# define BOOST_PP_REPEAT_1_162(m, d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d)
+# define BOOST_PP_REPEAT_1_163(m, d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d)
+# define BOOST_PP_REPEAT_1_164(m, d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d)
+# define BOOST_PP_REPEAT_1_165(m, d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d)
+# define BOOST_PP_REPEAT_1_166(m, d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d)
+# define BOOST_PP_REPEAT_1_167(m, d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d)
+# define BOOST_PP_REPEAT_1_168(m, d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d)
+# define BOOST_PP_REPEAT_1_169(m, d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d)
+# define BOOST_PP_REPEAT_1_170(m, d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d)
+# define BOOST_PP_REPEAT_1_171(m, d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d)
+# define BOOST_PP_REPEAT_1_172(m, d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d)
+# define BOOST_PP_REPEAT_1_173(m, d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d)
+# define BOOST_PP_REPEAT_1_174(m, d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d)
+# define BOOST_PP_REPEAT_1_175(m, d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d)
+# define BOOST_PP_REPEAT_1_176(m, d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d)
+# define BOOST_PP_REPEAT_1_177(m, d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d)
+# define BOOST_PP_REPEAT_1_178(m, d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d)
+# define BOOST_PP_REPEAT_1_179(m, d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d)
+# define BOOST_PP_REPEAT_1_180(m, d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d)
+# define BOOST_PP_REPEAT_1_181(m, d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d)
+# define BOOST_PP_REPEAT_1_182(m, d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d)
+# define BOOST_PP_REPEAT_1_183(m, d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d)
+# define BOOST_PP_REPEAT_1_184(m, d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d)
+# define BOOST_PP_REPEAT_1_185(m, d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d)
+# define BOOST_PP_REPEAT_1_186(m, d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d)
+# define BOOST_PP_REPEAT_1_187(m, d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d)
+# define BOOST_PP_REPEAT_1_188(m, d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d)
+# define BOOST_PP_REPEAT_1_189(m, d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d)
+# define BOOST_PP_REPEAT_1_190(m, d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d)
+# define BOOST_PP_REPEAT_1_191(m, d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d)
+# define BOOST_PP_REPEAT_1_192(m, d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d)
+# define BOOST_PP_REPEAT_1_193(m, d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d)
+# define BOOST_PP_REPEAT_1_194(m, d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d)
+# define BOOST_PP_REPEAT_1_195(m, d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d)
+# define BOOST_PP_REPEAT_1_196(m, d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d)
+# define BOOST_PP_REPEAT_1_197(m, d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d)
+# define BOOST_PP_REPEAT_1_198(m, d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d)
+# define BOOST_PP_REPEAT_1_199(m, d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d)
+# define BOOST_PP_REPEAT_1_200(m, d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d)
+# define BOOST_PP_REPEAT_1_201(m, d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d)
+# define BOOST_PP_REPEAT_1_202(m, d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d)
+# define BOOST_PP_REPEAT_1_203(m, d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d)
+# define BOOST_PP_REPEAT_1_204(m, d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d)
+# define BOOST_PP_REPEAT_1_205(m, d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d)
+# define BOOST_PP_REPEAT_1_206(m, d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d)
+# define BOOST_PP_REPEAT_1_207(m, d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d)
+# define BOOST_PP_REPEAT_1_208(m, d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d)
+# define BOOST_PP_REPEAT_1_209(m, d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d)
+# define BOOST_PP_REPEAT_1_210(m, d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d)
+# define BOOST_PP_REPEAT_1_211(m, d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d)
+# define BOOST_PP_REPEAT_1_212(m, d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d)
+# define BOOST_PP_REPEAT_1_213(m, d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d)
+# define BOOST_PP_REPEAT_1_214(m, d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d)
+# define BOOST_PP_REPEAT_1_215(m, d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d)
+# define BOOST_PP_REPEAT_1_216(m, d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d)
+# define BOOST_PP_REPEAT_1_217(m, d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d)
+# define BOOST_PP_REPEAT_1_218(m, d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d)
+# define BOOST_PP_REPEAT_1_219(m, d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d)
+# define BOOST_PP_REPEAT_1_220(m, d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d)
+# define BOOST_PP_REPEAT_1_221(m, d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d)
+# define BOOST_PP_REPEAT_1_222(m, d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d)
+# define BOOST_PP_REPEAT_1_223(m, d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d)
+# define BOOST_PP_REPEAT_1_224(m, d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d)
+# define BOOST_PP_REPEAT_1_225(m, d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d)
+# define BOOST_PP_REPEAT_1_226(m, d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d)
+# define BOOST_PP_REPEAT_1_227(m, d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d)
+# define BOOST_PP_REPEAT_1_228(m, d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d)
+# define BOOST_PP_REPEAT_1_229(m, d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d)
+# define BOOST_PP_REPEAT_1_230(m, d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d)
+# define BOOST_PP_REPEAT_1_231(m, d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d)
+# define BOOST_PP_REPEAT_1_232(m, d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d)
+# define BOOST_PP_REPEAT_1_233(m, d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d)
+# define BOOST_PP_REPEAT_1_234(m, d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d)
+# define BOOST_PP_REPEAT_1_235(m, d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d)
+# define BOOST_PP_REPEAT_1_236(m, d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d)
+# define BOOST_PP_REPEAT_1_237(m, d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d)
+# define BOOST_PP_REPEAT_1_238(m, d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d)
+# define BOOST_PP_REPEAT_1_239(m, d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d)
+# define BOOST_PP_REPEAT_1_240(m, d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d)
+# define BOOST_PP_REPEAT_1_241(m, d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d)
+# define BOOST_PP_REPEAT_1_242(m, d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d)
+# define BOOST_PP_REPEAT_1_243(m, d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d)
+# define BOOST_PP_REPEAT_1_244(m, d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d)
+# define BOOST_PP_REPEAT_1_245(m, d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d)
+# define BOOST_PP_REPEAT_1_246(m, d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d)
+# define BOOST_PP_REPEAT_1_247(m, d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d)
+# define BOOST_PP_REPEAT_1_248(m, d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d)
+# define BOOST_PP_REPEAT_1_249(m, d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d)
+# define BOOST_PP_REPEAT_1_250(m, d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d)
+# define BOOST_PP_REPEAT_1_251(m, d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d)
+# define BOOST_PP_REPEAT_1_252(m, d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d)
+# define BOOST_PP_REPEAT_1_253(m, d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d)
+# define BOOST_PP_REPEAT_1_254(m, d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d)
+# define BOOST_PP_REPEAT_1_255(m, d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d)
+# define BOOST_PP_REPEAT_1_256(m, d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d)
+#
+# define BOOST_PP_REPEAT_2_0(m, d)
+# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d)
+# define BOOST_PP_REPEAT_2_2(m, d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d)
+# define BOOST_PP_REPEAT_2_3(m, d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d)
+# define BOOST_PP_REPEAT_2_4(m, d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d)
+# define BOOST_PP_REPEAT_2_5(m, d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d)
+# define BOOST_PP_REPEAT_2_6(m, d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d)
+# define BOOST_PP_REPEAT_2_7(m, d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d)
+# define BOOST_PP_REPEAT_2_8(m, d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d)
+# define BOOST_PP_REPEAT_2_9(m, d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d)
+# define BOOST_PP_REPEAT_2_10(m, d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d)
+# define BOOST_PP_REPEAT_2_11(m, d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d)
+# define BOOST_PP_REPEAT_2_12(m, d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d)
+# define BOOST_PP_REPEAT_2_13(m, d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d)
+# define BOOST_PP_REPEAT_2_14(m, d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d)
+# define BOOST_PP_REPEAT_2_15(m, d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d)
+# define BOOST_PP_REPEAT_2_16(m, d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d)
+# define BOOST_PP_REPEAT_2_17(m, d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d)
+# define BOOST_PP_REPEAT_2_18(m, d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d)
+# define BOOST_PP_REPEAT_2_19(m, d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d)
+# define BOOST_PP_REPEAT_2_20(m, d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d)
+# define BOOST_PP_REPEAT_2_21(m, d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d)
+# define BOOST_PP_REPEAT_2_22(m, d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d)
+# define BOOST_PP_REPEAT_2_23(m, d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d)
+# define BOOST_PP_REPEAT_2_24(m, d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d)
+# define BOOST_PP_REPEAT_2_25(m, d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d)
+# define BOOST_PP_REPEAT_2_26(m, d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d)
+# define BOOST_PP_REPEAT_2_27(m, d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d)
+# define BOOST_PP_REPEAT_2_28(m, d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d)
+# define BOOST_PP_REPEAT_2_29(m, d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d)
+# define BOOST_PP_REPEAT_2_30(m, d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d)
+# define BOOST_PP_REPEAT_2_31(m, d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d)
+# define BOOST_PP_REPEAT_2_32(m, d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d)
+# define BOOST_PP_REPEAT_2_33(m, d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d)
+# define BOOST_PP_REPEAT_2_34(m, d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d)
+# define BOOST_PP_REPEAT_2_35(m, d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d)
+# define BOOST_PP_REPEAT_2_36(m, d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d)
+# define BOOST_PP_REPEAT_2_37(m, d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d)
+# define BOOST_PP_REPEAT_2_38(m, d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d)
+# define BOOST_PP_REPEAT_2_39(m, d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d)
+# define BOOST_PP_REPEAT_2_40(m, d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d)
+# define BOOST_PP_REPEAT_2_41(m, d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d)
+# define BOOST_PP_REPEAT_2_42(m, d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d)
+# define BOOST_PP_REPEAT_2_43(m, d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d)
+# define BOOST_PP_REPEAT_2_44(m, d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d)
+# define BOOST_PP_REPEAT_2_45(m, d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d)
+# define BOOST_PP_REPEAT_2_46(m, d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d)
+# define BOOST_PP_REPEAT_2_47(m, d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d)
+# define BOOST_PP_REPEAT_2_48(m, d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d)
+# define BOOST_PP_REPEAT_2_49(m, d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d)
+# define BOOST_PP_REPEAT_2_50(m, d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d)
+# define BOOST_PP_REPEAT_2_51(m, d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d)
+# define BOOST_PP_REPEAT_2_52(m, d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d)
+# define BOOST_PP_REPEAT_2_53(m, d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d)
+# define BOOST_PP_REPEAT_2_54(m, d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d)
+# define BOOST_PP_REPEAT_2_55(m, d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d)
+# define BOOST_PP_REPEAT_2_56(m, d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d)
+# define BOOST_PP_REPEAT_2_57(m, d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d)
+# define BOOST_PP_REPEAT_2_58(m, d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d)
+# define BOOST_PP_REPEAT_2_59(m, d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d)
+# define BOOST_PP_REPEAT_2_60(m, d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d)
+# define BOOST_PP_REPEAT_2_61(m, d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d)
+# define BOOST_PP_REPEAT_2_62(m, d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d)
+# define BOOST_PP_REPEAT_2_63(m, d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d)
+# define BOOST_PP_REPEAT_2_64(m, d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d)
+# define BOOST_PP_REPEAT_2_65(m, d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d)
+# define BOOST_PP_REPEAT_2_66(m, d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d)
+# define BOOST_PP_REPEAT_2_67(m, d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d)
+# define BOOST_PP_REPEAT_2_68(m, d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d)
+# define BOOST_PP_REPEAT_2_69(m, d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d)
+# define BOOST_PP_REPEAT_2_70(m, d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d)
+# define BOOST_PP_REPEAT_2_71(m, d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d)
+# define BOOST_PP_REPEAT_2_72(m, d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d)
+# define BOOST_PP_REPEAT_2_73(m, d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d)
+# define BOOST_PP_REPEAT_2_74(m, d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d)
+# define BOOST_PP_REPEAT_2_75(m, d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d)
+# define BOOST_PP_REPEAT_2_76(m, d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d)
+# define BOOST_PP_REPEAT_2_77(m, d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d)
+# define BOOST_PP_REPEAT_2_78(m, d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d)
+# define BOOST_PP_REPEAT_2_79(m, d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d)
+# define BOOST_PP_REPEAT_2_80(m, d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d)
+# define BOOST_PP_REPEAT_2_81(m, d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d)
+# define BOOST_PP_REPEAT_2_82(m, d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d)
+# define BOOST_PP_REPEAT_2_83(m, d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d)
+# define BOOST_PP_REPEAT_2_84(m, d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d)
+# define BOOST_PP_REPEAT_2_85(m, d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d)
+# define BOOST_PP_REPEAT_2_86(m, d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d)
+# define BOOST_PP_REPEAT_2_87(m, d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d)
+# define BOOST_PP_REPEAT_2_88(m, d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d)
+# define BOOST_PP_REPEAT_2_89(m, d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d)
+# define BOOST_PP_REPEAT_2_90(m, d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d)
+# define BOOST_PP_REPEAT_2_91(m, d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d)
+# define BOOST_PP_REPEAT_2_92(m, d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d)
+# define BOOST_PP_REPEAT_2_93(m, d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d)
+# define BOOST_PP_REPEAT_2_94(m, d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d)
+# define BOOST_PP_REPEAT_2_95(m, d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d)
+# define BOOST_PP_REPEAT_2_96(m, d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d)
+# define BOOST_PP_REPEAT_2_97(m, d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d)
+# define BOOST_PP_REPEAT_2_98(m, d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d)
+# define BOOST_PP_REPEAT_2_99(m, d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d)
+# define BOOST_PP_REPEAT_2_100(m, d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d)
+# define BOOST_PP_REPEAT_2_101(m, d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d)
+# define BOOST_PP_REPEAT_2_102(m, d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d)
+# define BOOST_PP_REPEAT_2_103(m, d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d)
+# define BOOST_PP_REPEAT_2_104(m, d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d)
+# define BOOST_PP_REPEAT_2_105(m, d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d)
+# define BOOST_PP_REPEAT_2_106(m, d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d)
+# define BOOST_PP_REPEAT_2_107(m, d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d)
+# define BOOST_PP_REPEAT_2_108(m, d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d)
+# define BOOST_PP_REPEAT_2_109(m, d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d)
+# define BOOST_PP_REPEAT_2_110(m, d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d)
+# define BOOST_PP_REPEAT_2_111(m, d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d)
+# define BOOST_PP_REPEAT_2_112(m, d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d)
+# define BOOST_PP_REPEAT_2_113(m, d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d)
+# define BOOST_PP_REPEAT_2_114(m, d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d)
+# define BOOST_PP_REPEAT_2_115(m, d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d)
+# define BOOST_PP_REPEAT_2_116(m, d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d)
+# define BOOST_PP_REPEAT_2_117(m, d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d)
+# define BOOST_PP_REPEAT_2_118(m, d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d)
+# define BOOST_PP_REPEAT_2_119(m, d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d)
+# define BOOST_PP_REPEAT_2_120(m, d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d)
+# define BOOST_PP_REPEAT_2_121(m, d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d)
+# define BOOST_PP_REPEAT_2_122(m, d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d)
+# define BOOST_PP_REPEAT_2_123(m, d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d)
+# define BOOST_PP_REPEAT_2_124(m, d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d)
+# define BOOST_PP_REPEAT_2_125(m, d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d)
+# define BOOST_PP_REPEAT_2_126(m, d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d)
+# define BOOST_PP_REPEAT_2_127(m, d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d)
+# define BOOST_PP_REPEAT_2_128(m, d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d)
+# define BOOST_PP_REPEAT_2_129(m, d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d)
+# define BOOST_PP_REPEAT_2_130(m, d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d)
+# define BOOST_PP_REPEAT_2_131(m, d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d)
+# define BOOST_PP_REPEAT_2_132(m, d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d)
+# define BOOST_PP_REPEAT_2_133(m, d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d)
+# define BOOST_PP_REPEAT_2_134(m, d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d)
+# define BOOST_PP_REPEAT_2_135(m, d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d)
+# define BOOST_PP_REPEAT_2_136(m, d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d)
+# define BOOST_PP_REPEAT_2_137(m, d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d)
+# define BOOST_PP_REPEAT_2_138(m, d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d)
+# define BOOST_PP_REPEAT_2_139(m, d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d)
+# define BOOST_PP_REPEAT_2_140(m, d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d)
+# define BOOST_PP_REPEAT_2_141(m, d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d)
+# define BOOST_PP_REPEAT_2_142(m, d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d)
+# define BOOST_PP_REPEAT_2_143(m, d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d)
+# define BOOST_PP_REPEAT_2_144(m, d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d)
+# define BOOST_PP_REPEAT_2_145(m, d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d)
+# define BOOST_PP_REPEAT_2_146(m, d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d)
+# define BOOST_PP_REPEAT_2_147(m, d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d)
+# define BOOST_PP_REPEAT_2_148(m, d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d)
+# define BOOST_PP_REPEAT_2_149(m, d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d)
+# define BOOST_PP_REPEAT_2_150(m, d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d)
+# define BOOST_PP_REPEAT_2_151(m, d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d)
+# define BOOST_PP_REPEAT_2_152(m, d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d)
+# define BOOST_PP_REPEAT_2_153(m, d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d)
+# define BOOST_PP_REPEAT_2_154(m, d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d)
+# define BOOST_PP_REPEAT_2_155(m, d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d)
+# define BOOST_PP_REPEAT_2_156(m, d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d)
+# define BOOST_PP_REPEAT_2_157(m, d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d)
+# define BOOST_PP_REPEAT_2_158(m, d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d)
+# define BOOST_PP_REPEAT_2_159(m, d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d)
+# define BOOST_PP_REPEAT_2_160(m, d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d)
+# define BOOST_PP_REPEAT_2_161(m, d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d)
+# define BOOST_PP_REPEAT_2_162(m, d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d)
+# define BOOST_PP_REPEAT_2_163(m, d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d)
+# define BOOST_PP_REPEAT_2_164(m, d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d)
+# define BOOST_PP_REPEAT_2_165(m, d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d)
+# define BOOST_PP_REPEAT_2_166(m, d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d)
+# define BOOST_PP_REPEAT_2_167(m, d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d)
+# define BOOST_PP_REPEAT_2_168(m, d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d)
+# define BOOST_PP_REPEAT_2_169(m, d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d)
+# define BOOST_PP_REPEAT_2_170(m, d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d)
+# define BOOST_PP_REPEAT_2_171(m, d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d)
+# define BOOST_PP_REPEAT_2_172(m, d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d)
+# define BOOST_PP_REPEAT_2_173(m, d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d)
+# define BOOST_PP_REPEAT_2_174(m, d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d)
+# define BOOST_PP_REPEAT_2_175(m, d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d)
+# define BOOST_PP_REPEAT_2_176(m, d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d)
+# define BOOST_PP_REPEAT_2_177(m, d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d)
+# define BOOST_PP_REPEAT_2_178(m, d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d)
+# define BOOST_PP_REPEAT_2_179(m, d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d)
+# define BOOST_PP_REPEAT_2_180(m, d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d)
+# define BOOST_PP_REPEAT_2_181(m, d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d)
+# define BOOST_PP_REPEAT_2_182(m, d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d)
+# define BOOST_PP_REPEAT_2_183(m, d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d)
+# define BOOST_PP_REPEAT_2_184(m, d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d)
+# define BOOST_PP_REPEAT_2_185(m, d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d)
+# define BOOST_PP_REPEAT_2_186(m, d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d)
+# define BOOST_PP_REPEAT_2_187(m, d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d)
+# define BOOST_PP_REPEAT_2_188(m, d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d)
+# define BOOST_PP_REPEAT_2_189(m, d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d)
+# define BOOST_PP_REPEAT_2_190(m, d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d)
+# define BOOST_PP_REPEAT_2_191(m, d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d)
+# define BOOST_PP_REPEAT_2_192(m, d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d)
+# define BOOST_PP_REPEAT_2_193(m, d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d)
+# define BOOST_PP_REPEAT_2_194(m, d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d)
+# define BOOST_PP_REPEAT_2_195(m, d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d)
+# define BOOST_PP_REPEAT_2_196(m, d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d)
+# define BOOST_PP_REPEAT_2_197(m, d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d)
+# define BOOST_PP_REPEAT_2_198(m, d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d)
+# define BOOST_PP_REPEAT_2_199(m, d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d)
+# define BOOST_PP_REPEAT_2_200(m, d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d)
+# define BOOST_PP_REPEAT_2_201(m, d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d)
+# define BOOST_PP_REPEAT_2_202(m, d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d)
+# define BOOST_PP_REPEAT_2_203(m, d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d)
+# define BOOST_PP_REPEAT_2_204(m, d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d)
+# define BOOST_PP_REPEAT_2_205(m, d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d)
+# define BOOST_PP_REPEAT_2_206(m, d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d)
+# define BOOST_PP_REPEAT_2_207(m, d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d)
+# define BOOST_PP_REPEAT_2_208(m, d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d)
+# define BOOST_PP_REPEAT_2_209(m, d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d)
+# define BOOST_PP_REPEAT_2_210(m, d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d)
+# define BOOST_PP_REPEAT_2_211(m, d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d)
+# define BOOST_PP_REPEAT_2_212(m, d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d)
+# define BOOST_PP_REPEAT_2_213(m, d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d)
+# define BOOST_PP_REPEAT_2_214(m, d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d)
+# define BOOST_PP_REPEAT_2_215(m, d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d)
+# define BOOST_PP_REPEAT_2_216(m, d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d)
+# define BOOST_PP_REPEAT_2_217(m, d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d)
+# define BOOST_PP_REPEAT_2_218(m, d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d)
+# define BOOST_PP_REPEAT_2_219(m, d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d)
+# define BOOST_PP_REPEAT_2_220(m, d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d)
+# define BOOST_PP_REPEAT_2_221(m, d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d)
+# define BOOST_PP_REPEAT_2_222(m, d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d)
+# define BOOST_PP_REPEAT_2_223(m, d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d)
+# define BOOST_PP_REPEAT_2_224(m, d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d)
+# define BOOST_PP_REPEAT_2_225(m, d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d)
+# define BOOST_PP_REPEAT_2_226(m, d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d)
+# define BOOST_PP_REPEAT_2_227(m, d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d)
+# define BOOST_PP_REPEAT_2_228(m, d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d)
+# define BOOST_PP_REPEAT_2_229(m, d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d)
+# define BOOST_PP_REPEAT_2_230(m, d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d)
+# define BOOST_PP_REPEAT_2_231(m, d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d)
+# define BOOST_PP_REPEAT_2_232(m, d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d)
+# define BOOST_PP_REPEAT_2_233(m, d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d)
+# define BOOST_PP_REPEAT_2_234(m, d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d)
+# define BOOST_PP_REPEAT_2_235(m, d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d)
+# define BOOST_PP_REPEAT_2_236(m, d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d)
+# define BOOST_PP_REPEAT_2_237(m, d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d)
+# define BOOST_PP_REPEAT_2_238(m, d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d)
+# define BOOST_PP_REPEAT_2_239(m, d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d)
+# define BOOST_PP_REPEAT_2_240(m, d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d)
+# define BOOST_PP_REPEAT_2_241(m, d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d)
+# define BOOST_PP_REPEAT_2_242(m, d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d)
+# define BOOST_PP_REPEAT_2_243(m, d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d)
+# define BOOST_PP_REPEAT_2_244(m, d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d)
+# define BOOST_PP_REPEAT_2_245(m, d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d)
+# define BOOST_PP_REPEAT_2_246(m, d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d)
+# define BOOST_PP_REPEAT_2_247(m, d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d)
+# define BOOST_PP_REPEAT_2_248(m, d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d)
+# define BOOST_PP_REPEAT_2_249(m, d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d)
+# define BOOST_PP_REPEAT_2_250(m, d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d)
+# define BOOST_PP_REPEAT_2_251(m, d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d)
+# define BOOST_PP_REPEAT_2_252(m, d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d)
+# define BOOST_PP_REPEAT_2_253(m, d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d)
+# define BOOST_PP_REPEAT_2_254(m, d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d)
+# define BOOST_PP_REPEAT_2_255(m, d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d)
+# define BOOST_PP_REPEAT_2_256(m, d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d)
+#
+# define BOOST_PP_REPEAT_3_0(m, d)
+# define BOOST_PP_REPEAT_3_1(m, d) m(4, 0, d)
+# define BOOST_PP_REPEAT_3_2(m, d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d)
+# define BOOST_PP_REPEAT_3_3(m, d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d)
+# define BOOST_PP_REPEAT_3_4(m, d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d)
+# define BOOST_PP_REPEAT_3_5(m, d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d)
+# define BOOST_PP_REPEAT_3_6(m, d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d)
+# define BOOST_PP_REPEAT_3_7(m, d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d)
+# define BOOST_PP_REPEAT_3_8(m, d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d)
+# define BOOST_PP_REPEAT_3_9(m, d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d)
+# define BOOST_PP_REPEAT_3_10(m, d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d)
+# define BOOST_PP_REPEAT_3_11(m, d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d)
+# define BOOST_PP_REPEAT_3_12(m, d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d)
+# define BOOST_PP_REPEAT_3_13(m, d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d)
+# define BOOST_PP_REPEAT_3_14(m, d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d)
+# define BOOST_PP_REPEAT_3_15(m, d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d)
+# define BOOST_PP_REPEAT_3_16(m, d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d)
+# define BOOST_PP_REPEAT_3_17(m, d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d)
+# define BOOST_PP_REPEAT_3_18(m, d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d)
+# define BOOST_PP_REPEAT_3_19(m, d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d)
+# define BOOST_PP_REPEAT_3_20(m, d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d)
+# define BOOST_PP_REPEAT_3_21(m, d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d)
+# define BOOST_PP_REPEAT_3_22(m, d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d)
+# define BOOST_PP_REPEAT_3_23(m, d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d)
+# define BOOST_PP_REPEAT_3_24(m, d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d)
+# define BOOST_PP_REPEAT_3_25(m, d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d)
+# define BOOST_PP_REPEAT_3_26(m, d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d)
+# define BOOST_PP_REPEAT_3_27(m, d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d)
+# define BOOST_PP_REPEAT_3_28(m, d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d)
+# define BOOST_PP_REPEAT_3_29(m, d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d)
+# define BOOST_PP_REPEAT_3_30(m, d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d)
+# define BOOST_PP_REPEAT_3_31(m, d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d)
+# define BOOST_PP_REPEAT_3_32(m, d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d)
+# define BOOST_PP_REPEAT_3_33(m, d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d)
+# define BOOST_PP_REPEAT_3_34(m, d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d)
+# define BOOST_PP_REPEAT_3_35(m, d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d)
+# define BOOST_PP_REPEAT_3_36(m, d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d)
+# define BOOST_PP_REPEAT_3_37(m, d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d)
+# define BOOST_PP_REPEAT_3_38(m, d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d)
+# define BOOST_PP_REPEAT_3_39(m, d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d)
+# define BOOST_PP_REPEAT_3_40(m, d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d)
+# define BOOST_PP_REPEAT_3_41(m, d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d)
+# define BOOST_PP_REPEAT_3_42(m, d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d)
+# define BOOST_PP_REPEAT_3_43(m, d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d)
+# define BOOST_PP_REPEAT_3_44(m, d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d)
+# define BOOST_PP_REPEAT_3_45(m, d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d)
+# define BOOST_PP_REPEAT_3_46(m, d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d)
+# define BOOST_PP_REPEAT_3_47(m, d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d)
+# define BOOST_PP_REPEAT_3_48(m, d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d)
+# define BOOST_PP_REPEAT_3_49(m, d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d)
+# define BOOST_PP_REPEAT_3_50(m, d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d)
+# define BOOST_PP_REPEAT_3_51(m, d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d)
+# define BOOST_PP_REPEAT_3_52(m, d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d)
+# define BOOST_PP_REPEAT_3_53(m, d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d)
+# define BOOST_PP_REPEAT_3_54(m, d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d)
+# define BOOST_PP_REPEAT_3_55(m, d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d)
+# define BOOST_PP_REPEAT_3_56(m, d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d)
+# define BOOST_PP_REPEAT_3_57(m, d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d)
+# define BOOST_PP_REPEAT_3_58(m, d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d)
+# define BOOST_PP_REPEAT_3_59(m, d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d)
+# define BOOST_PP_REPEAT_3_60(m, d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d)
+# define BOOST_PP_REPEAT_3_61(m, d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d)
+# define BOOST_PP_REPEAT_3_62(m, d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d)
+# define BOOST_PP_REPEAT_3_63(m, d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d)
+# define BOOST_PP_REPEAT_3_64(m, d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d)
+# define BOOST_PP_REPEAT_3_65(m, d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d)
+# define BOOST_PP_REPEAT_3_66(m, d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d)
+# define BOOST_PP_REPEAT_3_67(m, d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d)
+# define BOOST_PP_REPEAT_3_68(m, d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d)
+# define BOOST_PP_REPEAT_3_69(m, d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d)
+# define BOOST_PP_REPEAT_3_70(m, d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d)
+# define BOOST_PP_REPEAT_3_71(m, d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d)
+# define BOOST_PP_REPEAT_3_72(m, d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d)
+# define BOOST_PP_REPEAT_3_73(m, d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d)
+# define BOOST_PP_REPEAT_3_74(m, d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d)
+# define BOOST_PP_REPEAT_3_75(m, d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d)
+# define BOOST_PP_REPEAT_3_76(m, d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d)
+# define BOOST_PP_REPEAT_3_77(m, d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d)
+# define BOOST_PP_REPEAT_3_78(m, d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d)
+# define BOOST_PP_REPEAT_3_79(m, d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d)
+# define BOOST_PP_REPEAT_3_80(m, d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d)
+# define BOOST_PP_REPEAT_3_81(m, d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d)
+# define BOOST_PP_REPEAT_3_82(m, d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d)
+# define BOOST_PP_REPEAT_3_83(m, d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d)
+# define BOOST_PP_REPEAT_3_84(m, d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d)
+# define BOOST_PP_REPEAT_3_85(m, d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d)
+# define BOOST_PP_REPEAT_3_86(m, d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d)
+# define BOOST_PP_REPEAT_3_87(m, d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d)
+# define BOOST_PP_REPEAT_3_88(m, d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d)
+# define BOOST_PP_REPEAT_3_89(m, d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d)
+# define BOOST_PP_REPEAT_3_90(m, d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d)
+# define BOOST_PP_REPEAT_3_91(m, d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d)
+# define BOOST_PP_REPEAT_3_92(m, d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d)
+# define BOOST_PP_REPEAT_3_93(m, d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d)
+# define BOOST_PP_REPEAT_3_94(m, d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d)
+# define BOOST_PP_REPEAT_3_95(m, d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d)
+# define BOOST_PP_REPEAT_3_96(m, d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d)
+# define BOOST_PP_REPEAT_3_97(m, d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d)
+# define BOOST_PP_REPEAT_3_98(m, d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d)
+# define BOOST_PP_REPEAT_3_99(m, d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d)
+# define BOOST_PP_REPEAT_3_100(m, d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d)
+# define BOOST_PP_REPEAT_3_101(m, d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d)
+# define BOOST_PP_REPEAT_3_102(m, d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d)
+# define BOOST_PP_REPEAT_3_103(m, d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d)
+# define BOOST_PP_REPEAT_3_104(m, d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d)
+# define BOOST_PP_REPEAT_3_105(m, d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d)
+# define BOOST_PP_REPEAT_3_106(m, d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d)
+# define BOOST_PP_REPEAT_3_107(m, d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d)
+# define BOOST_PP_REPEAT_3_108(m, d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d)
+# define BOOST_PP_REPEAT_3_109(m, d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d)
+# define BOOST_PP_REPEAT_3_110(m, d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d)
+# define BOOST_PP_REPEAT_3_111(m, d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d)
+# define BOOST_PP_REPEAT_3_112(m, d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d)
+# define BOOST_PP_REPEAT_3_113(m, d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d)
+# define BOOST_PP_REPEAT_3_114(m, d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d)
+# define BOOST_PP_REPEAT_3_115(m, d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d)
+# define BOOST_PP_REPEAT_3_116(m, d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d)
+# define BOOST_PP_REPEAT_3_117(m, d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d)
+# define BOOST_PP_REPEAT_3_118(m, d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d)
+# define BOOST_PP_REPEAT_3_119(m, d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d)
+# define BOOST_PP_REPEAT_3_120(m, d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d)
+# define BOOST_PP_REPEAT_3_121(m, d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d)
+# define BOOST_PP_REPEAT_3_122(m, d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d)
+# define BOOST_PP_REPEAT_3_123(m, d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d)
+# define BOOST_PP_REPEAT_3_124(m, d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d)
+# define BOOST_PP_REPEAT_3_125(m, d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d)
+# define BOOST_PP_REPEAT_3_126(m, d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d)
+# define BOOST_PP_REPEAT_3_127(m, d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d)
+# define BOOST_PP_REPEAT_3_128(m, d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d)
+# define BOOST_PP_REPEAT_3_129(m, d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d)
+# define BOOST_PP_REPEAT_3_130(m, d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d)
+# define BOOST_PP_REPEAT_3_131(m, d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d)
+# define BOOST_PP_REPEAT_3_132(m, d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d)
+# define BOOST_PP_REPEAT_3_133(m, d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d)
+# define BOOST_PP_REPEAT_3_134(m, d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d)
+# define BOOST_PP_REPEAT_3_135(m, d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d)
+# define BOOST_PP_REPEAT_3_136(m, d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d)
+# define BOOST_PP_REPEAT_3_137(m, d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d)
+# define BOOST_PP_REPEAT_3_138(m, d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d)
+# define BOOST_PP_REPEAT_3_139(m, d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d)
+# define BOOST_PP_REPEAT_3_140(m, d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d)
+# define BOOST_PP_REPEAT_3_141(m, d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d)
+# define BOOST_PP_REPEAT_3_142(m, d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d)
+# define BOOST_PP_REPEAT_3_143(m, d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d)
+# define BOOST_PP_REPEAT_3_144(m, d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d)
+# define BOOST_PP_REPEAT_3_145(m, d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d)
+# define BOOST_PP_REPEAT_3_146(m, d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d)
+# define BOOST_PP_REPEAT_3_147(m, d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d)
+# define BOOST_PP_REPEAT_3_148(m, d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d)
+# define BOOST_PP_REPEAT_3_149(m, d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d)
+# define BOOST_PP_REPEAT_3_150(m, d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d)
+# define BOOST_PP_REPEAT_3_151(m, d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d)
+# define BOOST_PP_REPEAT_3_152(m, d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d)
+# define BOOST_PP_REPEAT_3_153(m, d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d)
+# define BOOST_PP_REPEAT_3_154(m, d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d)
+# define BOOST_PP_REPEAT_3_155(m, d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d)
+# define BOOST_PP_REPEAT_3_156(m, d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d)
+# define BOOST_PP_REPEAT_3_157(m, d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d)
+# define BOOST_PP_REPEAT_3_158(m, d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d)
+# define BOOST_PP_REPEAT_3_159(m, d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d)
+# define BOOST_PP_REPEAT_3_160(m, d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d)
+# define BOOST_PP_REPEAT_3_161(m, d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d)
+# define BOOST_PP_REPEAT_3_162(m, d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d)
+# define BOOST_PP_REPEAT_3_163(m, d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d)
+# define BOOST_PP_REPEAT_3_164(m, d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d)
+# define BOOST_PP_REPEAT_3_165(m, d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d)
+# define BOOST_PP_REPEAT_3_166(m, d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d)
+# define BOOST_PP_REPEAT_3_167(m, d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d)
+# define BOOST_PP_REPEAT_3_168(m, d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d)
+# define BOOST_PP_REPEAT_3_169(m, d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d)
+# define BOOST_PP_REPEAT_3_170(m, d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d)
+# define BOOST_PP_REPEAT_3_171(m, d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d)
+# define BOOST_PP_REPEAT_3_172(m, d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d)
+# define BOOST_PP_REPEAT_3_173(m, d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d)
+# define BOOST_PP_REPEAT_3_174(m, d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d)
+# define BOOST_PP_REPEAT_3_175(m, d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d)
+# define BOOST_PP_REPEAT_3_176(m, d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d)
+# define BOOST_PP_REPEAT_3_177(m, d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d)
+# define BOOST_PP_REPEAT_3_178(m, d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d)
+# define BOOST_PP_REPEAT_3_179(m, d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d)
+# define BOOST_PP_REPEAT_3_180(m, d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d)
+# define BOOST_PP_REPEAT_3_181(m, d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d)
+# define BOOST_PP_REPEAT_3_182(m, d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d)
+# define BOOST_PP_REPEAT_3_183(m, d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d)
+# define BOOST_PP_REPEAT_3_184(m, d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d)
+# define BOOST_PP_REPEAT_3_185(m, d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d)
+# define BOOST_PP_REPEAT_3_186(m, d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d)
+# define BOOST_PP_REPEAT_3_187(m, d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d)
+# define BOOST_PP_REPEAT_3_188(m, d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d)
+# define BOOST_PP_REPEAT_3_189(m, d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d)
+# define BOOST_PP_REPEAT_3_190(m, d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d)
+# define BOOST_PP_REPEAT_3_191(m, d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d)
+# define BOOST_PP_REPEAT_3_192(m, d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d)
+# define BOOST_PP_REPEAT_3_193(m, d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d)
+# define BOOST_PP_REPEAT_3_194(m, d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d)
+# define BOOST_PP_REPEAT_3_195(m, d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d)
+# define BOOST_PP_REPEAT_3_196(m, d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d)
+# define BOOST_PP_REPEAT_3_197(m, d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d)
+# define BOOST_PP_REPEAT_3_198(m, d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d)
+# define BOOST_PP_REPEAT_3_199(m, d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d)
+# define BOOST_PP_REPEAT_3_200(m, d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d)
+# define BOOST_PP_REPEAT_3_201(m, d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d)
+# define BOOST_PP_REPEAT_3_202(m, d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d)
+# define BOOST_PP_REPEAT_3_203(m, d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d)
+# define BOOST_PP_REPEAT_3_204(m, d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d)
+# define BOOST_PP_REPEAT_3_205(m, d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d)
+# define BOOST_PP_REPEAT_3_206(m, d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d)
+# define BOOST_PP_REPEAT_3_207(m, d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d)
+# define BOOST_PP_REPEAT_3_208(m, d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d)
+# define BOOST_PP_REPEAT_3_209(m, d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d)
+# define BOOST_PP_REPEAT_3_210(m, d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d)
+# define BOOST_PP_REPEAT_3_211(m, d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d)
+# define BOOST_PP_REPEAT_3_212(m, d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d)
+# define BOOST_PP_REPEAT_3_213(m, d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d)
+# define BOOST_PP_REPEAT_3_214(m, d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d)
+# define BOOST_PP_REPEAT_3_215(m, d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d)
+# define BOOST_PP_REPEAT_3_216(m, d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d)
+# define BOOST_PP_REPEAT_3_217(m, d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d)
+# define BOOST_PP_REPEAT_3_218(m, d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d)
+# define BOOST_PP_REPEAT_3_219(m, d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d)
+# define BOOST_PP_REPEAT_3_220(m, d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d)
+# define BOOST_PP_REPEAT_3_221(m, d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d)
+# define BOOST_PP_REPEAT_3_222(m, d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d)
+# define BOOST_PP_REPEAT_3_223(m, d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d)
+# define BOOST_PP_REPEAT_3_224(m, d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d)
+# define BOOST_PP_REPEAT_3_225(m, d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d)
+# define BOOST_PP_REPEAT_3_226(m, d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d)
+# define BOOST_PP_REPEAT_3_227(m, d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d)
+# define BOOST_PP_REPEAT_3_228(m, d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d)
+# define BOOST_PP_REPEAT_3_229(m, d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d)
+# define BOOST_PP_REPEAT_3_230(m, d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d)
+# define BOOST_PP_REPEAT_3_231(m, d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d)
+# define BOOST_PP_REPEAT_3_232(m, d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d)
+# define BOOST_PP_REPEAT_3_233(m, d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d)
+# define BOOST_PP_REPEAT_3_234(m, d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d)
+# define BOOST_PP_REPEAT_3_235(m, d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d)
+# define BOOST_PP_REPEAT_3_236(m, d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d)
+# define BOOST_PP_REPEAT_3_237(m, d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d)
+# define BOOST_PP_REPEAT_3_238(m, d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d)
+# define BOOST_PP_REPEAT_3_239(m, d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d)
+# define BOOST_PP_REPEAT_3_240(m, d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d)
+# define BOOST_PP_REPEAT_3_241(m, d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d)
+# define BOOST_PP_REPEAT_3_242(m, d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d)
+# define BOOST_PP_REPEAT_3_243(m, d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d)
+# define BOOST_PP_REPEAT_3_244(m, d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d)
+# define BOOST_PP_REPEAT_3_245(m, d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d)
+# define BOOST_PP_REPEAT_3_246(m, d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d)
+# define BOOST_PP_REPEAT_3_247(m, d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d)
+# define BOOST_PP_REPEAT_3_248(m, d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d)
+# define BOOST_PP_REPEAT_3_249(m, d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d)
+# define BOOST_PP_REPEAT_3_250(m, d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d)
+# define BOOST_PP_REPEAT_3_251(m, d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d)
+# define BOOST_PP_REPEAT_3_252(m, d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d)
+# define BOOST_PP_REPEAT_3_253(m, d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d)
+# define BOOST_PP_REPEAT_3_254(m, d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d)
+# define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d)
+# define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/repetition/repeat_from_to.hpp b/3rdParty/Boost/boost/preprocessor/repetition/repeat_from_to.hpp
new file mode 100644
index 0000000..efe539e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/repetition/repeat_from_to.hpp
@@ -0,0 +1,87 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
+# define BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_REPEAT_FROM_TO */
+#
+# if 0
+# define BOOST_PP_REPEAT_FROM_TO(first, last, macro, data)
+# endif
+#
+# define BOOST_PP_REPEAT_FROM_TO BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_4(f, l, m, dt) BOOST_PP_ERROR(0x0003)
+#
+# define BOOST_PP_REPEAT_FROM_TO_1ST BOOST_PP_REPEAT_FROM_TO_1
+# define BOOST_PP_REPEAT_FROM_TO_2ND BOOST_PP_REPEAT_FROM_TO_2
+# define BOOST_PP_REPEAT_FROM_TO_3RD BOOST_PP_REPEAT_FROM_TO_3
+#
+# /* BOOST_PP_REPEAT_FROM_TO_D */
+#
+# if 0
+# define BOOST_PP_REPEAT_FROM_TO_D(d, first, last, macro, data)
+# endif
+#
+# define BOOST_PP_REPEAT_FROM_TO_D BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_D_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
+# else
+# define BOOST_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
+# define BOOST_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
+# define BOOST_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
+# define BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, im)
+# define BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, im)
+# define BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, im)
+# else
+# define BOOST_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
+# define BOOST_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
+# define BOOST_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
+# endif
+#
+# define BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_1_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_2_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_3_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
+#
+# define BOOST_PP_REPEAT_FROM_TO_M_1_II(z, n, m, dt) m(z, n, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_2_II(z, n, m, dt) m(z, n, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_3_II(z, n, m, dt) m(z, n, dt)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/cat.hpp b/3rdParty/Boost/boost/preprocessor/seq/cat.hpp
new file mode 100644
index 0000000..0efd8e5
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/cat.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_CAT_HPP
+# define BOOST_PREPROCESSOR_SEQ_CAT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_SEQ_CAT */
+#
+# define BOOST_PP_SEQ_CAT(seq) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
+ BOOST_PP_SEQ_CAT_I, \
+ BOOST_PP_SEQ_HEAD(seq) BOOST_PP_TUPLE_EAT_1 \
+ )(seq) \
+ /**/
+# define BOOST_PP_SEQ_CAT_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
+#
+# define BOOST_PP_SEQ_CAT_O(s, st, elem) BOOST_PP_SEQ_CAT_O_I(st, elem)
+# define BOOST_PP_SEQ_CAT_O_I(a, b) a ## b
+#
+# /* BOOST_PP_SEQ_CAT_S */
+#
+# define BOOST_PP_SEQ_CAT_S(s, seq) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
+ BOOST_PP_SEQ_CAT_S_I, \
+ BOOST_PP_SEQ_HEAD(seq) BOOST_PP_TUPLE_EAT_2 \
+ )(s, seq) \
+ /**/
+# define BOOST_PP_SEQ_CAT_S_I(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/detail/split.hpp b/3rdParty/Boost/boost/preprocessor/seq/detail/split.hpp
new file mode 100644
index 0000000..7c33931
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/detail/split.hpp
@@ -0,0 +1,284 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_DETAIL_SPLIT_HPP
+# define BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_SEQ_SPLIT */
+#
+# define BOOST_PP_SEQ_SPLIT(n, seq) BOOST_PP_SEQ_SPLIT_D(n, seq)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n seq)
+# else
+# define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n ## seq)
+# endif
+#
+# define BOOST_PP_SEQ_SPLIT_1(x) (x),
+# define BOOST_PP_SEQ_SPLIT_2(x) (x) BOOST_PP_SEQ_SPLIT_1
+# define BOOST_PP_SEQ_SPLIT_3(x) (x) BOOST_PP_SEQ_SPLIT_2
+# define BOOST_PP_SEQ_SPLIT_4(x) (x) BOOST_PP_SEQ_SPLIT_3
+# define BOOST_PP_SEQ_SPLIT_5(x) (x) BOOST_PP_SEQ_SPLIT_4
+# define BOOST_PP_SEQ_SPLIT_6(x) (x) BOOST_PP_SEQ_SPLIT_5
+# define BOOST_PP_SEQ_SPLIT_7(x) (x) BOOST_PP_SEQ_SPLIT_6
+# define BOOST_PP_SEQ_SPLIT_8(x) (x) BOOST_PP_SEQ_SPLIT_7
+# define BOOST_PP_SEQ_SPLIT_9(x) (x) BOOST_PP_SEQ_SPLIT_8
+# define BOOST_PP_SEQ_SPLIT_10(x) (x) BOOST_PP_SEQ_SPLIT_9
+# define BOOST_PP_SEQ_SPLIT_11(x) (x) BOOST_PP_SEQ_SPLIT_10
+# define BOOST_PP_SEQ_SPLIT_12(x) (x) BOOST_PP_SEQ_SPLIT_11
+# define BOOST_PP_SEQ_SPLIT_13(x) (x) BOOST_PP_SEQ_SPLIT_12
+# define BOOST_PP_SEQ_SPLIT_14(x) (x) BOOST_PP_SEQ_SPLIT_13
+# define BOOST_PP_SEQ_SPLIT_15(x) (x) BOOST_PP_SEQ_SPLIT_14
+# define BOOST_PP_SEQ_SPLIT_16(x) (x) BOOST_PP_SEQ_SPLIT_15
+# define BOOST_PP_SEQ_SPLIT_17(x) (x) BOOST_PP_SEQ_SPLIT_16
+# define BOOST_PP_SEQ_SPLIT_18(x) (x) BOOST_PP_SEQ_SPLIT_17
+# define BOOST_PP_SEQ_SPLIT_19(x) (x) BOOST_PP_SEQ_SPLIT_18
+# define BOOST_PP_SEQ_SPLIT_20(x) (x) BOOST_PP_SEQ_SPLIT_19
+# define BOOST_PP_SEQ_SPLIT_21(x) (x) BOOST_PP_SEQ_SPLIT_20
+# define BOOST_PP_SEQ_SPLIT_22(x) (x) BOOST_PP_SEQ_SPLIT_21
+# define BOOST_PP_SEQ_SPLIT_23(x) (x) BOOST_PP_SEQ_SPLIT_22
+# define BOOST_PP_SEQ_SPLIT_24(x) (x) BOOST_PP_SEQ_SPLIT_23
+# define BOOST_PP_SEQ_SPLIT_25(x) (x) BOOST_PP_SEQ_SPLIT_24
+# define BOOST_PP_SEQ_SPLIT_26(x) (x) BOOST_PP_SEQ_SPLIT_25
+# define BOOST_PP_SEQ_SPLIT_27(x) (x) BOOST_PP_SEQ_SPLIT_26
+# define BOOST_PP_SEQ_SPLIT_28(x) (x) BOOST_PP_SEQ_SPLIT_27
+# define BOOST_PP_SEQ_SPLIT_29(x) (x) BOOST_PP_SEQ_SPLIT_28
+# define BOOST_PP_SEQ_SPLIT_30(x) (x) BOOST_PP_SEQ_SPLIT_29
+# define BOOST_PP_SEQ_SPLIT_31(x) (x) BOOST_PP_SEQ_SPLIT_30
+# define BOOST_PP_SEQ_SPLIT_32(x) (x) BOOST_PP_SEQ_SPLIT_31
+# define BOOST_PP_SEQ_SPLIT_33(x) (x) BOOST_PP_SEQ_SPLIT_32
+# define BOOST_PP_SEQ_SPLIT_34(x) (x) BOOST_PP_SEQ_SPLIT_33
+# define BOOST_PP_SEQ_SPLIT_35(x) (x) BOOST_PP_SEQ_SPLIT_34
+# define BOOST_PP_SEQ_SPLIT_36(x) (x) BOOST_PP_SEQ_SPLIT_35
+# define BOOST_PP_SEQ_SPLIT_37(x) (x) BOOST_PP_SEQ_SPLIT_36
+# define BOOST_PP_SEQ_SPLIT_38(x) (x) BOOST_PP_SEQ_SPLIT_37
+# define BOOST_PP_SEQ_SPLIT_39(x) (x) BOOST_PP_SEQ_SPLIT_38
+# define BOOST_PP_SEQ_SPLIT_40(x) (x) BOOST_PP_SEQ_SPLIT_39
+# define BOOST_PP_SEQ_SPLIT_41(x) (x) BOOST_PP_SEQ_SPLIT_40
+# define BOOST_PP_SEQ_SPLIT_42(x) (x) BOOST_PP_SEQ_SPLIT_41
+# define BOOST_PP_SEQ_SPLIT_43(x) (x) BOOST_PP_SEQ_SPLIT_42
+# define BOOST_PP_SEQ_SPLIT_44(x) (x) BOOST_PP_SEQ_SPLIT_43
+# define BOOST_PP_SEQ_SPLIT_45(x) (x) BOOST_PP_SEQ_SPLIT_44
+# define BOOST_PP_SEQ_SPLIT_46(x) (x) BOOST_PP_SEQ_SPLIT_45
+# define BOOST_PP_SEQ_SPLIT_47(x) (x) BOOST_PP_SEQ_SPLIT_46
+# define BOOST_PP_SEQ_SPLIT_48(x) (x) BOOST_PP_SEQ_SPLIT_47
+# define BOOST_PP_SEQ_SPLIT_49(x) (x) BOOST_PP_SEQ_SPLIT_48
+# define BOOST_PP_SEQ_SPLIT_50(x) (x) BOOST_PP_SEQ_SPLIT_49
+# define BOOST_PP_SEQ_SPLIT_51(x) (x) BOOST_PP_SEQ_SPLIT_50
+# define BOOST_PP_SEQ_SPLIT_52(x) (x) BOOST_PP_SEQ_SPLIT_51
+# define BOOST_PP_SEQ_SPLIT_53(x) (x) BOOST_PP_SEQ_SPLIT_52
+# define BOOST_PP_SEQ_SPLIT_54(x) (x) BOOST_PP_SEQ_SPLIT_53
+# define BOOST_PP_SEQ_SPLIT_55(x) (x) BOOST_PP_SEQ_SPLIT_54
+# define BOOST_PP_SEQ_SPLIT_56(x) (x) BOOST_PP_SEQ_SPLIT_55
+# define BOOST_PP_SEQ_SPLIT_57(x) (x) BOOST_PP_SEQ_SPLIT_56
+# define BOOST_PP_SEQ_SPLIT_58(x) (x) BOOST_PP_SEQ_SPLIT_57
+# define BOOST_PP_SEQ_SPLIT_59(x) (x) BOOST_PP_SEQ_SPLIT_58
+# define BOOST_PP_SEQ_SPLIT_60(x) (x) BOOST_PP_SEQ_SPLIT_59
+# define BOOST_PP_SEQ_SPLIT_61(x) (x) BOOST_PP_SEQ_SPLIT_60
+# define BOOST_PP_SEQ_SPLIT_62(x) (x) BOOST_PP_SEQ_SPLIT_61
+# define BOOST_PP_SEQ_SPLIT_63(x) (x) BOOST_PP_SEQ_SPLIT_62
+# define BOOST_PP_SEQ_SPLIT_64(x) (x) BOOST_PP_SEQ_SPLIT_63
+# define BOOST_PP_SEQ_SPLIT_65(x) (x) BOOST_PP_SEQ_SPLIT_64
+# define BOOST_PP_SEQ_SPLIT_66(x) (x) BOOST_PP_SEQ_SPLIT_65
+# define BOOST_PP_SEQ_SPLIT_67(x) (x) BOOST_PP_SEQ_SPLIT_66
+# define BOOST_PP_SEQ_SPLIT_68(x) (x) BOOST_PP_SEQ_SPLIT_67
+# define BOOST_PP_SEQ_SPLIT_69(x) (x) BOOST_PP_SEQ_SPLIT_68
+# define BOOST_PP_SEQ_SPLIT_70(x) (x) BOOST_PP_SEQ_SPLIT_69
+# define BOOST_PP_SEQ_SPLIT_71(x) (x) BOOST_PP_SEQ_SPLIT_70
+# define BOOST_PP_SEQ_SPLIT_72(x) (x) BOOST_PP_SEQ_SPLIT_71
+# define BOOST_PP_SEQ_SPLIT_73(x) (x) BOOST_PP_SEQ_SPLIT_72
+# define BOOST_PP_SEQ_SPLIT_74(x) (x) BOOST_PP_SEQ_SPLIT_73
+# define BOOST_PP_SEQ_SPLIT_75(x) (x) BOOST_PP_SEQ_SPLIT_74
+# define BOOST_PP_SEQ_SPLIT_76(x) (x) BOOST_PP_SEQ_SPLIT_75
+# define BOOST_PP_SEQ_SPLIT_77(x) (x) BOOST_PP_SEQ_SPLIT_76
+# define BOOST_PP_SEQ_SPLIT_78(x) (x) BOOST_PP_SEQ_SPLIT_77
+# define BOOST_PP_SEQ_SPLIT_79(x) (x) BOOST_PP_SEQ_SPLIT_78
+# define BOOST_PP_SEQ_SPLIT_80(x) (x) BOOST_PP_SEQ_SPLIT_79
+# define BOOST_PP_SEQ_SPLIT_81(x) (x) BOOST_PP_SEQ_SPLIT_80
+# define BOOST_PP_SEQ_SPLIT_82(x) (x) BOOST_PP_SEQ_SPLIT_81
+# define BOOST_PP_SEQ_SPLIT_83(x) (x) BOOST_PP_SEQ_SPLIT_82
+# define BOOST_PP_SEQ_SPLIT_84(x) (x) BOOST_PP_SEQ_SPLIT_83
+# define BOOST_PP_SEQ_SPLIT_85(x) (x) BOOST_PP_SEQ_SPLIT_84
+# define BOOST_PP_SEQ_SPLIT_86(x) (x) BOOST_PP_SEQ_SPLIT_85
+# define BOOST_PP_SEQ_SPLIT_87(x) (x) BOOST_PP_SEQ_SPLIT_86
+# define BOOST_PP_SEQ_SPLIT_88(x) (x) BOOST_PP_SEQ_SPLIT_87
+# define BOOST_PP_SEQ_SPLIT_89(x) (x) BOOST_PP_SEQ_SPLIT_88
+# define BOOST_PP_SEQ_SPLIT_90(x) (x) BOOST_PP_SEQ_SPLIT_89
+# define BOOST_PP_SEQ_SPLIT_91(x) (x) BOOST_PP_SEQ_SPLIT_90
+# define BOOST_PP_SEQ_SPLIT_92(x) (x) BOOST_PP_SEQ_SPLIT_91
+# define BOOST_PP_SEQ_SPLIT_93(x) (x) BOOST_PP_SEQ_SPLIT_92
+# define BOOST_PP_SEQ_SPLIT_94(x) (x) BOOST_PP_SEQ_SPLIT_93
+# define BOOST_PP_SEQ_SPLIT_95(x) (x) BOOST_PP_SEQ_SPLIT_94
+# define BOOST_PP_SEQ_SPLIT_96(x) (x) BOOST_PP_SEQ_SPLIT_95
+# define BOOST_PP_SEQ_SPLIT_97(x) (x) BOOST_PP_SEQ_SPLIT_96
+# define BOOST_PP_SEQ_SPLIT_98(x) (x) BOOST_PP_SEQ_SPLIT_97
+# define BOOST_PP_SEQ_SPLIT_99(x) (x) BOOST_PP_SEQ_SPLIT_98
+# define BOOST_PP_SEQ_SPLIT_100(x) (x) BOOST_PP_SEQ_SPLIT_99
+# define BOOST_PP_SEQ_SPLIT_101(x) (x) BOOST_PP_SEQ_SPLIT_100
+# define BOOST_PP_SEQ_SPLIT_102(x) (x) BOOST_PP_SEQ_SPLIT_101
+# define BOOST_PP_SEQ_SPLIT_103(x) (x) BOOST_PP_SEQ_SPLIT_102
+# define BOOST_PP_SEQ_SPLIT_104(x) (x) BOOST_PP_SEQ_SPLIT_103
+# define BOOST_PP_SEQ_SPLIT_105(x) (x) BOOST_PP_SEQ_SPLIT_104
+# define BOOST_PP_SEQ_SPLIT_106(x) (x) BOOST_PP_SEQ_SPLIT_105
+# define BOOST_PP_SEQ_SPLIT_107(x) (x) BOOST_PP_SEQ_SPLIT_106
+# define BOOST_PP_SEQ_SPLIT_108(x) (x) BOOST_PP_SEQ_SPLIT_107
+# define BOOST_PP_SEQ_SPLIT_109(x) (x) BOOST_PP_SEQ_SPLIT_108
+# define BOOST_PP_SEQ_SPLIT_110(x) (x) BOOST_PP_SEQ_SPLIT_109
+# define BOOST_PP_SEQ_SPLIT_111(x) (x) BOOST_PP_SEQ_SPLIT_110
+# define BOOST_PP_SEQ_SPLIT_112(x) (x) BOOST_PP_SEQ_SPLIT_111
+# define BOOST_PP_SEQ_SPLIT_113(x) (x) BOOST_PP_SEQ_SPLIT_112
+# define BOOST_PP_SEQ_SPLIT_114(x) (x) BOOST_PP_SEQ_SPLIT_113
+# define BOOST_PP_SEQ_SPLIT_115(x) (x) BOOST_PP_SEQ_SPLIT_114
+# define BOOST_PP_SEQ_SPLIT_116(x) (x) BOOST_PP_SEQ_SPLIT_115
+# define BOOST_PP_SEQ_SPLIT_117(x) (x) BOOST_PP_SEQ_SPLIT_116
+# define BOOST_PP_SEQ_SPLIT_118(x) (x) BOOST_PP_SEQ_SPLIT_117
+# define BOOST_PP_SEQ_SPLIT_119(x) (x) BOOST_PP_SEQ_SPLIT_118
+# define BOOST_PP_SEQ_SPLIT_120(x) (x) BOOST_PP_SEQ_SPLIT_119
+# define BOOST_PP_SEQ_SPLIT_121(x) (x) BOOST_PP_SEQ_SPLIT_120
+# define BOOST_PP_SEQ_SPLIT_122(x) (x) BOOST_PP_SEQ_SPLIT_121
+# define BOOST_PP_SEQ_SPLIT_123(x) (x) BOOST_PP_SEQ_SPLIT_122
+# define BOOST_PP_SEQ_SPLIT_124(x) (x) BOOST_PP_SEQ_SPLIT_123
+# define BOOST_PP_SEQ_SPLIT_125(x) (x) BOOST_PP_SEQ_SPLIT_124
+# define BOOST_PP_SEQ_SPLIT_126(x) (x) BOOST_PP_SEQ_SPLIT_125
+# define BOOST_PP_SEQ_SPLIT_127(x) (x) BOOST_PP_SEQ_SPLIT_126
+# define BOOST_PP_SEQ_SPLIT_128(x) (x) BOOST_PP_SEQ_SPLIT_127
+# define BOOST_PP_SEQ_SPLIT_129(x) (x) BOOST_PP_SEQ_SPLIT_128
+# define BOOST_PP_SEQ_SPLIT_130(x) (x) BOOST_PP_SEQ_SPLIT_129
+# define BOOST_PP_SEQ_SPLIT_131(x) (x) BOOST_PP_SEQ_SPLIT_130
+# define BOOST_PP_SEQ_SPLIT_132(x) (x) BOOST_PP_SEQ_SPLIT_131
+# define BOOST_PP_SEQ_SPLIT_133(x) (x) BOOST_PP_SEQ_SPLIT_132
+# define BOOST_PP_SEQ_SPLIT_134(x) (x) BOOST_PP_SEQ_SPLIT_133
+# define BOOST_PP_SEQ_SPLIT_135(x) (x) BOOST_PP_SEQ_SPLIT_134
+# define BOOST_PP_SEQ_SPLIT_136(x) (x) BOOST_PP_SEQ_SPLIT_135
+# define BOOST_PP_SEQ_SPLIT_137(x) (x) BOOST_PP_SEQ_SPLIT_136
+# define BOOST_PP_SEQ_SPLIT_138(x) (x) BOOST_PP_SEQ_SPLIT_137
+# define BOOST_PP_SEQ_SPLIT_139(x) (x) BOOST_PP_SEQ_SPLIT_138
+# define BOOST_PP_SEQ_SPLIT_140(x) (x) BOOST_PP_SEQ_SPLIT_139
+# define BOOST_PP_SEQ_SPLIT_141(x) (x) BOOST_PP_SEQ_SPLIT_140
+# define BOOST_PP_SEQ_SPLIT_142(x) (x) BOOST_PP_SEQ_SPLIT_141
+# define BOOST_PP_SEQ_SPLIT_143(x) (x) BOOST_PP_SEQ_SPLIT_142
+# define BOOST_PP_SEQ_SPLIT_144(x) (x) BOOST_PP_SEQ_SPLIT_143
+# define BOOST_PP_SEQ_SPLIT_145(x) (x) BOOST_PP_SEQ_SPLIT_144
+# define BOOST_PP_SEQ_SPLIT_146(x) (x) BOOST_PP_SEQ_SPLIT_145
+# define BOOST_PP_SEQ_SPLIT_147(x) (x) BOOST_PP_SEQ_SPLIT_146
+# define BOOST_PP_SEQ_SPLIT_148(x) (x) BOOST_PP_SEQ_SPLIT_147
+# define BOOST_PP_SEQ_SPLIT_149(x) (x) BOOST_PP_SEQ_SPLIT_148
+# define BOOST_PP_SEQ_SPLIT_150(x) (x) BOOST_PP_SEQ_SPLIT_149
+# define BOOST_PP_SEQ_SPLIT_151(x) (x) BOOST_PP_SEQ_SPLIT_150
+# define BOOST_PP_SEQ_SPLIT_152(x) (x) BOOST_PP_SEQ_SPLIT_151
+# define BOOST_PP_SEQ_SPLIT_153(x) (x) BOOST_PP_SEQ_SPLIT_152
+# define BOOST_PP_SEQ_SPLIT_154(x) (x) BOOST_PP_SEQ_SPLIT_153
+# define BOOST_PP_SEQ_SPLIT_155(x) (x) BOOST_PP_SEQ_SPLIT_154
+# define BOOST_PP_SEQ_SPLIT_156(x) (x) BOOST_PP_SEQ_SPLIT_155
+# define BOOST_PP_SEQ_SPLIT_157(x) (x) BOOST_PP_SEQ_SPLIT_156
+# define BOOST_PP_SEQ_SPLIT_158(x) (x) BOOST_PP_SEQ_SPLIT_157
+# define BOOST_PP_SEQ_SPLIT_159(x) (x) BOOST_PP_SEQ_SPLIT_158
+# define BOOST_PP_SEQ_SPLIT_160(x) (x) BOOST_PP_SEQ_SPLIT_159
+# define BOOST_PP_SEQ_SPLIT_161(x) (x) BOOST_PP_SEQ_SPLIT_160
+# define BOOST_PP_SEQ_SPLIT_162(x) (x) BOOST_PP_SEQ_SPLIT_161
+# define BOOST_PP_SEQ_SPLIT_163(x) (x) BOOST_PP_SEQ_SPLIT_162
+# define BOOST_PP_SEQ_SPLIT_164(x) (x) BOOST_PP_SEQ_SPLIT_163
+# define BOOST_PP_SEQ_SPLIT_165(x) (x) BOOST_PP_SEQ_SPLIT_164
+# define BOOST_PP_SEQ_SPLIT_166(x) (x) BOOST_PP_SEQ_SPLIT_165
+# define BOOST_PP_SEQ_SPLIT_167(x) (x) BOOST_PP_SEQ_SPLIT_166
+# define BOOST_PP_SEQ_SPLIT_168(x) (x) BOOST_PP_SEQ_SPLIT_167
+# define BOOST_PP_SEQ_SPLIT_169(x) (x) BOOST_PP_SEQ_SPLIT_168
+# define BOOST_PP_SEQ_SPLIT_170(x) (x) BOOST_PP_SEQ_SPLIT_169
+# define BOOST_PP_SEQ_SPLIT_171(x) (x) BOOST_PP_SEQ_SPLIT_170
+# define BOOST_PP_SEQ_SPLIT_172(x) (x) BOOST_PP_SEQ_SPLIT_171
+# define BOOST_PP_SEQ_SPLIT_173(x) (x) BOOST_PP_SEQ_SPLIT_172
+# define BOOST_PP_SEQ_SPLIT_174(x) (x) BOOST_PP_SEQ_SPLIT_173
+# define BOOST_PP_SEQ_SPLIT_175(x) (x) BOOST_PP_SEQ_SPLIT_174
+# define BOOST_PP_SEQ_SPLIT_176(x) (x) BOOST_PP_SEQ_SPLIT_175
+# define BOOST_PP_SEQ_SPLIT_177(x) (x) BOOST_PP_SEQ_SPLIT_176
+# define BOOST_PP_SEQ_SPLIT_178(x) (x) BOOST_PP_SEQ_SPLIT_177
+# define BOOST_PP_SEQ_SPLIT_179(x) (x) BOOST_PP_SEQ_SPLIT_178
+# define BOOST_PP_SEQ_SPLIT_180(x) (x) BOOST_PP_SEQ_SPLIT_179
+# define BOOST_PP_SEQ_SPLIT_181(x) (x) BOOST_PP_SEQ_SPLIT_180
+# define BOOST_PP_SEQ_SPLIT_182(x) (x) BOOST_PP_SEQ_SPLIT_181
+# define BOOST_PP_SEQ_SPLIT_183(x) (x) BOOST_PP_SEQ_SPLIT_182
+# define BOOST_PP_SEQ_SPLIT_184(x) (x) BOOST_PP_SEQ_SPLIT_183
+# define BOOST_PP_SEQ_SPLIT_185(x) (x) BOOST_PP_SEQ_SPLIT_184
+# define BOOST_PP_SEQ_SPLIT_186(x) (x) BOOST_PP_SEQ_SPLIT_185
+# define BOOST_PP_SEQ_SPLIT_187(x) (x) BOOST_PP_SEQ_SPLIT_186
+# define BOOST_PP_SEQ_SPLIT_188(x) (x) BOOST_PP_SEQ_SPLIT_187
+# define BOOST_PP_SEQ_SPLIT_189(x) (x) BOOST_PP_SEQ_SPLIT_188
+# define BOOST_PP_SEQ_SPLIT_190(x) (x) BOOST_PP_SEQ_SPLIT_189
+# define BOOST_PP_SEQ_SPLIT_191(x) (x) BOOST_PP_SEQ_SPLIT_190
+# define BOOST_PP_SEQ_SPLIT_192(x) (x) BOOST_PP_SEQ_SPLIT_191
+# define BOOST_PP_SEQ_SPLIT_193(x) (x) BOOST_PP_SEQ_SPLIT_192
+# define BOOST_PP_SEQ_SPLIT_194(x) (x) BOOST_PP_SEQ_SPLIT_193
+# define BOOST_PP_SEQ_SPLIT_195(x) (x) BOOST_PP_SEQ_SPLIT_194
+# define BOOST_PP_SEQ_SPLIT_196(x) (x) BOOST_PP_SEQ_SPLIT_195
+# define BOOST_PP_SEQ_SPLIT_197(x) (x) BOOST_PP_SEQ_SPLIT_196
+# define BOOST_PP_SEQ_SPLIT_198(x) (x) BOOST_PP_SEQ_SPLIT_197
+# define BOOST_PP_SEQ_SPLIT_199(x) (x) BOOST_PP_SEQ_SPLIT_198
+# define BOOST_PP_SEQ_SPLIT_200(x) (x) BOOST_PP_SEQ_SPLIT_199
+# define BOOST_PP_SEQ_SPLIT_201(x) (x) BOOST_PP_SEQ_SPLIT_200
+# define BOOST_PP_SEQ_SPLIT_202(x) (x) BOOST_PP_SEQ_SPLIT_201
+# define BOOST_PP_SEQ_SPLIT_203(x) (x) BOOST_PP_SEQ_SPLIT_202
+# define BOOST_PP_SEQ_SPLIT_204(x) (x) BOOST_PP_SEQ_SPLIT_203
+# define BOOST_PP_SEQ_SPLIT_205(x) (x) BOOST_PP_SEQ_SPLIT_204
+# define BOOST_PP_SEQ_SPLIT_206(x) (x) BOOST_PP_SEQ_SPLIT_205
+# define BOOST_PP_SEQ_SPLIT_207(x) (x) BOOST_PP_SEQ_SPLIT_206
+# define BOOST_PP_SEQ_SPLIT_208(x) (x) BOOST_PP_SEQ_SPLIT_207
+# define BOOST_PP_SEQ_SPLIT_209(x) (x) BOOST_PP_SEQ_SPLIT_208
+# define BOOST_PP_SEQ_SPLIT_210(x) (x) BOOST_PP_SEQ_SPLIT_209
+# define BOOST_PP_SEQ_SPLIT_211(x) (x) BOOST_PP_SEQ_SPLIT_210
+# define BOOST_PP_SEQ_SPLIT_212(x) (x) BOOST_PP_SEQ_SPLIT_211
+# define BOOST_PP_SEQ_SPLIT_213(x) (x) BOOST_PP_SEQ_SPLIT_212
+# define BOOST_PP_SEQ_SPLIT_214(x) (x) BOOST_PP_SEQ_SPLIT_213
+# define BOOST_PP_SEQ_SPLIT_215(x) (x) BOOST_PP_SEQ_SPLIT_214
+# define BOOST_PP_SEQ_SPLIT_216(x) (x) BOOST_PP_SEQ_SPLIT_215
+# define BOOST_PP_SEQ_SPLIT_217(x) (x) BOOST_PP_SEQ_SPLIT_216
+# define BOOST_PP_SEQ_SPLIT_218(x) (x) BOOST_PP_SEQ_SPLIT_217
+# define BOOST_PP_SEQ_SPLIT_219(x) (x) BOOST_PP_SEQ_SPLIT_218
+# define BOOST_PP_SEQ_SPLIT_220(x) (x) BOOST_PP_SEQ_SPLIT_219
+# define BOOST_PP_SEQ_SPLIT_221(x) (x) BOOST_PP_SEQ_SPLIT_220
+# define BOOST_PP_SEQ_SPLIT_222(x) (x) BOOST_PP_SEQ_SPLIT_221
+# define BOOST_PP_SEQ_SPLIT_223(x) (x) BOOST_PP_SEQ_SPLIT_222
+# define BOOST_PP_SEQ_SPLIT_224(x) (x) BOOST_PP_SEQ_SPLIT_223
+# define BOOST_PP_SEQ_SPLIT_225(x) (x) BOOST_PP_SEQ_SPLIT_224
+# define BOOST_PP_SEQ_SPLIT_226(x) (x) BOOST_PP_SEQ_SPLIT_225
+# define BOOST_PP_SEQ_SPLIT_227(x) (x) BOOST_PP_SEQ_SPLIT_226
+# define BOOST_PP_SEQ_SPLIT_228(x) (x) BOOST_PP_SEQ_SPLIT_227
+# define BOOST_PP_SEQ_SPLIT_229(x) (x) BOOST_PP_SEQ_SPLIT_228
+# define BOOST_PP_SEQ_SPLIT_230(x) (x) BOOST_PP_SEQ_SPLIT_229
+# define BOOST_PP_SEQ_SPLIT_231(x) (x) BOOST_PP_SEQ_SPLIT_230
+# define BOOST_PP_SEQ_SPLIT_232(x) (x) BOOST_PP_SEQ_SPLIT_231
+# define BOOST_PP_SEQ_SPLIT_233(x) (x) BOOST_PP_SEQ_SPLIT_232
+# define BOOST_PP_SEQ_SPLIT_234(x) (x) BOOST_PP_SEQ_SPLIT_233
+# define BOOST_PP_SEQ_SPLIT_235(x) (x) BOOST_PP_SEQ_SPLIT_234
+# define BOOST_PP_SEQ_SPLIT_236(x) (x) BOOST_PP_SEQ_SPLIT_235
+# define BOOST_PP_SEQ_SPLIT_237(x) (x) BOOST_PP_SEQ_SPLIT_236
+# define BOOST_PP_SEQ_SPLIT_238(x) (x) BOOST_PP_SEQ_SPLIT_237
+# define BOOST_PP_SEQ_SPLIT_239(x) (x) BOOST_PP_SEQ_SPLIT_238
+# define BOOST_PP_SEQ_SPLIT_240(x) (x) BOOST_PP_SEQ_SPLIT_239
+# define BOOST_PP_SEQ_SPLIT_241(x) (x) BOOST_PP_SEQ_SPLIT_240
+# define BOOST_PP_SEQ_SPLIT_242(x) (x) BOOST_PP_SEQ_SPLIT_241
+# define BOOST_PP_SEQ_SPLIT_243(x) (x) BOOST_PP_SEQ_SPLIT_242
+# define BOOST_PP_SEQ_SPLIT_244(x) (x) BOOST_PP_SEQ_SPLIT_243
+# define BOOST_PP_SEQ_SPLIT_245(x) (x) BOOST_PP_SEQ_SPLIT_244
+# define BOOST_PP_SEQ_SPLIT_246(x) (x) BOOST_PP_SEQ_SPLIT_245
+# define BOOST_PP_SEQ_SPLIT_247(x) (x) BOOST_PP_SEQ_SPLIT_246
+# define BOOST_PP_SEQ_SPLIT_248(x) (x) BOOST_PP_SEQ_SPLIT_247
+# define BOOST_PP_SEQ_SPLIT_249(x) (x) BOOST_PP_SEQ_SPLIT_248
+# define BOOST_PP_SEQ_SPLIT_250(x) (x) BOOST_PP_SEQ_SPLIT_249
+# define BOOST_PP_SEQ_SPLIT_251(x) (x) BOOST_PP_SEQ_SPLIT_250
+# define BOOST_PP_SEQ_SPLIT_252(x) (x) BOOST_PP_SEQ_SPLIT_251
+# define BOOST_PP_SEQ_SPLIT_253(x) (x) BOOST_PP_SEQ_SPLIT_252
+# define BOOST_PP_SEQ_SPLIT_254(x) (x) BOOST_PP_SEQ_SPLIT_253
+# define BOOST_PP_SEQ_SPLIT_255(x) (x) BOOST_PP_SEQ_SPLIT_254
+# define BOOST_PP_SEQ_SPLIT_256(x) (x) BOOST_PP_SEQ_SPLIT_255
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/elem.hpp b/3rdParty/Boost/boost/preprocessor/seq/elem.hpp
new file mode 100644
index 0000000..9c7a4b2
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/elem.hpp
@@ -0,0 +1,304 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_ELEM_HPP
+# define BOOST_PREPROCESSOR_SEQ_ELEM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# /* BOOST_PP_SEQ_ELEM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_ELEM(i, seq) BOOST_PP_SEQ_ELEM_I(i, seq)
+# else
+# define BOOST_PP_SEQ_ELEM(i, seq) BOOST_PP_SEQ_ELEM_I((i, seq))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II((BOOST_PP_SEQ_ELEM_ ## i seq))
+# define BOOST_PP_SEQ_ELEM_II(res) BOOST_PP_SEQ_ELEM_IV(BOOST_PP_SEQ_ELEM_III res)
+# define BOOST_PP_SEQ_ELEM_III(x, _) x BOOST_PP_EMPTY()
+# define BOOST_PP_SEQ_ELEM_IV(x) x
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_ELEM_I(par) BOOST_PP_SEQ_ELEM_II ## par
+# define BOOST_PP_SEQ_ELEM_II(i, seq) BOOST_PP_SEQ_ELEM_III(BOOST_PP_SEQ_ELEM_ ## i ## seq)
+# define BOOST_PP_SEQ_ELEM_III(im) BOOST_PP_SEQ_ELEM_IV(im)
+# define BOOST_PP_SEQ_ELEM_IV(x, _) x
+# else
+# if defined(__IBMC__) || defined(__IBMCPP__)
+# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq))
+# else
+# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_SEQ_ELEM_ ## i seq)
+# endif
+# define BOOST_PP_SEQ_ELEM_II(im) BOOST_PP_SEQ_ELEM_III(im)
+# define BOOST_PP_SEQ_ELEM_III(x, _) x
+# endif
+#
+# define BOOST_PP_SEQ_ELEM_0(x) x, BOOST_PP_NIL
+# define BOOST_PP_SEQ_ELEM_1(_) BOOST_PP_SEQ_ELEM_0
+# define BOOST_PP_SEQ_ELEM_2(_) BOOST_PP_SEQ_ELEM_1
+# define BOOST_PP_SEQ_ELEM_3(_) BOOST_PP_SEQ_ELEM_2
+# define BOOST_PP_SEQ_ELEM_4(_) BOOST_PP_SEQ_ELEM_3
+# define BOOST_PP_SEQ_ELEM_5(_) BOOST_PP_SEQ_ELEM_4
+# define BOOST_PP_SEQ_ELEM_6(_) BOOST_PP_SEQ_ELEM_5
+# define BOOST_PP_SEQ_ELEM_7(_) BOOST_PP_SEQ_ELEM_6
+# define BOOST_PP_SEQ_ELEM_8(_) BOOST_PP_SEQ_ELEM_7
+# define BOOST_PP_SEQ_ELEM_9(_) BOOST_PP_SEQ_ELEM_8
+# define BOOST_PP_SEQ_ELEM_10(_) BOOST_PP_SEQ_ELEM_9
+# define BOOST_PP_SEQ_ELEM_11(_) BOOST_PP_SEQ_ELEM_10
+# define BOOST_PP_SEQ_ELEM_12(_) BOOST_PP_SEQ_ELEM_11
+# define BOOST_PP_SEQ_ELEM_13(_) BOOST_PP_SEQ_ELEM_12
+# define BOOST_PP_SEQ_ELEM_14(_) BOOST_PP_SEQ_ELEM_13
+# define BOOST_PP_SEQ_ELEM_15(_) BOOST_PP_SEQ_ELEM_14
+# define BOOST_PP_SEQ_ELEM_16(_) BOOST_PP_SEQ_ELEM_15
+# define BOOST_PP_SEQ_ELEM_17(_) BOOST_PP_SEQ_ELEM_16
+# define BOOST_PP_SEQ_ELEM_18(_) BOOST_PP_SEQ_ELEM_17
+# define BOOST_PP_SEQ_ELEM_19(_) BOOST_PP_SEQ_ELEM_18
+# define BOOST_PP_SEQ_ELEM_20(_) BOOST_PP_SEQ_ELEM_19
+# define BOOST_PP_SEQ_ELEM_21(_) BOOST_PP_SEQ_ELEM_20
+# define BOOST_PP_SEQ_ELEM_22(_) BOOST_PP_SEQ_ELEM_21
+# define BOOST_PP_SEQ_ELEM_23(_) BOOST_PP_SEQ_ELEM_22
+# define BOOST_PP_SEQ_ELEM_24(_) BOOST_PP_SEQ_ELEM_23
+# define BOOST_PP_SEQ_ELEM_25(_) BOOST_PP_SEQ_ELEM_24
+# define BOOST_PP_SEQ_ELEM_26(_) BOOST_PP_SEQ_ELEM_25
+# define BOOST_PP_SEQ_ELEM_27(_) BOOST_PP_SEQ_ELEM_26
+# define BOOST_PP_SEQ_ELEM_28(_) BOOST_PP_SEQ_ELEM_27
+# define BOOST_PP_SEQ_ELEM_29(_) BOOST_PP_SEQ_ELEM_28
+# define BOOST_PP_SEQ_ELEM_30(_) BOOST_PP_SEQ_ELEM_29
+# define BOOST_PP_SEQ_ELEM_31(_) BOOST_PP_SEQ_ELEM_30
+# define BOOST_PP_SEQ_ELEM_32(_) BOOST_PP_SEQ_ELEM_31
+# define BOOST_PP_SEQ_ELEM_33(_) BOOST_PP_SEQ_ELEM_32
+# define BOOST_PP_SEQ_ELEM_34(_) BOOST_PP_SEQ_ELEM_33
+# define BOOST_PP_SEQ_ELEM_35(_) BOOST_PP_SEQ_ELEM_34
+# define BOOST_PP_SEQ_ELEM_36(_) BOOST_PP_SEQ_ELEM_35
+# define BOOST_PP_SEQ_ELEM_37(_) BOOST_PP_SEQ_ELEM_36
+# define BOOST_PP_SEQ_ELEM_38(_) BOOST_PP_SEQ_ELEM_37
+# define BOOST_PP_SEQ_ELEM_39(_) BOOST_PP_SEQ_ELEM_38
+# define BOOST_PP_SEQ_ELEM_40(_) BOOST_PP_SEQ_ELEM_39
+# define BOOST_PP_SEQ_ELEM_41(_) BOOST_PP_SEQ_ELEM_40
+# define BOOST_PP_SEQ_ELEM_42(_) BOOST_PP_SEQ_ELEM_41
+# define BOOST_PP_SEQ_ELEM_43(_) BOOST_PP_SEQ_ELEM_42
+# define BOOST_PP_SEQ_ELEM_44(_) BOOST_PP_SEQ_ELEM_43
+# define BOOST_PP_SEQ_ELEM_45(_) BOOST_PP_SEQ_ELEM_44
+# define BOOST_PP_SEQ_ELEM_46(_) BOOST_PP_SEQ_ELEM_45
+# define BOOST_PP_SEQ_ELEM_47(_) BOOST_PP_SEQ_ELEM_46
+# define BOOST_PP_SEQ_ELEM_48(_) BOOST_PP_SEQ_ELEM_47
+# define BOOST_PP_SEQ_ELEM_49(_) BOOST_PP_SEQ_ELEM_48
+# define BOOST_PP_SEQ_ELEM_50(_) BOOST_PP_SEQ_ELEM_49
+# define BOOST_PP_SEQ_ELEM_51(_) BOOST_PP_SEQ_ELEM_50
+# define BOOST_PP_SEQ_ELEM_52(_) BOOST_PP_SEQ_ELEM_51
+# define BOOST_PP_SEQ_ELEM_53(_) BOOST_PP_SEQ_ELEM_52
+# define BOOST_PP_SEQ_ELEM_54(_) BOOST_PP_SEQ_ELEM_53
+# define BOOST_PP_SEQ_ELEM_55(_) BOOST_PP_SEQ_ELEM_54
+# define BOOST_PP_SEQ_ELEM_56(_) BOOST_PP_SEQ_ELEM_55
+# define BOOST_PP_SEQ_ELEM_57(_) BOOST_PP_SEQ_ELEM_56
+# define BOOST_PP_SEQ_ELEM_58(_) BOOST_PP_SEQ_ELEM_57
+# define BOOST_PP_SEQ_ELEM_59(_) BOOST_PP_SEQ_ELEM_58
+# define BOOST_PP_SEQ_ELEM_60(_) BOOST_PP_SEQ_ELEM_59
+# define BOOST_PP_SEQ_ELEM_61(_) BOOST_PP_SEQ_ELEM_60
+# define BOOST_PP_SEQ_ELEM_62(_) BOOST_PP_SEQ_ELEM_61
+# define BOOST_PP_SEQ_ELEM_63(_) BOOST_PP_SEQ_ELEM_62
+# define BOOST_PP_SEQ_ELEM_64(_) BOOST_PP_SEQ_ELEM_63
+# define BOOST_PP_SEQ_ELEM_65(_) BOOST_PP_SEQ_ELEM_64
+# define BOOST_PP_SEQ_ELEM_66(_) BOOST_PP_SEQ_ELEM_65
+# define BOOST_PP_SEQ_ELEM_67(_) BOOST_PP_SEQ_ELEM_66
+# define BOOST_PP_SEQ_ELEM_68(_) BOOST_PP_SEQ_ELEM_67
+# define BOOST_PP_SEQ_ELEM_69(_) BOOST_PP_SEQ_ELEM_68
+# define BOOST_PP_SEQ_ELEM_70(_) BOOST_PP_SEQ_ELEM_69
+# define BOOST_PP_SEQ_ELEM_71(_) BOOST_PP_SEQ_ELEM_70
+# define BOOST_PP_SEQ_ELEM_72(_) BOOST_PP_SEQ_ELEM_71
+# define BOOST_PP_SEQ_ELEM_73(_) BOOST_PP_SEQ_ELEM_72
+# define BOOST_PP_SEQ_ELEM_74(_) BOOST_PP_SEQ_ELEM_73
+# define BOOST_PP_SEQ_ELEM_75(_) BOOST_PP_SEQ_ELEM_74
+# define BOOST_PP_SEQ_ELEM_76(_) BOOST_PP_SEQ_ELEM_75
+# define BOOST_PP_SEQ_ELEM_77(_) BOOST_PP_SEQ_ELEM_76
+# define BOOST_PP_SEQ_ELEM_78(_) BOOST_PP_SEQ_ELEM_77
+# define BOOST_PP_SEQ_ELEM_79(_) BOOST_PP_SEQ_ELEM_78
+# define BOOST_PP_SEQ_ELEM_80(_) BOOST_PP_SEQ_ELEM_79
+# define BOOST_PP_SEQ_ELEM_81(_) BOOST_PP_SEQ_ELEM_80
+# define BOOST_PP_SEQ_ELEM_82(_) BOOST_PP_SEQ_ELEM_81
+# define BOOST_PP_SEQ_ELEM_83(_) BOOST_PP_SEQ_ELEM_82
+# define BOOST_PP_SEQ_ELEM_84(_) BOOST_PP_SEQ_ELEM_83
+# define BOOST_PP_SEQ_ELEM_85(_) BOOST_PP_SEQ_ELEM_84
+# define BOOST_PP_SEQ_ELEM_86(_) BOOST_PP_SEQ_ELEM_85
+# define BOOST_PP_SEQ_ELEM_87(_) BOOST_PP_SEQ_ELEM_86
+# define BOOST_PP_SEQ_ELEM_88(_) BOOST_PP_SEQ_ELEM_87
+# define BOOST_PP_SEQ_ELEM_89(_) BOOST_PP_SEQ_ELEM_88
+# define BOOST_PP_SEQ_ELEM_90(_) BOOST_PP_SEQ_ELEM_89
+# define BOOST_PP_SEQ_ELEM_91(_) BOOST_PP_SEQ_ELEM_90
+# define BOOST_PP_SEQ_ELEM_92(_) BOOST_PP_SEQ_ELEM_91
+# define BOOST_PP_SEQ_ELEM_93(_) BOOST_PP_SEQ_ELEM_92
+# define BOOST_PP_SEQ_ELEM_94(_) BOOST_PP_SEQ_ELEM_93
+# define BOOST_PP_SEQ_ELEM_95(_) BOOST_PP_SEQ_ELEM_94
+# define BOOST_PP_SEQ_ELEM_96(_) BOOST_PP_SEQ_ELEM_95
+# define BOOST_PP_SEQ_ELEM_97(_) BOOST_PP_SEQ_ELEM_96
+# define BOOST_PP_SEQ_ELEM_98(_) BOOST_PP_SEQ_ELEM_97
+# define BOOST_PP_SEQ_ELEM_99(_) BOOST_PP_SEQ_ELEM_98
+# define BOOST_PP_SEQ_ELEM_100(_) BOOST_PP_SEQ_ELEM_99
+# define BOOST_PP_SEQ_ELEM_101(_) BOOST_PP_SEQ_ELEM_100
+# define BOOST_PP_SEQ_ELEM_102(_) BOOST_PP_SEQ_ELEM_101
+# define BOOST_PP_SEQ_ELEM_103(_) BOOST_PP_SEQ_ELEM_102
+# define BOOST_PP_SEQ_ELEM_104(_) BOOST_PP_SEQ_ELEM_103
+# define BOOST_PP_SEQ_ELEM_105(_) BOOST_PP_SEQ_ELEM_104
+# define BOOST_PP_SEQ_ELEM_106(_) BOOST_PP_SEQ_ELEM_105
+# define BOOST_PP_SEQ_ELEM_107(_) BOOST_PP_SEQ_ELEM_106
+# define BOOST_PP_SEQ_ELEM_108(_) BOOST_PP_SEQ_ELEM_107
+# define BOOST_PP_SEQ_ELEM_109(_) BOOST_PP_SEQ_ELEM_108
+# define BOOST_PP_SEQ_ELEM_110(_) BOOST_PP_SEQ_ELEM_109
+# define BOOST_PP_SEQ_ELEM_111(_) BOOST_PP_SEQ_ELEM_110
+# define BOOST_PP_SEQ_ELEM_112(_) BOOST_PP_SEQ_ELEM_111
+# define BOOST_PP_SEQ_ELEM_113(_) BOOST_PP_SEQ_ELEM_112
+# define BOOST_PP_SEQ_ELEM_114(_) BOOST_PP_SEQ_ELEM_113
+# define BOOST_PP_SEQ_ELEM_115(_) BOOST_PP_SEQ_ELEM_114
+# define BOOST_PP_SEQ_ELEM_116(_) BOOST_PP_SEQ_ELEM_115
+# define BOOST_PP_SEQ_ELEM_117(_) BOOST_PP_SEQ_ELEM_116
+# define BOOST_PP_SEQ_ELEM_118(_) BOOST_PP_SEQ_ELEM_117
+# define BOOST_PP_SEQ_ELEM_119(_) BOOST_PP_SEQ_ELEM_118
+# define BOOST_PP_SEQ_ELEM_120(_) BOOST_PP_SEQ_ELEM_119
+# define BOOST_PP_SEQ_ELEM_121(_) BOOST_PP_SEQ_ELEM_120
+# define BOOST_PP_SEQ_ELEM_122(_) BOOST_PP_SEQ_ELEM_121
+# define BOOST_PP_SEQ_ELEM_123(_) BOOST_PP_SEQ_ELEM_122
+# define BOOST_PP_SEQ_ELEM_124(_) BOOST_PP_SEQ_ELEM_123
+# define BOOST_PP_SEQ_ELEM_125(_) BOOST_PP_SEQ_ELEM_124
+# define BOOST_PP_SEQ_ELEM_126(_) BOOST_PP_SEQ_ELEM_125
+# define BOOST_PP_SEQ_ELEM_127(_) BOOST_PP_SEQ_ELEM_126
+# define BOOST_PP_SEQ_ELEM_128(_) BOOST_PP_SEQ_ELEM_127
+# define BOOST_PP_SEQ_ELEM_129(_) BOOST_PP_SEQ_ELEM_128
+# define BOOST_PP_SEQ_ELEM_130(_) BOOST_PP_SEQ_ELEM_129
+# define BOOST_PP_SEQ_ELEM_131(_) BOOST_PP_SEQ_ELEM_130
+# define BOOST_PP_SEQ_ELEM_132(_) BOOST_PP_SEQ_ELEM_131
+# define BOOST_PP_SEQ_ELEM_133(_) BOOST_PP_SEQ_ELEM_132
+# define BOOST_PP_SEQ_ELEM_134(_) BOOST_PP_SEQ_ELEM_133
+# define BOOST_PP_SEQ_ELEM_135(_) BOOST_PP_SEQ_ELEM_134
+# define BOOST_PP_SEQ_ELEM_136(_) BOOST_PP_SEQ_ELEM_135
+# define BOOST_PP_SEQ_ELEM_137(_) BOOST_PP_SEQ_ELEM_136
+# define BOOST_PP_SEQ_ELEM_138(_) BOOST_PP_SEQ_ELEM_137
+# define BOOST_PP_SEQ_ELEM_139(_) BOOST_PP_SEQ_ELEM_138
+# define BOOST_PP_SEQ_ELEM_140(_) BOOST_PP_SEQ_ELEM_139
+# define BOOST_PP_SEQ_ELEM_141(_) BOOST_PP_SEQ_ELEM_140
+# define BOOST_PP_SEQ_ELEM_142(_) BOOST_PP_SEQ_ELEM_141
+# define BOOST_PP_SEQ_ELEM_143(_) BOOST_PP_SEQ_ELEM_142
+# define BOOST_PP_SEQ_ELEM_144(_) BOOST_PP_SEQ_ELEM_143
+# define BOOST_PP_SEQ_ELEM_145(_) BOOST_PP_SEQ_ELEM_144
+# define BOOST_PP_SEQ_ELEM_146(_) BOOST_PP_SEQ_ELEM_145
+# define BOOST_PP_SEQ_ELEM_147(_) BOOST_PP_SEQ_ELEM_146
+# define BOOST_PP_SEQ_ELEM_148(_) BOOST_PP_SEQ_ELEM_147
+# define BOOST_PP_SEQ_ELEM_149(_) BOOST_PP_SEQ_ELEM_148
+# define BOOST_PP_SEQ_ELEM_150(_) BOOST_PP_SEQ_ELEM_149
+# define BOOST_PP_SEQ_ELEM_151(_) BOOST_PP_SEQ_ELEM_150
+# define BOOST_PP_SEQ_ELEM_152(_) BOOST_PP_SEQ_ELEM_151
+# define BOOST_PP_SEQ_ELEM_153(_) BOOST_PP_SEQ_ELEM_152
+# define BOOST_PP_SEQ_ELEM_154(_) BOOST_PP_SEQ_ELEM_153
+# define BOOST_PP_SEQ_ELEM_155(_) BOOST_PP_SEQ_ELEM_154
+# define BOOST_PP_SEQ_ELEM_156(_) BOOST_PP_SEQ_ELEM_155
+# define BOOST_PP_SEQ_ELEM_157(_) BOOST_PP_SEQ_ELEM_156
+# define BOOST_PP_SEQ_ELEM_158(_) BOOST_PP_SEQ_ELEM_157
+# define BOOST_PP_SEQ_ELEM_159(_) BOOST_PP_SEQ_ELEM_158
+# define BOOST_PP_SEQ_ELEM_160(_) BOOST_PP_SEQ_ELEM_159
+# define BOOST_PP_SEQ_ELEM_161(_) BOOST_PP_SEQ_ELEM_160
+# define BOOST_PP_SEQ_ELEM_162(_) BOOST_PP_SEQ_ELEM_161
+# define BOOST_PP_SEQ_ELEM_163(_) BOOST_PP_SEQ_ELEM_162
+# define BOOST_PP_SEQ_ELEM_164(_) BOOST_PP_SEQ_ELEM_163
+# define BOOST_PP_SEQ_ELEM_165(_) BOOST_PP_SEQ_ELEM_164
+# define BOOST_PP_SEQ_ELEM_166(_) BOOST_PP_SEQ_ELEM_165
+# define BOOST_PP_SEQ_ELEM_167(_) BOOST_PP_SEQ_ELEM_166
+# define BOOST_PP_SEQ_ELEM_168(_) BOOST_PP_SEQ_ELEM_167
+# define BOOST_PP_SEQ_ELEM_169(_) BOOST_PP_SEQ_ELEM_168
+# define BOOST_PP_SEQ_ELEM_170(_) BOOST_PP_SEQ_ELEM_169
+# define BOOST_PP_SEQ_ELEM_171(_) BOOST_PP_SEQ_ELEM_170
+# define BOOST_PP_SEQ_ELEM_172(_) BOOST_PP_SEQ_ELEM_171
+# define BOOST_PP_SEQ_ELEM_173(_) BOOST_PP_SEQ_ELEM_172
+# define BOOST_PP_SEQ_ELEM_174(_) BOOST_PP_SEQ_ELEM_173
+# define BOOST_PP_SEQ_ELEM_175(_) BOOST_PP_SEQ_ELEM_174
+# define BOOST_PP_SEQ_ELEM_176(_) BOOST_PP_SEQ_ELEM_175
+# define BOOST_PP_SEQ_ELEM_177(_) BOOST_PP_SEQ_ELEM_176
+# define BOOST_PP_SEQ_ELEM_178(_) BOOST_PP_SEQ_ELEM_177
+# define BOOST_PP_SEQ_ELEM_179(_) BOOST_PP_SEQ_ELEM_178
+# define BOOST_PP_SEQ_ELEM_180(_) BOOST_PP_SEQ_ELEM_179
+# define BOOST_PP_SEQ_ELEM_181(_) BOOST_PP_SEQ_ELEM_180
+# define BOOST_PP_SEQ_ELEM_182(_) BOOST_PP_SEQ_ELEM_181
+# define BOOST_PP_SEQ_ELEM_183(_) BOOST_PP_SEQ_ELEM_182
+# define BOOST_PP_SEQ_ELEM_184(_) BOOST_PP_SEQ_ELEM_183
+# define BOOST_PP_SEQ_ELEM_185(_) BOOST_PP_SEQ_ELEM_184
+# define BOOST_PP_SEQ_ELEM_186(_) BOOST_PP_SEQ_ELEM_185
+# define BOOST_PP_SEQ_ELEM_187(_) BOOST_PP_SEQ_ELEM_186
+# define BOOST_PP_SEQ_ELEM_188(_) BOOST_PP_SEQ_ELEM_187
+# define BOOST_PP_SEQ_ELEM_189(_) BOOST_PP_SEQ_ELEM_188
+# define BOOST_PP_SEQ_ELEM_190(_) BOOST_PP_SEQ_ELEM_189
+# define BOOST_PP_SEQ_ELEM_191(_) BOOST_PP_SEQ_ELEM_190
+# define BOOST_PP_SEQ_ELEM_192(_) BOOST_PP_SEQ_ELEM_191
+# define BOOST_PP_SEQ_ELEM_193(_) BOOST_PP_SEQ_ELEM_192
+# define BOOST_PP_SEQ_ELEM_194(_) BOOST_PP_SEQ_ELEM_193
+# define BOOST_PP_SEQ_ELEM_195(_) BOOST_PP_SEQ_ELEM_194
+# define BOOST_PP_SEQ_ELEM_196(_) BOOST_PP_SEQ_ELEM_195
+# define BOOST_PP_SEQ_ELEM_197(_) BOOST_PP_SEQ_ELEM_196
+# define BOOST_PP_SEQ_ELEM_198(_) BOOST_PP_SEQ_ELEM_197
+# define BOOST_PP_SEQ_ELEM_199(_) BOOST_PP_SEQ_ELEM_198
+# define BOOST_PP_SEQ_ELEM_200(_) BOOST_PP_SEQ_ELEM_199
+# define BOOST_PP_SEQ_ELEM_201(_) BOOST_PP_SEQ_ELEM_200
+# define BOOST_PP_SEQ_ELEM_202(_) BOOST_PP_SEQ_ELEM_201
+# define BOOST_PP_SEQ_ELEM_203(_) BOOST_PP_SEQ_ELEM_202
+# define BOOST_PP_SEQ_ELEM_204(_) BOOST_PP_SEQ_ELEM_203
+# define BOOST_PP_SEQ_ELEM_205(_) BOOST_PP_SEQ_ELEM_204
+# define BOOST_PP_SEQ_ELEM_206(_) BOOST_PP_SEQ_ELEM_205
+# define BOOST_PP_SEQ_ELEM_207(_) BOOST_PP_SEQ_ELEM_206
+# define BOOST_PP_SEQ_ELEM_208(_) BOOST_PP_SEQ_ELEM_207
+# define BOOST_PP_SEQ_ELEM_209(_) BOOST_PP_SEQ_ELEM_208
+# define BOOST_PP_SEQ_ELEM_210(_) BOOST_PP_SEQ_ELEM_209
+# define BOOST_PP_SEQ_ELEM_211(_) BOOST_PP_SEQ_ELEM_210
+# define BOOST_PP_SEQ_ELEM_212(_) BOOST_PP_SEQ_ELEM_211
+# define BOOST_PP_SEQ_ELEM_213(_) BOOST_PP_SEQ_ELEM_212
+# define BOOST_PP_SEQ_ELEM_214(_) BOOST_PP_SEQ_ELEM_213
+# define BOOST_PP_SEQ_ELEM_215(_) BOOST_PP_SEQ_ELEM_214
+# define BOOST_PP_SEQ_ELEM_216(_) BOOST_PP_SEQ_ELEM_215
+# define BOOST_PP_SEQ_ELEM_217(_) BOOST_PP_SEQ_ELEM_216
+# define BOOST_PP_SEQ_ELEM_218(_) BOOST_PP_SEQ_ELEM_217
+# define BOOST_PP_SEQ_ELEM_219(_) BOOST_PP_SEQ_ELEM_218
+# define BOOST_PP_SEQ_ELEM_220(_) BOOST_PP_SEQ_ELEM_219
+# define BOOST_PP_SEQ_ELEM_221(_) BOOST_PP_SEQ_ELEM_220
+# define BOOST_PP_SEQ_ELEM_222(_) BOOST_PP_SEQ_ELEM_221
+# define BOOST_PP_SEQ_ELEM_223(_) BOOST_PP_SEQ_ELEM_222
+# define BOOST_PP_SEQ_ELEM_224(_) BOOST_PP_SEQ_ELEM_223
+# define BOOST_PP_SEQ_ELEM_225(_) BOOST_PP_SEQ_ELEM_224
+# define BOOST_PP_SEQ_ELEM_226(_) BOOST_PP_SEQ_ELEM_225
+# define BOOST_PP_SEQ_ELEM_227(_) BOOST_PP_SEQ_ELEM_226
+# define BOOST_PP_SEQ_ELEM_228(_) BOOST_PP_SEQ_ELEM_227
+# define BOOST_PP_SEQ_ELEM_229(_) BOOST_PP_SEQ_ELEM_228
+# define BOOST_PP_SEQ_ELEM_230(_) BOOST_PP_SEQ_ELEM_229
+# define BOOST_PP_SEQ_ELEM_231(_) BOOST_PP_SEQ_ELEM_230
+# define BOOST_PP_SEQ_ELEM_232(_) BOOST_PP_SEQ_ELEM_231
+# define BOOST_PP_SEQ_ELEM_233(_) BOOST_PP_SEQ_ELEM_232
+# define BOOST_PP_SEQ_ELEM_234(_) BOOST_PP_SEQ_ELEM_233
+# define BOOST_PP_SEQ_ELEM_235(_) BOOST_PP_SEQ_ELEM_234
+# define BOOST_PP_SEQ_ELEM_236(_) BOOST_PP_SEQ_ELEM_235
+# define BOOST_PP_SEQ_ELEM_237(_) BOOST_PP_SEQ_ELEM_236
+# define BOOST_PP_SEQ_ELEM_238(_) BOOST_PP_SEQ_ELEM_237
+# define BOOST_PP_SEQ_ELEM_239(_) BOOST_PP_SEQ_ELEM_238
+# define BOOST_PP_SEQ_ELEM_240(_) BOOST_PP_SEQ_ELEM_239
+# define BOOST_PP_SEQ_ELEM_241(_) BOOST_PP_SEQ_ELEM_240
+# define BOOST_PP_SEQ_ELEM_242(_) BOOST_PP_SEQ_ELEM_241
+# define BOOST_PP_SEQ_ELEM_243(_) BOOST_PP_SEQ_ELEM_242
+# define BOOST_PP_SEQ_ELEM_244(_) BOOST_PP_SEQ_ELEM_243
+# define BOOST_PP_SEQ_ELEM_245(_) BOOST_PP_SEQ_ELEM_244
+# define BOOST_PP_SEQ_ELEM_246(_) BOOST_PP_SEQ_ELEM_245
+# define BOOST_PP_SEQ_ELEM_247(_) BOOST_PP_SEQ_ELEM_246
+# define BOOST_PP_SEQ_ELEM_248(_) BOOST_PP_SEQ_ELEM_247
+# define BOOST_PP_SEQ_ELEM_249(_) BOOST_PP_SEQ_ELEM_248
+# define BOOST_PP_SEQ_ELEM_250(_) BOOST_PP_SEQ_ELEM_249
+# define BOOST_PP_SEQ_ELEM_251(_) BOOST_PP_SEQ_ELEM_250
+# define BOOST_PP_SEQ_ELEM_252(_) BOOST_PP_SEQ_ELEM_251
+# define BOOST_PP_SEQ_ELEM_253(_) BOOST_PP_SEQ_ELEM_252
+# define BOOST_PP_SEQ_ELEM_254(_) BOOST_PP_SEQ_ELEM_253
+# define BOOST_PP_SEQ_ELEM_255(_) BOOST_PP_SEQ_ELEM_254
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/enum.hpp b/3rdParty/Boost/boost/preprocessor/seq/enum.hpp
new file mode 100644
index 0000000..b63b242
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/enum.hpp
@@ -0,0 +1,288 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_ENUM_HPP
+# define BOOST_PREPROCESSOR_SEQ_ENUM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_ENUM */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(seq)
+# define BOOST_PP_SEQ_ENUM_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq)
+# define BOOST_PP_SEQ_ENUM_I(size, seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq
+# else
+# define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
+# endif
+#
+# define BOOST_PP_SEQ_ENUM_1(x) x
+# define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1
+# define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2
+# define BOOST_PP_SEQ_ENUM_4(x) x, BOOST_PP_SEQ_ENUM_3
+# define BOOST_PP_SEQ_ENUM_5(x) x, BOOST_PP_SEQ_ENUM_4
+# define BOOST_PP_SEQ_ENUM_6(x) x, BOOST_PP_SEQ_ENUM_5
+# define BOOST_PP_SEQ_ENUM_7(x) x, BOOST_PP_SEQ_ENUM_6
+# define BOOST_PP_SEQ_ENUM_8(x) x, BOOST_PP_SEQ_ENUM_7
+# define BOOST_PP_SEQ_ENUM_9(x) x, BOOST_PP_SEQ_ENUM_8
+# define BOOST_PP_SEQ_ENUM_10(x) x, BOOST_PP_SEQ_ENUM_9
+# define BOOST_PP_SEQ_ENUM_11(x) x, BOOST_PP_SEQ_ENUM_10
+# define BOOST_PP_SEQ_ENUM_12(x) x, BOOST_PP_SEQ_ENUM_11
+# define BOOST_PP_SEQ_ENUM_13(x) x, BOOST_PP_SEQ_ENUM_12
+# define BOOST_PP_SEQ_ENUM_14(x) x, BOOST_PP_SEQ_ENUM_13
+# define BOOST_PP_SEQ_ENUM_15(x) x, BOOST_PP_SEQ_ENUM_14
+# define BOOST_PP_SEQ_ENUM_16(x) x, BOOST_PP_SEQ_ENUM_15
+# define BOOST_PP_SEQ_ENUM_17(x) x, BOOST_PP_SEQ_ENUM_16
+# define BOOST_PP_SEQ_ENUM_18(x) x, BOOST_PP_SEQ_ENUM_17
+# define BOOST_PP_SEQ_ENUM_19(x) x, BOOST_PP_SEQ_ENUM_18
+# define BOOST_PP_SEQ_ENUM_20(x) x, BOOST_PP_SEQ_ENUM_19
+# define BOOST_PP_SEQ_ENUM_21(x) x, BOOST_PP_SEQ_ENUM_20
+# define BOOST_PP_SEQ_ENUM_22(x) x, BOOST_PP_SEQ_ENUM_21
+# define BOOST_PP_SEQ_ENUM_23(x) x, BOOST_PP_SEQ_ENUM_22
+# define BOOST_PP_SEQ_ENUM_24(x) x, BOOST_PP_SEQ_ENUM_23
+# define BOOST_PP_SEQ_ENUM_25(x) x, BOOST_PP_SEQ_ENUM_24
+# define BOOST_PP_SEQ_ENUM_26(x) x, BOOST_PP_SEQ_ENUM_25
+# define BOOST_PP_SEQ_ENUM_27(x) x, BOOST_PP_SEQ_ENUM_26
+# define BOOST_PP_SEQ_ENUM_28(x) x, BOOST_PP_SEQ_ENUM_27
+# define BOOST_PP_SEQ_ENUM_29(x) x, BOOST_PP_SEQ_ENUM_28
+# define BOOST_PP_SEQ_ENUM_30(x) x, BOOST_PP_SEQ_ENUM_29
+# define BOOST_PP_SEQ_ENUM_31(x) x, BOOST_PP_SEQ_ENUM_30
+# define BOOST_PP_SEQ_ENUM_32(x) x, BOOST_PP_SEQ_ENUM_31
+# define BOOST_PP_SEQ_ENUM_33(x) x, BOOST_PP_SEQ_ENUM_32
+# define BOOST_PP_SEQ_ENUM_34(x) x, BOOST_PP_SEQ_ENUM_33
+# define BOOST_PP_SEQ_ENUM_35(x) x, BOOST_PP_SEQ_ENUM_34
+# define BOOST_PP_SEQ_ENUM_36(x) x, BOOST_PP_SEQ_ENUM_35
+# define BOOST_PP_SEQ_ENUM_37(x) x, BOOST_PP_SEQ_ENUM_36
+# define BOOST_PP_SEQ_ENUM_38(x) x, BOOST_PP_SEQ_ENUM_37
+# define BOOST_PP_SEQ_ENUM_39(x) x, BOOST_PP_SEQ_ENUM_38
+# define BOOST_PP_SEQ_ENUM_40(x) x, BOOST_PP_SEQ_ENUM_39
+# define BOOST_PP_SEQ_ENUM_41(x) x, BOOST_PP_SEQ_ENUM_40
+# define BOOST_PP_SEQ_ENUM_42(x) x, BOOST_PP_SEQ_ENUM_41
+# define BOOST_PP_SEQ_ENUM_43(x) x, BOOST_PP_SEQ_ENUM_42
+# define BOOST_PP_SEQ_ENUM_44(x) x, BOOST_PP_SEQ_ENUM_43
+# define BOOST_PP_SEQ_ENUM_45(x) x, BOOST_PP_SEQ_ENUM_44
+# define BOOST_PP_SEQ_ENUM_46(x) x, BOOST_PP_SEQ_ENUM_45
+# define BOOST_PP_SEQ_ENUM_47(x) x, BOOST_PP_SEQ_ENUM_46
+# define BOOST_PP_SEQ_ENUM_48(x) x, BOOST_PP_SEQ_ENUM_47
+# define BOOST_PP_SEQ_ENUM_49(x) x, BOOST_PP_SEQ_ENUM_48
+# define BOOST_PP_SEQ_ENUM_50(x) x, BOOST_PP_SEQ_ENUM_49
+# define BOOST_PP_SEQ_ENUM_51(x) x, BOOST_PP_SEQ_ENUM_50
+# define BOOST_PP_SEQ_ENUM_52(x) x, BOOST_PP_SEQ_ENUM_51
+# define BOOST_PP_SEQ_ENUM_53(x) x, BOOST_PP_SEQ_ENUM_52
+# define BOOST_PP_SEQ_ENUM_54(x) x, BOOST_PP_SEQ_ENUM_53
+# define BOOST_PP_SEQ_ENUM_55(x) x, BOOST_PP_SEQ_ENUM_54
+# define BOOST_PP_SEQ_ENUM_56(x) x, BOOST_PP_SEQ_ENUM_55
+# define BOOST_PP_SEQ_ENUM_57(x) x, BOOST_PP_SEQ_ENUM_56
+# define BOOST_PP_SEQ_ENUM_58(x) x, BOOST_PP_SEQ_ENUM_57
+# define BOOST_PP_SEQ_ENUM_59(x) x, BOOST_PP_SEQ_ENUM_58
+# define BOOST_PP_SEQ_ENUM_60(x) x, BOOST_PP_SEQ_ENUM_59
+# define BOOST_PP_SEQ_ENUM_61(x) x, BOOST_PP_SEQ_ENUM_60
+# define BOOST_PP_SEQ_ENUM_62(x) x, BOOST_PP_SEQ_ENUM_61
+# define BOOST_PP_SEQ_ENUM_63(x) x, BOOST_PP_SEQ_ENUM_62
+# define BOOST_PP_SEQ_ENUM_64(x) x, BOOST_PP_SEQ_ENUM_63
+# define BOOST_PP_SEQ_ENUM_65(x) x, BOOST_PP_SEQ_ENUM_64
+# define BOOST_PP_SEQ_ENUM_66(x) x, BOOST_PP_SEQ_ENUM_65
+# define BOOST_PP_SEQ_ENUM_67(x) x, BOOST_PP_SEQ_ENUM_66
+# define BOOST_PP_SEQ_ENUM_68(x) x, BOOST_PP_SEQ_ENUM_67
+# define BOOST_PP_SEQ_ENUM_69(x) x, BOOST_PP_SEQ_ENUM_68
+# define BOOST_PP_SEQ_ENUM_70(x) x, BOOST_PP_SEQ_ENUM_69
+# define BOOST_PP_SEQ_ENUM_71(x) x, BOOST_PP_SEQ_ENUM_70
+# define BOOST_PP_SEQ_ENUM_72(x) x, BOOST_PP_SEQ_ENUM_71
+# define BOOST_PP_SEQ_ENUM_73(x) x, BOOST_PP_SEQ_ENUM_72
+# define BOOST_PP_SEQ_ENUM_74(x) x, BOOST_PP_SEQ_ENUM_73
+# define BOOST_PP_SEQ_ENUM_75(x) x, BOOST_PP_SEQ_ENUM_74
+# define BOOST_PP_SEQ_ENUM_76(x) x, BOOST_PP_SEQ_ENUM_75
+# define BOOST_PP_SEQ_ENUM_77(x) x, BOOST_PP_SEQ_ENUM_76
+# define BOOST_PP_SEQ_ENUM_78(x) x, BOOST_PP_SEQ_ENUM_77
+# define BOOST_PP_SEQ_ENUM_79(x) x, BOOST_PP_SEQ_ENUM_78
+# define BOOST_PP_SEQ_ENUM_80(x) x, BOOST_PP_SEQ_ENUM_79
+# define BOOST_PP_SEQ_ENUM_81(x) x, BOOST_PP_SEQ_ENUM_80
+# define BOOST_PP_SEQ_ENUM_82(x) x, BOOST_PP_SEQ_ENUM_81
+# define BOOST_PP_SEQ_ENUM_83(x) x, BOOST_PP_SEQ_ENUM_82
+# define BOOST_PP_SEQ_ENUM_84(x) x, BOOST_PP_SEQ_ENUM_83
+# define BOOST_PP_SEQ_ENUM_85(x) x, BOOST_PP_SEQ_ENUM_84
+# define BOOST_PP_SEQ_ENUM_86(x) x, BOOST_PP_SEQ_ENUM_85
+# define BOOST_PP_SEQ_ENUM_87(x) x, BOOST_PP_SEQ_ENUM_86
+# define BOOST_PP_SEQ_ENUM_88(x) x, BOOST_PP_SEQ_ENUM_87
+# define BOOST_PP_SEQ_ENUM_89(x) x, BOOST_PP_SEQ_ENUM_88
+# define BOOST_PP_SEQ_ENUM_90(x) x, BOOST_PP_SEQ_ENUM_89
+# define BOOST_PP_SEQ_ENUM_91(x) x, BOOST_PP_SEQ_ENUM_90
+# define BOOST_PP_SEQ_ENUM_92(x) x, BOOST_PP_SEQ_ENUM_91
+# define BOOST_PP_SEQ_ENUM_93(x) x, BOOST_PP_SEQ_ENUM_92
+# define BOOST_PP_SEQ_ENUM_94(x) x, BOOST_PP_SEQ_ENUM_93
+# define BOOST_PP_SEQ_ENUM_95(x) x, BOOST_PP_SEQ_ENUM_94
+# define BOOST_PP_SEQ_ENUM_96(x) x, BOOST_PP_SEQ_ENUM_95
+# define BOOST_PP_SEQ_ENUM_97(x) x, BOOST_PP_SEQ_ENUM_96
+# define BOOST_PP_SEQ_ENUM_98(x) x, BOOST_PP_SEQ_ENUM_97
+# define BOOST_PP_SEQ_ENUM_99(x) x, BOOST_PP_SEQ_ENUM_98
+# define BOOST_PP_SEQ_ENUM_100(x) x, BOOST_PP_SEQ_ENUM_99
+# define BOOST_PP_SEQ_ENUM_101(x) x, BOOST_PP_SEQ_ENUM_100
+# define BOOST_PP_SEQ_ENUM_102(x) x, BOOST_PP_SEQ_ENUM_101
+# define BOOST_PP_SEQ_ENUM_103(x) x, BOOST_PP_SEQ_ENUM_102
+# define BOOST_PP_SEQ_ENUM_104(x) x, BOOST_PP_SEQ_ENUM_103
+# define BOOST_PP_SEQ_ENUM_105(x) x, BOOST_PP_SEQ_ENUM_104
+# define BOOST_PP_SEQ_ENUM_106(x) x, BOOST_PP_SEQ_ENUM_105
+# define BOOST_PP_SEQ_ENUM_107(x) x, BOOST_PP_SEQ_ENUM_106
+# define BOOST_PP_SEQ_ENUM_108(x) x, BOOST_PP_SEQ_ENUM_107
+# define BOOST_PP_SEQ_ENUM_109(x) x, BOOST_PP_SEQ_ENUM_108
+# define BOOST_PP_SEQ_ENUM_110(x) x, BOOST_PP_SEQ_ENUM_109
+# define BOOST_PP_SEQ_ENUM_111(x) x, BOOST_PP_SEQ_ENUM_110
+# define BOOST_PP_SEQ_ENUM_112(x) x, BOOST_PP_SEQ_ENUM_111
+# define BOOST_PP_SEQ_ENUM_113(x) x, BOOST_PP_SEQ_ENUM_112
+# define BOOST_PP_SEQ_ENUM_114(x) x, BOOST_PP_SEQ_ENUM_113
+# define BOOST_PP_SEQ_ENUM_115(x) x, BOOST_PP_SEQ_ENUM_114
+# define BOOST_PP_SEQ_ENUM_116(x) x, BOOST_PP_SEQ_ENUM_115
+# define BOOST_PP_SEQ_ENUM_117(x) x, BOOST_PP_SEQ_ENUM_116
+# define BOOST_PP_SEQ_ENUM_118(x) x, BOOST_PP_SEQ_ENUM_117
+# define BOOST_PP_SEQ_ENUM_119(x) x, BOOST_PP_SEQ_ENUM_118
+# define BOOST_PP_SEQ_ENUM_120(x) x, BOOST_PP_SEQ_ENUM_119
+# define BOOST_PP_SEQ_ENUM_121(x) x, BOOST_PP_SEQ_ENUM_120
+# define BOOST_PP_SEQ_ENUM_122(x) x, BOOST_PP_SEQ_ENUM_121
+# define BOOST_PP_SEQ_ENUM_123(x) x, BOOST_PP_SEQ_ENUM_122
+# define BOOST_PP_SEQ_ENUM_124(x) x, BOOST_PP_SEQ_ENUM_123
+# define BOOST_PP_SEQ_ENUM_125(x) x, BOOST_PP_SEQ_ENUM_124
+# define BOOST_PP_SEQ_ENUM_126(x) x, BOOST_PP_SEQ_ENUM_125
+# define BOOST_PP_SEQ_ENUM_127(x) x, BOOST_PP_SEQ_ENUM_126
+# define BOOST_PP_SEQ_ENUM_128(x) x, BOOST_PP_SEQ_ENUM_127
+# define BOOST_PP_SEQ_ENUM_129(x) x, BOOST_PP_SEQ_ENUM_128
+# define BOOST_PP_SEQ_ENUM_130(x) x, BOOST_PP_SEQ_ENUM_129
+# define BOOST_PP_SEQ_ENUM_131(x) x, BOOST_PP_SEQ_ENUM_130
+# define BOOST_PP_SEQ_ENUM_132(x) x, BOOST_PP_SEQ_ENUM_131
+# define BOOST_PP_SEQ_ENUM_133(x) x, BOOST_PP_SEQ_ENUM_132
+# define BOOST_PP_SEQ_ENUM_134(x) x, BOOST_PP_SEQ_ENUM_133
+# define BOOST_PP_SEQ_ENUM_135(x) x, BOOST_PP_SEQ_ENUM_134
+# define BOOST_PP_SEQ_ENUM_136(x) x, BOOST_PP_SEQ_ENUM_135
+# define BOOST_PP_SEQ_ENUM_137(x) x, BOOST_PP_SEQ_ENUM_136
+# define BOOST_PP_SEQ_ENUM_138(x) x, BOOST_PP_SEQ_ENUM_137
+# define BOOST_PP_SEQ_ENUM_139(x) x, BOOST_PP_SEQ_ENUM_138
+# define BOOST_PP_SEQ_ENUM_140(x) x, BOOST_PP_SEQ_ENUM_139
+# define BOOST_PP_SEQ_ENUM_141(x) x, BOOST_PP_SEQ_ENUM_140
+# define BOOST_PP_SEQ_ENUM_142(x) x, BOOST_PP_SEQ_ENUM_141
+# define BOOST_PP_SEQ_ENUM_143(x) x, BOOST_PP_SEQ_ENUM_142
+# define BOOST_PP_SEQ_ENUM_144(x) x, BOOST_PP_SEQ_ENUM_143
+# define BOOST_PP_SEQ_ENUM_145(x) x, BOOST_PP_SEQ_ENUM_144
+# define BOOST_PP_SEQ_ENUM_146(x) x, BOOST_PP_SEQ_ENUM_145
+# define BOOST_PP_SEQ_ENUM_147(x) x, BOOST_PP_SEQ_ENUM_146
+# define BOOST_PP_SEQ_ENUM_148(x) x, BOOST_PP_SEQ_ENUM_147
+# define BOOST_PP_SEQ_ENUM_149(x) x, BOOST_PP_SEQ_ENUM_148
+# define BOOST_PP_SEQ_ENUM_150(x) x, BOOST_PP_SEQ_ENUM_149
+# define BOOST_PP_SEQ_ENUM_151(x) x, BOOST_PP_SEQ_ENUM_150
+# define BOOST_PP_SEQ_ENUM_152(x) x, BOOST_PP_SEQ_ENUM_151
+# define BOOST_PP_SEQ_ENUM_153(x) x, BOOST_PP_SEQ_ENUM_152
+# define BOOST_PP_SEQ_ENUM_154(x) x, BOOST_PP_SEQ_ENUM_153
+# define BOOST_PP_SEQ_ENUM_155(x) x, BOOST_PP_SEQ_ENUM_154
+# define BOOST_PP_SEQ_ENUM_156(x) x, BOOST_PP_SEQ_ENUM_155
+# define BOOST_PP_SEQ_ENUM_157(x) x, BOOST_PP_SEQ_ENUM_156
+# define BOOST_PP_SEQ_ENUM_158(x) x, BOOST_PP_SEQ_ENUM_157
+# define BOOST_PP_SEQ_ENUM_159(x) x, BOOST_PP_SEQ_ENUM_158
+# define BOOST_PP_SEQ_ENUM_160(x) x, BOOST_PP_SEQ_ENUM_159
+# define BOOST_PP_SEQ_ENUM_161(x) x, BOOST_PP_SEQ_ENUM_160
+# define BOOST_PP_SEQ_ENUM_162(x) x, BOOST_PP_SEQ_ENUM_161
+# define BOOST_PP_SEQ_ENUM_163(x) x, BOOST_PP_SEQ_ENUM_162
+# define BOOST_PP_SEQ_ENUM_164(x) x, BOOST_PP_SEQ_ENUM_163
+# define BOOST_PP_SEQ_ENUM_165(x) x, BOOST_PP_SEQ_ENUM_164
+# define BOOST_PP_SEQ_ENUM_166(x) x, BOOST_PP_SEQ_ENUM_165
+# define BOOST_PP_SEQ_ENUM_167(x) x, BOOST_PP_SEQ_ENUM_166
+# define BOOST_PP_SEQ_ENUM_168(x) x, BOOST_PP_SEQ_ENUM_167
+# define BOOST_PP_SEQ_ENUM_169(x) x, BOOST_PP_SEQ_ENUM_168
+# define BOOST_PP_SEQ_ENUM_170(x) x, BOOST_PP_SEQ_ENUM_169
+# define BOOST_PP_SEQ_ENUM_171(x) x, BOOST_PP_SEQ_ENUM_170
+# define BOOST_PP_SEQ_ENUM_172(x) x, BOOST_PP_SEQ_ENUM_171
+# define BOOST_PP_SEQ_ENUM_173(x) x, BOOST_PP_SEQ_ENUM_172
+# define BOOST_PP_SEQ_ENUM_174(x) x, BOOST_PP_SEQ_ENUM_173
+# define BOOST_PP_SEQ_ENUM_175(x) x, BOOST_PP_SEQ_ENUM_174
+# define BOOST_PP_SEQ_ENUM_176(x) x, BOOST_PP_SEQ_ENUM_175
+# define BOOST_PP_SEQ_ENUM_177(x) x, BOOST_PP_SEQ_ENUM_176
+# define BOOST_PP_SEQ_ENUM_178(x) x, BOOST_PP_SEQ_ENUM_177
+# define BOOST_PP_SEQ_ENUM_179(x) x, BOOST_PP_SEQ_ENUM_178
+# define BOOST_PP_SEQ_ENUM_180(x) x, BOOST_PP_SEQ_ENUM_179
+# define BOOST_PP_SEQ_ENUM_181(x) x, BOOST_PP_SEQ_ENUM_180
+# define BOOST_PP_SEQ_ENUM_182(x) x, BOOST_PP_SEQ_ENUM_181
+# define BOOST_PP_SEQ_ENUM_183(x) x, BOOST_PP_SEQ_ENUM_182
+# define BOOST_PP_SEQ_ENUM_184(x) x, BOOST_PP_SEQ_ENUM_183
+# define BOOST_PP_SEQ_ENUM_185(x) x, BOOST_PP_SEQ_ENUM_184
+# define BOOST_PP_SEQ_ENUM_186(x) x, BOOST_PP_SEQ_ENUM_185
+# define BOOST_PP_SEQ_ENUM_187(x) x, BOOST_PP_SEQ_ENUM_186
+# define BOOST_PP_SEQ_ENUM_188(x) x, BOOST_PP_SEQ_ENUM_187
+# define BOOST_PP_SEQ_ENUM_189(x) x, BOOST_PP_SEQ_ENUM_188
+# define BOOST_PP_SEQ_ENUM_190(x) x, BOOST_PP_SEQ_ENUM_189
+# define BOOST_PP_SEQ_ENUM_191(x) x, BOOST_PP_SEQ_ENUM_190
+# define BOOST_PP_SEQ_ENUM_192(x) x, BOOST_PP_SEQ_ENUM_191
+# define BOOST_PP_SEQ_ENUM_193(x) x, BOOST_PP_SEQ_ENUM_192
+# define BOOST_PP_SEQ_ENUM_194(x) x, BOOST_PP_SEQ_ENUM_193
+# define BOOST_PP_SEQ_ENUM_195(x) x, BOOST_PP_SEQ_ENUM_194
+# define BOOST_PP_SEQ_ENUM_196(x) x, BOOST_PP_SEQ_ENUM_195
+# define BOOST_PP_SEQ_ENUM_197(x) x, BOOST_PP_SEQ_ENUM_196
+# define BOOST_PP_SEQ_ENUM_198(x) x, BOOST_PP_SEQ_ENUM_197
+# define BOOST_PP_SEQ_ENUM_199(x) x, BOOST_PP_SEQ_ENUM_198
+# define BOOST_PP_SEQ_ENUM_200(x) x, BOOST_PP_SEQ_ENUM_199
+# define BOOST_PP_SEQ_ENUM_201(x) x, BOOST_PP_SEQ_ENUM_200
+# define BOOST_PP_SEQ_ENUM_202(x) x, BOOST_PP_SEQ_ENUM_201
+# define BOOST_PP_SEQ_ENUM_203(x) x, BOOST_PP_SEQ_ENUM_202
+# define BOOST_PP_SEQ_ENUM_204(x) x, BOOST_PP_SEQ_ENUM_203
+# define BOOST_PP_SEQ_ENUM_205(x) x, BOOST_PP_SEQ_ENUM_204
+# define BOOST_PP_SEQ_ENUM_206(x) x, BOOST_PP_SEQ_ENUM_205
+# define BOOST_PP_SEQ_ENUM_207(x) x, BOOST_PP_SEQ_ENUM_206
+# define BOOST_PP_SEQ_ENUM_208(x) x, BOOST_PP_SEQ_ENUM_207
+# define BOOST_PP_SEQ_ENUM_209(x) x, BOOST_PP_SEQ_ENUM_208
+# define BOOST_PP_SEQ_ENUM_210(x) x, BOOST_PP_SEQ_ENUM_209
+# define BOOST_PP_SEQ_ENUM_211(x) x, BOOST_PP_SEQ_ENUM_210
+# define BOOST_PP_SEQ_ENUM_212(x) x, BOOST_PP_SEQ_ENUM_211
+# define BOOST_PP_SEQ_ENUM_213(x) x, BOOST_PP_SEQ_ENUM_212
+# define BOOST_PP_SEQ_ENUM_214(x) x, BOOST_PP_SEQ_ENUM_213
+# define BOOST_PP_SEQ_ENUM_215(x) x, BOOST_PP_SEQ_ENUM_214
+# define BOOST_PP_SEQ_ENUM_216(x) x, BOOST_PP_SEQ_ENUM_215
+# define BOOST_PP_SEQ_ENUM_217(x) x, BOOST_PP_SEQ_ENUM_216
+# define BOOST_PP_SEQ_ENUM_218(x) x, BOOST_PP_SEQ_ENUM_217
+# define BOOST_PP_SEQ_ENUM_219(x) x, BOOST_PP_SEQ_ENUM_218
+# define BOOST_PP_SEQ_ENUM_220(x) x, BOOST_PP_SEQ_ENUM_219
+# define BOOST_PP_SEQ_ENUM_221(x) x, BOOST_PP_SEQ_ENUM_220
+# define BOOST_PP_SEQ_ENUM_222(x) x, BOOST_PP_SEQ_ENUM_221
+# define BOOST_PP_SEQ_ENUM_223(x) x, BOOST_PP_SEQ_ENUM_222
+# define BOOST_PP_SEQ_ENUM_224(x) x, BOOST_PP_SEQ_ENUM_223
+# define BOOST_PP_SEQ_ENUM_225(x) x, BOOST_PP_SEQ_ENUM_224
+# define BOOST_PP_SEQ_ENUM_226(x) x, BOOST_PP_SEQ_ENUM_225
+# define BOOST_PP_SEQ_ENUM_227(x) x, BOOST_PP_SEQ_ENUM_226
+# define BOOST_PP_SEQ_ENUM_228(x) x, BOOST_PP_SEQ_ENUM_227
+# define BOOST_PP_SEQ_ENUM_229(x) x, BOOST_PP_SEQ_ENUM_228
+# define BOOST_PP_SEQ_ENUM_230(x) x, BOOST_PP_SEQ_ENUM_229
+# define BOOST_PP_SEQ_ENUM_231(x) x, BOOST_PP_SEQ_ENUM_230
+# define BOOST_PP_SEQ_ENUM_232(x) x, BOOST_PP_SEQ_ENUM_231
+# define BOOST_PP_SEQ_ENUM_233(x) x, BOOST_PP_SEQ_ENUM_232
+# define BOOST_PP_SEQ_ENUM_234(x) x, BOOST_PP_SEQ_ENUM_233
+# define BOOST_PP_SEQ_ENUM_235(x) x, BOOST_PP_SEQ_ENUM_234
+# define BOOST_PP_SEQ_ENUM_236(x) x, BOOST_PP_SEQ_ENUM_235
+# define BOOST_PP_SEQ_ENUM_237(x) x, BOOST_PP_SEQ_ENUM_236
+# define BOOST_PP_SEQ_ENUM_238(x) x, BOOST_PP_SEQ_ENUM_237
+# define BOOST_PP_SEQ_ENUM_239(x) x, BOOST_PP_SEQ_ENUM_238
+# define BOOST_PP_SEQ_ENUM_240(x) x, BOOST_PP_SEQ_ENUM_239
+# define BOOST_PP_SEQ_ENUM_241(x) x, BOOST_PP_SEQ_ENUM_240
+# define BOOST_PP_SEQ_ENUM_242(x) x, BOOST_PP_SEQ_ENUM_241
+# define BOOST_PP_SEQ_ENUM_243(x) x, BOOST_PP_SEQ_ENUM_242
+# define BOOST_PP_SEQ_ENUM_244(x) x, BOOST_PP_SEQ_ENUM_243
+# define BOOST_PP_SEQ_ENUM_245(x) x, BOOST_PP_SEQ_ENUM_244
+# define BOOST_PP_SEQ_ENUM_246(x) x, BOOST_PP_SEQ_ENUM_245
+# define BOOST_PP_SEQ_ENUM_247(x) x, BOOST_PP_SEQ_ENUM_246
+# define BOOST_PP_SEQ_ENUM_248(x) x, BOOST_PP_SEQ_ENUM_247
+# define BOOST_PP_SEQ_ENUM_249(x) x, BOOST_PP_SEQ_ENUM_248
+# define BOOST_PP_SEQ_ENUM_250(x) x, BOOST_PP_SEQ_ENUM_249
+# define BOOST_PP_SEQ_ENUM_251(x) x, BOOST_PP_SEQ_ENUM_250
+# define BOOST_PP_SEQ_ENUM_252(x) x, BOOST_PP_SEQ_ENUM_251
+# define BOOST_PP_SEQ_ENUM_253(x) x, BOOST_PP_SEQ_ENUM_252
+# define BOOST_PP_SEQ_ENUM_254(x) x, BOOST_PP_SEQ_ENUM_253
+# define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254
+# define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/first_n.hpp b/3rdParty/Boost/boost/preprocessor/seq/first_n.hpp
new file mode 100644
index 0000000..c3c0716
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/first_n.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_FIRST_N_HPP
+# define BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/seq/detail/split.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SEQ_FIRST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
+# else
+# define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_SEQ_FIRST_N_I(n, seq)
+# define BOOST_PP_SEQ_FIRST_N_I(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/fold_left.hpp b/3rdParty/Boost/boost/preprocessor/seq/fold_left.hpp
new file mode 100644
index 0000000..ab051b6
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/fold_left.hpp
@@ -0,0 +1,1070 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_FOLD_LEFT */
+#
+# if 0
+# define BOOST_PP_SEQ_FOLD_LEFT(op, state, seq) ...
+# endif
+#
+# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
+# define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_SEQ_FOLD_LEFT_I_ ## n(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1))
+# define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
+# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_ERROR(0x0005)
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# else
+# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/for_each_i.hpp b/3rdParty/Boost/boost/preprocessor/seq/for_each_i.hpp
new file mode 100644
index 0000000..c8edf5a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/for_each_i.hpp
@@ -0,0 +1,61 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_FOR_EACH_I_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_FOR_EACH_I */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq)
+# define BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_P(r, x) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 2, x)))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I x
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I(BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i) (macro, data, BOOST_PP_SEQ_TAIL(seq), BOOST_PP_INC(i))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, BOOST_PP_TUPLE_REM_4 x)
+# define BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, im)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_M_I(r, macro, data, seq, i) macro(r, data, i, BOOST_PP_SEQ_HEAD(seq))
+#
+# /* BOOST_PP_SEQ_FOR_EACH_I_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq)
+# define BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/rest_n.hpp b/3rdParty/Boost/boost/preprocessor/seq/rest_n.hpp
new file mode 100644
index 0000000..7e589cc
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/rest_n.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_REST_N_HPP
+# define BOOST_PREPROCESSOR_SEQ_REST_N_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/seq/detail/split.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SEQ_REST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
+# else
+# define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_SEQ_REST_N_I(n, seq)
+# define BOOST_PP_SEQ_REST_N_I(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/seq.hpp b/3rdParty/Boost/boost/preprocessor/seq/seq.hpp
new file mode 100644
index 0000000..f5ca84c
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/seq.hpp
@@ -0,0 +1,44 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_SEQ_HPP
+# define BOOST_PREPROCESSOR_SEQ_SEQ_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+#
+# /* BOOST_PP_SEQ_HEAD */
+#
+# define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq)
+#
+# /* BOOST_PP_SEQ_TAIL */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_1((seq))
+# define BOOST_PP_SEQ_TAIL_1(par) BOOST_PP_SEQ_TAIL_2 ## par
+# define BOOST_PP_SEQ_TAIL_2(seq) BOOST_PP_SEQ_TAIL_I ## seq
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_ID(BOOST_PP_SEQ_TAIL_I seq)
+# define BOOST_PP_SEQ_TAIL_ID(id) id
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_D(seq)
+# define BOOST_PP_SEQ_TAIL_D(seq) BOOST_PP_SEQ_TAIL_I seq
+# else
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq
+# endif
+#
+# define BOOST_PP_SEQ_TAIL_I(x)
+#
+# /* BOOST_PP_SEQ_NIL */
+#
+# define BOOST_PP_SEQ_NIL(x) (x)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/size.hpp b/3rdParty/Boost/boost/preprocessor/seq/size.hpp
new file mode 100644
index 0000000..2f7b70e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/size.hpp
@@ -0,0 +1,548 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_SIZE_HPP
+# define BOOST_PREPROCESSOR_SEQ_SIZE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I((seq))
+# define BOOST_PP_SEQ_SIZE_I(par) BOOST_PP_SEQ_SIZE_II ## par
+# define BOOST_PP_SEQ_SIZE_II(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 ## seq)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() || BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I(seq)
+# define BOOST_PP_SEQ_SIZE_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
+# elif defined(__IBMC__) || defined(__IBMCPP__)
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq))
+# else
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
+# endif
+#
+# define BOOST_PP_SEQ_SIZE_0(_) BOOST_PP_SEQ_SIZE_1
+# define BOOST_PP_SEQ_SIZE_1(_) BOOST_PP_SEQ_SIZE_2
+# define BOOST_PP_SEQ_SIZE_2(_) BOOST_PP_SEQ_SIZE_3
+# define BOOST_PP_SEQ_SIZE_3(_) BOOST_PP_SEQ_SIZE_4
+# define BOOST_PP_SEQ_SIZE_4(_) BOOST_PP_SEQ_SIZE_5
+# define BOOST_PP_SEQ_SIZE_5(_) BOOST_PP_SEQ_SIZE_6
+# define BOOST_PP_SEQ_SIZE_6(_) BOOST_PP_SEQ_SIZE_7
+# define BOOST_PP_SEQ_SIZE_7(_) BOOST_PP_SEQ_SIZE_8
+# define BOOST_PP_SEQ_SIZE_8(_) BOOST_PP_SEQ_SIZE_9
+# define BOOST_PP_SEQ_SIZE_9(_) BOOST_PP_SEQ_SIZE_10
+# define BOOST_PP_SEQ_SIZE_10(_) BOOST_PP_SEQ_SIZE_11
+# define BOOST_PP_SEQ_SIZE_11(_) BOOST_PP_SEQ_SIZE_12
+# define BOOST_PP_SEQ_SIZE_12(_) BOOST_PP_SEQ_SIZE_13
+# define BOOST_PP_SEQ_SIZE_13(_) BOOST_PP_SEQ_SIZE_14
+# define BOOST_PP_SEQ_SIZE_14(_) BOOST_PP_SEQ_SIZE_15
+# define BOOST_PP_SEQ_SIZE_15(_) BOOST_PP_SEQ_SIZE_16
+# define BOOST_PP_SEQ_SIZE_16(_) BOOST_PP_SEQ_SIZE_17
+# define BOOST_PP_SEQ_SIZE_17(_) BOOST_PP_SEQ_SIZE_18
+# define BOOST_PP_SEQ_SIZE_18(_) BOOST_PP_SEQ_SIZE_19
+# define BOOST_PP_SEQ_SIZE_19(_) BOOST_PP_SEQ_SIZE_20
+# define BOOST_PP_SEQ_SIZE_20(_) BOOST_PP_SEQ_SIZE_21
+# define BOOST_PP_SEQ_SIZE_21(_) BOOST_PP_SEQ_SIZE_22
+# define BOOST_PP_SEQ_SIZE_22(_) BOOST_PP_SEQ_SIZE_23
+# define BOOST_PP_SEQ_SIZE_23(_) BOOST_PP_SEQ_SIZE_24
+# define BOOST_PP_SEQ_SIZE_24(_) BOOST_PP_SEQ_SIZE_25
+# define BOOST_PP_SEQ_SIZE_25(_) BOOST_PP_SEQ_SIZE_26
+# define BOOST_PP_SEQ_SIZE_26(_) BOOST_PP_SEQ_SIZE_27
+# define BOOST_PP_SEQ_SIZE_27(_) BOOST_PP_SEQ_SIZE_28
+# define BOOST_PP_SEQ_SIZE_28(_) BOOST_PP_SEQ_SIZE_29
+# define BOOST_PP_SEQ_SIZE_29(_) BOOST_PP_SEQ_SIZE_30
+# define BOOST_PP_SEQ_SIZE_30(_) BOOST_PP_SEQ_SIZE_31
+# define BOOST_PP_SEQ_SIZE_31(_) BOOST_PP_SEQ_SIZE_32
+# define BOOST_PP_SEQ_SIZE_32(_) BOOST_PP_SEQ_SIZE_33
+# define BOOST_PP_SEQ_SIZE_33(_) BOOST_PP_SEQ_SIZE_34
+# define BOOST_PP_SEQ_SIZE_34(_) BOOST_PP_SEQ_SIZE_35
+# define BOOST_PP_SEQ_SIZE_35(_) BOOST_PP_SEQ_SIZE_36
+# define BOOST_PP_SEQ_SIZE_36(_) BOOST_PP_SEQ_SIZE_37
+# define BOOST_PP_SEQ_SIZE_37(_) BOOST_PP_SEQ_SIZE_38
+# define BOOST_PP_SEQ_SIZE_38(_) BOOST_PP_SEQ_SIZE_39
+# define BOOST_PP_SEQ_SIZE_39(_) BOOST_PP_SEQ_SIZE_40
+# define BOOST_PP_SEQ_SIZE_40(_) BOOST_PP_SEQ_SIZE_41
+# define BOOST_PP_SEQ_SIZE_41(_) BOOST_PP_SEQ_SIZE_42
+# define BOOST_PP_SEQ_SIZE_42(_) BOOST_PP_SEQ_SIZE_43
+# define BOOST_PP_SEQ_SIZE_43(_) BOOST_PP_SEQ_SIZE_44
+# define BOOST_PP_SEQ_SIZE_44(_) BOOST_PP_SEQ_SIZE_45
+# define BOOST_PP_SEQ_SIZE_45(_) BOOST_PP_SEQ_SIZE_46
+# define BOOST_PP_SEQ_SIZE_46(_) BOOST_PP_SEQ_SIZE_47
+# define BOOST_PP_SEQ_SIZE_47(_) BOOST_PP_SEQ_SIZE_48
+# define BOOST_PP_SEQ_SIZE_48(_) BOOST_PP_SEQ_SIZE_49
+# define BOOST_PP_SEQ_SIZE_49(_) BOOST_PP_SEQ_SIZE_50
+# define BOOST_PP_SEQ_SIZE_50(_) BOOST_PP_SEQ_SIZE_51
+# define BOOST_PP_SEQ_SIZE_51(_) BOOST_PP_SEQ_SIZE_52
+# define BOOST_PP_SEQ_SIZE_52(_) BOOST_PP_SEQ_SIZE_53
+# define BOOST_PP_SEQ_SIZE_53(_) BOOST_PP_SEQ_SIZE_54
+# define BOOST_PP_SEQ_SIZE_54(_) BOOST_PP_SEQ_SIZE_55
+# define BOOST_PP_SEQ_SIZE_55(_) BOOST_PP_SEQ_SIZE_56
+# define BOOST_PP_SEQ_SIZE_56(_) BOOST_PP_SEQ_SIZE_57
+# define BOOST_PP_SEQ_SIZE_57(_) BOOST_PP_SEQ_SIZE_58
+# define BOOST_PP_SEQ_SIZE_58(_) BOOST_PP_SEQ_SIZE_59
+# define BOOST_PP_SEQ_SIZE_59(_) BOOST_PP_SEQ_SIZE_60
+# define BOOST_PP_SEQ_SIZE_60(_) BOOST_PP_SEQ_SIZE_61
+# define BOOST_PP_SEQ_SIZE_61(_) BOOST_PP_SEQ_SIZE_62
+# define BOOST_PP_SEQ_SIZE_62(_) BOOST_PP_SEQ_SIZE_63
+# define BOOST_PP_SEQ_SIZE_63(_) BOOST_PP_SEQ_SIZE_64
+# define BOOST_PP_SEQ_SIZE_64(_) BOOST_PP_SEQ_SIZE_65
+# define BOOST_PP_SEQ_SIZE_65(_) BOOST_PP_SEQ_SIZE_66
+# define BOOST_PP_SEQ_SIZE_66(_) BOOST_PP_SEQ_SIZE_67
+# define BOOST_PP_SEQ_SIZE_67(_) BOOST_PP_SEQ_SIZE_68
+# define BOOST_PP_SEQ_SIZE_68(_) BOOST_PP_SEQ_SIZE_69
+# define BOOST_PP_SEQ_SIZE_69(_) BOOST_PP_SEQ_SIZE_70
+# define BOOST_PP_SEQ_SIZE_70(_) BOOST_PP_SEQ_SIZE_71
+# define BOOST_PP_SEQ_SIZE_71(_) BOOST_PP_SEQ_SIZE_72
+# define BOOST_PP_SEQ_SIZE_72(_) BOOST_PP_SEQ_SIZE_73
+# define BOOST_PP_SEQ_SIZE_73(_) BOOST_PP_SEQ_SIZE_74
+# define BOOST_PP_SEQ_SIZE_74(_) BOOST_PP_SEQ_SIZE_75
+# define BOOST_PP_SEQ_SIZE_75(_) BOOST_PP_SEQ_SIZE_76
+# define BOOST_PP_SEQ_SIZE_76(_) BOOST_PP_SEQ_SIZE_77
+# define BOOST_PP_SEQ_SIZE_77(_) BOOST_PP_SEQ_SIZE_78
+# define BOOST_PP_SEQ_SIZE_78(_) BOOST_PP_SEQ_SIZE_79
+# define BOOST_PP_SEQ_SIZE_79(_) BOOST_PP_SEQ_SIZE_80
+# define BOOST_PP_SEQ_SIZE_80(_) BOOST_PP_SEQ_SIZE_81
+# define BOOST_PP_SEQ_SIZE_81(_) BOOST_PP_SEQ_SIZE_82
+# define BOOST_PP_SEQ_SIZE_82(_) BOOST_PP_SEQ_SIZE_83
+# define BOOST_PP_SEQ_SIZE_83(_) BOOST_PP_SEQ_SIZE_84
+# define BOOST_PP_SEQ_SIZE_84(_) BOOST_PP_SEQ_SIZE_85
+# define BOOST_PP_SEQ_SIZE_85(_) BOOST_PP_SEQ_SIZE_86
+# define BOOST_PP_SEQ_SIZE_86(_) BOOST_PP_SEQ_SIZE_87
+# define BOOST_PP_SEQ_SIZE_87(_) BOOST_PP_SEQ_SIZE_88
+# define BOOST_PP_SEQ_SIZE_88(_) BOOST_PP_SEQ_SIZE_89
+# define BOOST_PP_SEQ_SIZE_89(_) BOOST_PP_SEQ_SIZE_90
+# define BOOST_PP_SEQ_SIZE_90(_) BOOST_PP_SEQ_SIZE_91
+# define BOOST_PP_SEQ_SIZE_91(_) BOOST_PP_SEQ_SIZE_92
+# define BOOST_PP_SEQ_SIZE_92(_) BOOST_PP_SEQ_SIZE_93
+# define BOOST_PP_SEQ_SIZE_93(_) BOOST_PP_SEQ_SIZE_94
+# define BOOST_PP_SEQ_SIZE_94(_) BOOST_PP_SEQ_SIZE_95
+# define BOOST_PP_SEQ_SIZE_95(_) BOOST_PP_SEQ_SIZE_96
+# define BOOST_PP_SEQ_SIZE_96(_) BOOST_PP_SEQ_SIZE_97
+# define BOOST_PP_SEQ_SIZE_97(_) BOOST_PP_SEQ_SIZE_98
+# define BOOST_PP_SEQ_SIZE_98(_) BOOST_PP_SEQ_SIZE_99
+# define BOOST_PP_SEQ_SIZE_99(_) BOOST_PP_SEQ_SIZE_100
+# define BOOST_PP_SEQ_SIZE_100(_) BOOST_PP_SEQ_SIZE_101
+# define BOOST_PP_SEQ_SIZE_101(_) BOOST_PP_SEQ_SIZE_102
+# define BOOST_PP_SEQ_SIZE_102(_) BOOST_PP_SEQ_SIZE_103
+# define BOOST_PP_SEQ_SIZE_103(_) BOOST_PP_SEQ_SIZE_104
+# define BOOST_PP_SEQ_SIZE_104(_) BOOST_PP_SEQ_SIZE_105
+# define BOOST_PP_SEQ_SIZE_105(_) BOOST_PP_SEQ_SIZE_106
+# define BOOST_PP_SEQ_SIZE_106(_) BOOST_PP_SEQ_SIZE_107
+# define BOOST_PP_SEQ_SIZE_107(_) BOOST_PP_SEQ_SIZE_108
+# define BOOST_PP_SEQ_SIZE_108(_) BOOST_PP_SEQ_SIZE_109
+# define BOOST_PP_SEQ_SIZE_109(_) BOOST_PP_SEQ_SIZE_110
+# define BOOST_PP_SEQ_SIZE_110(_) BOOST_PP_SEQ_SIZE_111
+# define BOOST_PP_SEQ_SIZE_111(_) BOOST_PP_SEQ_SIZE_112
+# define BOOST_PP_SEQ_SIZE_112(_) BOOST_PP_SEQ_SIZE_113
+# define BOOST_PP_SEQ_SIZE_113(_) BOOST_PP_SEQ_SIZE_114
+# define BOOST_PP_SEQ_SIZE_114(_) BOOST_PP_SEQ_SIZE_115
+# define BOOST_PP_SEQ_SIZE_115(_) BOOST_PP_SEQ_SIZE_116
+# define BOOST_PP_SEQ_SIZE_116(_) BOOST_PP_SEQ_SIZE_117
+# define BOOST_PP_SEQ_SIZE_117(_) BOOST_PP_SEQ_SIZE_118
+# define BOOST_PP_SEQ_SIZE_118(_) BOOST_PP_SEQ_SIZE_119
+# define BOOST_PP_SEQ_SIZE_119(_) BOOST_PP_SEQ_SIZE_120
+# define BOOST_PP_SEQ_SIZE_120(_) BOOST_PP_SEQ_SIZE_121
+# define BOOST_PP_SEQ_SIZE_121(_) BOOST_PP_SEQ_SIZE_122
+# define BOOST_PP_SEQ_SIZE_122(_) BOOST_PP_SEQ_SIZE_123
+# define BOOST_PP_SEQ_SIZE_123(_) BOOST_PP_SEQ_SIZE_124
+# define BOOST_PP_SEQ_SIZE_124(_) BOOST_PP_SEQ_SIZE_125
+# define BOOST_PP_SEQ_SIZE_125(_) BOOST_PP_SEQ_SIZE_126
+# define BOOST_PP_SEQ_SIZE_126(_) BOOST_PP_SEQ_SIZE_127
+# define BOOST_PP_SEQ_SIZE_127(_) BOOST_PP_SEQ_SIZE_128
+# define BOOST_PP_SEQ_SIZE_128(_) BOOST_PP_SEQ_SIZE_129
+# define BOOST_PP_SEQ_SIZE_129(_) BOOST_PP_SEQ_SIZE_130
+# define BOOST_PP_SEQ_SIZE_130(_) BOOST_PP_SEQ_SIZE_131
+# define BOOST_PP_SEQ_SIZE_131(_) BOOST_PP_SEQ_SIZE_132
+# define BOOST_PP_SEQ_SIZE_132(_) BOOST_PP_SEQ_SIZE_133
+# define BOOST_PP_SEQ_SIZE_133(_) BOOST_PP_SEQ_SIZE_134
+# define BOOST_PP_SEQ_SIZE_134(_) BOOST_PP_SEQ_SIZE_135
+# define BOOST_PP_SEQ_SIZE_135(_) BOOST_PP_SEQ_SIZE_136
+# define BOOST_PP_SEQ_SIZE_136(_) BOOST_PP_SEQ_SIZE_137
+# define BOOST_PP_SEQ_SIZE_137(_) BOOST_PP_SEQ_SIZE_138
+# define BOOST_PP_SEQ_SIZE_138(_) BOOST_PP_SEQ_SIZE_139
+# define BOOST_PP_SEQ_SIZE_139(_) BOOST_PP_SEQ_SIZE_140
+# define BOOST_PP_SEQ_SIZE_140(_) BOOST_PP_SEQ_SIZE_141
+# define BOOST_PP_SEQ_SIZE_141(_) BOOST_PP_SEQ_SIZE_142
+# define BOOST_PP_SEQ_SIZE_142(_) BOOST_PP_SEQ_SIZE_143
+# define BOOST_PP_SEQ_SIZE_143(_) BOOST_PP_SEQ_SIZE_144
+# define BOOST_PP_SEQ_SIZE_144(_) BOOST_PP_SEQ_SIZE_145
+# define BOOST_PP_SEQ_SIZE_145(_) BOOST_PP_SEQ_SIZE_146
+# define BOOST_PP_SEQ_SIZE_146(_) BOOST_PP_SEQ_SIZE_147
+# define BOOST_PP_SEQ_SIZE_147(_) BOOST_PP_SEQ_SIZE_148
+# define BOOST_PP_SEQ_SIZE_148(_) BOOST_PP_SEQ_SIZE_149
+# define BOOST_PP_SEQ_SIZE_149(_) BOOST_PP_SEQ_SIZE_150
+# define BOOST_PP_SEQ_SIZE_150(_) BOOST_PP_SEQ_SIZE_151
+# define BOOST_PP_SEQ_SIZE_151(_) BOOST_PP_SEQ_SIZE_152
+# define BOOST_PP_SEQ_SIZE_152(_) BOOST_PP_SEQ_SIZE_153
+# define BOOST_PP_SEQ_SIZE_153(_) BOOST_PP_SEQ_SIZE_154
+# define BOOST_PP_SEQ_SIZE_154(_) BOOST_PP_SEQ_SIZE_155
+# define BOOST_PP_SEQ_SIZE_155(_) BOOST_PP_SEQ_SIZE_156
+# define BOOST_PP_SEQ_SIZE_156(_) BOOST_PP_SEQ_SIZE_157
+# define BOOST_PP_SEQ_SIZE_157(_) BOOST_PP_SEQ_SIZE_158
+# define BOOST_PP_SEQ_SIZE_158(_) BOOST_PP_SEQ_SIZE_159
+# define BOOST_PP_SEQ_SIZE_159(_) BOOST_PP_SEQ_SIZE_160
+# define BOOST_PP_SEQ_SIZE_160(_) BOOST_PP_SEQ_SIZE_161
+# define BOOST_PP_SEQ_SIZE_161(_) BOOST_PP_SEQ_SIZE_162
+# define BOOST_PP_SEQ_SIZE_162(_) BOOST_PP_SEQ_SIZE_163
+# define BOOST_PP_SEQ_SIZE_163(_) BOOST_PP_SEQ_SIZE_164
+# define BOOST_PP_SEQ_SIZE_164(_) BOOST_PP_SEQ_SIZE_165
+# define BOOST_PP_SEQ_SIZE_165(_) BOOST_PP_SEQ_SIZE_166
+# define BOOST_PP_SEQ_SIZE_166(_) BOOST_PP_SEQ_SIZE_167
+# define BOOST_PP_SEQ_SIZE_167(_) BOOST_PP_SEQ_SIZE_168
+# define BOOST_PP_SEQ_SIZE_168(_) BOOST_PP_SEQ_SIZE_169
+# define BOOST_PP_SEQ_SIZE_169(_) BOOST_PP_SEQ_SIZE_170
+# define BOOST_PP_SEQ_SIZE_170(_) BOOST_PP_SEQ_SIZE_171
+# define BOOST_PP_SEQ_SIZE_171(_) BOOST_PP_SEQ_SIZE_172
+# define BOOST_PP_SEQ_SIZE_172(_) BOOST_PP_SEQ_SIZE_173
+# define BOOST_PP_SEQ_SIZE_173(_) BOOST_PP_SEQ_SIZE_174
+# define BOOST_PP_SEQ_SIZE_174(_) BOOST_PP_SEQ_SIZE_175
+# define BOOST_PP_SEQ_SIZE_175(_) BOOST_PP_SEQ_SIZE_176
+# define BOOST_PP_SEQ_SIZE_176(_) BOOST_PP_SEQ_SIZE_177
+# define BOOST_PP_SEQ_SIZE_177(_) BOOST_PP_SEQ_SIZE_178
+# define BOOST_PP_SEQ_SIZE_178(_) BOOST_PP_SEQ_SIZE_179
+# define BOOST_PP_SEQ_SIZE_179(_) BOOST_PP_SEQ_SIZE_180
+# define BOOST_PP_SEQ_SIZE_180(_) BOOST_PP_SEQ_SIZE_181
+# define BOOST_PP_SEQ_SIZE_181(_) BOOST_PP_SEQ_SIZE_182
+# define BOOST_PP_SEQ_SIZE_182(_) BOOST_PP_SEQ_SIZE_183
+# define BOOST_PP_SEQ_SIZE_183(_) BOOST_PP_SEQ_SIZE_184
+# define BOOST_PP_SEQ_SIZE_184(_) BOOST_PP_SEQ_SIZE_185
+# define BOOST_PP_SEQ_SIZE_185(_) BOOST_PP_SEQ_SIZE_186
+# define BOOST_PP_SEQ_SIZE_186(_) BOOST_PP_SEQ_SIZE_187
+# define BOOST_PP_SEQ_SIZE_187(_) BOOST_PP_SEQ_SIZE_188
+# define BOOST_PP_SEQ_SIZE_188(_) BOOST_PP_SEQ_SIZE_189
+# define BOOST_PP_SEQ_SIZE_189(_) BOOST_PP_SEQ_SIZE_190
+# define BOOST_PP_SEQ_SIZE_190(_) BOOST_PP_SEQ_SIZE_191
+# define BOOST_PP_SEQ_SIZE_191(_) BOOST_PP_SEQ_SIZE_192
+# define BOOST_PP_SEQ_SIZE_192(_) BOOST_PP_SEQ_SIZE_193
+# define BOOST_PP_SEQ_SIZE_193(_) BOOST_PP_SEQ_SIZE_194
+# define BOOST_PP_SEQ_SIZE_194(_) BOOST_PP_SEQ_SIZE_195
+# define BOOST_PP_SEQ_SIZE_195(_) BOOST_PP_SEQ_SIZE_196
+# define BOOST_PP_SEQ_SIZE_196(_) BOOST_PP_SEQ_SIZE_197
+# define BOOST_PP_SEQ_SIZE_197(_) BOOST_PP_SEQ_SIZE_198
+# define BOOST_PP_SEQ_SIZE_198(_) BOOST_PP_SEQ_SIZE_199
+# define BOOST_PP_SEQ_SIZE_199(_) BOOST_PP_SEQ_SIZE_200
+# define BOOST_PP_SEQ_SIZE_200(_) BOOST_PP_SEQ_SIZE_201
+# define BOOST_PP_SEQ_SIZE_201(_) BOOST_PP_SEQ_SIZE_202
+# define BOOST_PP_SEQ_SIZE_202(_) BOOST_PP_SEQ_SIZE_203
+# define BOOST_PP_SEQ_SIZE_203(_) BOOST_PP_SEQ_SIZE_204
+# define BOOST_PP_SEQ_SIZE_204(_) BOOST_PP_SEQ_SIZE_205
+# define BOOST_PP_SEQ_SIZE_205(_) BOOST_PP_SEQ_SIZE_206
+# define BOOST_PP_SEQ_SIZE_206(_) BOOST_PP_SEQ_SIZE_207
+# define BOOST_PP_SEQ_SIZE_207(_) BOOST_PP_SEQ_SIZE_208
+# define BOOST_PP_SEQ_SIZE_208(_) BOOST_PP_SEQ_SIZE_209
+# define BOOST_PP_SEQ_SIZE_209(_) BOOST_PP_SEQ_SIZE_210
+# define BOOST_PP_SEQ_SIZE_210(_) BOOST_PP_SEQ_SIZE_211
+# define BOOST_PP_SEQ_SIZE_211(_) BOOST_PP_SEQ_SIZE_212
+# define BOOST_PP_SEQ_SIZE_212(_) BOOST_PP_SEQ_SIZE_213
+# define BOOST_PP_SEQ_SIZE_213(_) BOOST_PP_SEQ_SIZE_214
+# define BOOST_PP_SEQ_SIZE_214(_) BOOST_PP_SEQ_SIZE_215
+# define BOOST_PP_SEQ_SIZE_215(_) BOOST_PP_SEQ_SIZE_216
+# define BOOST_PP_SEQ_SIZE_216(_) BOOST_PP_SEQ_SIZE_217
+# define BOOST_PP_SEQ_SIZE_217(_) BOOST_PP_SEQ_SIZE_218
+# define BOOST_PP_SEQ_SIZE_218(_) BOOST_PP_SEQ_SIZE_219
+# define BOOST_PP_SEQ_SIZE_219(_) BOOST_PP_SEQ_SIZE_220
+# define BOOST_PP_SEQ_SIZE_220(_) BOOST_PP_SEQ_SIZE_221
+# define BOOST_PP_SEQ_SIZE_221(_) BOOST_PP_SEQ_SIZE_222
+# define BOOST_PP_SEQ_SIZE_222(_) BOOST_PP_SEQ_SIZE_223
+# define BOOST_PP_SEQ_SIZE_223(_) BOOST_PP_SEQ_SIZE_224
+# define BOOST_PP_SEQ_SIZE_224(_) BOOST_PP_SEQ_SIZE_225
+# define BOOST_PP_SEQ_SIZE_225(_) BOOST_PP_SEQ_SIZE_226
+# define BOOST_PP_SEQ_SIZE_226(_) BOOST_PP_SEQ_SIZE_227
+# define BOOST_PP_SEQ_SIZE_227(_) BOOST_PP_SEQ_SIZE_228
+# define BOOST_PP_SEQ_SIZE_228(_) BOOST_PP_SEQ_SIZE_229
+# define BOOST_PP_SEQ_SIZE_229(_) BOOST_PP_SEQ_SIZE_230
+# define BOOST_PP_SEQ_SIZE_230(_) BOOST_PP_SEQ_SIZE_231
+# define BOOST_PP_SEQ_SIZE_231(_) BOOST_PP_SEQ_SIZE_232
+# define BOOST_PP_SEQ_SIZE_232(_) BOOST_PP_SEQ_SIZE_233
+# define BOOST_PP_SEQ_SIZE_233(_) BOOST_PP_SEQ_SIZE_234
+# define BOOST_PP_SEQ_SIZE_234(_) BOOST_PP_SEQ_SIZE_235
+# define BOOST_PP_SEQ_SIZE_235(_) BOOST_PP_SEQ_SIZE_236
+# define BOOST_PP_SEQ_SIZE_236(_) BOOST_PP_SEQ_SIZE_237
+# define BOOST_PP_SEQ_SIZE_237(_) BOOST_PP_SEQ_SIZE_238
+# define BOOST_PP_SEQ_SIZE_238(_) BOOST_PP_SEQ_SIZE_239
+# define BOOST_PP_SEQ_SIZE_239(_) BOOST_PP_SEQ_SIZE_240
+# define BOOST_PP_SEQ_SIZE_240(_) BOOST_PP_SEQ_SIZE_241
+# define BOOST_PP_SEQ_SIZE_241(_) BOOST_PP_SEQ_SIZE_242
+# define BOOST_PP_SEQ_SIZE_242(_) BOOST_PP_SEQ_SIZE_243
+# define BOOST_PP_SEQ_SIZE_243(_) BOOST_PP_SEQ_SIZE_244
+# define BOOST_PP_SEQ_SIZE_244(_) BOOST_PP_SEQ_SIZE_245
+# define BOOST_PP_SEQ_SIZE_245(_) BOOST_PP_SEQ_SIZE_246
+# define BOOST_PP_SEQ_SIZE_246(_) BOOST_PP_SEQ_SIZE_247
+# define BOOST_PP_SEQ_SIZE_247(_) BOOST_PP_SEQ_SIZE_248
+# define BOOST_PP_SEQ_SIZE_248(_) BOOST_PP_SEQ_SIZE_249
+# define BOOST_PP_SEQ_SIZE_249(_) BOOST_PP_SEQ_SIZE_250
+# define BOOST_PP_SEQ_SIZE_250(_) BOOST_PP_SEQ_SIZE_251
+# define BOOST_PP_SEQ_SIZE_251(_) BOOST_PP_SEQ_SIZE_252
+# define BOOST_PP_SEQ_SIZE_252(_) BOOST_PP_SEQ_SIZE_253
+# define BOOST_PP_SEQ_SIZE_253(_) BOOST_PP_SEQ_SIZE_254
+# define BOOST_PP_SEQ_SIZE_254(_) BOOST_PP_SEQ_SIZE_255
+# define BOOST_PP_SEQ_SIZE_255(_) BOOST_PP_SEQ_SIZE_256
+# define BOOST_PP_SEQ_SIZE_256(_) BOOST_PP_SEQ_SIZE_257
+#
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_0 0
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1 1
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_2 2
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_3 3
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 4
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_5 5
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_6 6
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_7 7
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_8 8
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_9 9
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_10 10
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_11 11
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_12 12
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_13 13
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_14 14
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_15 15
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_16 16
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_17 17
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_18 18
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_19 19
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_20 20
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_21 21
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_22 22
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_23 23
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_24 24
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_25 25
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_26 26
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_27 27
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_28 28
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_29 29
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_30 30
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_31 31
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_32 32
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_33 33
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_34 34
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_35 35
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_36 36
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_37 37
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_38 38
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_39 39
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_40 40
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_41 41
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_42 42
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_43 43
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_44 44
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_45 45
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_46 46
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_47 47
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_48 48
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_49 49
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_50 50
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_51 51
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_52 52
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_53 53
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_54 54
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_55 55
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_56 56
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_57 57
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_58 58
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_59 59
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_60 60
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_61 61
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_62 62
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_63 63
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_64 64
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_65 65
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_66 66
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_67 67
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_68 68
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_69 69
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_70 70
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_71 71
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_72 72
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_73 73
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_74 74
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_75 75
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_76 76
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_77 77
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_78 78
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_79 79
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_80 80
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_81 81
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_82 82
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_83 83
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_84 84
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_85 85
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_86 86
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_87 87
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_88 88
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_89 89
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_90 90
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_91 91
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_92 92
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_93 93
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_94 94
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_95 95
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_96 96
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_97 97
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_98 98
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_99 99
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_100 100
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_101 101
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_102 102
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_103 103
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_104 104
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_105 105
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_106 106
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_107 107
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_108 108
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_109 109
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_110 110
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_111 111
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_112 112
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_113 113
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_114 114
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_115 115
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_116 116
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_117 117
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_118 118
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_119 119
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_120 120
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_121 121
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_122 122
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_123 123
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_124 124
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_125 125
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_126 126
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_127 127
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_128 128
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_129 129
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_130 130
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_131 131
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_132 132
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_133 133
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_134 134
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_135 135
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_136 136
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_137 137
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_138 138
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_139 139
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_140 140
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_141 141
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_142 142
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_143 143
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_144 144
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_145 145
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_146 146
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_147 147
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_148 148
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_149 149
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_150 150
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_151 151
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_152 152
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_153 153
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_154 154
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_155 155
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_156 156
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_157 157
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_158 158
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_159 159
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_160 160
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_161 161
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_162 162
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_163 163
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_164 164
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_165 165
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_166 166
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_167 167
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_168 168
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_169 169
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_170 170
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_171 171
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_172 172
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_173 173
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_174 174
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_175 175
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_176 176
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_177 177
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_178 178
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_179 179
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_180 180
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_181 181
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_182 182
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_183 183
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_184 184
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_185 185
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_186 186
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_187 187
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_188 188
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_189 189
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_190 190
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_191 191
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_192 192
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_193 193
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_194 194
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_195 195
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_196 196
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_197 197
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_198 198
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_199 199
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_200 200
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_201 201
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_202 202
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_203 203
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_204 204
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_205 205
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_206 206
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_207 207
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_208 208
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_209 209
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_210 210
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_211 211
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_212 212
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_213 213
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_214 214
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_215 215
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_216 216
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_217 217
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_218 218
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_219 219
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_220 220
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_221 221
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_222 222
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_223 223
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_224 224
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_225 225
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_226 226
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_227 227
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_228 228
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_229 229
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_230 230
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_231 231
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_232 232
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_233 233
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_234 234
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_235 235
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_236 236
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_237 237
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_238 238
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_239 239
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_240 240
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_241 241
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_242 242
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_243 243
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_244 244
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_245 245
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_246 246
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_247 247
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_248 248
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_249 249
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_250 250
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_251 251
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_252 252
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_253 253
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_254 254
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_255 255
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_256 256
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/subseq.hpp b/3rdParty/Boost/boost/preprocessor/seq/subseq.hpp
new file mode 100644
index 0000000..fb242f1
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/subseq.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_SUBSEQ_HPP
+# define BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/rest_n.hpp>
+#
+# /* BOOST_PP_SEQ_SUBSEQ */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq))
+# else
+# define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_SUBSEQ_I(seq, i, len)
+# define BOOST_PP_SEQ_SUBSEQ_I(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/seq/transform.hpp b/3rdParty/Boost/boost/preprocessor/seq/transform.hpp
new file mode 100644
index 0000000..79d8108
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/seq/transform.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (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_SEQ_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_TRANSFORM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TRANSFORM_I(op, data, seq)
+# define BOOST_PP_SEQ_TRANSFORM_I(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_IM(s, BOOST_PP_TUPLE_REM_3 state, elem)
+# define BOOST_PP_SEQ_TRANSFORM_O_IM(s, im, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, im, elem)
+# else
+# define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, state), BOOST_PP_TUPLE_ELEM(3, 1, state), BOOST_PP_TUPLE_ELEM(3, 2, state), elem)
+# endif
+#
+# define BOOST_PP_SEQ_TRANSFORM_O_I(s, op, data, res, elem) (op, data, res (op(s, data, elem)))
+#
+# /* BOOST_PP_SEQ_TRANSFORM_S */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq)
+# define BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/counter.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/counter.hpp
new file mode 100644
index 0000000..a1c0df1
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/counter.hpp
@@ -0,0 +1,269 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the 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. */
+#
+# define BOOST_PP_VALUE BOOST_PP_COUNTER + 1
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_COUNTER
+#
+# undef BOOST_PP_COUNTER_DIGIT_1
+# undef BOOST_PP_COUNTER_DIGIT_2
+# undef BOOST_PP_COUNTER_DIGIT_3
+# undef BOOST_PP_COUNTER_DIGIT_4
+# undef BOOST_PP_COUNTER_DIGIT_5
+# undef BOOST_PP_COUNTER_DIGIT_6
+# undef BOOST_PP_COUNTER_DIGIT_7
+# undef BOOST_PP_COUNTER_DIGIT_8
+# undef BOOST_PP_COUNTER_DIGIT_9
+# undef BOOST_PP_COUNTER_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_COUNTER_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_COUNTER_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_COUNTER_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_COUNTER_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_COUNTER_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_COUNTER_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_COUNTER_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_COUNTER_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_COUNTER_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_COUNTER_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_COUNTER_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_COUNTER_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_COUNTER_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_COUNTER_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_COUNTER_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_COUNTER_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_COUNTER_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_COUNTER_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_COUNTER_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_COUNTER_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_COUNTER_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_COUNTER_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_COUNTER_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_COUNTER_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_COUNTER_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_COUNTER_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_COUNTER_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_COUNTER_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_COUNTER_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_COUNTER_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_COUNTER_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_COUNTER_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_COUNTER_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_COUNTER_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_COUNTER_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_COUNTER_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_COUNTER_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_COUNTER_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_COUNTER_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_COUNTER_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_COUNTER_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_COUNTER_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_COUNTER_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_COUNTER_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_COUNTER_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_COUNTER_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_COUNTER_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_COUNTER_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_COUNTER_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_COUNTER_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_COUNTER_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_COUNTER_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_COUNTER_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_COUNTER_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_COUNTER_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_COUNTER_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_COUNTER_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_COUNTER_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_COUNTER_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_COUNTER_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_COUNTER_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_COUNTER_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_COUNTER_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_COUNTER_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_COUNTER_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_COUNTER_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_COUNTER_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_COUNTER_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_COUNTER_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_COUNTER_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_COUNTER_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_COUNTER_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_COUNTER_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_COUNTER_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_COUNTER_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_COUNTER_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_COUNTER_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_COUNTER_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_COUNTER_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_COUNTER_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_COUNTER_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_COUNTER_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_COUNTER_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_COUNTER_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_COUNTER_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_COUNTER_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_COUNTER_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_COUNTER_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_COUNTER_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_COUNTER_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_COUNTER_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_COUNTER_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_COUNTER_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_COUNTER_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_COUNTER_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_COUNTER_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_COUNTER_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_COUNTER_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_COUNTER_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_COUNTER_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_COUNTER_DIGIT_10
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_10(BOOST_PP_COUNTER_DIGIT_10, BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_9
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_9(BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_8
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_8(BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_7
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_7(BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_6
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_6(BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_5
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_5(BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_4
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_4(BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_3
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_3(BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_2
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_2(BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# else
+# define BOOST_PP_COUNTER BOOST_PP_COUNTER_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/def.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/def.hpp
new file mode 100644
index 0000000..885099e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/def.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (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_SLOT_DETAIL_DEF_HPP
+# define BOOST_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
+#
+# /* BOOST_PP_SLOT_OFFSET_x */
+#
+# define BOOST_PP_SLOT_OFFSET_10(x) (x) % 1000000000UL
+# define BOOST_PP_SLOT_OFFSET_9(x) BOOST_PP_SLOT_OFFSET_10(x) % 100000000UL
+# define BOOST_PP_SLOT_OFFSET_8(x) BOOST_PP_SLOT_OFFSET_9(x) % 10000000UL
+# define BOOST_PP_SLOT_OFFSET_7(x) BOOST_PP_SLOT_OFFSET_8(x) % 1000000UL
+# define BOOST_PP_SLOT_OFFSET_6(x) BOOST_PP_SLOT_OFFSET_7(x) % 100000UL
+# define BOOST_PP_SLOT_OFFSET_5(x) BOOST_PP_SLOT_OFFSET_6(x) % 10000UL
+# define BOOST_PP_SLOT_OFFSET_4(x) BOOST_PP_SLOT_OFFSET_5(x) % 1000UL
+# define BOOST_PP_SLOT_OFFSET_3(x) BOOST_PP_SLOT_OFFSET_4(x) % 100UL
+# define BOOST_PP_SLOT_OFFSET_2(x) BOOST_PP_SLOT_OFFSET_3(x) % 10UL
+#
+# /* BOOST_PP_SLOT_CC_x */
+#
+# define BOOST_PP_SLOT_CC_2(a, b) BOOST_PP_SLOT_CC_2_D(a, b)
+# define BOOST_PP_SLOT_CC_3(a, b, c) BOOST_PP_SLOT_CC_3_D(a, b, c)
+# define BOOST_PP_SLOT_CC_4(a, b, c, d) BOOST_PP_SLOT_CC_4_D(a, b, c, d)
+# define BOOST_PP_SLOT_CC_5(a, b, c, d, e) BOOST_PP_SLOT_CC_5_D(a, b, c, d, e)
+# define BOOST_PP_SLOT_CC_6(a, b, c, d, e, f) BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f)
+# define BOOST_PP_SLOT_CC_7(a, b, c, d, e, f, g) BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g)
+# define BOOST_PP_SLOT_CC_8(a, b, c, d, e, f, g, h) BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h)
+# define BOOST_PP_SLOT_CC_9(a, b, c, d, e, f, g, h, i) BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i)
+# define BOOST_PP_SLOT_CC_10(a, b, c, d, e, f, g, h, i, j) BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j)
+#
+# define BOOST_PP_SLOT_CC_2_D(a, b) a ## b
+# define BOOST_PP_SLOT_CC_3_D(a, b, c) a ## b ## c
+# define BOOST_PP_SLOT_CC_4_D(a, b, c, d) a ## b ## c ## d
+# define BOOST_PP_SLOT_CC_5_D(a, b, c, d, e) a ## b ## c ## d ## e
+# define BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f) a ## b ## c ## d ## e ## f
+# define BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g) a ## b ## c ## d ## e ## f ## g
+# define BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h) a ## b ## c ## d ## e ## f ## g ## h
+# define BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i) a ## b ## c ## d ## e ## f ## g ## h ## i
+# define BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j) a ## b ## c ## d ## e ## f ## g ## h ## i ## j
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/shared.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/shared.hpp
new file mode 100644
index 0000000..c97ac54
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/shared.hpp
@@ -0,0 +1,247 @@
+# /* **************************************************************************
+# * *
+# * (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_PP_VALUE
+# error BOOST_PP_ERROR: BOOST_PP_VALUE is not defined
+# endif
+#
+# undef BOOST_PP_SLOT_TEMP_1
+# undef BOOST_PP_SLOT_TEMP_2
+# undef BOOST_PP_SLOT_TEMP_3
+# undef BOOST_PP_SLOT_TEMP_4
+# undef BOOST_PP_SLOT_TEMP_5
+# undef BOOST_PP_SLOT_TEMP_6
+# undef BOOST_PP_SLOT_TEMP_7
+# undef BOOST_PP_SLOT_TEMP_8
+# undef BOOST_PP_SLOT_TEMP_9
+# undef BOOST_PP_SLOT_TEMP_10
+#
+# if (BOOST_PP_VALUE) / 1000000000UL == 0
+# define BOOST_PP_SLOT_TEMP_10 0
+# elif (BOOST_PP_VALUE) / 1000000000UL == 1
+# define BOOST_PP_SLOT_TEMP_10 1
+# elif (BOOST_PP_VALUE) / 1000000000UL == 2
+# define BOOST_PP_SLOT_TEMP_10 2
+# elif (BOOST_PP_VALUE) / 1000000000UL == 3
+# define BOOST_PP_SLOT_TEMP_10 3
+# elif (BOOST_PP_VALUE) / 1000000000UL == 4
+# define BOOST_PP_SLOT_TEMP_10 4
+# elif (BOOST_PP_VALUE) / 1000000000UL == 5
+# define BOOST_PP_SLOT_TEMP_10 5
+# elif (BOOST_PP_VALUE) / 1000000000UL == 6
+# define BOOST_PP_SLOT_TEMP_10 6
+# elif (BOOST_PP_VALUE) / 1000000000UL == 7
+# define BOOST_PP_SLOT_TEMP_10 7
+# elif (BOOST_PP_VALUE) / 1000000000UL == 8
+# define BOOST_PP_SLOT_TEMP_10 8
+# elif (BOOST_PP_VALUE) / 1000000000UL == 9
+# define BOOST_PP_SLOT_TEMP_10 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 0
+# define BOOST_PP_SLOT_TEMP_9 0
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 1
+# define BOOST_PP_SLOT_TEMP_9 1
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 2
+# define BOOST_PP_SLOT_TEMP_9 2
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 3
+# define BOOST_PP_SLOT_TEMP_9 3
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 4
+# define BOOST_PP_SLOT_TEMP_9 4
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 5
+# define BOOST_PP_SLOT_TEMP_9 5
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 6
+# define BOOST_PP_SLOT_TEMP_9 6
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 7
+# define BOOST_PP_SLOT_TEMP_9 7
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 8
+# define BOOST_PP_SLOT_TEMP_9 8
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 9
+# define BOOST_PP_SLOT_TEMP_9 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 0
+# define BOOST_PP_SLOT_TEMP_8 0
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 1
+# define BOOST_PP_SLOT_TEMP_8 1
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 2
+# define BOOST_PP_SLOT_TEMP_8 2
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 3
+# define BOOST_PP_SLOT_TEMP_8 3
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 4
+# define BOOST_PP_SLOT_TEMP_8 4
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 5
+# define BOOST_PP_SLOT_TEMP_8 5
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 6
+# define BOOST_PP_SLOT_TEMP_8 6
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 7
+# define BOOST_PP_SLOT_TEMP_8 7
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 8
+# define BOOST_PP_SLOT_TEMP_8 8
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 9
+# define BOOST_PP_SLOT_TEMP_8 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 0
+# define BOOST_PP_SLOT_TEMP_7 0
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 1
+# define BOOST_PP_SLOT_TEMP_7 1
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 2
+# define BOOST_PP_SLOT_TEMP_7 2
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 3
+# define BOOST_PP_SLOT_TEMP_7 3
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 4
+# define BOOST_PP_SLOT_TEMP_7 4
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 5
+# define BOOST_PP_SLOT_TEMP_7 5
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 6
+# define BOOST_PP_SLOT_TEMP_7 6
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 7
+# define BOOST_PP_SLOT_TEMP_7 7
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 8
+# define BOOST_PP_SLOT_TEMP_7 8
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 9
+# define BOOST_PP_SLOT_TEMP_7 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 0
+# define BOOST_PP_SLOT_TEMP_6 0
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 1
+# define BOOST_PP_SLOT_TEMP_6 1
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 2
+# define BOOST_PP_SLOT_TEMP_6 2
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 3
+# define BOOST_PP_SLOT_TEMP_6 3
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 4
+# define BOOST_PP_SLOT_TEMP_6 4
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 5
+# define BOOST_PP_SLOT_TEMP_6 5
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 6
+# define BOOST_PP_SLOT_TEMP_6 6
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 7
+# define BOOST_PP_SLOT_TEMP_6 7
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 8
+# define BOOST_PP_SLOT_TEMP_6 8
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 9
+# define BOOST_PP_SLOT_TEMP_6 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 0
+# define BOOST_PP_SLOT_TEMP_5 0
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 1
+# define BOOST_PP_SLOT_TEMP_5 1
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 2
+# define BOOST_PP_SLOT_TEMP_5 2
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 3
+# define BOOST_PP_SLOT_TEMP_5 3
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 4
+# define BOOST_PP_SLOT_TEMP_5 4
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 5
+# define BOOST_PP_SLOT_TEMP_5 5
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 6
+# define BOOST_PP_SLOT_TEMP_5 6
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 7
+# define BOOST_PP_SLOT_TEMP_5 7
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 8
+# define BOOST_PP_SLOT_TEMP_5 8
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 9
+# define BOOST_PP_SLOT_TEMP_5 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 0
+# define BOOST_PP_SLOT_TEMP_4 0
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 1
+# define BOOST_PP_SLOT_TEMP_4 1
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 2
+# define BOOST_PP_SLOT_TEMP_4 2
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 3
+# define BOOST_PP_SLOT_TEMP_4 3
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 4
+# define BOOST_PP_SLOT_TEMP_4 4
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 5
+# define BOOST_PP_SLOT_TEMP_4 5
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 6
+# define BOOST_PP_SLOT_TEMP_4 6
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 7
+# define BOOST_PP_SLOT_TEMP_4 7
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 8
+# define BOOST_PP_SLOT_TEMP_4 8
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 9
+# define BOOST_PP_SLOT_TEMP_4 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 0
+# define BOOST_PP_SLOT_TEMP_3 0
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 1
+# define BOOST_PP_SLOT_TEMP_3 1
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 2
+# define BOOST_PP_SLOT_TEMP_3 2
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 3
+# define BOOST_PP_SLOT_TEMP_3 3
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 4
+# define BOOST_PP_SLOT_TEMP_3 4
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 5
+# define BOOST_PP_SLOT_TEMP_3 5
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 6
+# define BOOST_PP_SLOT_TEMP_3 6
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 7
+# define BOOST_PP_SLOT_TEMP_3 7
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 8
+# define BOOST_PP_SLOT_TEMP_3 8
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 9
+# define BOOST_PP_SLOT_TEMP_3 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 0
+# define BOOST_PP_SLOT_TEMP_2 0
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 1
+# define BOOST_PP_SLOT_TEMP_2 1
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 2
+# define BOOST_PP_SLOT_TEMP_2 2
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 3
+# define BOOST_PP_SLOT_TEMP_2 3
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 4
+# define BOOST_PP_SLOT_TEMP_2 4
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 5
+# define BOOST_PP_SLOT_TEMP_2 5
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 6
+# define BOOST_PP_SLOT_TEMP_2 6
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 7
+# define BOOST_PP_SLOT_TEMP_2 7
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 8
+# define BOOST_PP_SLOT_TEMP_2 8
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 9
+# define BOOST_PP_SLOT_TEMP_2 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 0
+# define BOOST_PP_SLOT_TEMP_1 0
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 1
+# define BOOST_PP_SLOT_TEMP_1 1
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 2
+# define BOOST_PP_SLOT_TEMP_1 2
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 3
+# define BOOST_PP_SLOT_TEMP_1 3
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 4
+# define BOOST_PP_SLOT_TEMP_1 4
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 5
+# define BOOST_PP_SLOT_TEMP_1 5
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 6
+# define BOOST_PP_SLOT_TEMP_1 6
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 7
+# define BOOST_PP_SLOT_TEMP_1 7
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 8
+# define BOOST_PP_SLOT_TEMP_1 8
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 9
+# define BOOST_PP_SLOT_TEMP_1 9
+# endif
+#
+# undef BOOST_PP_VALUE
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/slot1.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/slot1.hpp
new file mode 100644
index 0000000..b22748e
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/slot1.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_1
+#
+# undef BOOST_PP_SLOT_1_DIGIT_1
+# undef BOOST_PP_SLOT_1_DIGIT_2
+# undef BOOST_PP_SLOT_1_DIGIT_3
+# undef BOOST_PP_SLOT_1_DIGIT_4
+# undef BOOST_PP_SLOT_1_DIGIT_5
+# undef BOOST_PP_SLOT_1_DIGIT_6
+# undef BOOST_PP_SLOT_1_DIGIT_7
+# undef BOOST_PP_SLOT_1_DIGIT_8
+# undef BOOST_PP_SLOT_1_DIGIT_9
+# undef BOOST_PP_SLOT_1_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_1_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_1_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_1_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_1_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_1_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_1_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_1_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_1_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_1_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_1_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_1_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_1_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_1_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_1_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_1_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_1_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_1_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_1_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_1_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_1_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_1_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_1_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_1_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_1_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_1_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_1_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_1_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_1_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_1_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_1_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_1_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_1_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_1_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_1_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_1_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_1_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_1_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_1_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_1_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_1_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_1_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_1_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_1_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_1_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_1_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_1_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_1_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_1_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_1_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_1_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_1_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_1_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_1_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_1_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_1_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_1_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_1_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_1_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_1_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_1_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_1_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_1_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_1_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_1_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_1_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_1_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_1_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_1_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_1_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_1_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_1_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_1_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_1_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_1_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_1_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_1_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_1_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_1_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_1_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_1_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_1_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_1_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_1_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_1_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_1_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_1_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_1_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_1_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_1_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_1_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_1_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_1_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_1_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_1_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_1_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_1_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_1_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_1_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_1_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_1_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_1_DIGIT_10
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_1_DIGIT_10, BOOST_PP_SLOT_1_DIGIT_9, BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_9
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_1_DIGIT_9, BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_8
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_7
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_6
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_5
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_4
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_3
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_2
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_1_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/slot2.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/slot2.hpp
new file mode 100644
index 0000000..5d5258c
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/slot2.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_2
+#
+# undef BOOST_PP_SLOT_2_DIGIT_1
+# undef BOOST_PP_SLOT_2_DIGIT_2
+# undef BOOST_PP_SLOT_2_DIGIT_3
+# undef BOOST_PP_SLOT_2_DIGIT_4
+# undef BOOST_PP_SLOT_2_DIGIT_5
+# undef BOOST_PP_SLOT_2_DIGIT_6
+# undef BOOST_PP_SLOT_2_DIGIT_7
+# undef BOOST_PP_SLOT_2_DIGIT_8
+# undef BOOST_PP_SLOT_2_DIGIT_9
+# undef BOOST_PP_SLOT_2_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_2_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_2_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_2_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_2_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_2_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_2_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_2_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_2_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_2_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_2_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_2_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_2_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_2_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_2_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_2_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_2_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_2_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_2_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_2_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_2_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_2_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_2_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_2_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_2_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_2_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_2_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_2_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_2_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_2_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_2_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_2_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_2_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_2_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_2_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_2_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_2_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_2_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_2_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_2_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_2_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_2_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_2_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_2_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_2_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_2_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_2_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_2_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_2_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_2_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_2_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_2_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_2_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_2_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_2_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_2_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_2_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_2_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_2_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_2_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_2_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_2_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_2_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_2_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_2_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_2_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_2_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_2_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_2_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_2_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_2_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_2_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_2_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_2_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_2_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_2_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_2_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_2_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_2_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_2_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_2_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_2_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_2_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_2_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_2_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_2_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_2_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_2_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_2_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_2_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_2_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_2_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_2_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_2_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_2_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_2_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_2_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_2_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_2_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_2_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_2_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_2_DIGIT_10
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_2_DIGIT_10, BOOST_PP_SLOT_2_DIGIT_9, BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_9
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_2_DIGIT_9, BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_8
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_7
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_6
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_5
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_4
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_3
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_2
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_2_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/slot3.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/slot3.hpp
new file mode 100644
index 0000000..005cf21
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/slot3.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_3
+#
+# undef BOOST_PP_SLOT_3_DIGIT_1
+# undef BOOST_PP_SLOT_3_DIGIT_2
+# undef BOOST_PP_SLOT_3_DIGIT_3
+# undef BOOST_PP_SLOT_3_DIGIT_4
+# undef BOOST_PP_SLOT_3_DIGIT_5
+# undef BOOST_PP_SLOT_3_DIGIT_6
+# undef BOOST_PP_SLOT_3_DIGIT_7
+# undef BOOST_PP_SLOT_3_DIGIT_8
+# undef BOOST_PP_SLOT_3_DIGIT_9
+# undef BOOST_PP_SLOT_3_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_3_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_3_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_3_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_3_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_3_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_3_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_3_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_3_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_3_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_3_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_3_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_3_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_3_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_3_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_3_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_3_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_3_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_3_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_3_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_3_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_3_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_3_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_3_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_3_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_3_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_3_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_3_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_3_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_3_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_3_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_3_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_3_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_3_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_3_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_3_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_3_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_3_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_3_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_3_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_3_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_3_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_3_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_3_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_3_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_3_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_3_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_3_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_3_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_3_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_3_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_3_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_3_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_3_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_3_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_3_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_3_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_3_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_3_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_3_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_3_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_3_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_3_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_3_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_3_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_3_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_3_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_3_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_3_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_3_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_3_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_3_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_3_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_3_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_3_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_3_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_3_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_3_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_3_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_3_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_3_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_3_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_3_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_3_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_3_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_3_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_3_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_3_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_3_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_3_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_3_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_3_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_3_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_3_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_3_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_3_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_3_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_3_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_3_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_3_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_3_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_3_DIGIT_10
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_3_DIGIT_10, BOOST_PP_SLOT_3_DIGIT_9, BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_9
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_3_DIGIT_9, BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_8
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_7
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_6
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_5
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_4
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_3
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_2
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_3_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/slot4.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/slot4.hpp
new file mode 100644
index 0000000..9aa4d8a
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/slot4.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_4
+#
+# undef BOOST_PP_SLOT_4_DIGIT_1
+# undef BOOST_PP_SLOT_4_DIGIT_2
+# undef BOOST_PP_SLOT_4_DIGIT_3
+# undef BOOST_PP_SLOT_4_DIGIT_4
+# undef BOOST_PP_SLOT_4_DIGIT_5
+# undef BOOST_PP_SLOT_4_DIGIT_6
+# undef BOOST_PP_SLOT_4_DIGIT_7
+# undef BOOST_PP_SLOT_4_DIGIT_8
+# undef BOOST_PP_SLOT_4_DIGIT_9
+# undef BOOST_PP_SLOT_4_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_4_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_4_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_4_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_4_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_4_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_4_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_4_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_4_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_4_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_4_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_4_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_4_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_4_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_4_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_4_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_4_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_4_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_4_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_4_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_4_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_4_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_4_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_4_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_4_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_4_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_4_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_4_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_4_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_4_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_4_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_4_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_4_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_4_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_4_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_4_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_4_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_4_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_4_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_4_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_4_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_4_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_4_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_4_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_4_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_4_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_4_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_4_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_4_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_4_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_4_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_4_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_4_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_4_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_4_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_4_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_4_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_4_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_4_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_4_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_4_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_4_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_4_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_4_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_4_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_4_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_4_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_4_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_4_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_4_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_4_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_4_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_4_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_4_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_4_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_4_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_4_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_4_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_4_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_4_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_4_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_4_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_4_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_4_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_4_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_4_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_4_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_4_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_4_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_4_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_4_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_4_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_4_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_4_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_4_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_4_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_4_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_4_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_4_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_4_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_4_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_4_DIGIT_10
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_4_DIGIT_10, BOOST_PP_SLOT_4_DIGIT_9, BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_9
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_4_DIGIT_9, BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_8
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_7
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_6
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_5
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_4
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_3
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_2
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_4_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/detail/slot5.hpp b/3rdParty/Boost/boost/preprocessor/slot/detail/slot5.hpp
new file mode 100644
index 0000000..d17535d
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/detail/slot5.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (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. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_5
+#
+# undef BOOST_PP_SLOT_5_DIGIT_1
+# undef BOOST_PP_SLOT_5_DIGIT_2
+# undef BOOST_PP_SLOT_5_DIGIT_3
+# undef BOOST_PP_SLOT_5_DIGIT_4
+# undef BOOST_PP_SLOT_5_DIGIT_5
+# undef BOOST_PP_SLOT_5_DIGIT_6
+# undef BOOST_PP_SLOT_5_DIGIT_7
+# undef BOOST_PP_SLOT_5_DIGIT_8
+# undef BOOST_PP_SLOT_5_DIGIT_9
+# undef BOOST_PP_SLOT_5_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_5_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_5_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_5_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_5_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_5_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_5_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_5_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_5_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_5_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_5_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_5_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_5_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_5_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_5_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_5_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_5_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_5_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_5_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_5_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_5_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_5_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_5_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_5_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_5_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_5_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_5_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_5_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_5_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_5_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_5_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_5_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_5_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_5_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_5_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_5_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_5_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_5_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_5_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_5_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_5_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_5_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_5_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_5_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_5_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_5_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_5_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_5_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_5_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_5_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_5_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_5_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_5_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_5_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_5_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_5_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_5_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_5_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_5_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_5_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_5_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_5_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_5_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_5_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_5_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_5_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_5_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_5_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_5_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_5_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_5_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_5_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_5_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_5_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_5_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_5_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_5_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_5_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_5_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_5_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_5_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_5_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_5_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_5_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_5_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_5_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_5_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_5_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_5_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_5_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_5_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_5_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_5_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_5_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_5_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_5_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_5_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_5_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_5_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_5_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_5_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_5_DIGIT_10
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_5_DIGIT_10, BOOST_PP_SLOT_5_DIGIT_9, BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_9
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_5_DIGIT_9, BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_8
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_7
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_6
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_5
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_4
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_3
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_2
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_5_DIGIT_1
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/slot/slot.hpp b/3rdParty/Boost/boost/preprocessor/slot/slot.hpp
new file mode 100644
index 0000000..147b097
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/slot/slot.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (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_SLOT_SLOT_HPP
+# define BOOST_PREPROCESSOR_SLOT_SLOT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/slot/detail/def.hpp>
+#
+# /* BOOST_PP_ASSIGN_SLOT */
+#
+# define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i)
+#
+# define BOOST_PP_ASSIGN_SLOT_1 <boost/preprocessor/slot/detail/slot1.hpp>
+# define BOOST_PP_ASSIGN_SLOT_2 <boost/preprocessor/slot/detail/slot2.hpp>
+# define BOOST_PP_ASSIGN_SLOT_3 <boost/preprocessor/slot/detail/slot3.hpp>
+# define BOOST_PP_ASSIGN_SLOT_4 <boost/preprocessor/slot/detail/slot4.hpp>
+# define BOOST_PP_ASSIGN_SLOT_5 <boost/preprocessor/slot/detail/slot5.hpp>
+#
+# /* BOOST_PP_SLOT */
+#
+# define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)()
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/stringize.hpp b/3rdParty/Boost/boost/preprocessor/stringize.hpp
new file mode 100644
index 0000000..64dd5fd
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/stringize.hpp
@@ -0,0 +1,33 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_STRINGIZE_HPP
+# define BOOST_PREPROCESSOR_STRINGIZE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_STRINGIZE */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_A((text))
+# define BOOST_PP_STRINGIZE_A(arg) BOOST_PP_STRINGIZE_I arg
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_OO((text))
+# define BOOST_PP_STRINGIZE_OO(par) BOOST_PP_STRINGIZE_I ## par
+# else
+# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
+# endif
+#
+# define BOOST_PP_STRINGIZE_I(text) #text
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/tuple/eat.hpp b/3rdParty/Boost/boost/preprocessor/tuple/eat.hpp
new file mode 100644
index 0000000..82e8ffc
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/tuple/eat.hpp
@@ -0,0 +1,57 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_EAT_HPP
+# define BOOST_PREPROCESSOR_TUPLE_EAT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_EAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size)
+# else
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size))
+# define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par
+# endif
+#
+# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size
+#
+# define BOOST_PP_TUPLE_EAT_0()
+# define BOOST_PP_TUPLE_EAT_1(a)
+# define BOOST_PP_TUPLE_EAT_2(a, b)
+# define BOOST_PP_TUPLE_EAT_3(a, b, c)
+# define BOOST_PP_TUPLE_EAT_4(a, b, c, d)
+# define BOOST_PP_TUPLE_EAT_5(a, b, c, d, e)
+# define BOOST_PP_TUPLE_EAT_6(a, b, c, d, e, f)
+# define BOOST_PP_TUPLE_EAT_7(a, b, c, d, e, f, g)
+# define BOOST_PP_TUPLE_EAT_8(a, b, c, d, e, f, g, h)
+# define BOOST_PP_TUPLE_EAT_9(a, b, c, d, e, f, g, h, i)
+# define BOOST_PP_TUPLE_EAT_10(a, b, c, d, e, f, g, h, i, j)
+# define BOOST_PP_TUPLE_EAT_11(a, b, c, d, e, f, g, h, i, j, k)
+# define BOOST_PP_TUPLE_EAT_12(a, b, c, d, e, f, g, h, i, j, k, l)
+# define BOOST_PP_TUPLE_EAT_13(a, b, c, d, e, f, g, h, i, j, k, l, m)
+# define BOOST_PP_TUPLE_EAT_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n)
+# define BOOST_PP_TUPLE_EAT_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
+# define BOOST_PP_TUPLE_EAT_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)
+# define BOOST_PP_TUPLE_EAT_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q)
+# define BOOST_PP_TUPLE_EAT_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r)
+# define BOOST_PP_TUPLE_EAT_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s)
+# define BOOST_PP_TUPLE_EAT_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t)
+# define BOOST_PP_TUPLE_EAT_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u)
+# define BOOST_PP_TUPLE_EAT_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v)
+# define BOOST_PP_TUPLE_EAT_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w)
+# define BOOST_PP_TUPLE_EAT_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x)
+# define BOOST_PP_TUPLE_EAT_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y)
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/tuple/elem.hpp b/3rdParty/Boost/boost/preprocessor/tuple/elem.hpp
new file mode 100644
index 0000000..2e225ae
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/tuple/elem.hpp
@@ -0,0 +1,385 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_I(size, index, tuple)
+# else
+# define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_OO((size, index, tuple))
+# define BOOST_PP_TUPLE_ELEM_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i ## t
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_II(BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t)
+# define BOOST_PP_TUPLE_ELEM_II(res) res
+# else
+# define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t
+# endif
+#
+# define BOOST_PP_TUPLE_ELEM_1_0(a) a
+#
+# define BOOST_PP_TUPLE_ELEM_2_0(a, b) a
+# define BOOST_PP_TUPLE_ELEM_2_1(a, b) b
+#
+# define BOOST_PP_TUPLE_ELEM_3_0(a, b, c) a
+# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
+# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
+#
+# define BOOST_PP_TUPLE_ELEM_4_0(a, b, c, d) a
+# define BOOST_PP_TUPLE_ELEM_4_1(a, b, c, d) b
+# define BOOST_PP_TUPLE_ELEM_4_2(a, b, c, d) c
+# define BOOST_PP_TUPLE_ELEM_4_3(a, b, c, d) d
+#
+# define BOOST_PP_TUPLE_ELEM_5_0(a, b, c, d, e) a
+# define BOOST_PP_TUPLE_ELEM_5_1(a, b, c, d, e) b
+# define BOOST_PP_TUPLE_ELEM_5_2(a, b, c, d, e) c
+# define BOOST_PP_TUPLE_ELEM_5_3(a, b, c, d, e) d
+# define BOOST_PP_TUPLE_ELEM_5_4(a, b, c, d, e) e
+#
+# define BOOST_PP_TUPLE_ELEM_6_0(a, b, c, d, e, f) a
+# define BOOST_PP_TUPLE_ELEM_6_1(a, b, c, d, e, f) b
+# define BOOST_PP_TUPLE_ELEM_6_2(a, b, c, d, e, f) c
+# define BOOST_PP_TUPLE_ELEM_6_3(a, b, c, d, e, f) d
+# define BOOST_PP_TUPLE_ELEM_6_4(a, b, c, d, e, f) e
+# define BOOST_PP_TUPLE_ELEM_6_5(a, b, c, d, e, f) f
+#
+# define BOOST_PP_TUPLE_ELEM_7_0(a, b, c, d, e, f, g) a
+# define BOOST_PP_TUPLE_ELEM_7_1(a, b, c, d, e, f, g) b
+# define BOOST_PP_TUPLE_ELEM_7_2(a, b, c, d, e, f, g) c
+# define BOOST_PP_TUPLE_ELEM_7_3(a, b, c, d, e, f, g) d
+# define BOOST_PP_TUPLE_ELEM_7_4(a, b, c, d, e, f, g) e
+# define BOOST_PP_TUPLE_ELEM_7_5(a, b, c, d, e, f, g) f
+# define BOOST_PP_TUPLE_ELEM_7_6(a, b, c, d, e, f, g) g
+#
+# define BOOST_PP_TUPLE_ELEM_8_0(a, b, c, d, e, f, g, h) a
+# define BOOST_PP_TUPLE_ELEM_8_1(a, b, c, d, e, f, g, h) b
+# define BOOST_PP_TUPLE_ELEM_8_2(a, b, c, d, e, f, g, h) c
+# define BOOST_PP_TUPLE_ELEM_8_3(a, b, c, d, e, f, g, h) d
+# define BOOST_PP_TUPLE_ELEM_8_4(a, b, c, d, e, f, g, h) e
+# define BOOST_PP_TUPLE_ELEM_8_5(a, b, c, d, e, f, g, h) f
+# define BOOST_PP_TUPLE_ELEM_8_6(a, b, c, d, e, f, g, h) g
+# define BOOST_PP_TUPLE_ELEM_8_7(a, b, c, d, e, f, g, h) h
+#
+# define BOOST_PP_TUPLE_ELEM_9_0(a, b, c, d, e, f, g, h, i) a
+# define BOOST_PP_TUPLE_ELEM_9_1(a, b, c, d, e, f, g, h, i) b
+# define BOOST_PP_TUPLE_ELEM_9_2(a, b, c, d, e, f, g, h, i) c
+# define BOOST_PP_TUPLE_ELEM_9_3(a, b, c, d, e, f, g, h, i) d
+# define BOOST_PP_TUPLE_ELEM_9_4(a, b, c, d, e, f, g, h, i) e
+# define BOOST_PP_TUPLE_ELEM_9_5(a, b, c, d, e, f, g, h, i) f
+# define BOOST_PP_TUPLE_ELEM_9_6(a, b, c, d, e, f, g, h, i) g
+# define BOOST_PP_TUPLE_ELEM_9_7(a, b, c, d, e, f, g, h, i) h
+# define BOOST_PP_TUPLE_ELEM_9_8(a, b, c, d, e, f, g, h, i) i
+#
+# define BOOST_PP_TUPLE_ELEM_10_0(a, b, c, d, e, f, g, h, i, j) a
+# define BOOST_PP_TUPLE_ELEM_10_1(a, b, c, d, e, f, g, h, i, j) b
+# define BOOST_PP_TUPLE_ELEM_10_2(a, b, c, d, e, f, g, h, i, j) c
+# define BOOST_PP_TUPLE_ELEM_10_3(a, b, c, d, e, f, g, h, i, j) d
+# define BOOST_PP_TUPLE_ELEM_10_4(a, b, c, d, e, f, g, h, i, j) e
+# define BOOST_PP_TUPLE_ELEM_10_5(a, b, c, d, e, f, g, h, i, j) f
+# define BOOST_PP_TUPLE_ELEM_10_6(a, b, c, d, e, f, g, h, i, j) g
+# define BOOST_PP_TUPLE_ELEM_10_7(a, b, c, d, e, f, g, h, i, j) h
+# define BOOST_PP_TUPLE_ELEM_10_8(a, b, c, d, e, f, g, h, i, j) i
+# define BOOST_PP_TUPLE_ELEM_10_9(a, b, c, d, e, f, g, h, i, j) j
+#
+# define BOOST_PP_TUPLE_ELEM_11_0(a, b, c, d, e, f, g, h, i, j, k) a
+# define BOOST_PP_TUPLE_ELEM_11_1(a, b, c, d, e, f, g, h, i, j, k) b
+# define BOOST_PP_TUPLE_ELEM_11_2(a, b, c, d, e, f, g, h, i, j, k) c
+# define BOOST_PP_TUPLE_ELEM_11_3(a, b, c, d, e, f, g, h, i, j, k) d
+# define BOOST_PP_TUPLE_ELEM_11_4(a, b, c, d, e, f, g, h, i, j, k) e
+# define BOOST_PP_TUPLE_ELEM_11_5(a, b, c, d, e, f, g, h, i, j, k) f
+# define BOOST_PP_TUPLE_ELEM_11_6(a, b, c, d, e, f, g, h, i, j, k) g
+# define BOOST_PP_TUPLE_ELEM_11_7(a, b, c, d, e, f, g, h, i, j, k) h
+# define BOOST_PP_TUPLE_ELEM_11_8(a, b, c, d, e, f, g, h, i, j, k) i
+# define BOOST_PP_TUPLE_ELEM_11_9(a, b, c, d, e, f, g, h, i, j, k) j
+# define BOOST_PP_TUPLE_ELEM_11_10(a, b, c, d, e, f, g, h, i, j, k) k
+#
+# define BOOST_PP_TUPLE_ELEM_12_0(a, b, c, d, e, f, g, h, i, j, k, l) a
+# define BOOST_PP_TUPLE_ELEM_12_1(a, b, c, d, e, f, g, h, i, j, k, l) b
+# define BOOST_PP_TUPLE_ELEM_12_2(a, b, c, d, e, f, g, h, i, j, k, l) c
+# define BOOST_PP_TUPLE_ELEM_12_3(a, b, c, d, e, f, g, h, i, j, k, l) d
+# define BOOST_PP_TUPLE_ELEM_12_4(a, b, c, d, e, f, g, h, i, j, k, l) e
+# define BOOST_PP_TUPLE_ELEM_12_5(a, b, c, d, e, f, g, h, i, j, k, l) f
+# define BOOST_PP_TUPLE_ELEM_12_6(a, b, c, d, e, f, g, h, i, j, k, l) g
+# define BOOST_PP_TUPLE_ELEM_12_7(a, b, c, d, e, f, g, h, i, j, k, l) h
+# define BOOST_PP_TUPLE_ELEM_12_8(a, b, c, d, e, f, g, h, i, j, k, l) i
+# define BOOST_PP_TUPLE_ELEM_12_9(a, b, c, d, e, f, g, h, i, j, k, l) j
+# define BOOST_PP_TUPLE_ELEM_12_10(a, b, c, d, e, f, g, h, i, j, k, l) k
+# define BOOST_PP_TUPLE_ELEM_12_11(a, b, c, d, e, f, g, h, i, j, k, l) l
+#
+# define BOOST_PP_TUPLE_ELEM_13_0(a, b, c, d, e, f, g, h, i, j, k, l, m) a
+# define BOOST_PP_TUPLE_ELEM_13_1(a, b, c, d, e, f, g, h, i, j, k, l, m) b
+# define BOOST_PP_TUPLE_ELEM_13_2(a, b, c, d, e, f, g, h, i, j, k, l, m) c
+# define BOOST_PP_TUPLE_ELEM_13_3(a, b, c, d, e, f, g, h, i, j, k, l, m) d
+# define BOOST_PP_TUPLE_ELEM_13_4(a, b, c, d, e, f, g, h, i, j, k, l, m) e
+# define BOOST_PP_TUPLE_ELEM_13_5(a, b, c, d, e, f, g, h, i, j, k, l, m) f
+# define BOOST_PP_TUPLE_ELEM_13_6(a, b, c, d, e, f, g, h, i, j, k, l, m) g
+# define BOOST_PP_TUPLE_ELEM_13_7(a, b, c, d, e, f, g, h, i, j, k, l, m) h
+# define BOOST_PP_TUPLE_ELEM_13_8(a, b, c, d, e, f, g, h, i, j, k, l, m) i
+# define BOOST_PP_TUPLE_ELEM_13_9(a, b, c, d, e, f, g, h, i, j, k, l, m) j
+# define BOOST_PP_TUPLE_ELEM_13_10(a, b, c, d, e, f, g, h, i, j, k, l, m) k
+# define BOOST_PP_TUPLE_ELEM_13_11(a, b, c, d, e, f, g, h, i, j, k, l, m) l
+# define BOOST_PP_TUPLE_ELEM_13_12(a, b, c, d, e, f, g, h, i, j, k, l, m) m
+#
+# define BOOST_PP_TUPLE_ELEM_14_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a
+# define BOOST_PP_TUPLE_ELEM_14_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n) b
+# define BOOST_PP_TUPLE_ELEM_14_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n) c
+# define BOOST_PP_TUPLE_ELEM_14_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n) d
+# define BOOST_PP_TUPLE_ELEM_14_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n) e
+# define BOOST_PP_TUPLE_ELEM_14_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n) f
+# define BOOST_PP_TUPLE_ELEM_14_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n) g
+# define BOOST_PP_TUPLE_ELEM_14_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n) h
+# define BOOST_PP_TUPLE_ELEM_14_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n) i
+# define BOOST_PP_TUPLE_ELEM_14_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n) j
+# define BOOST_PP_TUPLE_ELEM_14_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n) k
+# define BOOST_PP_TUPLE_ELEM_14_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n) l
+# define BOOST_PP_TUPLE_ELEM_14_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n) m
+# define BOOST_PP_TUPLE_ELEM_14_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n) n
+#
+# define BOOST_PP_TUPLE_ELEM_15_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a
+# define BOOST_PP_TUPLE_ELEM_15_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) b
+# define BOOST_PP_TUPLE_ELEM_15_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) c
+# define BOOST_PP_TUPLE_ELEM_15_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) d
+# define BOOST_PP_TUPLE_ELEM_15_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) e
+# define BOOST_PP_TUPLE_ELEM_15_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) f
+# define BOOST_PP_TUPLE_ELEM_15_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) g
+# define BOOST_PP_TUPLE_ELEM_15_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) h
+# define BOOST_PP_TUPLE_ELEM_15_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) i
+# define BOOST_PP_TUPLE_ELEM_15_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) j
+# define BOOST_PP_TUPLE_ELEM_15_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) k
+# define BOOST_PP_TUPLE_ELEM_15_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) l
+# define BOOST_PP_TUPLE_ELEM_15_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) m
+# define BOOST_PP_TUPLE_ELEM_15_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) n
+# define BOOST_PP_TUPLE_ELEM_15_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) o
+#
+# define BOOST_PP_TUPLE_ELEM_16_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a
+# define BOOST_PP_TUPLE_ELEM_16_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) b
+# define BOOST_PP_TUPLE_ELEM_16_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) c
+# define BOOST_PP_TUPLE_ELEM_16_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) d
+# define BOOST_PP_TUPLE_ELEM_16_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) e
+# define BOOST_PP_TUPLE_ELEM_16_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) f
+# define BOOST_PP_TUPLE_ELEM_16_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) g
+# define BOOST_PP_TUPLE_ELEM_16_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) h
+# define BOOST_PP_TUPLE_ELEM_16_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) i
+# define BOOST_PP_TUPLE_ELEM_16_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) j
+# define BOOST_PP_TUPLE_ELEM_16_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) k
+# define BOOST_PP_TUPLE_ELEM_16_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) l
+# define BOOST_PP_TUPLE_ELEM_16_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) m
+# define BOOST_PP_TUPLE_ELEM_16_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) n
+# define BOOST_PP_TUPLE_ELEM_16_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) o
+# define BOOST_PP_TUPLE_ELEM_16_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) p
+#
+# define BOOST_PP_TUPLE_ELEM_17_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a
+# define BOOST_PP_TUPLE_ELEM_17_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) b
+# define BOOST_PP_TUPLE_ELEM_17_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) c
+# define BOOST_PP_TUPLE_ELEM_17_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) d
+# define BOOST_PP_TUPLE_ELEM_17_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) e
+# define BOOST_PP_TUPLE_ELEM_17_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) f
+# define BOOST_PP_TUPLE_ELEM_17_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) g
+# define BOOST_PP_TUPLE_ELEM_17_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) h
+# define BOOST_PP_TUPLE_ELEM_17_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) i
+# define BOOST_PP_TUPLE_ELEM_17_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) j
+# define BOOST_PP_TUPLE_ELEM_17_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) k
+# define BOOST_PP_TUPLE_ELEM_17_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) l
+# define BOOST_PP_TUPLE_ELEM_17_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) m
+# define BOOST_PP_TUPLE_ELEM_17_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) n
+# define BOOST_PP_TUPLE_ELEM_17_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) o
+# define BOOST_PP_TUPLE_ELEM_17_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) p
+# define BOOST_PP_TUPLE_ELEM_17_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) q
+#
+# define BOOST_PP_TUPLE_ELEM_18_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a
+# define BOOST_PP_TUPLE_ELEM_18_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) b
+# define BOOST_PP_TUPLE_ELEM_18_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) c
+# define BOOST_PP_TUPLE_ELEM_18_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) d
+# define BOOST_PP_TUPLE_ELEM_18_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) e
+# define BOOST_PP_TUPLE_ELEM_18_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) f
+# define BOOST_PP_TUPLE_ELEM_18_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) g
+# define BOOST_PP_TUPLE_ELEM_18_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) h
+# define BOOST_PP_TUPLE_ELEM_18_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) i
+# define BOOST_PP_TUPLE_ELEM_18_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) j
+# define BOOST_PP_TUPLE_ELEM_18_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) k
+# define BOOST_PP_TUPLE_ELEM_18_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) l
+# define BOOST_PP_TUPLE_ELEM_18_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) m
+# define BOOST_PP_TUPLE_ELEM_18_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) n
+# define BOOST_PP_TUPLE_ELEM_18_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) o
+# define BOOST_PP_TUPLE_ELEM_18_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) p
+# define BOOST_PP_TUPLE_ELEM_18_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) q
+# define BOOST_PP_TUPLE_ELEM_18_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) r
+#
+# define BOOST_PP_TUPLE_ELEM_19_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a
+# define BOOST_PP_TUPLE_ELEM_19_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) b
+# define BOOST_PP_TUPLE_ELEM_19_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) c
+# define BOOST_PP_TUPLE_ELEM_19_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) d
+# define BOOST_PP_TUPLE_ELEM_19_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) e
+# define BOOST_PP_TUPLE_ELEM_19_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) f
+# define BOOST_PP_TUPLE_ELEM_19_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) g
+# define BOOST_PP_TUPLE_ELEM_19_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) h
+# define BOOST_PP_TUPLE_ELEM_19_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) i
+# define BOOST_PP_TUPLE_ELEM_19_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) j
+# define BOOST_PP_TUPLE_ELEM_19_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) k
+# define BOOST_PP_TUPLE_ELEM_19_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) l
+# define BOOST_PP_TUPLE_ELEM_19_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) m
+# define BOOST_PP_TUPLE_ELEM_19_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) n
+# define BOOST_PP_TUPLE_ELEM_19_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) o
+# define BOOST_PP_TUPLE_ELEM_19_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) p
+# define BOOST_PP_TUPLE_ELEM_19_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) q
+# define BOOST_PP_TUPLE_ELEM_19_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) r
+# define BOOST_PP_TUPLE_ELEM_19_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) s
+#
+# define BOOST_PP_TUPLE_ELEM_20_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a
+# define BOOST_PP_TUPLE_ELEM_20_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) b
+# define BOOST_PP_TUPLE_ELEM_20_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) c
+# define BOOST_PP_TUPLE_ELEM_20_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) d
+# define BOOST_PP_TUPLE_ELEM_20_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) e
+# define BOOST_PP_TUPLE_ELEM_20_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) f
+# define BOOST_PP_TUPLE_ELEM_20_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) g
+# define BOOST_PP_TUPLE_ELEM_20_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) h
+# define BOOST_PP_TUPLE_ELEM_20_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) i
+# define BOOST_PP_TUPLE_ELEM_20_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) j
+# define BOOST_PP_TUPLE_ELEM_20_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) k
+# define BOOST_PP_TUPLE_ELEM_20_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) l
+# define BOOST_PP_TUPLE_ELEM_20_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) m
+# define BOOST_PP_TUPLE_ELEM_20_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) n
+# define BOOST_PP_TUPLE_ELEM_20_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) o
+# define BOOST_PP_TUPLE_ELEM_20_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) p
+# define BOOST_PP_TUPLE_ELEM_20_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) q
+# define BOOST_PP_TUPLE_ELEM_20_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) r
+# define BOOST_PP_TUPLE_ELEM_20_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) s
+# define BOOST_PP_TUPLE_ELEM_20_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) t
+#
+# define BOOST_PP_TUPLE_ELEM_21_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a
+# define BOOST_PP_TUPLE_ELEM_21_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) b
+# define BOOST_PP_TUPLE_ELEM_21_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) c
+# define BOOST_PP_TUPLE_ELEM_21_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) d
+# define BOOST_PP_TUPLE_ELEM_21_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) e
+# define BOOST_PP_TUPLE_ELEM_21_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) f
+# define BOOST_PP_TUPLE_ELEM_21_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) g
+# define BOOST_PP_TUPLE_ELEM_21_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) h
+# define BOOST_PP_TUPLE_ELEM_21_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) i
+# define BOOST_PP_TUPLE_ELEM_21_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) j
+# define BOOST_PP_TUPLE_ELEM_21_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) k
+# define BOOST_PP_TUPLE_ELEM_21_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) l
+# define BOOST_PP_TUPLE_ELEM_21_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) m
+# define BOOST_PP_TUPLE_ELEM_21_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) n
+# define BOOST_PP_TUPLE_ELEM_21_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) o
+# define BOOST_PP_TUPLE_ELEM_21_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) p
+# define BOOST_PP_TUPLE_ELEM_21_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) q
+# define BOOST_PP_TUPLE_ELEM_21_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) r
+# define BOOST_PP_TUPLE_ELEM_21_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) s
+# define BOOST_PP_TUPLE_ELEM_21_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) t
+# define BOOST_PP_TUPLE_ELEM_21_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) u
+#
+# define BOOST_PP_TUPLE_ELEM_22_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a
+# define BOOST_PP_TUPLE_ELEM_22_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) b
+# define BOOST_PP_TUPLE_ELEM_22_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) c
+# define BOOST_PP_TUPLE_ELEM_22_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) d
+# define BOOST_PP_TUPLE_ELEM_22_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) e
+# define BOOST_PP_TUPLE_ELEM_22_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) f
+# define BOOST_PP_TUPLE_ELEM_22_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) g
+# define BOOST_PP_TUPLE_ELEM_22_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) h
+# define BOOST_PP_TUPLE_ELEM_22_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) i
+# define BOOST_PP_TUPLE_ELEM_22_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) j
+# define BOOST_PP_TUPLE_ELEM_22_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) k
+# define BOOST_PP_TUPLE_ELEM_22_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) l
+# define BOOST_PP_TUPLE_ELEM_22_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) m
+# define BOOST_PP_TUPLE_ELEM_22_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) n
+# define BOOST_PP_TUPLE_ELEM_22_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) o
+# define BOOST_PP_TUPLE_ELEM_22_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) p
+# define BOOST_PP_TUPLE_ELEM_22_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) q
+# define BOOST_PP_TUPLE_ELEM_22_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) r
+# define BOOST_PP_TUPLE_ELEM_22_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) s
+# define BOOST_PP_TUPLE_ELEM_22_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) t
+# define BOOST_PP_TUPLE_ELEM_22_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) u
+# define BOOST_PP_TUPLE_ELEM_22_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) v
+#
+# define BOOST_PP_TUPLE_ELEM_23_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a
+# define BOOST_PP_TUPLE_ELEM_23_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) b
+# define BOOST_PP_TUPLE_ELEM_23_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) c
+# define BOOST_PP_TUPLE_ELEM_23_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) d
+# define BOOST_PP_TUPLE_ELEM_23_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) e
+# define BOOST_PP_TUPLE_ELEM_23_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) f
+# define BOOST_PP_TUPLE_ELEM_23_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) g
+# define BOOST_PP_TUPLE_ELEM_23_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) h
+# define BOOST_PP_TUPLE_ELEM_23_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) i
+# define BOOST_PP_TUPLE_ELEM_23_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) j
+# define BOOST_PP_TUPLE_ELEM_23_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) k
+# define BOOST_PP_TUPLE_ELEM_23_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) l
+# define BOOST_PP_TUPLE_ELEM_23_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) m
+# define BOOST_PP_TUPLE_ELEM_23_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) n
+# define BOOST_PP_TUPLE_ELEM_23_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) o
+# define BOOST_PP_TUPLE_ELEM_23_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) p
+# define BOOST_PP_TUPLE_ELEM_23_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) q
+# define BOOST_PP_TUPLE_ELEM_23_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) r
+# define BOOST_PP_TUPLE_ELEM_23_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) s
+# define BOOST_PP_TUPLE_ELEM_23_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) t
+# define BOOST_PP_TUPLE_ELEM_23_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) u
+# define BOOST_PP_TUPLE_ELEM_23_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) v
+# define BOOST_PP_TUPLE_ELEM_23_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) w
+#
+# define BOOST_PP_TUPLE_ELEM_24_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a
+# define BOOST_PP_TUPLE_ELEM_24_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) b
+# define BOOST_PP_TUPLE_ELEM_24_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) c
+# define BOOST_PP_TUPLE_ELEM_24_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) d
+# define BOOST_PP_TUPLE_ELEM_24_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) e
+# define BOOST_PP_TUPLE_ELEM_24_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) f
+# define BOOST_PP_TUPLE_ELEM_24_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) g
+# define BOOST_PP_TUPLE_ELEM_24_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) h
+# define BOOST_PP_TUPLE_ELEM_24_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) i
+# define BOOST_PP_TUPLE_ELEM_24_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) j
+# define BOOST_PP_TUPLE_ELEM_24_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) k
+# define BOOST_PP_TUPLE_ELEM_24_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) l
+# define BOOST_PP_TUPLE_ELEM_24_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) m
+# define BOOST_PP_TUPLE_ELEM_24_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) n
+# define BOOST_PP_TUPLE_ELEM_24_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) o
+# define BOOST_PP_TUPLE_ELEM_24_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) p
+# define BOOST_PP_TUPLE_ELEM_24_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) q
+# define BOOST_PP_TUPLE_ELEM_24_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) r
+# define BOOST_PP_TUPLE_ELEM_24_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) s
+# define BOOST_PP_TUPLE_ELEM_24_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) t
+# define BOOST_PP_TUPLE_ELEM_24_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) u
+# define BOOST_PP_TUPLE_ELEM_24_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) v
+# define BOOST_PP_TUPLE_ELEM_24_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) w
+# define BOOST_PP_TUPLE_ELEM_24_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) x
+#
+# define BOOST_PP_TUPLE_ELEM_25_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a
+# define BOOST_PP_TUPLE_ELEM_25_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) b
+# define BOOST_PP_TUPLE_ELEM_25_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) c
+# define BOOST_PP_TUPLE_ELEM_25_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) d
+# define BOOST_PP_TUPLE_ELEM_25_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) e
+# define BOOST_PP_TUPLE_ELEM_25_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) f
+# define BOOST_PP_TUPLE_ELEM_25_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) g
+# define BOOST_PP_TUPLE_ELEM_25_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) h
+# define BOOST_PP_TUPLE_ELEM_25_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) i
+# define BOOST_PP_TUPLE_ELEM_25_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) j
+# define BOOST_PP_TUPLE_ELEM_25_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) k
+# define BOOST_PP_TUPLE_ELEM_25_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) l
+# define BOOST_PP_TUPLE_ELEM_25_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) m
+# define BOOST_PP_TUPLE_ELEM_25_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) n
+# define BOOST_PP_TUPLE_ELEM_25_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) o
+# define BOOST_PP_TUPLE_ELEM_25_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) p
+# define BOOST_PP_TUPLE_ELEM_25_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) q
+# define BOOST_PP_TUPLE_ELEM_25_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) r
+# define BOOST_PP_TUPLE_ELEM_25_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) s
+# define BOOST_PP_TUPLE_ELEM_25_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) t
+# define BOOST_PP_TUPLE_ELEM_25_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) u
+# define BOOST_PP_TUPLE_ELEM_25_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) v
+# define BOOST_PP_TUPLE_ELEM_25_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) w
+# define BOOST_PP_TUPLE_ELEM_25_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) x
+# define BOOST_PP_TUPLE_ELEM_25_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) y
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/tuple/rem.hpp b/3rdParty/Boost/boost/preprocessor/tuple/rem.hpp
new file mode 100644
index 0000000..9b76df9
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/tuple/rem.hpp
@@ -0,0 +1,72 @@
+# /* **************************************************************************
+# * *
+# * (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_TUPLE_REM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_REM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size)
+# else
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size))
+# define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par
+# endif
+#
+# define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size
+#
+# define BOOST_PP_TUPLE_REM_0()
+# define BOOST_PP_TUPLE_REM_1(a) a
+# define BOOST_PP_TUPLE_REM_2(a, b) a, b
+# define BOOST_PP_TUPLE_REM_3(a, b, c) a, b, c
+# define BOOST_PP_TUPLE_REM_4(a, b, c, d) a, b, c, d
+# define BOOST_PP_TUPLE_REM_5(a, b, c, d, e) a, b, c, d, e
+# define BOOST_PP_TUPLE_REM_6(a, b, c, d, e, f) a, b, c, d, e, f
+# define BOOST_PP_TUPLE_REM_7(a, b, c, d, e, f, g) a, b, c, d, e, f, g
+# define BOOST_PP_TUPLE_REM_8(a, b, c, d, e, f, g, h) a, b, c, d, e, f, g, h
+# define BOOST_PP_TUPLE_REM_9(a, b, c, d, e, f, g, h, i) a, b, c, d, e, f, g, h, i
+# define BOOST_PP_TUPLE_REM_10(a, b, c, d, e, f, g, h, i, j) a, b, c, d, e, f, g, h, i, j
+# define BOOST_PP_TUPLE_REM_11(a, b, c, d, e, f, g, h, i, j, k) a, b, c, d, e, f, g, h, i, j, k
+# define BOOST_PP_TUPLE_REM_12(a, b, c, d, e, f, g, h, i, j, k, l) a, b, c, d, e, f, g, h, i, j, k, l
+# define BOOST_PP_TUPLE_REM_13(a, b, c, d, e, f, g, h, i, j, k, l, m) a, b, c, d, e, f, g, h, i, j, k, l, m
+# define BOOST_PP_TUPLE_REM_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a, b, c, d, e, f, g, h, i, j, k, l, m, n
+# define BOOST_PP_TUPLE_REM_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o
+# define BOOST_PP_TUPLE_REM_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p
+# define BOOST_PP_TUPLE_REM_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q
+# define BOOST_PP_TUPLE_REM_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r
+# define BOOST_PP_TUPLE_REM_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s
+# define BOOST_PP_TUPLE_REM_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t
+# define BOOST_PP_TUPLE_REM_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u
+# define BOOST_PP_TUPLE_REM_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v
+# define BOOST_PP_TUPLE_REM_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w
+# define BOOST_PP_TUPLE_REM_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x
+# define BOOST_PP_TUPLE_REM_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y
+#
+# /* BOOST_PP_TUPLE_REM_CTOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
+# else
+# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_D(size, tuple)
+# define BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple
+# else
+# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) BOOST_PP_TUPLE_REM_CTOR_OO((ext, tuple))
+# define BOOST_PP_TUPLE_REM_CTOR_OO(par) BOOST_PP_TUPLE_REM_CTOR_II ## par
+# define BOOST_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple
+# endif
+#
+# endif
diff --git a/3rdParty/Boost/boost/preprocessor/tuple/to_list.hpp b/3rdParty/Boost/boost/preprocessor/tuple/to_list.hpp
new file mode 100644
index 0000000..e8af8dd
--- /dev/null
+++ b/3rdParty/Boost/boost/preprocessor/tuple/to_list.hpp
@@ -0,0 +1,62 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.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)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
+# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_TO_LIST */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple)
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t
+# else
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t)
+# define BOOST_PP_TUPLE_TO_LIST_II(res) res
+# endif
+# else
+# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple))
+# define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t
+# endif
+#
+# define BOOST_PP_TUPLE_TO_LIST_0() BOOST_PP_NIL
+# define BOOST_PP_TUPLE_TO_LIST_1(a) (a, BOOST_PP_NIL)
+# define BOOST_PP_TUPLE_TO_LIST_2(a, b) (a, (b, BOOST_PP_NIL))
+# define BOOST_PP_TUPLE_TO_LIST_3(a, b, c) (a, (b, (c, BOOST_PP_NIL)))
+# define BOOST_PP_TUPLE_TO_LIST_4(a, b, c, d) (a, (b, (c, (d, BOOST_PP_NIL))))
+# define BOOST_PP_TUPLE_TO_LIST_5(a, b, c, d, e) (a, (b, (c, (d, (e, BOOST_PP_NIL)))))
+# define BOOST_PP_TUPLE_TO_LIST_6(a, b, c, d, e, f) (a, (b, (c, (d, (e, (f, BOOST_PP_NIL))))))
+# define BOOST_PP_TUPLE_TO_LIST_7(a, b, c, d, e, f, g) (a, (b, (c, (d, (e, (f, (g, BOOST_PP_NIL)))))))
+# define BOOST_PP_TUPLE_TO_LIST_8(a, b, c, d, e, f, g, h) (a, (b, (c, (d, (e, (f, (g, (h, BOOST_PP_NIL))))))))
+# define BOOST_PP_TUPLE_TO_LIST_9(a, b, c, d, e, f, g, h, i) (a, (b, (c, (d, (e, (f, (g, (h, (i, BOOST_PP_NIL)))))))))
+# define BOOST_PP_TUPLE_TO_LIST_10(a, b, c, d, e, f, g, h, i, j) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, BOOST_PP_NIL))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_11(a, b, c, d, e, f, g, h, i, j, k) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, BOOST_PP_NIL)))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_12(a, b, c, d, e, f, g, h, i, j, k, l) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, BOOST_PP_NIL))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_13(a, b, c, d, e, f, g, h, i, j, k, l, m) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, BOOST_PP_NIL)))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, BOOST_PP_NIL))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, BOOST_PP_NIL)))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, BOOST_PP_NIL))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, BOOST_PP_NIL)))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, BOOST_PP_NIL))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, BOOST_PP_NIL)))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, BOOST_PP_NIL))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, BOOST_PP_NIL)))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, BOOST_PP_NIL))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, BOOST_PP_NIL)))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, (x, BOOST_PP_NIL))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) (a, (b, (c, (d, (e, (f, (g, (h, (i, (j, (k, (l, (m, (n, (o, (p, (q, (r, (s, (t, (u, (v, (w, (x, (y, BOOST_PP_NIL)))))))))))))))))))))))))
+#
+# endif
diff --git a/3rdParty/Boost/boost/range/as_literal.hpp b/3rdParty/Boost/boost/range/as_literal.hpp
new file mode 100644
index 0000000..2f04ca8
--- /dev/null
+++ b/3rdParty/Boost/boost/range/as_literal.hpp
@@ -0,0 +1,127 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2006. 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_AS_LITERAL_HPP
+#define BOOST_RANGE_AS_LITERAL_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#include <boost/range/detail/as_literal.hpp>
+#else
+
+#include <boost/range/iterator_range.hpp>
+#include <boost/range/detail/str_types.hpp>
+
+#include <boost/detail/workaround.hpp>
+
+#include <cstring>
+#ifndef BOOST_NO_CWCHAR
+#include <cwchar>
+#endif
+
+namespace boost
+{
+ namespace range_detail
+ {
+ inline std::size_t length( const char* s )
+ {
+ return strlen( s );
+ }
+
+#ifndef BOOST_NO_CWCHAR
+ inline std::size_t length( const wchar_t* s )
+ {
+ return wcslen( s );
+ }
+#endif
+
+ //
+ // Remark: the compiler cannot choose between T* and T[sz]
+ // overloads, so we must put the T* internal to the
+ // unconstrained version.
+ //
+
+ inline bool is_char_ptr( char* )
+ {
+ return true;
+ }
+
+ inline bool is_char_ptr( const char* )
+ {
+ return true;
+ }
+
+#ifndef BOOST_NO_CWCHAR
+ inline bool is_char_ptr( wchar_t* )
+ {
+ return true;
+ }
+
+ inline bool is_char_ptr( const wchar_t* )
+ {
+ return true;
+ }
+#endif
+
+ template< class T >
+ inline long is_char_ptr( T /* r */ )
+ {
+ return 0L;
+ }
+
+ template< class T >
+ inline iterator_range<T*>
+ make_range( T* const r, bool )
+ {
+ return iterator_range<T*>( r, r + length(r) );
+ }
+
+ template< class T >
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<T>::type>
+ make_range( T& r, long )
+ {
+ return boost::make_iterator_range( r );
+ }
+
+ }
+
+ template< class Range >
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<Range>::type>
+ as_literal( Range& r )
+ {
+ return range_detail::make_range( r, range_detail::is_char_ptr(r) );
+ }
+
+ template< class Range >
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type>
+ as_literal( const Range& r )
+ {
+ return range_detail::make_range( r, range_detail::is_char_ptr(r) );
+ }
+
+ template< class Char, std::size_t sz >
+ inline iterator_range<Char*> as_literal( Char (&arr)[sz] )
+ {
+ return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
+ }
+
+ template< class Char, std::size_t sz >
+ inline iterator_range<const Char*> as_literal( const Char (&arr)[sz] )
+ {
+ return range_detail::make_range( arr, range_detail::is_char_ptr(arr) );
+ }
+}
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+#endif
diff --git a/3rdParty/Boost/boost/range/begin.hpp b/3rdParty/Boost/boost/range/begin.hpp
new file mode 100644
index 0000000..a4a5e10
--- /dev/null
+++ b/3rdParty/Boost/boost/range/begin.hpp
@@ -0,0 +1,132 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_BEGIN_HPP
+#define BOOST_RANGE_BEGIN_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#include <boost/range/detail/begin.hpp>
+#else
+
+#include <boost/range/iterator.hpp>
+
+namespace boost
+{
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+namespace range_detail
+{
+#endif
+
+ //////////////////////////////////////////////////////////////////////
+ // primary template
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
+ range_begin( C& c )
+ {
+ //
+ // If you get a compile-error here, it is most likely because
+ // you have not implemented range_begin() properly in
+ // the namespace of C
+ //
+ return c.begin();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ inline Iterator range_begin( const std::pair<Iterator,Iterator>& p )
+ {
+ return p.first;
+ }
+
+ template< typename Iterator >
+ inline Iterator range_begin( std::pair<Iterator,Iterator>& p )
+ {
+ return p.first;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ //
+ // May this be discarded? Or is it needed for bad compilers?
+ //
+ template< typename T, std::size_t sz >
+ inline const T* range_begin( const T (&a)[sz] )
+ {
+ return a;
+ }
+
+ template< typename T, std::size_t sz >
+ inline T* range_begin( T (&a)[sz] )
+ {
+ return a;
+ }
+
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+} // namespace 'range_detail'
+#endif
+
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_begin( r );
+}
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_begin( r );
+}
+
+} // 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 )
+ {
+ return boost::begin( r );
+ }
+}
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/config.hpp b/3rdParty/Boost/boost/range/config.hpp
new file mode 100644
index 0000000..4e7fb24
--- /dev/null
+++ b/3rdParty/Boost/boost/range/config.hpp
@@ -0,0 +1,54 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_CONFIG_HPP
+#define BOOST_RANGE_CONFIG_HPP
+
+#include <boost/detail/workaround.hpp>
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_RANGE_DEDUCED_TYPENAME
+#error "macro already defined!"
+#endif
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# define BOOST_RANGE_DEDUCED_TYPENAME typename
+#else
+# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) && !defined(_MSC_EXTENSIONS)
+# define BOOST_RANGE_DEDUCED_TYPENAME typename
+# else
+# define BOOST_RANGE_DEDUCED_TYPENAME BOOST_DEDUCED_TYPENAME
+# endif
+#endif
+
+#ifdef BOOST_RANGE_NO_ARRAY_SUPPORT
+#error "macro already defined!"
+#endif
+
+#if BOOST_WORKAROUND( BOOST_MSVC, < 1300 ) || BOOST_WORKAROUND( __MWERKS__, <= 0x3003 )
+#define BOOST_RANGE_NO_ARRAY_SUPPORT 1
+#endif
+
+#ifdef BOOST_RANGE_NO_ARRAY_SUPPORT
+#define BOOST_RANGE_ARRAY_REF() (boost_range_array)
+#define BOOST_RANGE_NO_STATIC_ASSERT
+#else
+#define BOOST_RANGE_ARRAY_REF() (&boost_range_array)
+#endif
+
+
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/const_iterator.hpp b/3rdParty/Boost/boost/range/const_iterator.hpp
new file mode 100644
index 0000000..195f9d4
--- /dev/null
+++ b/3rdParty/Boost/boost/range/const_iterator.hpp
@@ -0,0 +1,64 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_CONST_ITERATOR_HPP
+#define BOOST_RANGE_CONST_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/range/detail/const_iterator.hpp>
+#else
+
+#include <boost/type_traits/remove_const.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost
+{
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ struct range_const_iterator
+ {
+ typedef BOOST_DEDUCED_TYPENAME C::const_iterator type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ struct range_const_iterator< std::pair<Iterator,Iterator> >
+ {
+ typedef Iterator type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ struct range_const_iterator< T[sz] >
+ {
+ typedef const T* type;
+ };
+
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/as_literal.hpp b/3rdParty/Boost/boost/range/detail/as_literal.hpp
new file mode 100644
index 0000000..0bd9a15
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/as_literal.hpp
@@ -0,0 +1,33 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2006. 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_AS_LITERAL_HPP
+#define BOOST_RANGE_DETAIL_AS_LITERAL_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/detail/detail_str.hpp>
+#include <boost/range/iterator_range.hpp>
+
+namespace boost
+{
+ template< class Range >
+ inline iterator_range<BOOST_DEDUCED_TYPENAME range_iterator<Range>::type>
+ as_literal( Range& r )
+ {
+ return ::boost::make_iterator_range( ::boost::range_detail::str_begin(r),
+ ::boost::range_detail::str_end(r) );
+ }
+
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/begin.hpp b/3rdParty/Boost/boost/range/detail/begin.hpp
new file mode 100644
index 0000000..06c2561
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/begin.hpp
@@ -0,0 +1,92 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_BEGIN_HPP
+#define BOOST_RANGE_DETAIL_BEGIN_HPP
+
+#include <boost/config.hpp> // BOOST_MSVC
+#include <boost/detail/workaround.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/detail/common.hpp>
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+# include <boost/range/value_type.hpp>
+#endif
+
+namespace boost
+{
+
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_begin;
+
+ //////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_begin<std_container_>
+ {
+ template< typename C >
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type fun( C& c )
+ {
+ return c.begin();
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_begin<std_pair_>
+ {
+ template< typename P >
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type fun( const P& p )
+ {
+ return p.first;
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_begin<array_>
+ {
+ #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+ template< typename T, std::size_t sz >
+ static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost_range_array;
+ }
+ #else
+ template<typename T>
+ static BOOST_RANGE_DEDUCED_TYPENAME range_value<T>::type* fun(T& t)
+ {
+ return t;
+ }
+ #endif
+ };
+
+ } // namespace 'range_detail'
+
+ 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'
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/common.hpp b/3rdParty/Boost/boost/range/detail/common.hpp
new file mode 100644
index 0000000..f7539f5
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/common.hpp
@@ -0,0 +1,117 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_COMMON_HPP
+#define BOOST_RANGE_DETAIL_COMMON_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/detail/sfinae.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <cstddef>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ // 1 = std containers
+ // 2 = std::pair
+ // 3 = const std::pair
+ // 4 = array
+ // 5 = const array
+ // 6 = char array
+ // 7 = wchar_t array
+ // 8 = char*
+ // 9 = const char*
+ // 10 = whar_t*
+ // 11 = const wchar_t*
+ // 12 = string
+
+ typedef mpl::int_<1>::type std_container_;
+ typedef mpl::int_<2>::type std_pair_;
+ typedef mpl::int_<3>::type const_std_pair_;
+ typedef mpl::int_<4>::type array_;
+ typedef mpl::int_<5>::type const_array_;
+ typedef mpl::int_<6>::type char_array_;
+ typedef mpl::int_<7>::type wchar_t_array_;
+ typedef mpl::int_<8>::type char_ptr_;
+ typedef mpl::int_<9>::type const_char_ptr_;
+ typedef mpl::int_<10>::type wchar_t_ptr_;
+ typedef mpl::int_<11>::type const_wchar_t_ptr_;
+ typedef mpl::int_<12>::type string_;
+
+ template< typename C >
+ struct range_helper
+ {
+ static C* c;
+ static C ptr;
+
+ BOOST_STATIC_CONSTANT( bool, is_pair_ = sizeof( boost::range_detail::is_pair_impl( c ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_char_ptr_ = sizeof( boost::range_detail::is_char_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_const_char_ptr_ = sizeof( boost::range_detail::is_const_char_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_wchar_t_ptr_ = sizeof( boost::range_detail::is_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_const_wchar_t_ptr_ = sizeof( boost::range_detail::is_const_wchar_t_ptr_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_char_array_ = sizeof( boost::range_detail::is_char_array_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_wchar_t_array_ = sizeof( boost::range_detail::is_wchar_t_array_impl( ptr ) ) == sizeof( yes_type ) );
+ BOOST_STATIC_CONSTANT( bool, is_string_ = (boost::type_traits::ice_or<is_const_char_ptr_, is_const_wchar_t_ptr_>::value ));
+ BOOST_STATIC_CONSTANT( bool, is_array_ = boost::is_array<C>::value );
+
+ };
+
+ template< typename C >
+ class range
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_pair_,
+ boost::range_detail::std_pair_,
+ void >::type pair_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_array_,
+ boost::range_detail::array_,
+ pair_t >::type array_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_string_,
+ boost::range_detail::string_,
+ array_t >::type string_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_char_ptr_,
+ boost::range_detail::const_char_ptr_,
+ string_t >::type const_char_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_ptr_,
+ boost::range_detail::char_ptr_,
+ const_char_ptr_t >::type char_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_const_wchar_t_ptr_,
+ boost::range_detail::const_wchar_t_ptr_,
+ char_ptr_t >::type const_wchar_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_ptr_,
+ boost::range_detail::wchar_t_ptr_,
+ const_wchar_ptr_t >::type wchar_ptr_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_wchar_t_array_,
+ boost::range_detail::wchar_t_array_,
+ wchar_ptr_t >::type wchar_array_t;
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::range_detail::range_helper<C>::is_char_array_,
+ boost::range_detail::char_array_,
+ wchar_array_t >::type char_array_t;
+ public:
+ typedef BOOST_RANGE_DEDUCED_TYPENAME boost::mpl::if_c< ::boost::is_void<char_array_t>::value,
+ boost::range_detail::std_container_,
+ char_array_t >::type type;
+ }; // class 'range'
+ }
+}
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/detail/const_iterator.hpp b/3rdParty/Boost/boost/range/detail/const_iterator.hpp
new file mode 100644
index 0000000..e5cb34a
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/const_iterator.hpp
@@ -0,0 +1,71 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
+#define BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
+
+#include <boost/range/detail/common.hpp>
+#include <boost/range/detail/remove_extent.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_const_iterator_;
+
+ template<>
+ struct range_const_iterator_<std_container_>
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME C::const_iterator type;
+ };
+ };
+
+ template<>
+ struct range_const_iterator_<std_pair_>
+ {
+ template< typename P >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
+ };
+ };
+
+
+ template<>
+ struct range_const_iterator_<array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef const BOOST_RANGE_DEDUCED_TYPENAME
+ remove_extent<T>::type* type;
+ };
+ };
+ }
+
+ template< typename C >
+ class range_const_iterator
+ {
+ typedef BOOST_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
+ public:
+ typedef BOOST_DEDUCED_TYPENAME range_detail::range_const_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
+ };
+
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/detail_str.hpp b/3rdParty/Boost/boost/range/detail/detail_str.hpp
new file mode 100644
index 0000000..d5ad5b3
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/detail_str.hpp
@@ -0,0 +1,376 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_DETAIL_STR_HPP
+#define BOOST_RANGE_DETAIL_DETAIL_STR_HPP
+
+#include <boost/config.hpp> // BOOST_MSVC
+#include <boost/range/iterator.hpp>
+
+namespace boost
+{
+
+ namespace range_detail
+ {
+ //
+ // iterator
+ //
+
+ template<>
+ struct range_iterator_<char_array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ remove_extent<T>::type* type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef char* type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<const_char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const char* type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef wchar_t* type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<const_wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const wchar_t* type;
+ };
+ };
+
+
+ //
+ // const iterator
+ //
+
+ template<>
+ struct range_const_iterator_<char_array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef const BOOST_RANGE_DEDUCED_TYPENAME
+ remove_extent<T>::type* type;
+ };
+ };
+
+ template<>
+ struct range_const_iterator_<char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const char* type;
+ };
+ };
+
+ template<>
+ struct range_const_iterator_<const_char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const char* type;
+ };
+ };
+
+ template<>
+ struct range_const_iterator_<wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const wchar_t* type;
+ };
+ };
+
+ template<>
+ struct range_const_iterator_<const_wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const wchar_t* type;
+ };
+ };
+ }
+}
+
+#include <boost/range/detail/begin.hpp>
+#include <boost/range/detail/end.hpp>
+#include <boost/range/detail/size_type>
+#include <boost/range/detail/value_type>
+#include <boost/range/detail/common.hpp>
+
+namespace boost
+{
+
+ namespace range_detail
+ {
+ //
+ // str_begin()
+ //
+ template<>
+ struct range_begin<char_ptr_>
+ {
+ static char* fun( char* s )
+ {
+ return s;
+ }
+ };
+
+ template<>
+ struct range_begin<const_char_ptr_>
+ {
+ static const char* fun( const char* s )
+ {
+ return s;
+ }
+ };
+
+ template<>
+ struct range_begin<wchar_t_ptr_>
+ {
+
+ static wchar_t* fun( wchar_t* s )
+ {
+ return s;
+ }
+ };
+
+ template<>
+ struct range_begin<const_wchar_t_ptr_>
+ {
+ static const wchar_t* fun( const wchar_t* s )
+ {
+ return s;
+ }
+ };
+
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ str_begin( C& c )
+ {
+ return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME
+ range_detail::range<C>::type >::fun( c );
+ }
+
+ //
+ // str_end()
+ //
+
+ template<>
+ struct range_end<char_array_>
+ {
+ template< typename T, std::size_t sz >
+ static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost::range_detail::array_end( boost_range_array );
+ }
+ };
+
+ template<>
+ struct range_end<wchar_t_array_>
+ {
+ template< typename T, std::size_t sz >
+ static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost::range_detail::array_end( boost_range_array );
+ }
+ };
+
+ template<>
+ struct range_end<char_ptr_>
+ {
+ static char* fun( char* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+
+ template<>
+ struct range_end<const_char_ptr_>
+ {
+ static const char* fun( const char* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+
+ template<>
+ struct range_end<wchar_t_ptr_>
+ {
+ static wchar_t* fun( wchar_t* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+
+
+ template<>
+ struct range_end<const_wchar_t_ptr_>
+ {
+ static const wchar_t* fun( const wchar_t* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ str_end( C& c )
+ {
+ return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME
+ range_detail::range<C>::type >::fun( c );
+ }
+
+ //
+ // size_type
+ //
+
+ template<>
+ struct range_size_type_<char_array_>
+ {
+ template< typename A >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<const_char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<const_wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ //
+ // value_type
+ //
+
+ template<>
+ struct range_value_type_<char_array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef char type;
+ };
+ };
+
+ template<>
+ struct range_value_type_<char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef char type;
+ };
+ };
+
+ template<>
+ struct range_value_type_<const_char_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const char type;
+ };
+ };
+
+ template<>
+ struct range_value_type_<wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef wchar_t type;
+ };
+ };
+
+ template<>
+ struct range_value_type_<const_wchar_t_ptr_>
+ {
+ template< typename S >
+ struct pts
+ {
+ typedef const wchar_t type;
+ };
+ };
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/end.hpp b/3rdParty/Boost/boost/range/detail/end.hpp
new file mode 100644
index 0000000..d6a7368
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/end.hpp
@@ -0,0 +1,98 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_END_HPP
+#define BOOST_RANGE_DETAIL_END_HPP
+
+#include <boost/config.hpp> // BOOST_MSVC
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# include <boost/range/detail/vc6/end.hpp>
+#else
+# include <boost/range/detail/implementation_help.hpp>
+# include <boost/range/iterator.hpp>
+# include <boost/range/detail/common.hpp>
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+# include <boost/range/detail/remove_extent.hpp>
+# endif
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_end;
+
+ //////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_container_>
+ {
+ template< typename C >
+ 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
+ fun( const P& p )
+ {
+ return p.second;
+ }
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<array_>
+ {
+ #if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+ template< typename T, std::size_t sz >
+ static T* fun( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost::range_detail::array_end( boost_range_array );
+ }
+ #else
+ template<typename T>
+ static BOOST_RANGE_DEDUCED_TYPENAME remove_extent<T>::type* fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ #endif
+ };
+
+ } // namespace 'range_detail'
+
+ 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 'boost'
+
+# endif // VC6
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/implementation_help.hpp b/3rdParty/Boost/boost/range/detail/implementation_help.hpp
new file mode 100644
index 0000000..ca12fa4
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/implementation_help.hpp
@@ -0,0 +1,103 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
+#define BOOST_RANGE_DETAIL_IMPLEMENTATION_HELP_HPP
+
+#include <boost/range/config.hpp>
+#include <boost/range/detail/common.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <cstddef>
+#include <string.h>
+
+#ifndef BOOST_NO_CWCHAR
+#include <wchar.h>
+#endif
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template <typename T>
+ inline void boost_range_silence_warning( const T& ) { }
+
+ /////////////////////////////////////////////////////////////////////
+ // end() help
+ /////////////////////////////////////////////////////////////////////
+
+ inline const char* str_end( const char* s, const char* )
+ {
+ return s + strlen( s );
+ }
+
+#ifndef BOOST_NO_CWCHAR
+ inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
+ {
+ return s + wcslen( s );
+ }
+#else
+ inline const wchar_t* str_end( const wchar_t* s, const wchar_t* )
+ {
+ if( s == 0 || s[0] == 0 )
+ return s;
+ while( *++s != 0 )
+ ;
+ return s;
+ }
+#endif
+
+ template< class Char >
+ inline Char* str_end( Char* s )
+ {
+ return const_cast<Char*>( str_end( s, s ) );
+ }
+
+ template< class T, std::size_t sz >
+ inline T* array_end( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost_range_array + sz;
+ }
+
+ template< class T, std::size_t sz >
+ inline const T* array_end( const T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ return boost_range_array + sz;
+ }
+
+ /////////////////////////////////////////////////////////////////////
+ // size() help
+ /////////////////////////////////////////////////////////////////////
+
+ template< class Char >
+ inline std::size_t str_size( const Char* const& s )
+ {
+ return str_end( s ) - s;
+ }
+
+ template< class T, std::size_t sz >
+ inline std::size_t array_size( T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ boost_range_silence_warning( boost_range_array );
+ return sz;
+ }
+
+ template< class T, std::size_t sz >
+ inline std::size_t array_size( const T BOOST_RANGE_ARRAY_REF()[sz] )
+ {
+ boost_range_silence_warning( boost_range_array );
+ return sz;
+ }
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/iterator.hpp b/3rdParty/Boost/boost/range/detail/iterator.hpp
new file mode 100644
index 0000000..58346d4
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/iterator.hpp
@@ -0,0 +1,78 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_ITERATOR_HPP
+#define BOOST_RANGE_DETAIL_ITERATOR_HPP
+
+#include <boost/range/detail/common.hpp>
+#include <boost/range/detail/remove_extent.hpp>
+
+#include <boost/static_assert.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_iterator_ {
+ template< typename C >
+ struct pts
+ {
+ typedef int type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<std_container_>
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME C::iterator type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<std_pair_>
+ {
+ template< typename P >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
+ };
+ };
+
+ template<>
+ struct range_iterator_<array_>
+ {
+ template< typename T >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ remove_extent<T>::type* type;
+ };
+ };
+
+ }
+
+ template< typename C >
+ class range_mutable_iterator
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
+ public:
+ typedef typename range_detail::range_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
+ };
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/remove_extent.hpp b/3rdParty/Boost/boost/range/detail/remove_extent.hpp
new file mode 100644
index 0000000..68e4597
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/remove_extent.hpp
@@ -0,0 +1,157 @@
+// Boost.Range library
+//
+// Copyright Jonathan Turkanis 2005. Use, modification and
+// distribution is subject to the Boost Software License, Version
+// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+
+#ifndef BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP
+#define BOOST_RANGE_DETAIL_REMOVE_BOUNDS_HPP
+
+#include <boost/config.hpp> // MSVC, NO_INTRINSIC_WCHAR_T, put size_t in std.
+#include <cstddef>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+
+ template< typename Case1 = mpl::true_,
+ typename Type1 = mpl::void_,
+ typename Case2 = mpl::true_,
+ typename Type2 = mpl::void_,
+ typename Case3 = mpl::true_,
+ typename Type3 = mpl::void_,
+ typename Case4 = mpl::true_,
+ typename Type4 = mpl::void_,
+ typename Case5 = mpl::true_,
+ typename Type5 = mpl::void_,
+ typename Case6 = mpl::true_,
+ typename Type6 = mpl::void_,
+ typename Case7 = mpl::true_,
+ typename Type7 = mpl::void_,
+ typename Case8 = mpl::true_,
+ typename Type8 = mpl::void_,
+ typename Case9 = mpl::true_,
+ typename Type9 = mpl::void_,
+ typename Case10 = mpl::true_,
+ typename Type10 = mpl::void_,
+ typename Case11 = mpl::true_,
+ typename Type11 = mpl::void_,
+ typename Case12 = mpl::true_,
+ typename Type12 = mpl::void_,
+ typename Case13 = mpl::true_,
+ typename Type13 = mpl::void_,
+ typename Case14 = mpl::true_,
+ typename Type14 = mpl::void_,
+ typename Case15 = mpl::true_,
+ typename Type15 = mpl::void_,
+ typename Case16 = mpl::true_,
+ typename Type16 = mpl::void_,
+ typename Case17 = mpl::true_,
+ typename Type17 = mpl::void_,
+ typename Case18 = mpl::true_,
+ typename Type18 = mpl::void_,
+ typename Case19 = mpl::true_,
+ typename Type19 = mpl::void_,
+ typename Case20 = mpl::true_,
+ typename Type20 = mpl::void_>
+ struct select {
+ typedef typename
+ mpl::eval_if<
+ Case1, mpl::identity<Type1>, mpl::eval_if<
+ Case2, mpl::identity<Type2>, mpl::eval_if<
+ Case3, mpl::identity<Type3>, mpl::eval_if<
+ Case4, mpl::identity<Type4>, mpl::eval_if<
+ Case5, mpl::identity<Type5>, mpl::eval_if<
+ Case6, mpl::identity<Type6>, mpl::eval_if<
+ Case7, mpl::identity<Type7>, mpl::eval_if<
+ Case8, mpl::identity<Type8>, mpl::eval_if<
+ Case9, mpl::identity<Type9>, mpl::if_<
+ Case10, Type10, mpl::void_ > > > > > > > > >
+ >::type result1;
+ typedef typename
+ mpl::eval_if<
+ Case11, mpl::identity<Type11>, mpl::eval_if<
+ Case12, mpl::identity<Type12>, mpl::eval_if<
+ Case13, mpl::identity<Type13>, mpl::eval_if<
+ Case14, mpl::identity<Type14>, mpl::eval_if<
+ Case15, mpl::identity<Type15>, mpl::eval_if<
+ Case16, mpl::identity<Type16>, mpl::eval_if<
+ Case17, mpl::identity<Type17>, mpl::eval_if<
+ Case18, mpl::identity<Type18>, mpl::eval_if<
+ Case19, mpl::identity<Type19>, mpl::if_<
+ Case20, Type20, mpl::void_ > > > > > > > > >
+ > result2;
+ typedef typename
+ mpl::eval_if<
+ is_same<result1, mpl::void_>,
+ result2,
+ mpl::identity<result1>
+ >::type type;
+ };
+
+ template<typename T>
+ struct remove_extent {
+ static T* ar;
+ BOOST_STATIC_CONSTANT(std::size_t, size = sizeof(*ar) / sizeof((*ar)[0]));
+
+ typedef typename
+ select<
+ is_same<T, bool[size]>, bool,
+ is_same<T, char[size]>, char,
+ is_same<T, signed char[size]>, signed char,
+ is_same<T, unsigned char[size]>, unsigned char,
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ is_same<T, wchar_t[size]>, wchar_t,
+ #endif
+ is_same<T, short[size]>, short,
+ is_same<T, unsigned short[size]>, unsigned short,
+ is_same<T, int[size]>, int,
+ is_same<T, unsigned int[size]>, unsigned int,
+ is_same<T, long[size]>, long,
+ is_same<T, unsigned long[size]>, unsigned long,
+ is_same<T, float[size]>, float,
+ is_same<T, double[size]>, double,
+ is_same<T, long double[size]>, long double
+ >::type result1;
+ typedef typename
+ select<
+ is_same<T, const bool[size]>, const bool,
+ is_same<T, const char[size]>, const char,
+ is_same<T, const signed char[size]>, const signed char,
+ is_same<T, const unsigned char[size]>, const unsigned char,
+ #ifndef BOOST_NO_INTRINSIC_WCHAR_T
+ is_same<T, const wchar_t[size]>, const wchar_t,
+ #endif
+ is_same<T, const short[size]>, const short,
+ is_same<T, const unsigned short[size]>, const unsigned short,
+ is_same<T, const int[size]>, const int,
+ is_same<T, const unsigned int[size]>, const unsigned int,
+ is_same<T, const long[size]>, const long,
+ is_same<T, const unsigned long[size]>, const unsigned long,
+ is_same<T, const float[size]>, const float,
+ is_same<T, const double[size]>, const double,
+ is_same<T, const long double[size]>, const long double
+ > result2;
+ typedef typename
+ mpl::eval_if<
+ is_same<result1, mpl::void_>,
+ result2,
+ mpl::identity<result1>
+ >::type type;
+ };
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/sfinae.hpp b/3rdParty/Boost/boost/range/detail/sfinae.hpp
new file mode 100644
index 0000000..5b2c61e
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/sfinae.hpp
@@ -0,0 +1,77 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_SFINAE_HPP
+#define BOOST_RANGE_DETAIL_SFINAE_HPP
+
+#include <boost/range/config.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <utility>
+
+
+namespace boost
+{
+ namespace range_detail
+ {
+ using type_traits::yes_type;
+ using type_traits::no_type;
+
+ //////////////////////////////////////////////////////////////////////
+ // string
+ //////////////////////////////////////////////////////////////////////
+
+ yes_type is_string_impl( const char* const );
+ yes_type is_string_impl( const wchar_t* const );
+ no_type is_string_impl( ... );
+
+ template< std::size_t sz >
+ yes_type is_char_array_impl( char BOOST_RANGE_ARRAY_REF()[sz] );
+ template< std::size_t sz >
+ yes_type is_char_array_impl( const char BOOST_RANGE_ARRAY_REF()[sz] );
+ no_type is_char_array_impl( ... );
+
+ template< std::size_t sz >
+ yes_type is_wchar_t_array_impl( wchar_t BOOST_RANGE_ARRAY_REF()[sz] );
+ template< std::size_t sz >
+ yes_type is_wchar_t_array_impl( const wchar_t BOOST_RANGE_ARRAY_REF()[sz] );
+ no_type is_wchar_t_array_impl( ... );
+
+ yes_type is_char_ptr_impl( char* const );
+ no_type is_char_ptr_impl( ... );
+
+ yes_type is_const_char_ptr_impl( const char* const );
+ no_type is_const_char_ptr_impl( ... );
+
+ yes_type is_wchar_t_ptr_impl( wchar_t* const );
+ no_type is_wchar_t_ptr_impl( ... );
+
+ yes_type is_const_wchar_t_ptr_impl( const wchar_t* const );
+ no_type is_const_wchar_t_ptr_impl( ... );
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ yes_type is_pair_impl( const std::pair<Iterator,Iterator>* );
+ no_type is_pair_impl( ... );
+
+ //////////////////////////////////////////////////////////////////////
+ // tags
+ //////////////////////////////////////////////////////////////////////
+
+ struct char_or_wchar_t_array_tag {};
+
+ } // namespace 'range_detail'
+
+} // namespace 'boost'
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/size_type.hpp b/3rdParty/Boost/boost/range/detail/size_type.hpp
new file mode 100644
index 0000000..ec49f4d
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/size_type.hpp
@@ -0,0 +1,70 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
+#define BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
+
+#include <boost/range/detail/common.hpp>
+
+//////////////////////////////////////////////////////////////////////////////
+// missing partial specialization workaround.
+//////////////////////////////////////////////////////////////////////////////
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_size_type_;
+
+ template<>
+ struct range_size_type_<std_container_>
+ {
+ template< typename C >
+ struct pts
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME C::size_type type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<std_pair_>
+ {
+ template< typename P >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+ template<>
+ struct range_size_type_<array_>
+ {
+ template< typename A >
+ struct pts
+ {
+ typedef std::size_t type;
+ };
+ };
+
+
+ }
+
+ template< typename C >
+ class range_size
+ {
+ typedef typename range_detail::range<C>::type c_type;
+ public:
+ typedef typename range_detail::range_size_type_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;
+ };
+}
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/detail/str_types.hpp b/3rdParty/Boost/boost/range/detail/str_types.hpp
new file mode 100644
index 0000000..f8cab19
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/str_types.hpp
@@ -0,0 +1,38 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2006. 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_STR_TYPES_HPP
+#define BOOST_RANGE_DETAIL_STR_TYPES_HPP
+
+#include <boost/range/size_type.hpp>
+#include <boost/range/iterator.hpp>
+
+namespace boost
+{
+ template< class T >
+ struct range_mutable_iterator<T*>
+ {
+ typedef T* type;
+ };
+
+ template< class T >
+ struct range_const_iterator<T*>
+ {
+ typedef const T* type;
+ };
+
+ template< class T >
+ struct range_size<T*>
+ {
+ typedef std::size_t type;
+ };
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/range/detail/vc6/end.hpp b/3rdParty/Boost/boost/range/detail/vc6/end.hpp
new file mode 100644
index 0000000..4f76af5
--- /dev/null
+++ b/3rdParty/Boost/boost/range/detail/vc6/end.hpp
@@ -0,0 +1,170 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DETAIL_VC6_END_HPP
+#define BOOST_RANGE_DETAIL_VC6_END_HPP
+
+#include <boost/range/detail/implementation_help.hpp>
+#include <boost/range/detail/implementation_help.hpp>
+#include <boost/range/result_iterator.hpp>
+#include <boost/range/detail/common.hpp>
+#include <boost/range/detail/remove_extent.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+ template< typename T >
+ struct range_end;
+
+ //////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_container_>
+ {
+ template< typename C >
+ struct inner {
+ static BOOST_RANGE_DEDUCED_TYPENAME range_result_iterator<C>::type
+ fun( C& c )
+ {
+ return c.end();
+ };
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<std_pair_>
+ {
+ template< typename P >
+ struct inner {
+ static BOOST_RANGE_DEDUCED_TYPENAME range_result_iterator<P>::type
+ fun( const P& p )
+ {
+ return p.second;
+ }
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<array_>
+ {
+ template< typename T >
+ struct inner {
+ static BOOST_DEDUCED_TYPENAME remove_extent<T>::type*
+ fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ };
+ };
+
+
+ template<>
+ struct range_end<char_array_>
+ {
+ template< typename T >
+ struct inner {
+ static BOOST_DEDUCED_TYPENAME remove_extent<T>::type*
+ fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ };
+ };
+
+ template<>
+ struct range_end<wchar_t_array_>
+ {
+ template< typename T >
+ struct inner {
+ static BOOST_DEDUCED_TYPENAME remove_extent<T>::type*
+ fun(T& t)
+ {
+ return t + remove_extent<T>::size;
+ }
+ };
+ };
+
+ //////////////////////////////////////////////////////////////////////
+ // string
+ //////////////////////////////////////////////////////////////////////
+
+ template<>
+ struct range_end<char_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static char* fun( char* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+ template<>
+ struct range_end<const_char_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static const char* fun( const char* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+ template<>
+ struct range_end<wchar_t_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static wchar_t* fun( wchar_t* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+
+ template<>
+ struct range_end<const_wchar_t_ptr_>
+ {
+ template< typename T >
+ struct inner {
+ static const wchar_t* fun( const wchar_t* s )
+ {
+ return boost::range_detail::str_end( s );
+ }
+ };
+ };
+
+ } // namespace 'range_detail'
+
+ template< typename C >
+ inline BOOST_DEDUCED_TYPENAME range_result_iterator<C>::type
+ end( C& c )
+ {
+ return range_detail::range_end<range_detail::range<C>::type>::inner<C>::fun( c );
+ }
+
+} // namespace 'boost'
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/difference_type.hpp b/3rdParty/Boost/boost/range/difference_type.hpp
new file mode 100644
index 0000000..164288f
--- /dev/null
+++ b/3rdParty/Boost/boost/range/difference_type.hpp
@@ -0,0 +1,29 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DIFFERENCE_TYPE_HPP
+#define BOOST_RANGE_DIFFERENCE_TYPE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+
+namespace boost
+{
+ template< class T >
+ struct range_difference : iterator_difference< typename range_iterator<T>::type >
+ { };
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/range/distance.hpp b/3rdParty/Boost/boost/range/distance.hpp
new file mode 100644
index 0000000..42a106d
--- /dev/null
+++ b/3rdParty/Boost/boost/range/distance.hpp
@@ -0,0 +1,34 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2006. 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_DISTANCE_HPP
+#define BOOST_RANGE_DISTANCE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/difference_type.hpp>
+
+namespace boost
+{
+
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_difference<T>::type
+ distance( const T& r )
+ {
+ return std::distance( boost::begin( r ), boost::end( r ) );
+ }
+
+} // namespace 'boost'
+
+#endif
diff --git a/3rdParty/Boost/boost/range/empty.hpp b/3rdParty/Boost/boost/range/empty.hpp
new file mode 100644
index 0000000..78c4e85
--- /dev/null
+++ b/3rdParty/Boost/boost/range/empty.hpp
@@ -0,0 +1,34 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_EMPTY_HPP
+#define BOOST_RANGE_EMPTY_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+
+namespace boost
+{
+
+ template< class T >
+ inline bool empty( const T& r )
+ {
+ return boost::begin( r ) == boost::end( r );
+ }
+
+} // namepace 'boost'
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/end.hpp b/3rdParty/Boost/boost/range/end.hpp
new file mode 100644
index 0000000..3063c02
--- /dev/null
+++ b/3rdParty/Boost/boost/range/end.hpp
@@ -0,0 +1,131 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_END_HPP
+#define BOOST_RANGE_END_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#include <boost/range/detail/end.hpp>
+#else
+
+#include <boost/range/detail/implementation_help.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+
+namespace boost
+{
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+namespace range_detail
+{
+#endif
+
+ //////////////////////////////////////////////////////////////////////
+ // primary template
+ //////////////////////////////////////////////////////////////////////
+ template< typename C >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<C>::type
+ range_end( C& c )
+ {
+ //
+ // If you get a compile-error here, it is most likely because
+ // you have not implemented range_begin() properly in
+ // the namespace of C
+ //
+ return c.end();
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ inline Iterator range_end( const std::pair<Iterator,Iterator>& p )
+ {
+ return p.second;
+ }
+
+ template< typename Iterator >
+ inline Iterator range_end( std::pair<Iterator,Iterator>& p )
+ {
+ return p.second;
+ }
+
+ //////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ inline const T* range_end( const T (&a)[sz] )
+ {
+ return range_detail::array_end<T,sz>( a );
+ }
+
+ template< typename T, std::size_t sz >
+ inline T* range_end( T (&a)[sz] )
+ {
+ return range_detail::array_end<T,sz>( a );
+ }
+
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+} // namespace 'range_detail'
+#endif
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_end( r );
+}
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
+{
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_end( r );
+}
+
+} // 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 )
+ {
+ return boost::end( r );
+ }
+}
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/functions.hpp b/3rdParty/Boost/boost/range/functions.hpp
new file mode 100644
index 0000000..b8b8608
--- /dev/null
+++ b/3rdParty/Boost/boost/range/functions.hpp
@@ -0,0 +1,27 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-2006. 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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_FUNCTIONS_HPP
+#define BOOST_RANGE_FUNCTIONS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/size.hpp>
+#include <boost/range/distance.hpp>
+#include <boost/range/empty.hpp>
+#include <boost/range/rbegin.hpp>
+#include <boost/range/rend.hpp>
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/iterator.hpp b/3rdParty/Boost/boost/range/iterator.hpp
new file mode 100644
index 0000000..21798c5
--- /dev/null
+++ b/3rdParty/Boost/boost/range/iterator.hpp
@@ -0,0 +1,72 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_ITERATOR_HPP
+#define BOOST_RANGE_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/mutable_iterator.hpp>
+#include <boost/range/const_iterator.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+
+namespace boost
+{
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+
+ namespace range_detail_vc7_1
+ {
+ template< typename C, typename Sig = void(C) >
+ struct range_iterator
+ {
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ mpl::eval_if_c< is_const<C>::value,
+ range_const_iterator< typename remove_const<C>::type >,
+ range_mutable_iterator<C> >::type type;
+ };
+
+ template< typename C, typename T >
+ struct range_iterator< C, void(T[]) >
+ {
+ typedef T* type;
+ };
+ }
+
+#endif
+
+ template< typename C >
+ struct range_iterator
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ range_detail_vc7_1::range_iterator<C>::type type;
+
+#else
+
+ typedef BOOST_RANGE_DEDUCED_TYPENAME
+ mpl::eval_if_c< is_const<C>::value,
+ range_const_iterator< typename remove_const<C>::type >,
+ range_mutable_iterator<C> >::type type;
+
+#endif
+ };
+
+} // namespace boost
+
+//#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif
diff --git a/3rdParty/Boost/boost/range/iterator_range.hpp b/3rdParty/Boost/boost/range/iterator_range.hpp
new file mode 100644
index 0000000..d118224
--- /dev/null
+++ b/3rdParty/Boost/boost/range/iterator_range.hpp
@@ -0,0 +1,659 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen & Pavol Droba 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_ITERATOR_RANGE_HPP
+#define BOOST_RANGE_ITERATOR_RANGE_HPP
+
+#include <boost/config.hpp> // Define __STL_CONFIG_H, if appropriate.
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+ #pragma warning( push )
+ #pragma warning( disable : 4996 )
+#endif
+
+// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
+#ifndef BOOST_OLD_IOSTREAMS
+# if defined(__STL_CONFIG_H) && \
+ !defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \
+ /**/
+# define BOOST_OLD_IOSTREAMS
+# endif
+#endif // #ifndef BOOST_OLD_IOSTREAMS
+
+#include <boost/assert.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/type_traits/is_abstract.hpp>
+#include <boost/range/functions.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/range/difference_type.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <iterator>
+#include <algorithm>
+#ifndef _STLP_NO_IOSTREAMS
+# ifndef BOOST_OLD_IOSTREAMS
+# include <ostream>
+# else
+# include <ostream.h>
+# endif
+#endif // _STLP_NO_IOSTREAMS
+#include <cstddef>
+
+/*! \file
+ Defines the \c iterator_class and related functions.
+ \c iterator_range is a simple wrapper of iterator pair idiom. It provides
+ a rich subset of Container interface.
+*/
+
+
+namespace boost
+{
+ namespace iterator_range_detail
+ {
+ //
+ // The functions adl_begin and adl_end are implemented in a separate
+ // class for gcc-2.9x
+ //
+ template<typename IteratorT>
+ struct iterator_range_impl {
+ template< class ForwardRange >
+ static IteratorT adl_begin( ForwardRange& r )
+ {
+ return IteratorT( boost::begin( r ) );
+ }
+
+ template< class ForwardRange >
+ static IteratorT adl_end( ForwardRange& r )
+ {
+ return IteratorT( boost::end( r ) );
+ }
+ };
+
+ template< class Left, class Right >
+ inline bool equal( const Left& l, const Right& r )
+ {
+ typedef BOOST_DEDUCED_TYPENAME boost::range_difference<Left>::type sz_type;
+
+ sz_type l_size = boost::distance( l ),
+ r_size = boost::distance( r );
+
+ if( l_size != r_size )
+ return false;
+
+ return std::equal( boost::begin(l), boost::end(l),
+ boost::begin(r) );
+ }
+
+ template< class Left, class Right >
+ inline bool less_than( const Left& l, const Right& r )
+ {
+ return std::lexicographical_compare( boost::begin(l),
+ boost::end(l),
+ boost::begin(r),
+ boost::end(r) );
+ }
+
+ struct range_tag { };
+ struct const_range_tag { };
+
+ }
+
+// iterator range template class -----------------------------------------//
+
+ //! iterator_range class
+ /*!
+ An \c iterator_range delimits a range in a sequence by beginning and ending iterators.
+ An iterator_range can be passed to an algorithm which requires a sequence as an input.
+ For example, the \c toupper() function may be used most frequently on strings,
+ but can also be used on iterator_ranges:
+
+ \code
+ boost::tolower( find( s, "UPPERCASE STRING" ) );
+ \endcode
+
+ Many algorithms working with sequences take a pair of iterators,
+ delimiting a working range, as an arguments. The \c iterator_range class is an
+ encapsulation of a range identified by a pair of iterators.
+ It provides a collection interface,
+ so it is possible to pass an instance to an algorithm requiring a collection as an input.
+ */
+ template<typename IteratorT>
+ class iterator_range
+ {
+ protected: // Used by sub_range
+ //! implementation class
+ typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
+ public:
+
+ //! this type
+ typedef iterator_range<IteratorT> type;
+ //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
+
+ //! Encapsulated value type
+ typedef BOOST_DEDUCED_TYPENAME
+ iterator_value<IteratorT>::type value_type;
+
+ //! Difference type
+ typedef BOOST_DEDUCED_TYPENAME
+ iterator_difference<IteratorT>::type difference_type;
+
+ //! Size type
+ typedef std::size_t size_type; // note: must be unsigned
+
+ //! This type
+ typedef iterator_range<IteratorT> this_type;
+
+ //! Refence type
+ //
+ // Needed because value-type is the same for
+ // const and non-const iterators
+ //
+ typedef BOOST_DEDUCED_TYPENAME
+ iterator_reference<IteratorT>::type reference;
+
+ //! const_iterator type
+ /*!
+ There is no distinction between const_iterator and iterator.
+ These typedefs are provides to fulfill container interface
+ */
+ typedef IteratorT const_iterator;
+ //! iterator type
+ typedef IteratorT iterator;
+
+ private: // for return value of operator()()
+ typedef BOOST_DEDUCED_TYPENAME
+ boost::mpl::if_< boost::is_abstract<value_type>,
+ reference, value_type >::type abstract_value_type;
+
+ public:
+ iterator_range() : m_Begin( iterator() ), m_End( iterator() )
+ #ifndef NDEBUG
+ , singular( true )
+ #endif
+ { }
+
+ //! Constructor from a pair of iterators
+ template< class Iterator >
+ iterator_range( Iterator Begin, Iterator End ) :
+ m_Begin(Begin), m_End(End)
+ #ifndef NDEBUG
+ , singular(false)
+ #endif
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( const Range& r ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ #ifndef NDEBUG
+ , singular(false)
+ #endif
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( Range& r ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ #ifndef NDEBUG
+ , singular(false)
+ #endif
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( const Range& r, iterator_range_detail::const_range_tag ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ #ifndef NDEBUG
+ , singular(false)
+ #endif
+ {}
+
+ //! Constructor from a Range
+ template< class Range >
+ iterator_range( Range& r, iterator_range_detail::range_tag ) :
+ m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) )
+ #ifndef NDEBUG
+ , singular(false)
+ #endif
+ {}
+
+ #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ this_type& operator=( const this_type& r )
+ {
+ m_Begin = r.begin();
+ m_End = r.end();
+
+ #ifndef NDEBUG
+ singular = r.singular;
+ #endif
+ return *this;
+ }
+ #endif
+
+ template< class Iterator >
+ iterator_range& operator=( const iterator_range<Iterator>& r )
+ {
+ m_Begin = r.begin();
+ m_End = r.end();
+ #ifndef NDEBUG
+ singular = r.is_singular();
+ #endif
+ return *this;
+ }
+
+ template< class ForwardRange >
+ iterator_range& operator=( ForwardRange& r )
+ {
+ m_Begin = impl::adl_begin( r );
+ m_End = impl::adl_end( r );
+ #ifndef NDEBUG
+ singular = false;
+ #endif
+ return *this;
+ }
+
+ template< class ForwardRange >
+ iterator_range& operator=( const ForwardRange& r )
+ {
+ m_Begin = impl::adl_begin( r );
+ m_End = impl::adl_end( r );
+ #ifndef NDEBUG
+ singular = false;
+ #endif
+ return *this;
+ }
+
+ IteratorT begin() const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return m_Begin;
+ }
+
+ IteratorT end() const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return m_End;
+ }
+
+ difference_type size() const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return m_End - m_Begin;
+ }
+
+ bool empty() const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return m_Begin == m_End;
+ }
+
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ operator bool() const
+ {
+ return !empty();
+ }
+#else
+ typedef iterator (iterator_range::*unspecified_bool_type) () const;
+ operator unspecified_bool_type() const
+ {
+ return empty() ? 0: &iterator_range::end;
+ }
+#endif
+
+ bool equal( const iterator_range& r ) const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return m_Begin == r.m_Begin && m_End == r.m_End;
+ }
+
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ bool operator==( const iterator_range& r ) const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return iterator_range_detail::equal( *this, r );
+ }
+
+ bool operator!=( const iterator_range& r ) const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return !operator==(r);
+ }
+
+ bool operator<( const iterator_range& r ) const
+ {
+ BOOST_ASSERT( !is_singular() );
+ return iterator_range_detail::less_than( *this, r );
+ }
+
+#endif
+
+ public: // convenience
+ reference front() const
+ {
+ BOOST_ASSERT( !empty() );
+ return *m_Begin;
+ }
+
+ reference back() const
+ {
+ BOOST_ASSERT( !empty() );
+ IteratorT last( m_End );
+ return *--last;
+ }
+
+ reference operator[]( difference_type at ) const
+ {
+ BOOST_ASSERT( at >= 0 && at < size() );
+ return m_Begin[at];
+ }
+
+ //
+ // When storing transform iterators, operator[]()
+ // fails because it returns by reference. Therefore
+ // operator()() is provided for these cases.
+ //
+ abstract_value_type operator()( difference_type at ) const
+ {
+ BOOST_ASSERT( at >= 0 && at < size() );
+ return m_Begin[at];
+ }
+
+ iterator_range& advance_begin( difference_type n )
+ {
+ BOOST_ASSERT( !is_singular() );
+ std::advance( m_Begin, n );
+ return *this;
+ }
+
+ iterator_range& advance_end( difference_type n )
+ {
+ BOOST_ASSERT( !is_singular() );
+ std::advance( m_End, n );
+ return *this;
+ }
+
+ private:
+ // begin and end iterators
+ IteratorT m_Begin;
+ IteratorT m_End;
+
+ #ifndef NDEBUG
+ bool singular;
+ #endif
+
+ public:
+ bool is_singular() const
+ {
+ #ifndef NDEBUG
+ return singular;
+ #else
+ return false;
+ #endif
+ }
+
+ protected:
+ //
+ // Allow subclasses an easy way to access the
+ // base type
+ //
+ typedef iterator_range iterator_range_;
+ };
+
+// iterator range free-standing operators ---------------------------//
+
+#ifndef _STLP_NO_IOSTREAMS
+# ifndef BOOST_OLD_IOSTREAMS
+
+ //! iterator_range output operator
+ /*!
+ Output the range to an ostream. Elements are outputed
+ in a sequence without separators.
+ */
+ template< typename IteratorT, typename Elem, typename Traits >
+ inline std::basic_ostream<Elem,Traits>& operator<<(
+ std::basic_ostream<Elem, Traits>& Os,
+ const iterator_range<IteratorT>& r )
+ {
+ std::copy( r.begin(), r.end(),
+ std::ostream_iterator< BOOST_DEDUCED_TYPENAME
+ iterator_value<IteratorT>::type,
+ Elem, Traits>(Os) );
+ return Os;
+ }
+
+# else
+
+ //! iterator_range output operator
+ /*!
+ Output the range to an ostream. Elements are outputed
+ in a sequence without separators.
+ */
+ template< typename IteratorT >
+ inline std::ostream& operator<<(
+ std::ostream& Os,
+ const iterator_range<IteratorT>& r )
+ {
+ std::copy( r.begin(), r.end(), std::ostream_iterator<char>(Os));
+ return Os;
+ }
+
+# endif
+#endif // _STLP_NO_IOSTREAMS
+
+ /////////////////////////////////////////////////////////////////////
+ // comparison operators
+ /////////////////////////////////////////////////////////////////////
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator==( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return iterator_range_detail::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator!=( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return !iterator_range_detail::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator<( const ForwardRange& l,
+ const iterator_range<IteratorT>& r )
+ {
+ return iterator_range_detail::less_than( l, r );
+ }
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#else
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator==( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return iterator_range_detail::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator==( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return iterator_range_detail::equal( l, r );
+ }
+
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator!=( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return !iterator_range_detail::equal( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator!=( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return !iterator_range_detail::equal( l, r );
+ }
+
+
+ template< class Iterator1T, class Iterator2T >
+ inline bool operator<( const iterator_range<Iterator1T>& l,
+ const iterator_range<Iterator2T>& r )
+ {
+ return iterator_range_detail::less_than( l, r );
+ }
+
+ template< class IteratorT, class ForwardRange >
+ inline bool operator<( const iterator_range<IteratorT>& l,
+ const ForwardRange& r )
+ {
+ return iterator_range_detail::less_than( l, r );
+ }
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+// iterator range utilities -----------------------------------------//
+
+ //! iterator_range construct helper
+ /*!
+ Construct an \c iterator_range from a pair of iterators
+
+ \param Begin A begin iterator
+ \param End An end iterator
+ \return iterator_range object
+ */
+ template< typename IteratorT >
+ inline iterator_range< IteratorT >
+ make_iterator_range( IteratorT Begin, IteratorT End )
+ {
+ return iterator_range<IteratorT>( Begin, End );
+ }
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ template< typename Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_iterator_range( Range& r )
+ {
+ return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ ( boost::begin( r ), boost::end( r ) );
+ }
+
+#else
+ //! iterator_range construct helper
+ /*!
+ Construct an \c iterator_range from a \c Range containing the begin
+ and end iterators.
+ */
+ template< class ForwardRange >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
+ make_iterator_range( ForwardRange& r )
+ {
+ return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
+ ( r, iterator_range_detail::range_tag() );
+ }
+
+ template< class ForwardRange >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
+ make_iterator_range( const ForwardRange& r )
+ {
+ return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const ForwardRange>::type >
+ ( r, iterator_range_detail::const_range_tag() );
+ }
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ namespace iterator_range_detail
+ {
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_range_impl( Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //
+ // Not worth the effort
+ //
+ //if( advance_begin == 0 && advance_end == 0 )
+ // return make_iterator_range( r );
+ //
+
+ BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
+ new_begin = boost::begin( r ),
+ new_end = boost::end( r );
+ std::advance( new_begin, advance_begin );
+ std::advance( new_end, advance_end );
+ return make_iterator_range( new_begin, new_end );
+ }
+ }
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_iterator_range( Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
+ return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
+ }
+
+#else
+
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
+ make_iterator_range( Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
+ return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
+ }
+
+ template< class Range >
+ inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type >
+ make_iterator_range( const Range& r,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
+ BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
+ {
+ //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
+ return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
+ }
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+ //! copy a range into a sequence
+ /*!
+ Construct a new sequence of the specified type from the elements
+ in the given range
+
+ \param Range An input range
+ \return New sequence
+ */
+ template< typename SeqT, typename Range >
+ inline SeqT copy_range( const Range& r )
+ {
+ return SeqT( boost::begin( r ), boost::end( r ) );
+ }
+
+} // namespace 'boost'
+
+#undef BOOST_OLD_IOSTREAMS
+
+#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
+ #pragma warning( pop )
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/mutable_iterator.hpp b/3rdParty/Boost/boost/range/mutable_iterator.hpp
new file mode 100644
index 0000000..2f45c16
--- /dev/null
+++ b/3rdParty/Boost/boost/range/mutable_iterator.hpp
@@ -0,0 +1,64 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_MUTABLE_ITERATOR_HPP
+#define BOOST_RANGE_MUTABLE_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/range/detail/iterator.hpp>
+#else
+
+#include <boost/iterator/iterator_traits.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost
+{
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ struct range_mutable_iterator
+ {
+ typedef BOOST_DEDUCED_TYPENAME C::iterator type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ struct range_mutable_iterator< std::pair<Iterator,Iterator> >
+ {
+ typedef Iterator type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ struct range_mutable_iterator< T[sz] >
+ {
+ typedef T* type;
+ };
+
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif
diff --git a/3rdParty/Boost/boost/range/rbegin.hpp b/3rdParty/Boost/boost/range/rbegin.hpp
new file mode 100644
index 0000000..78e5f61
--- /dev/null
+++ b/3rdParty/Boost/boost/range/rbegin.hpp
@@ -0,0 +1,65 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_RBEGIN_HPP
+#define BOOST_RANGE_RBEGIN_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/end.hpp>
+#include <boost/range/reverse_iterator.hpp>
+
+namespace boost
+{
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rbegin( C& c )
+{
+ return BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type( boost::end( c ) );
+}
+
+#else
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rbegin( C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+ iter_type;
+ return iter_type( boost::end( c ) );
+}
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+rbegin( const C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+ iter_type;
+ return iter_type( boost::end( c ) );
+}
+
+#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
+const_rbegin( const T& r )
+{
+ return boost::rbegin( r );
+}
+
+} // namespace 'boost'
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/rend.hpp b/3rdParty/Boost/boost/range/rend.hpp
new file mode 100644
index 0000000..fd79aa2
--- /dev/null
+++ b/3rdParty/Boost/boost/range/rend.hpp
@@ -0,0 +1,65 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_REND_HPP
+#define BOOST_RANGE_REND_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/reverse_iterator.hpp>
+
+namespace boost
+{
+
+#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rend( C& c )
+{
+ return BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type( boost::begin( c ) );
+}
+
+#else
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+rend( C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<C>::type
+ iter_type;
+ return iter_type( boost::begin( c ) );
+}
+
+template< class C >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+rend( const C& c )
+{
+ typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator<const C>::type
+ iter_type;
+ return iter_type( boost::begin( c ) );
+}
+
+#endif
+
+template< class T >
+inline BOOST_DEDUCED_TYPENAME range_reverse_iterator<const T>::type
+const_rend( const T& r )
+{
+ return boost::rend( r );
+}
+
+} // namespace 'boost'
+
+#endif
+
diff --git a/3rdParty/Boost/boost/range/result_iterator.hpp b/3rdParty/Boost/boost/range/result_iterator.hpp
new file mode 100644
index 0000000..ba09c5f
--- /dev/null
+++ b/3rdParty/Boost/boost/range/result_iterator.hpp
@@ -0,0 +1,33 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_RESULT_ITERATOR_HPP
+#define BOOST_RANGE_RESULT_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/range/iterator.hpp>
+
+namespace boost
+{
+ //
+ // This interface is deprecated, use range_iterator<T>
+ //
+
+ template< typename C >
+ struct range_result_iterator : range_iterator<C>
+ { };
+
+} // namespace boost
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/reverse_iterator.hpp b/3rdParty/Boost/boost/range/reverse_iterator.hpp
new file mode 100644
index 0000000..f8e9221
--- /dev/null
+++ b/3rdParty/Boost/boost/range/reverse_iterator.hpp
@@ -0,0 +1,40 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_REVERSE_ITERATOR_HPP
+#define BOOST_RANGE_REVERSE_ITERATOR_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/iterator.hpp>
+#include <boost/iterator/reverse_iterator.hpp>
+
+
+namespace boost
+{
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ struct range_reverse_iterator
+ {
+ typedef reverse_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<C>::type > type;
+ };
+
+
+} // namespace boost
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/size.hpp b/3rdParty/Boost/boost/range/size.hpp
new file mode 100644
index 0000000..311a692
--- /dev/null
+++ b/3rdParty/Boost/boost/range/size.hpp
@@ -0,0 +1,36 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_SIZE_HPP
+#define BOOST_RANGE_SIZE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/begin.hpp>
+#include <boost/range/end.hpp>
+#include <boost/range/difference_type.hpp>
+#include <boost/assert.hpp>
+
+namespace boost
+{
+
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_difference<T>::type size( const T& r )
+ {
+ BOOST_ASSERT( (boost::end( r ) - boost::begin( r )) >= 0 &&
+ "reachability invariant broken!" );
+ return boost::end( r ) - boost::begin( r );
+ }
+
+} // namespace 'boost'
+
+#endif
diff --git a/3rdParty/Boost/boost/range/size_type.hpp b/3rdParty/Boost/boost/range/size_type.hpp
new file mode 100644
index 0000000..7ed8dfa
--- /dev/null
+++ b/3rdParty/Boost/boost/range/size_type.hpp
@@ -0,0 +1,78 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_SIZE_TYPE_HPP
+#define BOOST_RANGE_SIZE_TYPE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/range/detail/size_type.hpp>
+#else
+
+#include <boost/type_traits/remove_const.hpp>
+#include <cstddef>
+#include <utility>
+
+namespace boost
+{
+ namespace detail
+ {
+
+ //////////////////////////////////////////////////////////////////////////
+ // default
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename C >
+ struct range_size
+ {
+ typedef BOOST_DEDUCED_TYPENAME C::size_type type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // pair
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename Iterator >
+ struct range_size< std::pair<Iterator,Iterator> >
+ {
+ typedef std::size_t type;
+ };
+
+ //////////////////////////////////////////////////////////////////////////
+ // array
+ //////////////////////////////////////////////////////////////////////////
+
+ template< typename T, std::size_t sz >
+ struct range_size< T[sz] >
+ {
+ typedef std::size_t type;
+ };
+ }
+
+ template< class T >
+ struct range_size :
+ detail::range_size<T>
+ { };
+
+ template< class T >
+ struct range_size<const T > : range_size<T>
+ { };
+
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+
+#endif
diff --git a/3rdParty/Boost/boost/range/value_type.hpp b/3rdParty/Boost/boost/range/value_type.hpp
new file mode 100644
index 0000000..95c7580
--- /dev/null
+++ b/3rdParty/Boost/boost/range/value_type.hpp
@@ -0,0 +1,34 @@
+// Boost.Range library
+//
+// Copyright Thorsten Ottosen 2003-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)
+//
+// For more information, see http://www.boost.org/libs/range/
+//
+
+#ifndef BOOST_RANGE_VALUE_TYPE_HPP
+#define BOOST_RANGE_VALUE_TYPE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# pragma once
+#endif
+
+#include <boost/range/config.hpp>
+#include <boost/range/iterator.hpp>
+
+//#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//#include <boost/range/detail/value_type.hpp>
+//#else
+
+#include <boost/iterator/iterator_traits.hpp>
+
+namespace boost
+{
+ template< class T >
+ struct range_value : iterator_value< typename range_iterator<T>::type >
+ { };
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/ref.hpp b/3rdParty/Boost/boost/ref.hpp
new file mode 100644
index 0000000..0d747bd
--- /dev/null
+++ b/3rdParty/Boost/boost/ref.hpp
@@ -0,0 +1,183 @@
+#ifndef BOOST_REF_HPP_INCLUDED
+#define BOOST_REF_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+#include <boost/config.hpp>
+#include <boost/utility/addressof.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/detail/workaround.hpp>
+
+//
+// ref.hpp - ref/cref, useful helper functions
+//
+// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+// Copyright (C) 2001, 2002 Peter Dimov
+// Copyright (C) 2002 David Abrahams
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/bind/ref.html for documentation.
+//
+
+namespace boost
+{
+
+template<class T> class reference_wrapper
+{
+public:
+ typedef T type;
+
+#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1300 )
+
+ explicit reference_wrapper(T& t): t_(&t) {}
+
+#else
+
+ explicit reference_wrapper(T& t): t_(boost::addressof(t)) {}
+
+#endif
+
+ operator T& () const { return *t_; }
+
+ T& get() const { return *t_; }
+
+ T* get_pointer() const { return t_; }
+
+private:
+
+ T* t_;
+};
+
+# if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) )
+# define BOOST_REF_CONST
+# else
+# define BOOST_REF_CONST const
+# endif
+
+template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
+{
+ return reference_wrapper<T>(t);
+}
+
+template<class T> inline reference_wrapper<T const> BOOST_REF_CONST cref(T const & t)
+{
+ return reference_wrapper<T const>(t);
+}
+
+# undef BOOST_REF_CONST
+
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template<typename T>
+class is_reference_wrapper
+ : public mpl::false_
+{
+};
+
+template<typename T>
+class unwrap_reference
+{
+ public:
+ typedef T type;
+};
+
+# define AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(X) \
+template<typename T> \
+class is_reference_wrapper< X > \
+ : public mpl::true_ \
+{ \
+}; \
+\
+template<typename T> \
+class unwrap_reference< X > \
+{ \
+ public: \
+ typedef T type; \
+}; \
+/**/
+
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T>)
+#if !defined(BOOST_NO_CV_SPECIALIZATIONS)
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> const)
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> volatile)
+AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF(reference_wrapper<T> const volatile)
+#endif
+
+# undef AUX_REFERENCE_WRAPPER_METAFUNCTIONS_DEF
+
+# else // no partial specialization
+
+} // namespace boost
+
+#include <boost/type.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+ typedef char (&yes_reference_wrapper_t)[1];
+ typedef char (&no_reference_wrapper_t)[2];
+
+ no_reference_wrapper_t is_reference_wrapper_test(...);
+
+ template<typename T>
+ yes_reference_wrapper_t is_reference_wrapper_test(type< reference_wrapper<T> >);
+
+ template<bool wrapped>
+ struct reference_unwrapper
+ {
+ template <class T>
+ struct apply
+ {
+ typedef T type;
+ };
+ };
+
+ template<>
+ struct reference_unwrapper<true>
+ {
+ template <class T>
+ struct apply
+ {
+ typedef typename T::type type;
+ };
+ };
+}
+
+template<typename T>
+class is_reference_wrapper
+{
+ public:
+ BOOST_STATIC_CONSTANT(
+ bool, value = (
+ sizeof(detail::is_reference_wrapper_test(type<T>()))
+ == sizeof(detail::yes_reference_wrapper_t)));
+
+ typedef ::boost::mpl::bool_<value> type;
+};
+
+template <typename T>
+class unwrap_reference
+ : public detail::reference_unwrapper<
+ is_reference_wrapper<T>::value
+ >::template apply<T>
+{};
+
+# endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template<class T> inline T* get_pointer( reference_wrapper<T> const & r )
+{
+ return r.get_pointer();
+}
+
+} // namespace boost
+
+#endif // #ifndef BOOST_REF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/regex.hpp b/3rdParty/Boost/boost/regex.hpp
new file mode 100644
index 0000000..6dc3dfb
--- /dev/null
+++ b/3rdParty/Boost/boost/regex.hpp
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org/libs/regex for documentation.
+ * FILE regex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares boost::basic_regex<> and associated
+ * functions and classes. This header is the main
+ * entry point for the template regex code.
+ */
+
+
+/* start with C compatibility API */
+
+#ifndef BOOST_RE_REGEX_HPP
+#define BOOST_RE_REGEX_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <boost/regex/v4/regex.hpp>
+
+#endif // include
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/config.hpp b/3rdParty/Boost/boost/regex/config.hpp
new file mode 100644
index 0000000..8c8f524
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/config.hpp
@@ -0,0 +1,417 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE config.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex extended config setup.
+ */
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#define BOOST_REGEX_CONFIG_HPP
+/*
+ * Borland C++ Fix/error check
+ * this has to go *before* we include any std lib headers:
+ */
+#if defined(__BORLANDC__)
+# include <boost/regex/config/borland.hpp>
+#endif
+
+/*****************************************************************************
+ *
+ * Include all the headers we need here:
+ *
+ ****************************************************************************/
+
+#ifdef __cplusplus
+
+# ifndef BOOST_REGEX_USER_CONFIG
+# define BOOST_REGEX_USER_CONFIG <boost/regex/user.hpp>
+# endif
+
+# include BOOST_REGEX_USER_CONFIG
+
+# include <boost/config.hpp>
+
+#else
+ /*
+ * C build,
+ * don't include <boost/config.hpp> because that may
+ * do C++ specific things in future...
+ */
+# include <stdlib.h>
+# include <stddef.h>
+# ifdef _MSC_VER
+# define BOOST_MSVC _MSC_VER
+# endif
+#endif
+
+/*****************************************************************************
+ *
+ * Boilerplate regex config options:
+ *
+ ****************************************************************************/
+
+/* Obsolete macro, use BOOST_VERSION instead: */
+#define BOOST_RE_VERSION 320
+
+/* fix: */
+#if defined(_UNICODE) && !defined(UNICODE)
+#define UNICODE
+#endif
+
+/*
+ * Fix for gcc prior to 3.4: std::ctype<wchar_t> doesn't allow
+ * masks to be combined, for example:
+ * std::use_facet<std::ctype<wchar_t> >.is(std::ctype_base::lower|std::ctype_base::upper, L'a');
+ * returns *false*.
+ */
+#ifdef __GLIBCPP__
+# define BOOST_REGEX_BUGGY_CTYPE_FACET
+#endif
+
+/*
+ * Intel C++ before 8.0 ends up with unresolved externals unless we turn off
+ * extern template support:
+ */
+#if defined(BOOST_INTEL) && defined(__cplusplus) && (BOOST_INTEL <= 800)
+# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+#endif
+/*
+ * Visual C++ doesn't support external templates with C++ extensions turned off:
+ */
+#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
+# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+#endif
+
+/*
+ * If there isn't good enough wide character support then there will
+ * be no wide character regular expressions:
+ */
+#if (defined(BOOST_NO_CWCHAR) || defined(BOOST_NO_CWCTYPE) || defined(BOOST_NO_STD_WSTRING))
+# if !defined(BOOST_NO_WREGEX)
+# define BOOST_NO_WREGEX
+# endif
+#else
+# if defined(__sgi) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
+ /* STLPort on IRIX is misconfigured: <cwctype> does not compile
+ * as a temporary fix include <wctype.h> instead and prevent inclusion
+ * of STLPort version of <cwctype> */
+# include <wctype.h>
+# define __STLPORT_CWCTYPE
+# define _STLP_CWCTYPE
+# endif
+
+#ifdef __cplusplus
+# include <boost/regex/config/cwchar.hpp>
+#endif
+
+#endif
+
+/*
+ * If Win32 support has been disabled for boost in general, then
+ * it is for regex in particular:
+ */
+#if defined(BOOST_DISABLE_WIN32) && !defined(BOOST_REGEX_NO_W32)
+# define BOOST_REGEX_NO_W32
+#endif
+
+/* disable our own file-iterators and mapfiles if we can't
+ * support them: */
+#if !defined(BOOST_HAS_DIRENT_H) && !(defined(_WIN32) && !defined(BOOST_REGEX_NO_W32))
+# define BOOST_REGEX_NO_FILEITER
+#endif
+
+/* backwards compatibitity: */
+#if defined(BOOST_RE_NO_LIB)
+# define BOOST_REGEX_NO_LIB
+#endif
+
+#if defined(__GNUC__) && (defined(_WIN32) || defined(__CYGWIN__))
+/* gcc on win32 has problems if you include <windows.h>
+ (sporadically generates bad code). */
+# define BOOST_REGEX_NO_W32
+#endif
+#if defined(__COMO__) && !defined(BOOST_REGEX_NO_W32) && !defined(_MSC_EXTENSIONS)
+# define BOOST_REGEX_NO_W32
+#endif
+
+/*****************************************************************************
+ *
+ * Wide character workarounds:
+ *
+ ****************************************************************************/
+
+/*
+ * define BOOST_REGEX_HAS_OTHER_WCHAR_T when wchar_t is a native type, but the users
+ * code may be built with wchar_t as unsigned short: basically when we're building
+ * with MSVC and the /Zc:wchar_t option we place some extra unsigned short versions
+ * of the non-inline functions in the library, so that users can still link to the lib,
+ * irrespective of whether their own code is built with /Zc:wchar_t.
+ */
+#if defined(__cplusplus) && (defined(BOOST_MSVC) || defined(__ICL)) && !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(BOOST_WINDOWS) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) && !defined(BOOST_RWSTD_VER)
+# define BOOST_REGEX_HAS_OTHER_WCHAR_T
+# ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4251 4231 4660)
+# endif
+# ifdef _DLL
+# include <string>
+ extern template class __declspec(dllimport) std::basic_string<unsigned short>;
+# endif
+# ifdef BOOST_MSVC
+# pragma warning(pop)
+# endif
+#endif
+
+
+/*****************************************************************************
+ *
+ * Set up dll import/export options:
+ *
+ ****************************************************************************/
+
+#if defined(BOOST_HAS_DECLSPEC) && (defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)) && !defined(BOOST_REGEX_STATIC_LINK)
+# if defined(BOOST_REGEX_SOURCE)
+# define BOOST_REGEX_DECL __declspec(dllexport)
+# define BOOST_REGEX_BUILD_DLL
+# else
+# define BOOST_REGEX_DECL __declspec(dllimport)
+# endif
+#endif
+
+#ifndef BOOST_REGEX_DECL
+# define BOOST_REGEX_DECL
+#endif
+
+#if !defined(BOOST_REGEX_NO_LIB) && !defined(BOOST_REGEX_SOURCE) && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)
+# define BOOST_LIB_NAME boost_regex
+# if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
+# define BOOST_DYN_LINK
+# endif
+# ifdef BOOST_REGEX_DIAG
+# define BOOST_LIB_DIAGNOSTIC
+# endif
+# include <boost/config/auto_link.hpp>
+#endif
+
+/*****************************************************************************
+ *
+ * Set up function call type:
+ *
+ ****************************************************************************/
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1200) && defined(_MSC_EXTENSIONS)
+#if defined(_DEBUG) || defined(__MSVC_RUNTIME_CHECKS) || defined(_MANAGED)
+# define BOOST_REGEX_CALL __cdecl
+#else
+# define BOOST_REGEX_CALL __fastcall
+#endif
+# define BOOST_REGEX_CCALL __cdecl
+#endif
+
+#if defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32)
+# define BOOST_REGEX_CALL __fastcall
+# define BOOST_REGEX_CCALL __stdcall
+#endif
+
+#ifndef BOOST_REGEX_CALL
+# define BOOST_REGEX_CALL
+#endif
+#ifndef BOOST_REGEX_CCALL
+#define BOOST_REGEX_CCALL
+#endif
+
+/*****************************************************************************
+ *
+ * Set up localisation model:
+ *
+ ****************************************************************************/
+
+/* backwards compatibility: */
+#ifdef BOOST_RE_LOCALE_C
+# define BOOST_REGEX_USE_C_LOCALE
+#endif
+
+#ifdef BOOST_RE_LOCALE_CPP
+# define BOOST_REGEX_USE_CPP_LOCALE
+#endif
+
+/* Win32 defaults to native Win32 locale: */
+#if defined(_WIN32) && !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_REGEX_NO_W32)
+# define BOOST_REGEX_USE_WIN32_LOCALE
+#endif
+/* otherwise use C++ locale if supported: */
+#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE) && !defined(BOOST_NO_STD_LOCALE)
+# define BOOST_REGEX_USE_CPP_LOCALE
+#endif
+/* otherwise use C+ locale: */
+#if !defined(BOOST_REGEX_USE_WIN32_LOCALE) && !defined(BOOST_REGEX_USE_C_LOCALE) && !defined(BOOST_REGEX_USE_CPP_LOCALE)
+# define BOOST_REGEX_USE_C_LOCALE
+#endif
+
+#ifndef BOOST_REGEX_MAX_STATE_COUNT
+# define BOOST_REGEX_MAX_STATE_COUNT 100000000
+#endif
+
+
+/*****************************************************************************
+ *
+ * Error Handling for exception free compilers:
+ *
+ ****************************************************************************/
+
+#ifdef BOOST_NO_EXCEPTIONS
+/*
+ * If there are no exceptions then we must report critical-errors
+ * the only way we know how; by terminating.
+ */
+#include <stdexcept>
+#include <string>
+#include <boost/throw_exception.hpp>
+
+# define BOOST_REGEX_NOEH_ASSERT(x)\
+if(0 == (x))\
+{\
+ std::string s("Error: critical regex++ failure in: ");\
+ s.append(#x);\
+ std::runtime_error e(s);\
+ boost::throw_exception(e);\
+}
+#else
+/*
+ * With exceptions then error handling is taken care of and
+ * there is no need for these checks:
+ */
+# define BOOST_REGEX_NOEH_ASSERT(x)
+#endif
+
+
+/*****************************************************************************
+ *
+ * Stack protection under MS Windows:
+ *
+ ****************************************************************************/
+
+#if !defined(BOOST_REGEX_NO_W32) && !defined(BOOST_REGEX_V3)
+# if(defined(_WIN32) || defined(_WIN64) || defined(_WINCE)) \
+ && !defined(__GNUC__) \
+ && !(defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)) \
+ && !(defined(__MWERKS__) && (__MWERKS__ <= 0x3003))
+# define BOOST_REGEX_HAS_MS_STACK_GUARD
+# endif
+#elif defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
+# undef BOOST_REGEX_HAS_MS_STACK_GUARD
+#endif
+
+#if defined(__cplusplus) && defined(BOOST_REGEX_HAS_MS_STACK_GUARD)
+
+namespace boost{
+namespace re_detail{
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL reset_stack_guard_page();
+
+}
+}
+
+#endif
+
+
+/*****************************************************************************
+ *
+ * Algorithm selection and configuration:
+ *
+ ****************************************************************************/
+
+#if !defined(BOOST_REGEX_RECURSIVE) && !defined(BOOST_REGEX_NON_RECURSIVE)
+# if defined(BOOST_REGEX_HAS_MS_STACK_GUARD) && !defined(_STLP_DEBUG) && !defined(__STL_DEBUG) && !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1400))
+# define BOOST_REGEX_RECURSIVE
+# else
+# define BOOST_REGEX_NON_RECURSIVE
+# endif
+#endif
+
+#ifdef BOOST_REGEX_NON_RECURSIVE
+# ifdef BOOST_REGEX_RECURSIVE
+# error "Can't set both BOOST_REGEX_RECURSIVE and BOOST_REGEX_NON_RECURSIVE"
+# endif
+# ifndef BOOST_REGEX_BLOCKSIZE
+# define BOOST_REGEX_BLOCKSIZE 4096
+# endif
+# if BOOST_REGEX_BLOCKSIZE < 512
+# error "BOOST_REGEX_BLOCKSIZE must be at least 512"
+# endif
+# ifndef BOOST_REGEX_MAX_BLOCKS
+# define BOOST_REGEX_MAX_BLOCKS 1024
+# endif
+# ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+# undef BOOST_REGEX_HAS_MS_STACK_GUARD
+# endif
+# ifndef BOOST_REGEX_MAX_CACHE_BLOCKS
+# define BOOST_REGEX_MAX_CACHE_BLOCKS 16
+# endif
+#endif
+
+
+/*****************************************************************************
+ *
+ * helper memory allocation functions:
+ *
+ ****************************************************************************/
+
+#if defined(__cplusplus) && defined(BOOST_REGEX_NON_RECURSIVE)
+namespace boost{ namespace re_detail{
+
+BOOST_REGEX_DECL void* BOOST_REGEX_CALL get_mem_block();
+BOOST_REGEX_DECL void BOOST_REGEX_CALL put_mem_block(void*);
+
+}} /* namespaces */
+#endif
+
+/*****************************************************************************
+ *
+ * Diagnostics:
+ *
+ ****************************************************************************/
+
+#ifdef BOOST_REGEX_CONFIG_INFO
+BOOST_REGEX_DECL void BOOST_REGEX_CALL print_regex_library_info();
+#endif
+
+#if defined(BOOST_REGEX_DIAG)
+# pragma message ("BOOST_REGEX_DECL" BOOST_STRINGIZE(=BOOST_REGEX_DECL))
+# pragma message ("BOOST_REGEX_CALL" BOOST_STRINGIZE(=BOOST_REGEX_CALL))
+# pragma message ("BOOST_REGEX_CCALL" BOOST_STRINGIZE(=BOOST_REGEX_CCALL))
+#ifdef BOOST_REGEX_USE_C_LOCALE
+# pragma message ("Using C locale in regex traits class")
+#elif BOOST_REGEX_USE_CPP_LOCALE
+# pragma message ("Using C++ locale in regex traits class")
+#else
+# pragma message ("Using Win32 locale in regex traits class")
+#endif
+#if defined(BOOST_REGEX_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)
+# pragma message ("Dynamic linking enabled")
+#endif
+#if defined(BOOST_REGEX_NO_LIB) || defined(BOOST_ALL_NO_LIB)
+# pragma message ("Auto-linking disabled")
+#endif
+#ifdef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+# pragma message ("Extern templates disabled")
+#endif
+
+#endif
+
+#endif
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/config/borland.hpp b/3rdParty/Boost/boost/regex/config/borland.hpp
new file mode 100644
index 0000000..51c2126
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/config/borland.hpp
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE boost/regex/config/borland.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex borland-specific config setup.
+ */
+
+
+#if defined(__BORLANDC__)
+# if (__BORLANDC__ == 0x550) || (__BORLANDC__ == 0x551)
+ // problems with std::basic_string and dll RTL:
+# if defined(_RTLDLL) && defined(_RWSTD_COMPILE_INSTANTIATE)
+# ifdef BOOST_REGEX_BUILD_DLL
+# error _RWSTD_COMPILE_INSTANTIATE must not be defined when building regex++ as a DLL
+# else
+# pragma message("Defining _RWSTD_COMPILE_INSTANTIATE when linking to the DLL version of the RTL may produce memory corruption problems in std::basic_string, as a result of separate versions of basic_string's static data in the RTL and you're exe/dll: be warned!!")
+# endif
+# endif
+# ifndef _RTLDLL
+ // this is harmless for a staic link:
+# define _RWSTD_COMPILE_INSTANTIATE
+# endif
+ // external templates cause problems for some reason:
+# define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+# endif
+# if (__BORLANDC__ <= 0x540) && !defined(BOOST_REGEX_NO_LIB) && !defined(_NO_VCL)
+ // C++ Builder 4 and earlier, we can't tell whether we should be using
+ // the VCL runtime or not, do a static link instead:
+# define BOOST_REGEX_STATIC_LINK
+# endif
+ //
+ // VCL support:
+ // if we're building a console app then there can't be any VCL (can there?)
+# if !defined(__CONSOLE__) && !defined(_NO_VCL)
+# define BOOST_REGEX_USE_VCL
+# endif
+ //
+ // if this isn't Win32 then don't automatically select link
+ // libraries:
+ //
+# ifndef _Windows
+# ifndef BOOST_REGEX_NO_LIB
+# define BOOST_REGEX_NO_LIB
+# endif
+# ifndef BOOST_REGEX_STATIC_LINK
+# define BOOST_REGEX_STATIC_LINK
+# endif
+# endif
+
+#if __BORLANDC__ < 0x600
+//
+// string workarounds:
+//
+#include <cstring>
+#undef strcmp
+#undef strcpy
+#endif
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/regex/config/cwchar.hpp b/3rdParty/Boost/boost/regex/config/cwchar.hpp
new file mode 100644
index 0000000..a55089d
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/config/cwchar.hpp
@@ -0,0 +1,207 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE boost/regex/config/cwchar.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: regex wide character string fixes.
+ */
+
+#ifndef BOOST_REGEX_CONFIG_CWCHAR_HPP
+#define BOOST_REGEX_CONFIG_CWCHAR_HPP
+
+#include <cwchar>
+#include <cwctype>
+#include <boost/config.hpp>
+
+#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
+// apparently this is required for the RW STL on Linux:
+#undef iswalnum
+#undef iswalpha
+#undef iswblank
+#undef iswcntrl
+#undef iswdigit
+#undef iswgraph
+#undef iswlower
+#undef iswprint
+#undef iswprint
+#undef iswpunct
+#undef iswspace
+#undef iswupper
+#undef iswxdigit
+#undef iswctype
+#undef towlower
+#undef towupper
+#undef towctrans
+#undef wctrans
+#undef wctype
+#endif
+
+namespace std{
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+extern "C"{
+#endif
+
+#ifdef iswalnum
+inline int (iswalnum)(wint_t i)
+{ return iswalnum(i); }
+#undef iswalnum
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswalnum;
+#endif
+
+#ifdef iswalpha
+inline int (iswalpha)(wint_t i)
+{ return iswalpha(i); }
+#undef iswalpha
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswalpha;
+#endif
+
+#ifdef iswcntrl
+inline int (iswcntrl)(wint_t i)
+{ return iswcntrl(i); }
+#undef iswcntrl
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswcntrl;
+#endif
+
+#ifdef iswdigit
+inline int (iswdigit)(wint_t i)
+{ return iswdigit(i); }
+#undef iswdigit
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswdigit;
+#endif
+
+#ifdef iswgraph
+inline int (iswgraph)(wint_t i)
+{ return iswgraph(i); }
+#undef iswgraph
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswgraph;
+#endif
+
+#ifdef iswlower
+inline int (iswlower)(wint_t i)
+{ return iswlower(i); }
+#undef iswlower
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswlower;
+#endif
+
+#ifdef iswprint
+inline int (iswprint)(wint_t i)
+{ return iswprint(i); }
+#undef iswprint
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswprint;
+#endif
+
+#ifdef iswpunct
+inline int (iswpunct)(wint_t i)
+{ return iswpunct(i); }
+#undef iswpunct
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswpunct;
+#endif
+
+#ifdef iswspace
+inline int (iswspace)(wint_t i)
+{ return iswspace(i); }
+#undef iswspace
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswspace;
+#endif
+
+#ifdef iswupper
+inline int (iswupper)(wint_t i)
+{ return iswupper(i); }
+#undef iswupper
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswupper;
+#endif
+
+#ifdef iswxdigit
+inline int (iswxdigit)(wint_t i)
+{ return iswxdigit(i); }
+#undef iswxdigit
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::iswxdigit;
+#endif
+
+#ifdef towlower
+inline wint_t (towlower)(wint_t i)
+{ return towlower(i); }
+#undef towlower
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::towlower;
+#endif
+
+#ifdef towupper
+inline wint_t (towupper)(wint_t i)
+{ return towupper(i); }
+#undef towupper
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using :: towupper;
+#endif
+
+#ifdef wcscmp
+inline int (wcscmp)(const wchar_t *p1, const wchar_t *p2)
+{ return wcscmp(p1,p2); }
+#undef wcscmp
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcscmp;
+#endif
+
+#ifdef wcscoll
+inline int (wcscoll)(const wchar_t *p1, const wchar_t *p2)
+{ return wcscoll(p1,p2); }
+#undef wcscoll
+#elif defined(BOOST_NO_STDC_NAMESPACE) && !defined(UNDER_CE)
+using ::wcscoll;
+#endif
+
+#ifdef wcscpy
+inline wchar_t *(wcscpy)(wchar_t *p1, const wchar_t *p2)
+{ return wcscpy(p1,p2); }
+#undef wcscpy
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcscpy;
+#endif
+
+#ifdef wcslen
+inline size_t (wcslen)(const wchar_t *p)
+{ return wcslen(p); }
+#undef wcslen
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcslen;
+#endif
+
+#ifdef wcsxfrm
+size_t wcsxfrm(wchar_t *p1, const wchar_t *p2, size_t s)
+{ return wcsxfrm(p1,p2,s); }
+#undef wcsxfrm
+#elif defined(BOOST_NO_STDC_NAMESPACE)
+using ::wcsxfrm;
+#endif
+
+
+#ifndef BOOST_NO_STDC_NAMESPACE
+} // extern "C"
+#endif
+
+} // namespace std
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/icu.hpp b/3rdParty/Boost/boost/regex/icu.hpp
new file mode 100644
index 0000000..7af1d67
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/icu.hpp
@@ -0,0 +1,1017 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE icu.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Unicode regular expressions on top of the ICU Library.
+ */
+
+#ifndef BOOST_REGEX_ICU_HPP
+#define BOOST_REGEX_ICU_HPP
+
+#include <unicode/utypes.h>
+#include <unicode/uchar.h>
+#include <unicode/coll.h>
+#include <boost/regex.hpp>
+#include <boost/regex/pending/unicode_iterator.hpp>
+#include <boost/mpl/int_fwd.hpp>
+#include <bitset>
+
+
+namespace boost{
+
+namespace re_detail{
+
+//
+// Implementation details:
+//
+class BOOST_REGEX_DECL icu_regex_traits_implementation
+{
+ typedef UChar32 char_type;
+ typedef std::size_t size_type;
+ typedef std::vector<char_type> string_type;
+ typedef U_NAMESPACE_QUALIFIER Locale locale_type;
+ typedef boost::uint_least32_t char_class_type;
+public:
+ icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& l)
+ : m_locale(l)
+ {
+ UErrorCode success = U_ZERO_ERROR;
+ m_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
+ if(U_SUCCESS(success) == 0)
+ init_error();
+ m_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::IDENTICAL);
+ success = U_ZERO_ERROR;
+ m_primary_collator.reset(U_NAMESPACE_QUALIFIER Collator::createInstance(l, success));
+ if(U_SUCCESS(success) == 0)
+ init_error();
+ m_primary_collator->setStrength(U_NAMESPACE_QUALIFIER Collator::PRIMARY);
+ }
+ U_NAMESPACE_QUALIFIER Locale getloc()const
+ {
+ return m_locale;
+ }
+ string_type do_transform(const char_type* p1, const char_type* p2, const U_NAMESPACE_QUALIFIER Collator* pcoll) const;
+ string_type transform(const char_type* p1, const char_type* p2) const
+ {
+ return do_transform(p1, p2, m_collator.get());
+ }
+ string_type transform_primary(const char_type* p1, const char_type* p2) const
+ {
+ return do_transform(p1, p2, m_primary_collator.get());
+ }
+private:
+ void init_error()
+ {
+ std::runtime_error e("Could not initialize ICU resources");
+ boost::throw_exception(e);
+ }
+ U_NAMESPACE_QUALIFIER Locale m_locale; // The ICU locale that we're using
+ boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_collator; // The full collation object
+ boost::scoped_ptr< U_NAMESPACE_QUALIFIER Collator> m_primary_collator; // The primary collation object
+};
+
+inline boost::shared_ptr<icu_regex_traits_implementation> get_icu_regex_traits_implementation(const U_NAMESPACE_QUALIFIER Locale& loc)
+{
+ return boost::shared_ptr<icu_regex_traits_implementation>(new icu_regex_traits_implementation(loc));
+}
+
+}
+
+class BOOST_REGEX_DECL icu_regex_traits
+{
+public:
+ typedef UChar32 char_type;
+ typedef std::size_t size_type;
+ typedef std::vector<char_type> string_type;
+ typedef U_NAMESPACE_QUALIFIER Locale locale_type;
+#ifdef BOOST_NO_INT64_T
+ typedef std::bitset<64> char_class_type;
+#else
+ typedef boost::uint64_t char_class_type;
+#endif
+
+ struct boost_extensions_tag{};
+
+ icu_regex_traits()
+ : m_pimpl(re_detail::get_icu_regex_traits_implementation(U_NAMESPACE_QUALIFIER Locale()))
+ {
+ }
+ static size_type length(const char_type* p);
+
+ ::boost::regex_constants::syntax_type syntax_type(char_type c)const
+ {
+ return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
+ }
+ ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c) const
+ {
+ return ((c < 0x7f) && (c > 0)) ? re_detail::get_default_escape_syntax_type(static_cast<char>(c)) : regex_constants::syntax_char;
+ }
+ char_type translate(char_type c) const
+ {
+ return c;
+ }
+ char_type translate_nocase(char_type c) const
+ {
+ return ::u_tolower(c);
+ }
+ char_type translate(char_type c, bool icase) const
+ {
+ return icase ? translate_nocase(c) : translate(c);
+ }
+ char_type tolower(char_type c) const
+ {
+ return ::u_tolower(c);
+ }
+ char_type toupper(char_type c) const
+ {
+ return ::u_toupper(c);
+ }
+ string_type transform(const char_type* p1, const char_type* p2) const
+ {
+ return m_pimpl->transform(p1, p2);
+ }
+ string_type transform_primary(const char_type* p1, const char_type* p2) const
+ {
+ return m_pimpl->transform_primary(p1, p2);
+ }
+ char_class_type lookup_classname(const char_type* p1, const char_type* p2) const;
+ string_type lookup_collatename(const char_type* p1, const char_type* p2) const;
+ bool isctype(char_type c, char_class_type f) const;
+ int toi(const char_type*& p1, const char_type* p2, int radix)const
+ {
+ return re_detail::global_toi(p1, p2, radix, *this);
+ }
+ int value(char_type c, int radix)const
+ {
+ return u_digit(c, static_cast< ::int8_t>(radix));
+ }
+ locale_type imbue(locale_type l)
+ {
+ locale_type result(m_pimpl->getloc());
+ m_pimpl = re_detail::get_icu_regex_traits_implementation(l);
+ return result;
+ }
+ locale_type getloc()const
+ {
+ return locale_type();
+ }
+ std::string error_string(::boost::regex_constants::error_type n) const
+ {
+ return re_detail::get_default_error_string(n);
+ }
+private:
+ icu_regex_traits(const icu_regex_traits&);
+ icu_regex_traits& operator=(const icu_regex_traits&);
+
+ //
+ // define the bitmasks offsets we need for additional character properties:
+ //
+ enum{
+ offset_blank = U_CHAR_CATEGORY_COUNT,
+ offset_space = U_CHAR_CATEGORY_COUNT+1,
+ offset_xdigit = U_CHAR_CATEGORY_COUNT+2,
+ offset_underscore = U_CHAR_CATEGORY_COUNT+3,
+ offset_unicode = U_CHAR_CATEGORY_COUNT+4,
+ offset_any = U_CHAR_CATEGORY_COUNT+5,
+ offset_ascii = U_CHAR_CATEGORY_COUNT+6
+ };
+
+ //
+ // and now the masks:
+ //
+ static const char_class_type mask_blank;
+ static const char_class_type mask_space;
+ static const char_class_type mask_xdigit;
+ static const char_class_type mask_underscore;
+ static const char_class_type mask_unicode;
+ static const char_class_type mask_any;
+ static const char_class_type mask_ascii;
+
+ static char_class_type lookup_icu_mask(const ::UChar32* p1, const ::UChar32* p2);
+
+ boost::shared_ptr< ::boost::re_detail::icu_regex_traits_implementation> m_pimpl;
+};
+
+} // namespace boost
+
+//
+// template instances:
+//
+#define BOOST_REGEX_CHAR_T UChar32
+#undef BOOST_REGEX_TRAITS_T
+#define BOOST_REGEX_TRAITS_T , icu_regex_traits
+#define BOOST_REGEX_ICU_INSTANCES
+#ifdef BOOST_REGEX_ICU_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#undef BOOST_REGEX_TRAITS_T
+#undef BOOST_REGEX_ICU_INSTANCES
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+
+namespace boost{
+
+// types:
+typedef basic_regex< ::UChar32, icu_regex_traits> u32regex;
+typedef match_results<const ::UChar32*> u32match;
+typedef match_results<const ::UChar*> u16match;
+
+//
+// Construction of 32-bit regex types from UTF-8 and UTF-16 primitives:
+//
+namespace re_detail{
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<1>*)
+{
+ typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
+ return u32regex(conv_type(i), conv_type(j), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<2>*)
+{
+ typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
+ return u32regex(conv_type(i), conv_type(j), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<4>*)
+{
+ return u32regex(i, j, opt);
+}
+#else
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<1>*)
+{
+ typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
+ typedef std::vector<UChar32> vector_type;
+ vector_type v;
+ conv_type a(i), b(j);
+ while(a != b)
+ {
+ v.push_back(*a);
+ ++a;
+ }
+ if(v.size())
+ return u32regex(&*v.begin(), v.size(), opt);
+ return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<2>*)
+{
+ typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
+ typedef std::vector<UChar32> vector_type;
+ vector_type v;
+ conv_type a(i), b(j);
+ while(a != b)
+ {
+ v.push_back(*a);
+ ++a;
+ }
+ if(v.size())
+ return u32regex(&*v.begin(), v.size(), opt);
+ return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
+}
+
+template <class InputIterator>
+inline u32regex do_make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt,
+ const boost::mpl::int_<4>*)
+{
+ typedef std::vector<UCHAR32> vector_type;
+ vector_type v;
+ while(i != j)
+ {
+ v.push_back((UCHAR32)(*i));
+ ++a;
+ }
+ if(v.size())
+ return u32regex(&*v.begin(), v.size(), opt);
+ return u32regex(static_cast<UChar32 const*>(0), static_cast<u32regex::size_type>(0), opt);
+}
+#endif
+}
+
+//
+// Construction from an iterator pair:
+//
+template <class InputIterator>
+inline u32regex make_u32regex(InputIterator i,
+ InputIterator j,
+ boost::regex_constants::syntax_option_type opt)
+{
+ return re_detail::do_make_u32regex(i, j, opt, static_cast<boost::mpl::int_<sizeof(*i)> const*>(0));
+}
+//
+// construction from UTF-8 nul-terminated strings:
+//
+inline u32regex make_u32regex(const char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + std::strlen(p), opt, static_cast<boost::mpl::int_<1> const*>(0));
+}
+inline u32regex make_u32regex(const unsigned char* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + std::strlen(reinterpret_cast<const char*>(p)), opt, static_cast<boost::mpl::int_<1> const*>(0));
+}
+//
+// construction from UTF-16 nul-terminated strings:
+//
+#ifndef BOOST_NO_WREGEX
+inline u32regex make_u32regex(const wchar_t* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + std::wcslen(p), opt, static_cast<boost::mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
+inline u32regex make_u32regex(const UChar* p, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(p, p + u_strlen(p), opt, static_cast<boost::mpl::int_<2> const*>(0));
+}
+#endif
+//
+// construction from basic_string class-template:
+//
+template<class C, class T, class A>
+inline u32regex make_u32regex(const std::basic_string<C, T, A>& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(s.begin(), s.end(), opt, static_cast<boost::mpl::int_<sizeof(C)> const*>(0));
+}
+//
+// Construction from ICU string type:
+//
+inline u32regex make_u32regex(const UnicodeString& s, boost::regex_constants::syntax_option_type opt = boost::regex_constants::perl)
+{
+ return re_detail::do_make_u32regex(s.getBuffer(), s.getBuffer() + s.length(), opt, static_cast<boost::mpl::int_<2> const*>(0));
+}
+
+//
+// regex_match overloads that widen the character type as appropriate:
+//
+namespace re_detail{
+template<class MR1, class MR2>
+void copy_results(MR1& out, MR2 const& in)
+{
+ // copy results from an adapted MR2 match_results:
+ out.set_size(in.size(), in.prefix().first.base(), in.suffix().second.base());
+ out.set_base(in.base().base());
+ for(int i = 0; i < (int)in.size(); ++i)
+ {
+ if(in[i].matched)
+ {
+ out.set_first(in[i].first.base(), i);
+ out.set_second(in[i].second.base(), i);
+ }
+ }
+}
+
+template <class BidiIterator, class Allocator>
+inline bool do_regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ boost::mpl::int_<4> const*)
+{
+ return ::boost::regex_match(first, last, m, e, flags);
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ boost::mpl::int_<2> const*)
+{
+ typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags);
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ boost::mpl::int_<1> const*)
+{
+ typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags);
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+} // namespace re_detail
+
+template <class BidiIterator, class Allocator>
+inline bool u32regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_match(const UChar* p,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_match(const wchar_t* p,
+ match_results<const wchar_t*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const char* p,
+ match_results<const char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const unsigned char* p,
+ match_results<const unsigned char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const std::string& s,
+ match_results<std::string::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_match(const std::wstring& s,
+ match_results<std::wstring::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const UnicodeString& s,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+//
+// regex_match overloads that do not return what matched:
+//
+template <class BidiIterator>
+inline bool u32regex_match(BidiIterator first, BidiIterator last,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<BidiIterator> m;
+ return re_detail::do_regex_match(first, last, m, e, flags, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_match(const UChar* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_match(p, p+u_strlen(p), m, e, flags, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_match(const wchar_t* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return re_detail::do_regex_match(p, p+std::wcslen(p), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return re_detail::do_regex_match(p, p+std::strlen(p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const unsigned char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const unsigned char*> m;
+ return re_detail::do_regex_match(p, p+std::strlen((const char*)p), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_match(const std::string& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_match(const std::wstring& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::wstring::const_iterator> m;
+ return re_detail::do_regex_match(s.begin(), s.end(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_match(const UnicodeString& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_match(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+
+//
+// regex_search overloads that widen the character type as appropriate:
+//
+namespace re_detail{
+template <class BidiIterator, class Allocator>
+inline bool do_regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base,
+ boost::mpl::int_<4> const*)
+{
+ return ::boost::regex_search(first, last, m, e, flags, base);
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base,
+ boost::mpl::int_<2> const*)
+{
+ typedef u16_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base));
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+template <class BidiIterator, class Allocator>
+bool do_regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base,
+ boost::mpl::int_<1> const*)
+{
+ typedef u8_to_u32_iterator<BidiIterator, UChar32> conv_type;
+ typedef match_results<conv_type> match_type;
+ typedef typename match_type::allocator_type alloc_type;
+ match_type what;
+ bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base));
+ // copy results across to m:
+ if(result) copy_results(m, what);
+ return result;
+}
+}
+
+template <class BidiIterator, class Allocator>
+inline bool u32regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+template <class BidiIterator, class Allocator>
+inline bool u32regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const u32regex& e,
+ match_flag_type flags,
+ BidiIterator base)
+{
+ return re_detail::do_regex_search(first, last, m, e, flags, base, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_search(const UChar* p,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_search(const wchar_t* p,
+ match_results<const wchar_t*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const char* p,
+ match_results<const char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const unsigned char* p,
+ match_results<const unsigned char*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const std::string& s,
+ match_results<std::string::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_search(const std::wstring& s,
+ match_results<std::wstring::const_iterator>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const UnicodeString& s,
+ match_results<const UChar*>& m,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+template <class BidiIterator>
+inline bool u32regex_search(BidiIterator first, BidiIterator last,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<BidiIterator> m;
+ return re_detail::do_regex_search(first, last, m, e, flags, first, static_cast<mpl::int_<sizeof(*first)> const*>(0));
+}
+inline bool u32regex_search(const UChar* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_search(p, p+u_strlen(p), m, e, flags, p, static_cast<mpl::int_<2> const*>(0));
+}
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2) && !defined(BOOST_NO_WREGEX)
+inline bool u32regex_search(const wchar_t* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return re_detail::do_regex_search(p, p+std::wcslen(p), m, e, flags, p, static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return re_detail::do_regex_search(p, p+std::strlen(p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const unsigned char* p,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const unsigned char*> m;
+ return re_detail::do_regex_search(p, p+std::strlen((const char*)p), m, e, flags, p, static_cast<mpl::int_<1> const*>(0));
+}
+inline bool u32regex_search(const std::string& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<1> const*>(0));
+}
+#ifndef BOOST_NO_STD_WSTRING
+inline bool u32regex_search(const std::wstring& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::wstring::const_iterator> m;
+ return re_detail::do_regex_search(s.begin(), s.end(), m, e, flags, s.begin(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+#endif
+inline bool u32regex_search(const UnicodeString& s,
+ const u32regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const UChar*> m;
+ return re_detail::do_regex_search(s.getBuffer(), s.getBuffer() + s.length(), m, e, flags, s.getBuffer(), static_cast<mpl::int_<sizeof(wchar_t)> const*>(0));
+}
+
+//
+// overloads for regex_replace with utf-8 and utf-16 data types:
+//
+namespace re_detail{
+template <class I>
+inline std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >
+ make_utf32_seq(I i, I j, mpl::int_<1> const*)
+{
+ return std::pair< boost::u8_to_u32_iterator<I>, boost::u8_to_u32_iterator<I> >(boost::u8_to_u32_iterator<I>(i), boost::u8_to_u32_iterator<I>(j));
+}
+template <class I>
+inline std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >
+ make_utf32_seq(I i, I j, mpl::int_<2> const*)
+{
+ return std::pair< boost::u16_to_u32_iterator<I>, boost::u16_to_u32_iterator<I> >(boost::u16_to_u32_iterator<I>(i), boost::u16_to_u32_iterator<I>(j));
+}
+template <class I>
+inline std::pair< I, I >
+ make_utf32_seq(I i, I j, mpl::int_<4> const*)
+{
+ return std::pair< I, I >(i, j);
+}
+template <class charT>
+inline std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >
+ make_utf32_seq(const charT* p, mpl::int_<1> const*)
+{
+ return std::pair< boost::u8_to_u32_iterator<const charT*>, boost::u8_to_u32_iterator<const charT*> >(boost::u8_to_u32_iterator<const charT*>(p), boost::u8_to_u32_iterator<const charT*>(p+std::strlen((const char*)p)));
+}
+template <class charT>
+inline std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >
+ make_utf32_seq(const charT* p, mpl::int_<2> const*)
+{
+ return std::pair< boost::u16_to_u32_iterator<const charT*>, boost::u16_to_u32_iterator<const charT*> >(boost::u16_to_u32_iterator<const charT*>(p), boost::u16_to_u32_iterator<const charT*>(p+u_strlen((const UChar*)p)));
+}
+template <class charT>
+inline std::pair< const charT*, const charT* >
+ make_utf32_seq(const charT* p, mpl::int_<4> const*)
+{
+ return std::pair< const charT*, const charT* >(p, p+icu_regex_traits::length((UChar32 const*)p));
+}
+template <class OutputIterator>
+inline OutputIterator make_utf32_out(OutputIterator o, mpl::int_<4> const*)
+{
+ return o;
+}
+template <class OutputIterator>
+inline utf16_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<2> const*)
+{
+ return o;
+}
+template <class OutputIterator>
+inline utf8_output_iterator<OutputIterator> make_utf32_out(OutputIterator o, mpl::int_<1> const*)
+{
+ return o;
+}
+
+template <class OutputIterator, class I1, class I2>
+OutputIterator do_regex_replace(OutputIterator out,
+ std::pair<I1, I1> const& in,
+ const u32regex& e,
+ const std::pair<I2, I2>& fmt,
+ match_flag_type flags
+ )
+{
+ // unfortunately we have to copy the format string in order to pass in onward:
+ std::vector<UChar32> f;
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+ f.assign(fmt.first, fmt.second);
+#else
+ f.clear();
+ I2 pos = fmt.first;
+ while(pos != fmt.second)
+ f.push_back(*pos++);
+#endif
+
+ regex_iterator<I1, UChar32, icu_regex_traits> i(in.first, in.second, e, flags);
+ regex_iterator<I1, UChar32, icu_regex_traits> j;
+ if(i == j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(in.first, in.second, out);
+ }
+ else
+ {
+ I1 last_m = in.first;
+ while(i != j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(i->prefix().first, i->prefix().second, out);
+ if(f.size())
+ out = ::boost::re_detail::regex_format_imp(out, *i, &*f.begin(), &*f.begin() + f.size(), flags, e.get_traits());
+ else
+ out = ::boost::re_detail::regex_format_imp(out, *i, static_cast<UChar32 const*>(0), static_cast<UChar32 const*>(0), flags, e.get_traits());
+ last_m = (*i)[0].second;
+ if(flags & regex_constants::format_first_only)
+ break;
+ ++i;
+ }
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(last_m, in.second, out);
+ }
+ return out;
+}
+template <class BaseIterator>
+inline const BaseIterator& extract_output_base(const BaseIterator& b)
+{
+ return b;
+}
+template <class BaseIterator>
+inline BaseIterator extract_output_base(const utf8_output_iterator<BaseIterator>& b)
+{
+ return b.base();
+}
+template <class BaseIterator>
+inline BaseIterator extract_output_base(const utf16_output_iterator<BaseIterator>& b)
+{
+ return b.base();
+}
+} // re_detail
+
+template <class OutputIterator, class BidirectionalIterator, class charT>
+inline OutputIterator u32regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const u32regex& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ return re_detail::extract_output_base
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ <OutputIterator>
+#endif
+ (
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt, static_cast<mpl::int_<sizeof(*fmt)> const*>(0)),
+ flags)
+ );
+}
+
+template <class OutputIterator, class Iterator, class charT>
+inline OutputIterator u32regex_replace(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const u32regex& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return re_detail::extract_output_base
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ <OutputIterator>
+#endif
+ (
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt.begin(), fmt.end(), static_cast<mpl::int_<sizeof(charT)> const*>(0)),
+ flags)
+ );
+}
+
+template <class OutputIterator, class Iterator>
+inline OutputIterator u32regex_replace(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const u32regex& e,
+ const UnicodeString& fmt,
+ match_flag_type flags = match_default)
+{
+ return re_detail::extract_output_base
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ <OutputIterator>
+#endif
+ (
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(out, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ re_detail::make_utf32_seq(first, last, static_cast<mpl::int_<sizeof(*first)> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
+ flags)
+ );
+}
+
+template <class charT>
+std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
+ const u32regex& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ u32regex_replace(i, s.begin(), s.end(), e, fmt, flags);
+ return result;
+}
+
+template <class charT>
+std::basic_string<charT> u32regex_replace(const std::basic_string<charT>& s,
+ const u32regex& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ u32regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
+ return result;
+}
+
+namespace re_detail{
+
+class unicode_string_out_iterator
+{
+ UnicodeString* out;
+public:
+ unicode_string_out_iterator(UnicodeString& s) : out(&s) {}
+ unicode_string_out_iterator& operator++() { return *this; }
+ unicode_string_out_iterator& operator++(int) { return *this; }
+ unicode_string_out_iterator& operator*() { return *this; }
+ unicode_string_out_iterator& operator=(UChar v)
+ {
+ *out += v;
+ return *this;
+ }
+ typedef std::ptrdiff_t difference_type;
+ typedef UChar value_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+ typedef std::output_iterator_tag iterator_category;
+};
+
+}
+
+inline UnicodeString u32regex_replace(const UnicodeString& s,
+ const u32regex& e,
+ const UChar* fmt,
+ match_flag_type flags = match_default)
+{
+ UnicodeString result;
+ re_detail::unicode_string_out_iterator i(result);
+ u32regex_replace(i, s.getBuffer(), s.getBuffer()+s.length(), e, fmt, flags);
+ return result;
+}
+
+inline UnicodeString u32regex_replace(const UnicodeString& s,
+ const u32regex& e,
+ const UnicodeString& fmt,
+ match_flag_type flags = match_default)
+{
+ UnicodeString result;
+ re_detail::unicode_string_out_iterator i(result);
+ re_detail::do_regex_replace(
+ re_detail::make_utf32_out(i, static_cast<mpl::int_<2> const*>(0)),
+ re_detail::make_utf32_seq(s.getBuffer(), s.getBuffer()+s.length(), static_cast<mpl::int_<2> const*>(0)),
+ e,
+ re_detail::make_utf32_seq(fmt.getBuffer(), fmt.getBuffer() + fmt.length(), static_cast<mpl::int_<2> const*>(0)),
+ flags);
+ return result;
+}
+
+} // namespace boost.
+
+#include <boost/regex/v4/u32regex_iterator.hpp>
+#include <boost/regex/v4/u32regex_token_iterator.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/pattern_except.hpp b/3rdParty/Boost/boost/regex/pattern_except.hpp
new file mode 100644
index 0000000..57ea14c
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/pattern_except.hpp
@@ -0,0 +1,100 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE pattern_except.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares pattern-matching exception classes.
+ */
+
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#define BOOST_RE_PAT_EXCEPT_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <stdexcept>
+#include <cstddef>
+#include <boost/regex/v4/error_type.hpp>
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4275)
+#endif
+class BOOST_REGEX_DECL regex_error : public std::runtime_error
+{
+public:
+ explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0);
+ explicit regex_error(regex_constants::error_type err);
+ ~regex_error() throw();
+ regex_constants::error_type code()const
+ { return m_error_code; }
+ std::ptrdiff_t position()const
+ { return m_position; }
+ void raise()const;
+private:
+ regex_constants::error_type m_error_code;
+ std::ptrdiff_t m_position;
+};
+
+typedef regex_error bad_pattern;
+typedef regex_error bad_expression;
+
+namespace re_detail{
+
+BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex);
+
+template <class traits>
+void raise_error(const traits& t, regex_constants::error_type code)
+{
+ (void)t; // warning suppression
+ std::runtime_error e(t.error_string(code));
+ ::boost::re_detail::raise_runtime_error(e);
+}
+
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/regex/pending/object_cache.hpp b/3rdParty/Boost/boost/regex/pending/object_cache.hpp
new file mode 100644
index 0000000..2a7e00b
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/pending/object_cache.hpp
@@ -0,0 +1,163 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE object_cache.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements a generic object cache.
+ */
+
+#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
+#define BOOST_REGEX_OBJECT_CACHE_HPP
+
+#include <map>
+#include <list>
+#include <stdexcept>
+#include <string>
+#include <boost/config.hpp>
+#include <boost/shared_ptr.hpp>
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+
+namespace boost{
+
+template <class Key, class Object>
+class object_cache
+{
+public:
+ typedef std::pair< ::boost::shared_ptr<Object const>, Key const*> value_type;
+ typedef std::list<value_type> list_type;
+ typedef typename list_type::iterator list_iterator;
+ typedef std::map<Key, list_iterator> map_type;
+ typedef typename map_type::iterator map_iterator;
+ typedef typename list_type::size_type size_type;
+ static boost::shared_ptr<Object const> get(const Key& k, size_type max_cache_size);
+
+private:
+ static boost::shared_ptr<Object const> do_get(const Key& k, size_type max_cache_size);
+
+ struct data
+ {
+ list_type cont;
+ map_type index;
+ };
+
+ // Needed by compilers not implementing the resolution to DR45. For reference,
+ // see http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45.
+ friend struct data;
+};
+
+template <class Key, class Object>
+boost::shared_ptr<Object const> object_cache<Key, Object>::get(const Key& k, size_type max_cache_size)
+{
+#ifdef BOOST_HAS_THREADS
+ static boost::static_mutex mut = BOOST_STATIC_MUTEX_INIT;
+
+ boost::static_mutex::scoped_lock l(mut);
+ if(l)
+ {
+ return do_get(k, max_cache_size);
+ }
+ //
+ // what do we do if the lock fails?
+ // for now just throw, but we should never really get here...
+ //
+ ::boost::throw_exception(std::runtime_error("Error in thread safety code: could not acquire a lock"));
+ return boost::shared_ptr<Object>();
+#else
+ return do_get(k, max_cache_size);
+#endif
+}
+
+template <class Key, class Object>
+boost::shared_ptr<Object const> object_cache<Key, Object>::do_get(const Key& k, size_type max_cache_size)
+{
+ typedef typename object_cache<Key, Object>::data object_data;
+ typedef typename map_type::size_type map_size_type;
+ static object_data s_data;
+
+ //
+ // see if the object is already in the cache:
+ //
+ map_iterator mpos = s_data.index.find(k);
+ if(mpos != s_data.index.end())
+ {
+ //
+ // Eureka!
+ // We have a cached item, bump it up the list and return it:
+ //
+ if(--(s_data.cont.end()) != mpos->second)
+ {
+ // splice out the item we want to move:
+ list_type temp;
+ temp.splice(temp.end(), s_data.cont, mpos->second);
+ // and now place it at the end of the list:
+ s_data.cont.splice(s_data.cont.end(), temp, temp.begin());
+ BOOST_ASSERT(*(s_data.cont.back().second) == k);
+ // update index with new position:
+ mpos->second = --(s_data.cont.end());
+ BOOST_ASSERT(&(mpos->first) == mpos->second->second);
+ BOOST_ASSERT(&(mpos->first) == s_data.cont.back().second);
+ }
+ return s_data.cont.back().first;
+ }
+ //
+ // if we get here then the item is not in the cache,
+ // so create it:
+ //
+ boost::shared_ptr<Object const> result(new Object(k));
+ //
+ // Add it to the list, and index it:
+ //
+ s_data.cont.push_back(value_type(result, static_cast<Key const*>(0)));
+ s_data.index.insert(std::make_pair(k, --(s_data.cont.end())));
+ s_data.cont.back().second = &(s_data.index.find(k)->first);
+ map_size_type s = s_data.index.size();
+ BOOST_ASSERT(s_data.index[k]->first.get() == result.get());
+ BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second);
+ BOOST_ASSERT(s_data.index.find(k)->first == k);
+ if(s > max_cache_size)
+ {
+ //
+ // We have too many items in the list, so we need to start
+ // popping them off the back of the list, but only if they're
+ // being held uniquely by us:
+ //
+ list_iterator pos = s_data.cont.begin();
+ list_iterator last = s_data.cont.end();
+ while((pos != last) && (s > max_cache_size))
+ {
+ if(pos->first.unique())
+ {
+ list_iterator condemmed(pos);
+ ++pos;
+ // now remove the items from our containers,
+ // then order has to be as follows:
+ BOOST_ASSERT(s_data.index.find(*(condemmed->second)) != s_data.index.end());
+ s_data.index.erase(*(condemmed->second));
+ s_data.cont.erase(condemmed);
+ --s;
+ }
+ else
+ --pos;
+ }
+ BOOST_ASSERT(s_data.index[k]->first.get() == result.get());
+ BOOST_ASSERT(&(s_data.index.find(k)->first) == s_data.cont.back().second);
+ BOOST_ASSERT(s_data.index.find(k)->first == k);
+ }
+ return result;
+}
+
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/pending/static_mutex.hpp b/3rdParty/Boost/boost/regex/pending/static_mutex.hpp
new file mode 100644
index 0000000..218169c
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/pending/static_mutex.hpp
@@ -0,0 +1,184 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE static_mutex.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares static_mutex lock type, there are three different
+ * implementations: POSIX pthreads, WIN32 threads, and portable,
+ * these are described in more detail below.
+ */
+
+#ifndef BOOST_REGEX_STATIC_MUTEX_HPP
+#define BOOST_REGEX_STATIC_MUTEX_HPP
+
+#include <boost/config.hpp>
+#include <boost/regex/config.hpp> // dll import/export options.
+
+#ifdef BOOST_HAS_PTHREADS
+#include <pthread.h>
+#endif
+
+#if defined(BOOST_HAS_PTHREADS) && defined(PTHREAD_MUTEX_INITIALIZER)
+//
+// pthreads version:
+// simple wrap around a pthread_mutex_t initialized with
+// PTHREAD_MUTEX_INITIALIZER.
+//
+namespace boost{
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock;
+
+class static_mutex
+{
+public:
+ typedef scoped_static_mutex_lock scoped_lock;
+ pthread_mutex_t m_mutex;
+};
+
+#define BOOST_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER, }
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock
+{
+public:
+ scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
+ ~scoped_static_mutex_lock();
+ inline bool locked()const
+ {
+ return m_have_lock;
+ }
+ inline operator void const*()const
+ {
+ return locked() ? this : 0;
+ }
+ void lock();
+ void unlock();
+private:
+ static_mutex& m_mutex;
+ bool m_have_lock;
+};
+
+
+} // namespace boost
+#elif defined(BOOST_HAS_WINTHREADS)
+//
+// Win32 version:
+// Use a 32-bit int as a lock, along with a test-and-set
+// implementation using InterlockedCompareExchange.
+//
+
+#include <boost/cstdint.hpp>
+
+namespace boost{
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock;
+
+class static_mutex
+{
+public:
+ typedef scoped_static_mutex_lock scoped_lock;
+ boost::int32_t m_mutex;
+};
+
+#define BOOST_STATIC_MUTEX_INIT { 0, }
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock
+{
+public:
+ scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
+ ~scoped_static_mutex_lock();
+ operator void const*()const;
+ bool locked()const;
+ void lock();
+ void unlock();
+private:
+ static_mutex& m_mutex;
+ bool m_have_lock;
+ scoped_static_mutex_lock(const scoped_static_mutex_lock&);
+ scoped_static_mutex_lock& operator=(const scoped_static_mutex_lock&);
+};
+
+inline scoped_static_mutex_lock::operator void const*()const
+{
+ return locked() ? this : 0;
+}
+
+inline bool scoped_static_mutex_lock::locked()const
+{
+ return m_have_lock;
+}
+
+} // namespace
+
+#else
+//
+// Portable version of a static mutex based on Boost.Thread library:
+// This has to use a single mutex shared by all instances of static_mutex
+// because boost::call_once doesn't alow us to pass instance information
+// down to the initialisation proceedure. In fact the initialisation routine
+// may need to be called more than once - but only once per instance.
+//
+// Since this preprocessor path is almost never taken, we hide these header
+// dependencies so that build tools don't find them.
+//
+#define B1 <boost/thread/once.hpp>
+#define B2 <boost/thread/recursive_mutex.hpp>
+#include B1
+#include B2
+#undef B1
+#undef B2
+
+namespace boost{
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock;
+extern "C" BOOST_REGEX_DECL void free_static_mutex();
+
+class BOOST_REGEX_DECL static_mutex
+{
+public:
+ typedef scoped_static_mutex_lock scoped_lock;
+ static void init();
+ static boost::recursive_mutex* m_pmutex;
+ static boost::once_flag m_once;
+};
+
+#define BOOST_STATIC_MUTEX_INIT { }
+
+class BOOST_REGEX_DECL scoped_static_mutex_lock
+{
+public:
+ scoped_static_mutex_lock(static_mutex& mut, bool lk = true);
+ ~scoped_static_mutex_lock();
+ operator void const*()const;
+ bool locked()const;
+ void lock();
+ void unlock();
+private:
+ boost::recursive_mutex::scoped_lock* m_plock;
+ bool m_have_lock;
+};
+
+inline scoped_static_mutex_lock::operator void const*()const
+{
+ return locked() ? this : 0;
+}
+
+inline bool scoped_static_mutex_lock::locked()const
+{
+ return m_have_lock;
+}
+
+} // namespace
+
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp b/3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp
new file mode 100644
index 0000000..657ca0a
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/pending/unicode_iterator.hpp
@@ -0,0 +1,692 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE unicode_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Iterator adapters for converting between different Unicode encodings.
+ */
+
+/****************************************************************************
+
+Contents:
+~~~~~~~~~
+
+1) Read Only, Input Adapters:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+template <class BaseIterator, class U8Type = ::boost::uint8_t>
+class u32_to_u8_iterator;
+
+Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-8.
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u8_to_u32_iterator;
+
+Adapts sequence of UTF-8 code points to "look like" a sequence of UTF-32.
+
+template <class BaseIterator, class U16Type = ::boost::uint16_t>
+class u32_to_u16_iterator;
+
+Adapts sequence of UTF-32 code points to "look like" a sequence of UTF-16.
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u16_to_u32_iterator;
+
+Adapts sequence of UTF-16 code points to "look like" a sequence of UTF-32.
+
+2) Single pass output iterator adapters:
+
+template <class BaseIterator>
+class utf8_output_iterator;
+
+Accepts UTF-32 code points and forwards them on as UTF-8 code points.
+
+template <class BaseIterator>
+class utf16_output_iterator;
+
+Accepts UTF-32 code points and forwards them on as UTF-16 code points.
+
+****************************************************************************/
+
+#ifndef BOOST_REGEX_UNICODE_ITERATOR_HPP
+#define BOOST_REGEX_UNICODE_ITERATOR_HPP
+#include <boost/cstdint.hpp>
+#include <boost/assert.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/throw_exception.hpp>
+#include <stdexcept>
+#ifndef BOOST_NO_STD_LOCALE
+#include <sstream>
+#include <ios>
+#endif
+#include <limits.h> // CHAR_BIT
+
+namespace boost{
+
+namespace detail{
+
+static const ::boost::uint16_t high_surrogate_base = 0xD7C0u;
+static const ::boost::uint16_t low_surrogate_base = 0xDC00u;
+static const ::boost::uint32_t ten_bit_mask = 0x3FFu;
+
+inline bool is_high_surrogate(::boost::uint16_t v)
+{
+ return (v & 0xFC00u) == 0xd800u;
+}
+inline bool is_low_surrogate(::boost::uint16_t v)
+{
+ return (v & 0xFC00u) == 0xdc00u;
+}
+template <class T>
+inline bool is_surrogate(T v)
+{
+ return (v & 0xF800u) == 0xd800;
+}
+
+inline unsigned utf8_byte_count(boost::uint8_t c)
+{
+ // if the most significant bit with a zero in it is in position
+ // 8-N then there are N bytes in this UTF-8 sequence:
+ boost::uint8_t mask = 0x80u;
+ unsigned result = 0;
+ while(c & mask)
+ {
+ ++result;
+ mask >>= 1;
+ }
+ return (result == 0) ? 1 : ((result > 4) ? 4 : result);
+}
+
+inline unsigned utf8_trailing_byte_count(boost::uint8_t c)
+{
+ return utf8_byte_count(c) - 1;
+}
+
+inline void invalid_utf32_code_point(::boost::uint32_t val)
+{
+#ifndef BOOST_NO_STD_LOCALE
+ std::stringstream ss;
+ ss << "Invalid UTF-32 code point U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-16 sequence";
+ std::out_of_range e(ss.str());
+#else
+ std::out_of_range e("Invalid UTF-32 code point encountered while trying to encode UTF-16 sequence");
+#endif
+ boost::throw_exception(e);
+}
+
+
+} // namespace detail
+
+template <class BaseIterator, class U16Type = ::boost::uint16_t>
+class u32_to_u16_iterator
+ : public boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type>
+{
+ typedef boost::iterator_facade<u32_to_u16_iterator<BaseIterator, U16Type>, U16Type, std::bidirectional_iterator_tag, const U16Type> base_type;
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
+ BOOST_STATIC_ASSERT(sizeof(U16Type)*CHAR_BIT == 16);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_current == 2)
+ extract_current();
+ return m_values[m_current];
+ }
+ bool equal(const u32_to_u16_iterator& that)const
+ {
+ if(m_position == that.m_position)
+ {
+ // Both m_currents must be equal, or both even
+ // this is the same as saying their sum must be even:
+ return (m_current + that.m_current) & 1u ? false : true;
+ }
+ return false;
+ }
+ void increment()
+ {
+ // if we have a pending read then read now, so that we know whether
+ // to skip a position, or move to a low-surrogate:
+ if(m_current == 2)
+ {
+ // pending read:
+ extract_current();
+ }
+ // move to the next surrogate position:
+ ++m_current;
+ // if we've reached the end skip a position:
+ if(m_values[m_current] == 0)
+ {
+ m_current = 2;
+ ++m_position;
+ }
+ }
+ void decrement()
+ {
+ if(m_current != 1)
+ {
+ // decrementing an iterator always leads to a valid position:
+ --m_position;
+ extract_current();
+ m_current = m_values[1] ? 1 : 0;
+ }
+ else
+ {
+ m_current = 0;
+ }
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u32_to_u16_iterator() : m_position(), m_current(0)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ }
+ u32_to_u16_iterator(BaseIterator b) : m_position(b), m_current(2)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ }
+private:
+
+ void extract_current()const
+ {
+ // begin by checking for a code point out of range:
+ ::boost::uint32_t v = *m_position;
+ if(v >= 0x10000u)
+ {
+ if(v > 0x10FFFFu)
+ detail::invalid_utf32_code_point(*m_position);
+ // split into two surrogates:
+ m_values[0] = static_cast<U16Type>(v >> 10) + detail::high_surrogate_base;
+ m_values[1] = static_cast<U16Type>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
+ m_current = 0;
+ BOOST_ASSERT(detail::is_high_surrogate(m_values[0]));
+ BOOST_ASSERT(detail::is_low_surrogate(m_values[1]));
+ }
+ else
+ {
+ // 16-bit code point:
+ m_values[0] = static_cast<U16Type>(*m_position);
+ m_values[1] = 0;
+ m_current = 0;
+ // value must not be a surrogate:
+ if(detail::is_surrogate(m_values[0]))
+ detail::invalid_utf32_code_point(*m_position);
+ }
+ }
+ BaseIterator m_position;
+ mutable U16Type m_values[3];
+ mutable unsigned m_current;
+};
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u16_to_u32_iterator
+ : public boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type>
+{
+ typedef boost::iterator_facade<u16_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type;
+ // special values for pending iterator reads:
+ BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 16);
+ BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_value == pending_read)
+ extract_current();
+ return m_value;
+ }
+ bool equal(const u16_to_u32_iterator& that)const
+ {
+ return m_position == that.m_position;
+ }
+ void increment()
+ {
+ // skip high surrogate first if there is one:
+ if(detail::is_high_surrogate(*m_position)) ++m_position;
+ ++m_position;
+ m_value = pending_read;
+ }
+ void decrement()
+ {
+ --m_position;
+ // if we have a low surrogate then go back one more:
+ if(detail::is_low_surrogate(*m_position))
+ --m_position;
+ m_value = pending_read;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u16_to_u32_iterator() : m_position()
+ {
+ m_value = pending_read;
+ }
+ u16_to_u32_iterator(BaseIterator b) : m_position(b)
+ {
+ m_value = pending_read;
+ }
+private:
+ static void invalid_code_point(::boost::uint16_t val)
+ {
+#ifndef BOOST_NO_STD_LOCALE
+ std::stringstream ss;
+ ss << "Misplaced UTF-16 surrogate U+" << std::showbase << std::hex << val << " encountered while trying to encode UTF-32 sequence";
+ std::out_of_range e(ss.str());
+#else
+ std::out_of_range e("Misplaced UTF-16 surrogate encountered while trying to encode UTF-32 sequence");
+#endif
+ boost::throw_exception(e);
+ }
+ void extract_current()const
+ {
+ m_value = static_cast<U32Type>(static_cast< ::boost::uint16_t>(*m_position));
+ // if the last value is a high surrogate then adjust m_position and m_value as needed:
+ if(detail::is_high_surrogate(*m_position))
+ {
+ // precondition; next value must have be a low-surrogate:
+ BaseIterator next(m_position);
+ ::boost::uint16_t t = *++next;
+ if((t & 0xFC00u) != 0xDC00u)
+ invalid_code_point(t);
+ m_value = (m_value - detail::high_surrogate_base) << 10;
+ m_value |= (static_cast<U32Type>(static_cast< ::boost::uint16_t>(t)) & detail::ten_bit_mask);
+ }
+ // postcondition; result must not be a surrogate:
+ if(detail::is_surrogate(m_value))
+ invalid_code_point(static_cast< ::boost::uint16_t>(m_value));
+ }
+ BaseIterator m_position;
+ mutable U32Type m_value;
+};
+
+template <class BaseIterator, class U8Type = ::boost::uint8_t>
+class u32_to_u8_iterator
+ : public boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type>
+{
+ typedef boost::iterator_facade<u32_to_u8_iterator<BaseIterator, U8Type>, U8Type, std::bidirectional_iterator_tag, const U8Type> base_type;
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 32);
+ BOOST_STATIC_ASSERT(sizeof(U8Type)*CHAR_BIT == 8);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_current == 4)
+ extract_current();
+ return m_values[m_current];
+ }
+ bool equal(const u32_to_u8_iterator& that)const
+ {
+ if(m_position == that.m_position)
+ {
+ // either the m_current's must be equal, or one must be 0 and
+ // the other 4: which means neither must have bits 1 or 2 set:
+ return (m_current == that.m_current)
+ || (((m_current | that.m_current) & 3) == 0);
+ }
+ return false;
+ }
+ void increment()
+ {
+ // if we have a pending read then read now, so that we know whether
+ // to skip a position, or move to a low-surrogate:
+ if(m_current == 4)
+ {
+ // pending read:
+ extract_current();
+ }
+ // move to the next surrogate position:
+ ++m_current;
+ // if we've reached the end skip a position:
+ if(m_values[m_current] == 0)
+ {
+ m_current = 4;
+ ++m_position;
+ }
+ }
+ void decrement()
+ {
+ if((m_current & 3) == 0)
+ {
+ --m_position;
+ extract_current();
+ m_current = 3;
+ while(m_current && (m_values[m_current] == 0))
+ --m_current;
+ }
+ else
+ --m_current;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u32_to_u8_iterator() : m_position(), m_current(0)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ m_values[3] = 0;
+ m_values[4] = 0;
+ }
+ u32_to_u8_iterator(BaseIterator b) : m_position(b), m_current(4)
+ {
+ m_values[0] = 0;
+ m_values[1] = 0;
+ m_values[2] = 0;
+ m_values[3] = 0;
+ m_values[4] = 0;
+ }
+private:
+
+ void extract_current()const
+ {
+ boost::uint32_t c = *m_position;
+ if(c > 0x10FFFFu)
+ detail::invalid_utf32_code_point(c);
+ if(c < 0x80u)
+ {
+ m_values[0] = static_cast<unsigned char>(c);
+ m_values[1] = static_cast<unsigned char>(0u);
+ m_values[2] = static_cast<unsigned char>(0u);
+ m_values[3] = static_cast<unsigned char>(0u);
+ }
+ else if(c < 0x800u)
+ {
+ m_values[0] = static_cast<unsigned char>(0xC0u + (c >> 6));
+ m_values[1] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ m_values[2] = static_cast<unsigned char>(0u);
+ m_values[3] = static_cast<unsigned char>(0u);
+ }
+ else if(c < 0x10000u)
+ {
+ m_values[0] = static_cast<unsigned char>(0xE0u + (c >> 12));
+ m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ m_values[2] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ m_values[3] = static_cast<unsigned char>(0u);
+ }
+ else
+ {
+ m_values[0] = static_cast<unsigned char>(0xF0u + (c >> 18));
+ m_values[1] = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
+ m_values[2] = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ m_values[3] = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ m_current= 0;
+ }
+ BaseIterator m_position;
+ mutable U8Type m_values[5];
+ mutable unsigned m_current;
+};
+
+template <class BaseIterator, class U32Type = ::boost::uint32_t>
+class u8_to_u32_iterator
+ : public boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type>
+{
+ typedef boost::iterator_facade<u8_to_u32_iterator<BaseIterator, U32Type>, U32Type, std::bidirectional_iterator_tag, const U32Type> base_type;
+ // special values for pending iterator reads:
+ BOOST_STATIC_CONSTANT(U32Type, pending_read = 0xffffffffu);
+
+#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef typename std::iterator_traits<BaseIterator>::value_type base_value_type;
+
+ BOOST_STATIC_ASSERT(sizeof(base_value_type)*CHAR_BIT == 8);
+ BOOST_STATIC_ASSERT(sizeof(U32Type)*CHAR_BIT == 32);
+#endif
+
+public:
+ typename base_type::reference
+ dereference()const
+ {
+ if(m_value == pending_read)
+ extract_current();
+ return m_value;
+ }
+ bool equal(const u8_to_u32_iterator& that)const
+ {
+ return m_position == that.m_position;
+ }
+ void increment()
+ {
+ // skip high surrogate first if there is one:
+ unsigned c = detail::utf8_byte_count(*m_position);
+ std::advance(m_position, c);
+ m_value = pending_read;
+ }
+ void decrement()
+ {
+ // Keep backtracking until we don't have a trailing character:
+ unsigned count = 0;
+ while((*--m_position & 0xC0u) == 0x80u) ++count;
+ // now check that the sequence was valid:
+ if(count != detail::utf8_trailing_byte_count(*m_position))
+ invalid_sequnce();
+ m_value = pending_read;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+ // construct:
+ u8_to_u32_iterator() : m_position()
+ {
+ m_value = pending_read;
+ }
+ u8_to_u32_iterator(BaseIterator b) : m_position(b)
+ {
+ m_value = pending_read;
+ }
+private:
+ static void invalid_sequnce()
+ {
+ std::out_of_range e("Invalid UTF-8 sequence encountered while trying to encode UTF-32 character");
+ boost::throw_exception(e);
+ }
+ void extract_current()const
+ {
+ m_value = static_cast<U32Type>(static_cast< ::boost::uint8_t>(*m_position));
+ // we must not have a continuation character:
+ if((m_value & 0xC0u) == 0x80u)
+ invalid_sequnce();
+ // see how many extra byts we have:
+ unsigned extra = detail::utf8_trailing_byte_count(*m_position);
+ // extract the extra bits, 6 from each extra byte:
+ BaseIterator next(m_position);
+ for(unsigned c = 0; c < extra; ++c)
+ {
+ ++next;
+ m_value <<= 6;
+ m_value += static_cast<boost::uint8_t>(*next) & 0x3Fu;
+ }
+ // we now need to remove a few of the leftmost bits, but how many depends
+ // upon how many extra bytes we've extracted:
+ static const boost::uint32_t masks[4] =
+ {
+ 0x7Fu,
+ 0x7FFu,
+ 0xFFFFu,
+ 0x1FFFFFu,
+ };
+ m_value &= masks[extra];
+ // check the result:
+ if(m_value > static_cast<U32Type>(0x10FFFFu))
+ invalid_sequnce();
+ }
+ BaseIterator m_position;
+ mutable U32Type m_value;
+};
+
+template <class BaseIterator>
+class utf16_output_iterator
+{
+public:
+ typedef void difference_type;
+ typedef void value_type;
+ typedef boost::uint32_t* pointer;
+ typedef boost::uint32_t& reference;
+ typedef std::output_iterator_tag iterator_category;
+
+ utf16_output_iterator(const BaseIterator& b)
+ : m_position(b){}
+ utf16_output_iterator(const utf16_output_iterator& that)
+ : m_position(that.m_position){}
+ utf16_output_iterator& operator=(const utf16_output_iterator& that)
+ {
+ m_position = that.m_position;
+ return *this;
+ }
+ const utf16_output_iterator& operator*()const
+ {
+ return *this;
+ }
+ void operator=(boost::uint32_t val)const
+ {
+ push(val);
+ }
+ utf16_output_iterator& operator++()
+ {
+ return *this;
+ }
+ utf16_output_iterator& operator++(int)
+ {
+ return *this;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+private:
+ void push(boost::uint32_t v)const
+ {
+ if(v >= 0x10000u)
+ {
+ // begin by checking for a code point out of range:
+ if(v > 0x10FFFFu)
+ detail::invalid_utf32_code_point(v);
+ // split into two surrogates:
+ *m_position++ = static_cast<boost::uint16_t>(v >> 10) + detail::high_surrogate_base;
+ *m_position++ = static_cast<boost::uint16_t>(v & detail::ten_bit_mask) + detail::low_surrogate_base;
+ }
+ else
+ {
+ // 16-bit code point:
+ // value must not be a surrogate:
+ if(detail::is_surrogate(v))
+ detail::invalid_utf32_code_point(v);
+ *m_position++ = static_cast<boost::uint16_t>(v);
+ }
+ }
+ mutable BaseIterator m_position;
+};
+
+template <class BaseIterator>
+class utf8_output_iterator
+{
+public:
+ typedef void difference_type;
+ typedef void value_type;
+ typedef boost::uint32_t* pointer;
+ typedef boost::uint32_t& reference;
+ typedef std::output_iterator_tag iterator_category;
+
+ utf8_output_iterator(const BaseIterator& b)
+ : m_position(b){}
+ utf8_output_iterator(const utf8_output_iterator& that)
+ : m_position(that.m_position){}
+ utf8_output_iterator& operator=(const utf8_output_iterator& that)
+ {
+ m_position = that.m_position;
+ return *this;
+ }
+ const utf8_output_iterator& operator*()const
+ {
+ return *this;
+ }
+ void operator=(boost::uint32_t val)const
+ {
+ push(val);
+ }
+ utf8_output_iterator& operator++()
+ {
+ return *this;
+ }
+ utf8_output_iterator& operator++(int)
+ {
+ return *this;
+ }
+ BaseIterator base()const
+ {
+ return m_position;
+ }
+private:
+ void push(boost::uint32_t c)const
+ {
+ if(c > 0x10FFFFu)
+ detail::invalid_utf32_code_point(c);
+ if(c < 0x80u)
+ {
+ *m_position++ = static_cast<unsigned char>(c);
+ }
+ else if(c < 0x800u)
+ {
+ *m_position++ = static_cast<unsigned char>(0xC0u + (c >> 6));
+ *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ else if(c < 0x10000u)
+ {
+ *m_position++ = static_cast<unsigned char>(0xE0u + (c >> 12));
+ *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ else
+ {
+ *m_position++ = static_cast<unsigned char>(0xF0u + (c >> 18));
+ *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 12) & 0x3Fu));
+ *m_position++ = static_cast<unsigned char>(0x80u + ((c >> 6) & 0x3Fu));
+ *m_position++ = static_cast<unsigned char>(0x80u + (c & 0x3Fu));
+ }
+ }
+ mutable BaseIterator m_position;
+};
+
+} // namespace boost
+
+#endif // BOOST_REGEX_UNICODE_ITERATOR_HPP
+
diff --git a/3rdParty/Boost/boost/regex/regex_traits.hpp b/3rdParty/Boost/boost/regex/regex_traits.hpp
new file mode 100644
index 0000000..730ba6e
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/regex_traits.hpp
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits classes.
+ */
+
+#ifndef BOOST_REGEX_TRAITS_HPP
+#define BOOST_REGEX_TRAITS_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+# include <boost/regex/config.hpp>
+#endif
+
+# ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/regex_traits.hpp>
+# endif
+
+#endif // include
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/user.hpp b/3rdParty/Boost/boost/regex/user.hpp
new file mode 100644
index 0000000..9590817
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/user.hpp
@@ -0,0 +1,90 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE user.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: User settable options.
+ */
+
+// define if you want the regex library to use the C locale
+// even on Win32:
+// #define BOOST_REGEX_USE_C_LOCALE
+
+// define this is you want the regex library to use the C++
+// locale:
+// #define BOOST_REGEX_USE_CPP_LOCALE
+
+// define this if the runtime library is a dll, and you
+// want BOOST_REGEX_DYN_LINK to set up dll exports/imports
+// with __declspec(dllexport)/__declspec(dllimport.)
+// #define BOOST_REGEX_HAS_DLL_RUNTIME
+
+// define this if you want to dynamically link to regex,
+// if the runtime library is also a dll (Probably Win32 specific,
+// and has no effect unless BOOST_REGEX_HAS_DLL_RUNTIME is set):
+// #define BOOST_REGEX_DYN_LINK
+
+// define this if you don't want the lib to automatically
+// select its link libraries:
+// #define BOOST_REGEX_NO_LIB
+
+// define this if templates with switch statements cause problems:
+// #define BOOST_REGEX_NO_TEMPLATE_SWITCH_MERGE
+
+// define this to disable Win32 support when available:
+// #define BOOST_REGEX_NO_W32
+
+// define this if bool is not a real type:
+// #define BOOST_REGEX_NO_BOOL
+
+// define this if no template instances are to be placed in
+// the library rather than users object files:
+// #define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+// define this if the forward declarations in regex_fwd.hpp
+// cause more problems than they are worth:
+// #define BOOST_REGEX_NO_FWD
+
+// define this if your compiler supports MS Windows structured
+// exception handling.
+// #define BOOST_REGEX_HAS_MS_STACK_GUARD
+
+// define this if you want to use the recursive algorithm
+// even if BOOST_REGEX_HAS_MS_STACK_GUARD is not defined.
+// #define BOOST_REGEX_RECURSIVE
+
+// define this if you want to use the non-recursive
+// algorithm, even if the recursive version would be the default.
+// #define BOOST_REGEX_NON_RECURSIVE
+
+// define this if you want to set the size of the memory blocks
+// used by the non-recursive algorithm.
+// #define BOOST_REGEX_BLOCKSIZE 4096
+
+// define this if you want to set the maximum number of memory blocks
+// used by the non-recursive algorithm.
+// #define BOOST_REGEX_MAX_BLOCKS 1024
+
+// define this if you want to set the maximum number of memory blocks
+// cached by the non-recursive algorithm: Normally this is 16, but can be
+// higher if you have multiple threads all using boost.regex, or lower
+// if you don't want boost.regex to cache memory.
+// #define BOOST_REGEX_MAX_CACHE_BLOCKS 16
+
+// define this if you want to be able to access extended capture
+// information in your sub_match's (caution this will slow things
+// down quite a bit).
+// #define BOOST_REGEX_MATCH_EXTRA
+
+// define this if you want to enable support for Unicode via ICU.
+// #define BOOST_HAS_ICU
diff --git a/3rdParty/Boost/boost/regex/v4/basic_regex.hpp b/3rdParty/Boost/boost/regex/v4/basic_regex.hpp
new file mode 100644
index 0000000..cb9ff3c
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/basic_regex.hpp
@@ -0,0 +1,669 @@
+/*
+ *
+ * Copyright (c) 1998-2004
+ * John Maddock
+ *
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org/ for most recent version.
+ * FILE basic_regex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex.
+ */
+
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP
+#define BOOST_REGEX_V4_BASIC_REGEX_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660 4800)
+#endif
+
+namespace re_detail{
+
+//
+// forward declaration, we will need this one later:
+//
+template <class charT, class traits>
+class basic_regex_parser;
+
+//
+// class regex_data:
+// represents the data we wish to expose to the matching algorithms.
+//
+template <class charT, class traits>
+struct regex_data
+{
+ typedef regex_constants::syntax_option_type flag_type;
+ typedef std::size_t size_type;
+
+ regex_data(const ::boost::shared_ptr<
+ ::boost::regex_traits_wrapper<traits> >& t)
+ : m_ptraits(t), m_expression(0), m_expression_len(0) {}
+ regex_data()
+ : m_ptraits(new ::boost::regex_traits_wrapper<traits>()), m_expression(0), m_expression_len(0) {}
+
+ ::boost::shared_ptr<
+ ::boost::regex_traits_wrapper<traits>
+ > m_ptraits; // traits class instance
+ flag_type m_flags; // flags with which we were compiled
+ int m_status; // error code (0 implies OK).
+ const charT* m_expression; // the original expression
+ std::ptrdiff_t m_expression_len; // the length of the original expression
+ size_type m_mark_count; // the number of marked sub-expressions
+ re_detail::re_syntax_base* m_first_state; // the first state of the machine
+ unsigned m_restart_type; // search optimisation type
+ unsigned char m_startmap[1 << CHAR_BIT]; // which characters can start a match
+ unsigned int m_can_be_null; // whether we can match a null string
+ re_detail::raw_storage m_data; // the buffer in which our states are constructed
+ typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
+ std::vector<
+ std::pair<
+ std::size_t, std::size_t> > m_subs; // Position of sub-expressions within the *string*.
+};
+//
+// class basic_regex_implementation
+// pimpl implementation class for basic_regex.
+//
+template <class charT, class traits>
+class basic_regex_implementation
+ : public regex_data<charT, traits>
+{
+public:
+ typedef regex_constants::syntax_option_type flag_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::size_t size_type;
+ typedef typename traits::locale_type locale_type;
+ typedef const charT* const_iterator;
+
+ basic_regex_implementation(){}
+ basic_regex_implementation(const ::boost::shared_ptr<
+ ::boost::regex_traits_wrapper<traits> >& t)
+ : regex_data<charT, traits>(t) {}
+ void assign(const charT* arg_first,
+ const charT* arg_last,
+ flag_type f)
+ {
+ regex_data<charT, traits>* pdat = this;
+ basic_regex_parser<charT, traits> parser(pdat);
+ parser.parse(arg_first, arg_last, f);
+ }
+
+ locale_type BOOST_REGEX_CALL imbue(locale_type l)
+ {
+ return this->m_ptraits->imbue(l);
+ }
+ locale_type BOOST_REGEX_CALL getloc()const
+ {
+ return this->m_ptraits->getloc();
+ }
+ std::basic_string<charT> BOOST_REGEX_CALL str()const
+ {
+ std::basic_string<charT> result;
+ if(this->m_status == 0)
+ result = std::basic_string<charT>(this->m_expression, this->m_expression_len);
+ return result;
+ }
+ const_iterator BOOST_REGEX_CALL expression()const
+ {
+ return this->m_expression;
+ }
+ std::pair<const_iterator, const_iterator> BOOST_REGEX_CALL subexpression(std::size_t n)const
+ {
+ if(n == 0)
+ throw std::out_of_range("0 is not a valid subexpression index.");
+ const std::pair<std::size_t, std::size_t>& pi = this->m_subs.at(n - 1);
+ std::pair<const_iterator, const_iterator> p(expression() + pi.first, expression() + pi.second);
+ return p;
+ }
+ //
+ // begin, end:
+ const_iterator BOOST_REGEX_CALL begin()const
+ {
+ return (!this->m_status ? 0 : this->m_expression);
+ }
+ const_iterator BOOST_REGEX_CALL end()const
+ {
+ return (!this->m_status ? 0 : this->m_expression + this->m_expression_len);
+ }
+ flag_type BOOST_REGEX_CALL flags()const
+ {
+ return this->m_flags;
+ }
+ size_type BOOST_REGEX_CALL size()const
+ {
+ return this->m_expression_len;
+ }
+ int BOOST_REGEX_CALL status()const
+ {
+ return this->m_status;
+ }
+ size_type BOOST_REGEX_CALL mark_count()const
+ {
+ return this->m_mark_count;
+ }
+ const re_detail::re_syntax_base* get_first_state()const
+ {
+ return this->m_first_state;
+ }
+ unsigned get_restart_type()const
+ {
+ return this->m_restart_type;
+ }
+ const unsigned char* get_map()const
+ {
+ return this->m_startmap;
+ }
+ const ::boost::regex_traits_wrapper<traits>& get_traits()const
+ {
+ return *(this->m_ptraits);
+ }
+ bool can_be_null()const
+ {
+ return this->m_can_be_null;
+ }
+ const regex_data<charT, traits>& get_data()const
+ {
+ basic_regex_implementation<charT, traits> const* p = this;
+ return *static_cast<const regex_data<charT, traits>*>(p);
+ }
+};
+
+} // namespace re_detail
+//
+// class basic_regex:
+// represents the compiled
+// regular expression:
+//
+
+#ifdef BOOST_REGEX_NO_FWD
+template <class charT, class traits = regex_traits<charT> >
+#else
+template <class charT, class traits >
+#endif
+class basic_regex : public regbase
+{
+public:
+ // typedefs:
+ typedef std::size_t traits_size_type;
+ typedef typename traits::string_type traits_string_type;
+ typedef charT char_type;
+ typedef traits traits_type;
+
+ typedef charT value_type;
+ typedef charT& reference;
+ typedef const charT& const_reference;
+ typedef const charT* const_iterator;
+ typedef const_iterator iterator;
+ typedef std::ptrdiff_t difference_type;
+ typedef std::size_t size_type;
+ typedef regex_constants::syntax_option_type flag_type;
+ // locale_type
+ // placeholder for actual locale type used by the
+ // traits class to localise *this.
+ typedef typename traits::locale_type locale_type;
+
+public:
+ explicit basic_regex(){}
+ explicit basic_regex(const charT* p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f);
+ }
+ basic_regex(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
+ {
+ assign(p1, p2, f);
+ }
+ basic_regex(const charT* p, size_type len, flag_type f)
+ {
+ assign(p, len, f);
+ }
+ basic_regex(const basic_regex& that)
+ : m_pimpl(that.m_pimpl) {}
+ ~basic_regex(){}
+ basic_regex& BOOST_REGEX_CALL operator=(const basic_regex& that)
+ {
+ return assign(that);
+ }
+ basic_regex& BOOST_REGEX_CALL operator=(const charT* ptr)
+ {
+ return assign(ptr);
+ }
+
+ //
+ // assign:
+ basic_regex& assign(const basic_regex& that)
+ {
+ m_pimpl = that.m_pimpl;
+ return *this;
+ }
+ basic_regex& assign(const charT* p, flag_type f = regex_constants::normal)
+ {
+ return assign(p, p + traits::length(p), f);
+ }
+ basic_regex& assign(const charT* p, size_type len, flag_type f)
+ {
+ return assign(p, p + len, f);
+ }
+private:
+ basic_regex& do_assign(const charT* p1,
+ const charT* p2,
+ flag_type f);
+public:
+ basic_regex& assign(const charT* p1,
+ const charT* p2,
+ flag_type f = regex_constants::normal)
+ {
+ return do_assign(p1, p2, f);
+ }
+#if !defined(BOOST_NO_MEMBER_TEMPLATES)
+
+ template <class ST, class SA>
+ unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
+ {
+ return set_expression(p.data(), p.data() + p.size(), f);
+ }
+
+ template <class ST, class SA>
+ explicit basic_regex(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f);
+ }
+
+ template <class InputIterator>
+ basic_regex(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal)
+ {
+ typedef typename traits::string_type seq_type;
+ seq_type a(arg_first, arg_last);
+ if(a.size())
+ assign(&*a.begin(), &*a.begin() + a.size(), f);
+ else
+ assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f);
+ }
+
+ template <class ST, class SA>
+ basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)
+ {
+ return assign(p.data(), p.data() + p.size(), regex_constants::normal);
+ }
+
+ template <class string_traits, class A>
+ basic_regex& BOOST_REGEX_CALL assign(
+ const std::basic_string<charT, string_traits, A>& s,
+ flag_type f = regex_constants::normal)
+ {
+ return assign(s.data(), s.data() + s.size(), f);
+ }
+
+ template <class InputIterator>
+ basic_regex& BOOST_REGEX_CALL assign(InputIterator arg_first,
+ InputIterator arg_last,
+ flag_type f = regex_constants::normal)
+ {
+ typedef typename traits::string_type seq_type;
+ seq_type a(arg_first, arg_last);
+ if(a.size())
+ {
+ const charT* p1 = &*a.begin();
+ const charT* p2 = &*a.begin() + a.size();
+ return assign(p1, p2, f);
+ }
+ return assign(static_cast<const charT*>(0), static_cast<const charT*>(0), f);
+ }
+#else
+ unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
+ {
+ return set_expression(p.data(), p.data() + p.size(), f);
+ }
+
+ basic_regex(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f);
+ }
+
+ basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)
+ {
+ return assign(p.data(), p.data() + p.size(), regex_constants::normal);
+ }
+
+ basic_regex& BOOST_REGEX_CALL assign(
+ const std::basic_string<charT>& s,
+ flag_type f = regex_constants::normal)
+ {
+ return assign(s.data(), s.data() + s.size(), f);
+ }
+
+#endif
+
+ //
+ // locale:
+ locale_type BOOST_REGEX_CALL imbue(locale_type l);
+ locale_type BOOST_REGEX_CALL getloc()const
+ {
+ return m_pimpl.get() ? m_pimpl->getloc() : locale_type();
+ }
+ //
+ // getflags:
+ // retained for backwards compatibility only, "flags"
+ // is now the preferred name:
+ flag_type BOOST_REGEX_CALL getflags()const
+ {
+ return flags();
+ }
+ flag_type BOOST_REGEX_CALL flags()const
+ {
+ return m_pimpl.get() ? m_pimpl->flags() : 0;
+ }
+ //
+ // str:
+ std::basic_string<charT> BOOST_REGEX_CALL str()const
+ {
+ return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>();
+ }
+ //
+ // begin, end, subexpression:
+ std::pair<const_iterator, const_iterator> BOOST_REGEX_CALL subexpression(std::size_t n)const
+ {
+ if(!m_pimpl.get())
+ throw std::logic_error("Can't access subexpressions in an invalid regex.");
+ return m_pimpl->subexpression(n);
+ }
+ const_iterator BOOST_REGEX_CALL begin()const
+ {
+ return (m_pimpl.get() ? m_pimpl->begin() : 0);
+ }
+ const_iterator BOOST_REGEX_CALL end()const
+ {
+ return (m_pimpl.get() ? m_pimpl->end() : 0);
+ }
+ //
+ // swap:
+ void BOOST_REGEX_CALL swap(basic_regex& that)throw()
+ {
+ m_pimpl.swap(that.m_pimpl);
+ }
+ //
+ // size:
+ size_type BOOST_REGEX_CALL size()const
+ {
+ return (m_pimpl.get() ? m_pimpl->size() : 0);
+ }
+ //
+ // max_size:
+ size_type BOOST_REGEX_CALL max_size()const
+ {
+ return UINT_MAX;
+ }
+ //
+ // empty:
+ bool BOOST_REGEX_CALL empty()const
+ {
+ return (m_pimpl.get() ? 0 != m_pimpl->status() : true);
+ }
+
+ size_type BOOST_REGEX_CALL mark_count()const
+ {
+ return (m_pimpl.get() ? m_pimpl->mark_count() : 0);
+ }
+
+ int status()const
+ {
+ return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty);
+ }
+
+ int BOOST_REGEX_CALL compare(const basic_regex& that) const
+ {
+ if(m_pimpl.get() == that.m_pimpl.get())
+ return 0;
+ if(!m_pimpl.get())
+ return -1;
+ if(!that.m_pimpl.get())
+ return 1;
+ if(status() != that.status())
+ return status() - that.status();
+ if(flags() != that.flags())
+ return flags() - that.flags();
+ return str().compare(that.str());
+ }
+ bool BOOST_REGEX_CALL operator==(const basic_regex& e)const
+ {
+ return compare(e) == 0;
+ }
+ bool BOOST_REGEX_CALL operator != (const basic_regex& e)const
+ {
+ return compare(e) != 0;
+ }
+ bool BOOST_REGEX_CALL operator<(const basic_regex& e)const
+ {
+ return compare(e) < 0;
+ }
+ bool BOOST_REGEX_CALL operator>(const basic_regex& e)const
+ {
+ return compare(e) > 0;
+ }
+ bool BOOST_REGEX_CALL operator<=(const basic_regex& e)const
+ {
+ return compare(e) <= 0;
+ }
+ bool BOOST_REGEX_CALL operator>=(const basic_regex& e)const
+ {
+ return compare(e) >= 0;
+ }
+
+ //
+ // The following are deprecated as public interfaces
+ // but are available for compatibility with earlier versions.
+ const charT* BOOST_REGEX_CALL expression()const
+ {
+ return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0);
+ }
+ unsigned int BOOST_REGEX_CALL set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
+ {
+ assign(p1, p2, f | regex_constants::no_except);
+ return status();
+ }
+ unsigned int BOOST_REGEX_CALL set_expression(const charT* p, flag_type f = regex_constants::normal)
+ {
+ assign(p, f | regex_constants::no_except);
+ return status();
+ }
+ unsigned int BOOST_REGEX_CALL error_code()const
+ {
+ return status();
+ }
+ //
+ // private access methods:
+ //
+ const re_detail::re_syntax_base* get_first_state()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_first_state();
+ }
+ unsigned get_restart_type()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_restart_type();
+ }
+ const unsigned char* get_map()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_map();
+ }
+ const ::boost::regex_traits_wrapper<traits>& get_traits()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_traits();
+ }
+ bool can_be_null()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->can_be_null();
+ }
+ const re_detail::regex_data<charT, traits>& get_data()const
+ {
+ BOOST_ASSERT(0 != m_pimpl.get());
+ return m_pimpl->get_data();
+ }
+
+private:
+ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > m_pimpl;
+};
+
+//
+// out of line members;
+// these are the only members that mutate the basic_regex object,
+// and are designed to provide the strong exception guarentee
+// (in the event of a throw, the state of the object remains unchanged).
+//
+template <class charT, class traits>
+basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1,
+ const charT* p2,
+ flag_type f)
+{
+ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp;
+ if(!m_pimpl.get())
+ {
+ temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>());
+ }
+ else
+ {
+ temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>(m_pimpl->m_ptraits));
+ }
+ temp->assign(p1, p2, f);
+ temp.swap(m_pimpl);
+ return *this;
+}
+
+template <class charT, class traits>
+typename basic_regex<charT, traits>::locale_type BOOST_REGEX_CALL basic_regex<charT, traits>::imbue(locale_type l)
+{
+ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp(new re_detail::basic_regex_implementation<charT, traits>());
+ locale_type result = temp->imbue(l);
+ temp.swap(m_pimpl);
+ return result;
+}
+
+//
+// non-members:
+//
+template <class charT, class traits>
+void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2)
+{
+ e1.swap(e2);
+}
+
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT, class traits, class traits2>
+std::basic_ostream<charT, traits>&
+ operator << (std::basic_ostream<charT, traits>& os,
+ const basic_regex<charT, traits2>& e)
+{
+ return (os << e.str());
+}
+#else
+template <class traits>
+std::ostream& operator << (std::ostream& os, const basic_regex<char, traits>& e)
+{
+ return (os << e.str());
+}
+#endif
+
+//
+// class reg_expression:
+// this is provided for backwards compatibility only,
+// it is deprecated, no not use!
+//
+#ifdef BOOST_REGEX_NO_FWD
+template <class charT, class traits = regex_traits<charT> >
+#else
+template <class charT, class traits >
+#endif
+class reg_expression : public basic_regex<charT, traits>
+{
+public:
+ typedef typename basic_regex<charT, traits>::flag_type flag_type;
+ typedef typename basic_regex<charT, traits>::size_type size_type;
+ explicit reg_expression(){}
+ explicit reg_expression(const charT* p, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p, f){}
+ reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p1, p2, f){}
+ reg_expression(const charT* p, size_type len, flag_type f)
+ : basic_regex<charT, traits>(p, len, f){}
+ reg_expression(const reg_expression& that)
+ : basic_regex<charT, traits>(that) {}
+ ~reg_expression(){}
+ reg_expression& BOOST_REGEX_CALL operator=(const reg_expression& that)
+ {
+ return this->assign(that);
+ }
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES)
+ template <class ST, class SA>
+ explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p, f)
+ {
+ }
+
+ template <class InputIterator>
+ reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(arg_first, arg_last, f)
+ {
+ }
+
+ template <class ST, class SA>
+ reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)
+ {
+ this->assign(p);
+ return *this;
+ }
+#else
+ explicit reg_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)
+ : basic_regex<charT, traits>(p, f)
+ {
+ }
+
+ reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)
+ {
+ this->assign(p);
+ return *this;
+ }
+#endif
+
+};
+
+#ifdef BOOST_MSVC
+#pragma warning (pop)
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp b/3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp
new file mode 100644
index 0000000..9f2cbee
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/basic_regex_creator.hpp
@@ -0,0 +1,1332 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_regex_creator.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex_creator which fills in
+ * the data members of a regex_data object.
+ */
+
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
+#define BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4800)
+#endif
+
+namespace boost{
+
+namespace re_detail{
+
+template <class charT>
+struct digraph : public std::pair<charT, charT>
+{
+ digraph() : std::pair<charT, charT>(0, 0){}
+ digraph(charT c1) : std::pair<charT, charT>(c1, 0){}
+ digraph(charT c1, charT c2) : std::pair<charT, charT>(c1, c2)
+ {}
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ digraph(const digraph<charT>& d) : std::pair<charT, charT>(d.first, d.second){}
+#endif
+ template <class Seq>
+ digraph(const Seq& s) : std::pair<charT, charT>()
+ {
+ BOOST_ASSERT(s.size() <= 2);
+ BOOST_ASSERT(s.size());
+ this->first = s[0];
+ this->second = (s.size() > 1) ? s[1] : 0;
+ }
+};
+
+template <class charT, class traits>
+class basic_char_set
+{
+public:
+ typedef digraph<charT> digraph_type;
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_class_type mask_type;
+
+ basic_char_set()
+ {
+ m_negate = false;
+ m_has_digraphs = false;
+ m_classes = 0;
+ m_negated_classes = 0;
+ m_empty = true;
+ }
+
+ void add_single(const digraph_type& s)
+ {
+ m_singles.insert(m_singles.end(), s);
+ if(s.second)
+ m_has_digraphs = true;
+ m_empty = false;
+ }
+ void add_range(const digraph_type& first, const digraph_type& end)
+ {
+ m_ranges.insert(m_ranges.end(), first);
+ m_ranges.insert(m_ranges.end(), end);
+ if(first.second)
+ {
+ m_has_digraphs = true;
+ add_single(first);
+ }
+ if(end.second)
+ {
+ m_has_digraphs = true;
+ add_single(end);
+ }
+ m_empty = false;
+ }
+ void add_class(mask_type m)
+ {
+ m_classes |= m;
+ m_empty = false;
+ }
+ void add_negated_class(mask_type m)
+ {
+ m_negated_classes |= m;
+ m_empty = false;
+ }
+ void add_equivalent(const digraph_type& s)
+ {
+ m_equivalents.insert(m_equivalents.end(), s);
+ if(s.second)
+ {
+ m_has_digraphs = true;
+ add_single(s);
+ }
+ m_empty = false;
+ }
+ void negate()
+ {
+ m_negate = true;
+ //m_empty = false;
+ }
+
+ //
+ // accessor functions:
+ //
+ bool has_digraphs()const
+ {
+ return m_has_digraphs;
+ }
+ bool is_negated()const
+ {
+ return m_negate;
+ }
+ typedef typename std::vector<digraph_type>::const_iterator list_iterator;
+ list_iterator singles_begin()const
+ {
+ return m_singles.begin();
+ }
+ list_iterator singles_end()const
+ {
+ return m_singles.end();
+ }
+ list_iterator ranges_begin()const
+ {
+ return m_ranges.begin();
+ }
+ list_iterator ranges_end()const
+ {
+ return m_ranges.end();
+ }
+ list_iterator equivalents_begin()const
+ {
+ return m_equivalents.begin();
+ }
+ list_iterator equivalents_end()const
+ {
+ return m_equivalents.end();
+ }
+ mask_type classes()const
+ {
+ return m_classes;
+ }
+ mask_type negated_classes()const
+ {
+ return m_negated_classes;
+ }
+ bool empty()const
+ {
+ return m_empty;
+ }
+private:
+ std::vector<digraph_type> m_singles; // a list of single characters to match
+ std::vector<digraph_type> m_ranges; // a list of end points of our ranges
+ bool m_negate; // true if the set is to be negated
+ bool m_has_digraphs; // true if we have digraphs present
+ mask_type m_classes; // character classes to match
+ mask_type m_negated_classes; // negated character classes to match
+ bool m_empty; // whether we've added anything yet
+ std::vector<digraph_type> m_equivalents; // a list of equivalence classes
+};
+
+template <class charT, class traits>
+class basic_regex_creator
+{
+public:
+ basic_regex_creator(regex_data<charT, traits>* data);
+ std::ptrdiff_t getoffset(void* addr)
+ {
+ return getoffset(addr, m_pdata->m_data.data());
+ }
+ std::ptrdiff_t getoffset(const void* addr, const void* base)
+ {
+ return static_cast<const char*>(addr) - static_cast<const char*>(base);
+ }
+ re_syntax_base* getaddress(std::ptrdiff_t off)
+ {
+ return getaddress(off, m_pdata->m_data.data());
+ }
+ re_syntax_base* getaddress(std::ptrdiff_t off, void* base)
+ {
+ return static_cast<re_syntax_base*>(static_cast<void*>(static_cast<char*>(base) + off));
+ }
+ void init(unsigned l_flags)
+ {
+ m_pdata->m_flags = l_flags;
+ m_icase = l_flags & regex_constants::icase;
+ }
+ regbase::flag_type flags()
+ {
+ return m_pdata->m_flags;
+ }
+ void flags(regbase::flag_type f)
+ {
+ m_pdata->m_flags = f;
+ if(m_icase != static_cast<bool>(f & regbase::icase))
+ {
+ m_icase = static_cast<bool>(f & regbase::icase);
+ }
+ }
+ re_syntax_base* append_state(syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
+ re_syntax_base* insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s = sizeof(re_syntax_base));
+ re_literal* append_literal(charT c);
+ re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set);
+ re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::false_*);
+ re_syntax_base* append_set(const basic_char_set<charT, traits>& char_set, mpl::true_*);
+ void finalize(const charT* p1, const charT* p2);
+protected:
+ regex_data<charT, traits>* m_pdata; // pointer to the basic_regex_data struct we are filling in
+ const ::boost::regex_traits_wrapper<traits>&
+ m_traits; // convenience reference to traits class
+ re_syntax_base* m_last_state; // the last state we added
+ bool m_icase; // true for case insensitive matches
+ unsigned m_repeater_id; // the state_id of the next repeater
+ bool m_has_backrefs; // true if there are actually any backrefs
+ unsigned m_backrefs; // bitmask of permitted backrefs
+ boost::uintmax_t m_bad_repeats; // bitmask of repeats we can't deduce a startmap for;
+ typename traits::char_class_type m_word_mask; // mask used to determine if a character is a word character
+ typename traits::char_class_type m_mask_space; // mask used to determine if a character is a word character
+ typename traits::char_class_type m_lower_mask; // mask used to determine if a character is a lowercase character
+ typename traits::char_class_type m_upper_mask; // mask used to determine if a character is an uppercase character
+ typename traits::char_class_type m_alpha_mask; // mask used to determine if a character is an alphabetic character
+private:
+ basic_regex_creator& operator=(const basic_regex_creator&);
+ basic_regex_creator(const basic_regex_creator&);
+
+ void fixup_pointers(re_syntax_base* state);
+ void create_startmaps(re_syntax_base* state);
+ int calculate_backstep(re_syntax_base* state);
+ void create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask);
+ unsigned get_restart_type(re_syntax_base* state);
+ void set_all_masks(unsigned char* bits, unsigned char);
+ bool is_bad_repeat(re_syntax_base* pt);
+ void set_bad_repeat(re_syntax_base* pt);
+ syntax_element_type get_repeat_type(re_syntax_base* state);
+ void probe_leading_repeat(re_syntax_base* state);
+};
+
+template <class charT, class traits>
+basic_regex_creator<charT, traits>::basic_regex_creator(regex_data<charT, traits>* data)
+ : m_pdata(data), m_traits(*(data->m_ptraits)), m_last_state(0), m_repeater_id(0), m_has_backrefs(false), m_backrefs(0)
+{
+ m_pdata->m_data.clear();
+ m_pdata->m_status = ::boost::regex_constants::error_ok;
+ static const charT w = 'w';
+ static const charT s = 's';
+ static const charT l[5] = { 'l', 'o', 'w', 'e', 'r', };
+ static const charT u[5] = { 'u', 'p', 'p', 'e', 'r', };
+ static const charT a[5] = { 'a', 'l', 'p', 'h', 'a', };
+ m_word_mask = m_traits.lookup_classname(&w, &w +1);
+ m_mask_space = m_traits.lookup_classname(&s, &s +1);
+ m_lower_mask = m_traits.lookup_classname(l, l + 5);
+ m_upper_mask = m_traits.lookup_classname(u, u + 5);
+ m_alpha_mask = m_traits.lookup_classname(a, a + 5);
+ m_pdata->m_word_mask = m_word_mask;
+ BOOST_ASSERT(m_word_mask != 0);
+ BOOST_ASSERT(m_mask_space != 0);
+ BOOST_ASSERT(m_lower_mask != 0);
+ BOOST_ASSERT(m_upper_mask != 0);
+ BOOST_ASSERT(m_alpha_mask != 0);
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::append_state(syntax_element_type t, std::size_t s)
+{
+ // if the state is a backref then make a note of it:
+ if(t == syntax_element_backref)
+ this->m_has_backrefs = true;
+ // append a new state, start by aligning our last one:
+ m_pdata->m_data.align();
+ // set the offset to the next state in our last one:
+ if(m_last_state)
+ m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state);
+ // now actually extent our data:
+ m_last_state = static_cast<re_syntax_base*>(m_pdata->m_data.extend(s));
+ // fill in boilerplate options in the new state:
+ m_last_state->next.i = 0;
+ m_last_state->type = t;
+ return m_last_state;
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::insert_state(std::ptrdiff_t pos, syntax_element_type t, std::size_t s)
+{
+ // append a new state, start by aligning our last one:
+ m_pdata->m_data.align();
+ // set the offset to the next state in our last one:
+ if(m_last_state)
+ m_last_state->next.i = m_pdata->m_data.size() - getoffset(m_last_state);
+ // remember the last state position:
+ std::ptrdiff_t off = getoffset(m_last_state) + s;
+ // now actually insert our data:
+ re_syntax_base* new_state = static_cast<re_syntax_base*>(m_pdata->m_data.insert(pos, s));
+ // fill in boilerplate options in the new state:
+ new_state->next.i = s;
+ new_state->type = t;
+ m_last_state = getaddress(off);
+ return new_state;
+}
+
+template <class charT, class traits>
+re_literal* basic_regex_creator<charT, traits>::append_literal(charT c)
+{
+ re_literal* result;
+ // start by seeing if we have an existing re_literal we can extend:
+ if((0 == m_last_state) || (m_last_state->type != syntax_element_literal))
+ {
+ // no existing re_literal, create a new one:
+ result = static_cast<re_literal*>(append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT)));
+ result->length = 1;
+ *static_cast<charT*>(static_cast<void*>(result+1)) = m_traits.translate(c, m_icase);
+ }
+ else
+ {
+ // we have an existing re_literal, extend it:
+ std::ptrdiff_t off = getoffset(m_last_state);
+ m_pdata->m_data.extend(sizeof(charT));
+ m_last_state = result = static_cast<re_literal*>(getaddress(off));
+ charT* characters = static_cast<charT*>(static_cast<void*>(result+1));
+ characters[result->length] = m_traits.translate(c, m_icase);
+ ++(result->length);
+ }
+ return result;
+}
+
+template <class charT, class traits>
+inline re_syntax_base* basic_regex_creator<charT, traits>::append_set(
+ const basic_char_set<charT, traits>& char_set)
+{
+ typedef mpl::bool_< (sizeof(charT) == 1) > truth_type;
+ return char_set.has_digraphs()
+ ? append_set(char_set, static_cast<mpl::false_*>(0))
+ : append_set(char_set, static_cast<truth_type*>(0));
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::append_set(
+ const basic_char_set<charT, traits>& char_set, mpl::false_*)
+{
+ typedef typename traits::string_type string_type;
+ typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
+ typedef typename traits::char_class_type mask_type;
+
+ re_set_long<mask_type>* result = static_cast<re_set_long<mask_type>*>(append_state(syntax_element_long_set, sizeof(re_set_long<mask_type>)));
+ //
+ // fill in the basics:
+ //
+ result->csingles = static_cast<unsigned int>(::boost::re_detail::distance(char_set.singles_begin(), char_set.singles_end()));
+ result->cranges = static_cast<unsigned int>(::boost::re_detail::distance(char_set.ranges_begin(), char_set.ranges_end())) / 2;
+ result->cequivalents = static_cast<unsigned int>(::boost::re_detail::distance(char_set.equivalents_begin(), char_set.equivalents_end()));
+ result->cclasses = char_set.classes();
+ result->cnclasses = char_set.negated_classes();
+ if(flags() & regbase::icase)
+ {
+ // adjust classes as needed:
+ if(((result->cclasses & m_lower_mask) == m_lower_mask) || ((result->cclasses & m_upper_mask) == m_upper_mask))
+ result->cclasses |= m_alpha_mask;
+ if(((result->cnclasses & m_lower_mask) == m_lower_mask) || ((result->cnclasses & m_upper_mask) == m_upper_mask))
+ result->cnclasses |= m_alpha_mask;
+ }
+
+ result->isnot = char_set.is_negated();
+ result->singleton = !char_set.has_digraphs();
+ //
+ // remember where the state is for later:
+ //
+ std::ptrdiff_t offset = getoffset(result);
+ //
+ // now extend with all the singles:
+ //
+ item_iterator first, last;
+ first = char_set.singles_begin();
+ last = char_set.singles_end();
+ while(first != last)
+ {
+ charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (first->second ? 3 : 2)));
+ p[0] = m_traits.translate(first->first, m_icase);
+ if(first->second)
+ {
+ p[1] = m_traits.translate(first->second, m_icase);
+ p[2] = 0;
+ }
+ else
+ p[1] = 0;
+ ++first;
+ }
+ //
+ // now extend with all the ranges:
+ //
+ first = char_set.ranges_begin();
+ last = char_set.ranges_end();
+ while(first != last)
+ {
+ // first grab the endpoints of the range:
+ digraph<charT> c1 = *first;
+ c1.first = this->m_traits.translate(c1.first, this->m_icase);
+ c1.second = this->m_traits.translate(c1.second, this->m_icase);
+ ++first;
+ digraph<charT> c2 = *first;
+ c2.first = this->m_traits.translate(c2.first, this->m_icase);
+ c2.second = this->m_traits.translate(c2.second, this->m_icase);
+ ++first;
+ string_type s1, s2;
+ // different actions now depending upon whether collation is turned on:
+ if(flags() & regex_constants::collate)
+ {
+ // we need to transform our range into sort keys:
+#if BOOST_WORKAROUND(__GNUC__, < 3)
+ string_type in(3, charT(0));
+ in[0] = c1.first;
+ in[1] = c1.second;
+ s1 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1));
+ in[0] = c2.first;
+ in[1] = c2.second;
+ s2 = this->m_traits.transform(in.c_str(), (in[1] ? in.c_str()+2 : in.c_str()+1));
+#else
+ charT a1[3] = { c1.first, c1.second, charT(0), };
+ charT a2[3] = { c2.first, c2.second, charT(0), };
+ s1 = this->m_traits.transform(a1, (a1[1] ? a1+2 : a1+1));
+ s2 = this->m_traits.transform(a2, (a2[1] ? a2+2 : a2+1));
+#endif
+ if(s1.size() == 0)
+ s1 = string_type(1, charT(0));
+ if(s2.size() == 0)
+ s2 = string_type(1, charT(0));
+ }
+ else
+ {
+ if(c1.second)
+ {
+ s1.insert(s1.end(), c1.first);
+ s1.insert(s1.end(), c1.second);
+ }
+ else
+ s1 = string_type(1, c1.first);
+ if(c2.second)
+ {
+ s2.insert(s2.end(), c2.first);
+ s2.insert(s2.end(), c2.second);
+ }
+ else
+ s2.insert(s2.end(), c2.first);
+ }
+ if(s1 > s2)
+ {
+ // Oops error:
+ return 0;
+ }
+ charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s1.size() + s2.size() + 2) ) );
+ re_detail::copy(s1.begin(), s1.end(), p);
+ p[s1.size()] = charT(0);
+ p += s1.size() + 1;
+ re_detail::copy(s2.begin(), s2.end(), p);
+ p[s2.size()] = charT(0);
+ }
+ //
+ // now process the equivalence classes:
+ //
+ first = char_set.equivalents_begin();
+ last = char_set.equivalents_end();
+ while(first != last)
+ {
+ string_type s;
+ if(first->second)
+ {
+#if BOOST_WORKAROUND(__GNUC__, < 3)
+ string_type in(3, charT(0));
+ in[0] = first->first;
+ in[1] = first->second;
+ s = m_traits.transform_primary(in.c_str(), in.c_str()+2);
+#else
+ charT cs[3] = { first->first, first->second, charT(0), };
+ s = m_traits.transform_primary(cs, cs+2);
+#endif
+ }
+ else
+ s = m_traits.transform_primary(&first->first, &first->first+1);
+ if(s.empty())
+ return 0; // invalid or unsupported equivalence class
+ charT* p = static_cast<charT*>(this->m_pdata->m_data.extend(sizeof(charT) * (s.size()+1) ) );
+ re_detail::copy(s.begin(), s.end(), p);
+ p[s.size()] = charT(0);
+ ++first;
+ }
+ //
+ // finally reset the address of our last state:
+ //
+ m_last_state = result = static_cast<re_set_long<mask_type>*>(getaddress(offset));
+ return result;
+}
+
+namespace{
+
+template<class T>
+inline bool char_less(T t1, T t2)
+{
+ return t1 < t2;
+}
+template<>
+inline bool char_less<char>(char t1, char t2)
+{
+ return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2);
+}
+template<>
+inline bool char_less<signed char>(signed char t1, signed char t2)
+{
+ return static_cast<unsigned char>(t1) < static_cast<unsigned char>(t2);
+}
+}
+
+template <class charT, class traits>
+re_syntax_base* basic_regex_creator<charT, traits>::append_set(
+ const basic_char_set<charT, traits>& char_set, mpl::true_*)
+{
+ typedef typename traits::string_type string_type;
+ typedef typename basic_char_set<charT, traits>::list_iterator item_iterator;
+
+ re_set* result = static_cast<re_set*>(append_state(syntax_element_set, sizeof(re_set)));
+ bool negate = char_set.is_negated();
+ std::memset(result->_map, 0, sizeof(result->_map));
+ //
+ // handle singles first:
+ //
+ item_iterator first, last;
+ first = char_set.singles_begin();
+ last = char_set.singles_end();
+ while(first != last)
+ {
+ for(unsigned int i = 0; i < (1 << CHAR_BIT); ++i)
+ {
+ if(this->m_traits.translate(static_cast<charT>(i), this->m_icase)
+ == this->m_traits.translate(first->first, this->m_icase))
+ result->_map[i] = true;
+ }
+ ++first;
+ }
+ //
+ // OK now handle ranges:
+ //
+ first = char_set.ranges_begin();
+ last = char_set.ranges_end();
+ while(first != last)
+ {
+ // first grab the endpoints of the range:
+ charT c1 = this->m_traits.translate(first->first, this->m_icase);
+ ++first;
+ charT c2 = this->m_traits.translate(first->first, this->m_icase);
+ ++first;
+ // different actions now depending upon whether collation is turned on:
+ if(flags() & regex_constants::collate)
+ {
+ // we need to transform our range into sort keys:
+ charT c3[2] = { c1, charT(0), };
+ string_type s1 = this->m_traits.transform(c3, c3+1);
+ c3[0] = c2;
+ string_type s2 = this->m_traits.transform(c3, c3+1);
+ if(s1 > s2)
+ {
+ // Oops error:
+ return 0;
+ }
+ BOOST_ASSERT(c3[1] == charT(0));
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ c3[0] = static_cast<charT>(i);
+ string_type s3 = this->m_traits.transform(c3, c3 +1);
+ if((s1 <= s3) && (s3 <= s2))
+ result->_map[i] = true;
+ }
+ }
+ else
+ {
+ if(char_less<charT>(c2, c1))
+ {
+ // Oops error:
+ return 0;
+ }
+ // everything in range matches:
+ std::memset(result->_map + static_cast<unsigned char>(c1), true, 1 + static_cast<unsigned char>(c2) - static_cast<unsigned char>(c1));
+ }
+ }
+ //
+ // and now the classes:
+ //
+ typedef typename traits::char_class_type mask_type;
+ mask_type m = char_set.classes();
+ if(flags() & regbase::icase)
+ {
+ // adjust m as needed:
+ if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask))
+ m |= m_alpha_mask;
+ }
+ if(m != 0)
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(this->m_traits.isctype(static_cast<charT>(i), m))
+ result->_map[i] = true;
+ }
+ }
+ //
+ // and now the negated classes:
+ //
+ m = char_set.negated_classes();
+ if(flags() & regbase::icase)
+ {
+ // adjust m as needed:
+ if(((m & m_lower_mask) == m_lower_mask) || ((m & m_upper_mask) == m_upper_mask))
+ m |= m_alpha_mask;
+ }
+ if(m != 0)
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(0 == this->m_traits.isctype(static_cast<charT>(i), m))
+ result->_map[i] = true;
+ }
+ }
+ //
+ // now process the equivalence classes:
+ //
+ first = char_set.equivalents_begin();
+ last = char_set.equivalents_end();
+ while(first != last)
+ {
+ string_type s;
+ BOOST_ASSERT(static_cast<charT>(0) == first->second);
+ s = m_traits.transform_primary(&first->first, &first->first+1);
+ if(s.empty())
+ return 0; // invalid or unsupported equivalence class
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ charT c[2] = { (static_cast<charT>(i)), charT(0), };
+ string_type s2 = this->m_traits.transform_primary(c, c+1);
+ if(s == s2)
+ result->_map[i] = true;
+ }
+ ++first;
+ }
+ if(negate)
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ result->_map[i] = !(result->_map[i]);
+ }
+ }
+ return result;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::finalize(const charT* p1, const charT* p2)
+{
+ // we've added all the states we need, now finish things off.
+ // start by adding a terminating state:
+ append_state(syntax_element_match);
+ // extend storage to store original expression:
+ std::ptrdiff_t len = p2 - p1;
+ m_pdata->m_expression_len = len;
+ charT* ps = static_cast<charT*>(m_pdata->m_data.extend(sizeof(charT) * (1 + (p2 - p1))));
+ m_pdata->m_expression = ps;
+ re_detail::copy(p1, p2, ps);
+ ps[p2 - p1] = 0;
+ // fill in our other data...
+ // successful parsing implies a zero status:
+ m_pdata->m_status = 0;
+ // get the first state of the machine:
+ m_pdata->m_first_state = static_cast<re_syntax_base*>(m_pdata->m_data.data());
+ // fixup pointers in the machine:
+ fixup_pointers(m_pdata->m_first_state);
+ // create nested startmaps:
+ create_startmaps(m_pdata->m_first_state);
+ // create main startmap:
+ std::memset(m_pdata->m_startmap, 0, sizeof(m_pdata->m_startmap));
+ m_pdata->m_can_be_null = 0;
+
+ m_bad_repeats = 0;
+ create_startmap(m_pdata->m_first_state, m_pdata->m_startmap, &(m_pdata->m_can_be_null), mask_all);
+ // get the restart type:
+ m_pdata->m_restart_type = get_restart_type(m_pdata->m_first_state);
+ // optimise a leading repeat if there is one:
+ probe_leading_repeat(m_pdata->m_first_state);
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::fixup_pointers(re_syntax_base* state)
+{
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ // set the state_id of this repeat:
+ static_cast<re_repeat*>(state)->state_id = m_repeater_id++;
+ // fall through:
+ case syntax_element_alt:
+ std::memset(static_cast<re_alt*>(state)->_map, 0, sizeof(static_cast<re_alt*>(state)->_map));
+ static_cast<re_alt*>(state)->can_be_null = 0;
+ // fall through:
+ case syntax_element_jump:
+ static_cast<re_jump*>(state)->alt.p = getaddress(static_cast<re_jump*>(state)->alt.i, state);
+ // fall through again:
+ default:
+ if(state->next.i)
+ state->next.p = getaddress(state->next.i, state);
+ else
+ state->next.p = 0;
+ }
+ state = state->next.p;
+ }
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::create_startmaps(re_syntax_base* state)
+{
+ // non-recursive implementation:
+ // create the last map in the machine first, so that earlier maps
+ // can make use of the result...
+ //
+ // This was originally a recursive implementation, but that caused stack
+ // overflows with complex expressions on small stacks (think COM+).
+
+ // start by saving the case setting:
+ bool l_icase = m_icase;
+ std::vector<std::pair<bool, re_syntax_base*> > v;
+
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_toggle_case:
+ // we need to track case changes here:
+ m_icase = static_cast<re_case*>(state)->icase;
+ state = state->next.p;
+ continue;
+ case syntax_element_alt:
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ // just push the state onto our stack for now:
+ v.push_back(std::pair<bool, re_syntax_base*>(m_icase, state));
+ state = state->next.p;
+ break;
+ case syntax_element_backstep:
+ // we need to calculate how big the backstep is:
+ static_cast<re_brace*>(state)->index
+ = this->calculate_backstep(state->next.p);
+ if(static_cast<re_brace*>(state)->index < 0)
+ {
+ // Oops error:
+ if(0 == this->m_pdata->m_status) // update the error code if not already set
+ this->m_pdata->m_status = boost::regex_constants::error_bad_pattern;
+ //
+ // clear the expression, we should be empty:
+ //
+ this->m_pdata->m_expression = 0;
+ this->m_pdata->m_expression_len = 0;
+ //
+ // and throw if required:
+ //
+ if(0 == (this->flags() & regex_constants::no_except))
+ {
+ std::string message = this->m_pdata->m_ptraits->error_string(boost::regex_constants::error_bad_pattern);
+ boost::regex_error e(message, boost::regex_constants::error_bad_pattern, 0);
+ e.raise();
+ }
+ }
+ // fall through:
+ default:
+ state = state->next.p;
+ }
+ }
+ // now work through our list, building all the maps as we go:
+ while(v.size())
+ {
+ const std::pair<bool, re_syntax_base*>& p = v.back();
+ m_icase = p.first;
+ state = p.second;
+ v.pop_back();
+
+ // Build maps:
+ m_bad_repeats = 0;
+ create_startmap(state->next.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_take);
+ m_bad_repeats = 0;
+ create_startmap(static_cast<re_alt*>(state)->alt.p, static_cast<re_alt*>(state)->_map, &static_cast<re_alt*>(state)->can_be_null, mask_skip);
+ // adjust the type of the state to allow for faster matching:
+ state->type = this->get_repeat_type(state);
+ }
+ // restore case sensitivity:
+ m_icase = l_icase;
+}
+
+template <class charT, class traits>
+int basic_regex_creator<charT, traits>::calculate_backstep(re_syntax_base* state)
+{
+ typedef typename traits::char_class_type mask_type;
+ int result = 0;
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_startmark:
+ if((static_cast<re_brace*>(state)->index == -1)
+ || (static_cast<re_brace*>(state)->index == -2))
+ {
+ state = static_cast<re_jump*>(state->next.p)->alt.p->next.p;
+ continue;
+ }
+ else if(static_cast<re_brace*>(state)->index == -3)
+ {
+ state = state->next.p->next.p;
+ continue;
+ }
+ break;
+ case syntax_element_endmark:
+ if((static_cast<re_brace*>(state)->index == -1)
+ || (static_cast<re_brace*>(state)->index == -2))
+ return result;
+ break;
+ case syntax_element_literal:
+ result += static_cast<re_literal*>(state)->length;
+ break;
+ case syntax_element_wild:
+ case syntax_element_set:
+ result += 1;
+ break;
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_backref:
+ case syntax_element_rep:
+ case syntax_element_combining:
+ case syntax_element_long_set_rep:
+ case syntax_element_backstep:
+ {
+ re_repeat* rep = static_cast<re_repeat *>(state);
+ // adjust the type of the state to allow for faster matching:
+ state->type = this->get_repeat_type(state);
+ if((state->type == syntax_element_dot_rep)
+ || (state->type == syntax_element_char_rep)
+ || (state->type == syntax_element_short_set_rep))
+ {
+ if(rep->max != rep->min)
+ return -1;
+ result += static_cast<int>(rep->min);
+ state = rep->alt.p;
+ continue;
+ }
+ else if((state->type == syntax_element_long_set_rep))
+ {
+ BOOST_ASSERT(rep->next.p->type == syntax_element_long_set);
+ if(static_cast<re_set_long<mask_type>*>(rep->next.p)->singleton == 0)
+ return -1;
+ if(rep->max != rep->min)
+ return -1;
+ result += static_cast<int>(rep->min);
+ state = rep->alt.p;
+ continue;
+ }
+ }
+ return -1;
+ case syntax_element_long_set:
+ if(static_cast<re_set_long<mask_type>*>(state)->singleton == 0)
+ return -1;
+ result += 1;
+ break;
+ case syntax_element_jump:
+ state = static_cast<re_jump*>(state)->alt.p;
+ continue;
+ default:
+ break;
+ }
+ state = state->next.p;
+ }
+ return -1;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state, unsigned char* l_map, unsigned int* pnull, unsigned char mask)
+{
+ int not_last_jump = 1;
+
+ // track case sensitivity:
+ bool l_icase = m_icase;
+
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_toggle_case:
+ l_icase = static_cast<re_case*>(state)->icase;
+ state = state->next.p;
+ break;
+ case syntax_element_literal:
+ {
+ // don't set anything in *pnull, set each element in l_map
+ // that could match the first character in the literal:
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ charT first_char = *static_cast<charT*>(static_cast<void*>(static_cast<re_literal*>(state) + 1));
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(m_traits.translate(static_cast<charT>(i), l_icase) == first_char)
+ l_map[i] |= mask;
+ }
+ }
+ return;
+ }
+ case syntax_element_end_line:
+ {
+ // next character must be a line separator (if there is one):
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ l_map['\n'] |= mask;
+ l_map['\r'] |= mask;
+ l_map['\f'] |= mask;
+ l_map[0x85] |= mask;
+ }
+ // now figure out if we can match a NULL string at this point:
+ if(pnull)
+ create_startmap(state->next.p, 0, pnull, mask);
+ return;
+ }
+ case syntax_element_backref:
+ // can be null, and any character can match:
+ if(pnull)
+ *pnull |= mask;
+ // fall through:
+ case syntax_element_wild:
+ {
+ // can't be null, any character can match:
+ set_all_masks(l_map, mask);
+ return;
+ }
+ case syntax_element_match:
+ {
+ // must be null, any character can match:
+ set_all_masks(l_map, mask);
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ case syntax_element_word_start:
+ {
+ // recurse, then AND with all the word characters:
+ create_startmap(state->next.p, l_map, pnull, mask);
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(!m_traits.isctype(static_cast<charT>(i), m_word_mask))
+ l_map[i] &= static_cast<unsigned char>(~mask);
+ }
+ }
+ return;
+ }
+ case syntax_element_word_end:
+ {
+ // recurse, then AND with all the word characters:
+ create_startmap(state->next.p, l_map, pnull, mask);
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(m_traits.isctype(static_cast<charT>(i), m_word_mask))
+ l_map[i] &= static_cast<unsigned char>(~mask);
+ }
+ }
+ return;
+ }
+ case syntax_element_buffer_end:
+ {
+ // we *must be null* :
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ case syntax_element_long_set:
+ if(l_map)
+ {
+ typedef typename traits::char_class_type mask_type;
+ if(static_cast<re_set_long<mask_type>*>(state)->singleton)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ charT c = static_cast<charT>(i);
+ if(&c != re_is_set_member(&c, &c + 1, static_cast<re_set_long<mask_type>*>(state), *m_pdata, m_icase))
+ l_map[i] |= mask;
+ }
+ }
+ else
+ set_all_masks(l_map, mask);
+ }
+ return;
+ case syntax_element_set:
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
+ {
+ if(static_cast<re_set*>(state)->_map[
+ static_cast<unsigned char>(m_traits.translate(static_cast<charT>(i), l_icase))])
+ l_map[i] |= mask;
+ }
+ }
+ return;
+ case syntax_element_jump:
+ // take the jump:
+ state = static_cast<re_alt*>(state)->alt.p;
+ not_last_jump = -1;
+ break;
+ case syntax_element_alt:
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ {
+ re_alt* rep = static_cast<re_alt*>(state);
+ if(rep->_map[0] & mask_init)
+ {
+ if(l_map)
+ {
+ // copy previous results:
+ l_map[0] |= mask_init;
+ for(unsigned int i = 0; i <= UCHAR_MAX; ++i)
+ {
+ if(rep->_map[i] & mask_any)
+ l_map[i] |= mask;
+ }
+ }
+ if(pnull)
+ {
+ if(rep->can_be_null & mask_any)
+ *pnull |= mask;
+ }
+ }
+ else
+ {
+ // we haven't created a startmap for this alternative yet
+ // so take the union of the two options:
+ if(is_bad_repeat(state))
+ {
+ set_all_masks(l_map, mask);
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ set_bad_repeat(state);
+ create_startmap(state->next.p, l_map, pnull, mask);
+ if((state->type == syntax_element_alt)
+ || (static_cast<re_repeat*>(state)->min == 0)
+ || (not_last_jump == 0))
+ create_startmap(rep->alt.p, l_map, pnull, mask);
+ }
+ }
+ return;
+ case syntax_element_soft_buffer_end:
+ // match newline or null:
+ if(l_map)
+ {
+ l_map[0] |= mask_init;
+ l_map['\n'] |= mask;
+ l_map['\r'] |= mask;
+ }
+ if(pnull)
+ *pnull |= mask;
+ return;
+ case syntax_element_endmark:
+ // need to handle independent subs as a special case:
+ if(static_cast<re_brace*>(state)->index < 0)
+ {
+ // can be null, any character can match:
+ set_all_masks(l_map, mask);
+ if(pnull)
+ *pnull |= mask;
+ return;
+ }
+ else
+ {
+ state = state->next.p;
+ break;
+ }
+
+ case syntax_element_startmark:
+ // need to handle independent subs as a special case:
+ if(static_cast<re_brace*>(state)->index == -3)
+ {
+ state = state->next.p->next.p;
+ break;
+ }
+ // otherwise fall through:
+ default:
+ state = state->next.p;
+ }
+ ++not_last_jump;
+ }
+}
+
+template <class charT, class traits>
+unsigned basic_regex_creator<charT, traits>::get_restart_type(re_syntax_base* state)
+{
+ //
+ // find out how the machine starts, so we can optimise the search:
+ //
+ while(state)
+ {
+ switch(state->type)
+ {
+ case syntax_element_startmark:
+ case syntax_element_endmark:
+ state = state->next.p;
+ continue;
+ case syntax_element_start_line:
+ return regbase::restart_line;
+ case syntax_element_word_start:
+ return regbase::restart_word;
+ case syntax_element_buffer_start:
+ return regbase::restart_buf;
+ case syntax_element_restart_continue:
+ return regbase::restart_continue;
+ default:
+ state = 0;
+ continue;
+ }
+ }
+ return regbase::restart_any;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::set_all_masks(unsigned char* bits, unsigned char mask)
+{
+ //
+ // set mask in all of bits elements,
+ // if bits[0] has mask_init not set then we can
+ // optimise this to a call to memset:
+ //
+ if(bits)
+ {
+ if(bits[0] == 0)
+ (std::memset)(bits, mask, 1u << CHAR_BIT);
+ else
+ {
+ for(unsigned i = 0; i < (1u << CHAR_BIT); ++i)
+ bits[i] |= mask;
+ }
+ bits[0] |= mask_init;
+ }
+}
+
+template <class charT, class traits>
+bool basic_regex_creator<charT, traits>::is_bad_repeat(re_syntax_base* pt)
+{
+ switch(pt->type)
+ {
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ {
+ unsigned state_id = static_cast<re_repeat*>(pt)->state_id;
+ if(state_id > sizeof(m_bad_repeats) * CHAR_BIT)
+ return true; // run out of bits, assume we can't traverse this one.
+ static const boost::uintmax_t one = 1uL;
+ return m_bad_repeats & (one << state_id);
+ }
+ default:
+ return false;
+ }
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::set_bad_repeat(re_syntax_base* pt)
+{
+ switch(pt->type)
+ {
+ case syntax_element_rep:
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ {
+ unsigned state_id = static_cast<re_repeat*>(pt)->state_id;
+ static const boost::uintmax_t one = 1uL;
+ if(state_id <= sizeof(m_bad_repeats) * CHAR_BIT)
+ m_bad_repeats |= (one << state_id);
+ }
+ default:
+ break;
+ }
+}
+
+template <class charT, class traits>
+syntax_element_type basic_regex_creator<charT, traits>::get_repeat_type(re_syntax_base* state)
+{
+ typedef typename traits::char_class_type mask_type;
+ if(state->type == syntax_element_rep)
+ {
+ // check to see if we are repeating a single state:
+ if(state->next.p->next.p->next.p == static_cast<re_alt*>(state)->alt.p)
+ {
+ switch(state->next.p->type)
+ {
+ case re_detail::syntax_element_wild:
+ return re_detail::syntax_element_dot_rep;
+ case re_detail::syntax_element_literal:
+ return re_detail::syntax_element_char_rep;
+ case re_detail::syntax_element_set:
+ return re_detail::syntax_element_short_set_rep;
+ case re_detail::syntax_element_long_set:
+ if(static_cast<re_detail::re_set_long<mask_type>*>(state->next.p)->singleton)
+ return re_detail::syntax_element_long_set_rep;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ return state->type;
+}
+
+template <class charT, class traits>
+void basic_regex_creator<charT, traits>::probe_leading_repeat(re_syntax_base* state)
+{
+ // enumerate our states, and see if we have a leading repeat
+ // for which failed search restarts can be optimised;
+ do
+ {
+ switch(state->type)
+ {
+ case syntax_element_startmark:
+ if(static_cast<re_brace*>(state)->index >= 0)
+ {
+ state = state->next.p;
+ continue;
+ }
+ if((static_cast<re_brace*>(state)->index == -1)
+ || (static_cast<re_brace*>(state)->index == -2))
+ {
+ // skip past the zero width assertion:
+ state = static_cast<const re_jump*>(state->next.p)->alt.p->next.p;
+ continue;
+ }
+ if(static_cast<re_brace*>(state)->index == -3)
+ {
+ // Have to skip the leading jump state:
+ state = state->next.p->next.p;
+ continue;
+ }
+ return;
+ case syntax_element_endmark:
+ case syntax_element_start_line:
+ case syntax_element_end_line:
+ case syntax_element_word_boundary:
+ case syntax_element_within_word:
+ case syntax_element_word_start:
+ case syntax_element_word_end:
+ case syntax_element_buffer_start:
+ case syntax_element_buffer_end:
+ case syntax_element_restart_continue:
+ state = state->next.p;
+ break;
+ case syntax_element_dot_rep:
+ case syntax_element_char_rep:
+ case syntax_element_short_set_rep:
+ case syntax_element_long_set_rep:
+ if(this->m_has_backrefs == 0)
+ static_cast<re_repeat*>(state)->leading = true;
+ // fall through:
+ default:
+ return;
+ }
+ }while(state);
+}
+
+
+} // namespace re_detail
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp b/3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp
new file mode 100644
index 0000000..b8bc996
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/basic_regex_parser.hpp
@@ -0,0 +1,2140 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_regex_parser.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex_parser.
+ */
+
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
+#define BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244 4800)
+#endif
+
+template <class charT, class traits>
+class basic_regex_parser : public basic_regex_creator<charT, traits>
+{
+public:
+ basic_regex_parser(regex_data<charT, traits>* data);
+ void parse(const charT* p1, const charT* p2, unsigned flags);
+ void fail(regex_constants::error_type error_code, std::ptrdiff_t position);
+
+ bool parse_all();
+ bool parse_basic();
+ bool parse_extended();
+ bool parse_literal();
+ bool parse_open_paren();
+ bool parse_basic_escape();
+ bool parse_extended_escape();
+ bool parse_match_any();
+ bool parse_repeat(std::size_t low = 0, std::size_t high = (std::numeric_limits<std::size_t>::max)());
+ bool parse_repeat_range(bool isbasic);
+ bool parse_alt();
+ bool parse_set();
+ bool parse_backref();
+ void parse_set_literal(basic_char_set<charT, traits>& char_set);
+ bool parse_inner_set(basic_char_set<charT, traits>& char_set);
+ bool parse_QE();
+ bool parse_perl_extension();
+ bool add_emacs_code(bool negate);
+ bool unwind_alts(std::ptrdiff_t last_paren_start);
+ digraph<charT> get_next_set_literal(basic_char_set<charT, traits>& char_set);
+ charT unescape_character();
+ regex_constants::syntax_option_type parse_options();
+
+private:
+ typedef bool (basic_regex_parser::*parser_proc_type)();
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_class_type char_class_type;
+ parser_proc_type m_parser_proc; // the main parser to use
+ const charT* m_base; // the start of the string being parsed
+ const charT* m_end; // the end of the string being parsed
+ const charT* m_position; // our current parser position
+ unsigned m_mark_count; // how many sub-expressions we have
+ std::ptrdiff_t m_paren_start; // where the last seen ')' began (where repeats are inserted).
+ std::ptrdiff_t m_alt_insert_point; // where to insert the next alternative
+ bool m_has_case_change; // true if somewhere in the current block the case has changed
+#if defined(BOOST_MSVC) && defined(_M_IX86)
+ // This is an ugly warning suppression workaround (for warnings *inside* std::vector
+ // that can not otherwise be suppressed)...
+ BOOST_STATIC_ASSERT(sizeof(long) >= sizeof(void*));
+ std::vector<long> m_alt_jumps; // list of alternative in the current scope.
+#else
+ std::vector<std::ptrdiff_t> m_alt_jumps; // list of alternative in the current scope.
+#endif
+
+ basic_regex_parser& operator=(const basic_regex_parser&);
+ basic_regex_parser(const basic_regex_parser&);
+};
+
+template <class charT, class traits>
+basic_regex_parser<charT, traits>::basic_regex_parser(regex_data<charT, traits>* data)
+ : basic_regex_creator<charT, traits>(data), m_mark_count(0), m_paren_start(0), m_alt_insert_point(0), m_has_case_change(false)
+{
+}
+
+template <class charT, class traits>
+void basic_regex_parser<charT, traits>::parse(const charT* p1, const charT* p2, unsigned l_flags)
+{
+ // pass l_flags on to base class:
+ this->init(l_flags);
+ // set up pointers:
+ m_position = m_base = p1;
+ m_end = p2;
+ // empty strings are errors:
+ if((p1 == p2) &&
+ (
+ ((l_flags & regbase::main_option_type) != regbase::perl_syntax_group)
+ || (l_flags & regbase::no_empty_expressions)
+ )
+ )
+ {
+ fail(regex_constants::error_empty, 0);
+ return;
+ }
+ // select which parser to use:
+ switch(l_flags & regbase::main_option_type)
+ {
+ case regbase::perl_syntax_group:
+ m_parser_proc = &basic_regex_parser<charT, traits>::parse_extended;
+ break;
+ case regbase::basic_syntax_group:
+ m_parser_proc = &basic_regex_parser<charT, traits>::parse_basic;
+ break;
+ case regbase::literal:
+ m_parser_proc = &basic_regex_parser<charT, traits>::parse_literal;
+ break;
+ }
+
+ // parse all our characters:
+ bool result = parse_all();
+ //
+ // Unwind our alternatives:
+ //
+ unwind_alts(-1);
+ // reset l_flags as a global scope (?imsx) may have altered them:
+ this->flags(l_flags);
+ // if we haven't gobbled up all the characters then we must
+ // have had an unexpected ')' :
+ if(!result)
+ {
+ fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_position));
+ return;
+ }
+ // if an error has been set then give up now:
+ if(this->m_pdata->m_status)
+ return;
+ // fill in our sub-expression count:
+ this->m_pdata->m_mark_count = 1 + m_mark_count;
+ this->finalize(p1, p2);
+}
+
+template <class charT, class traits>
+void basic_regex_parser<charT, traits>::fail(regex_constants::error_type error_code, std::ptrdiff_t position)
+{
+ if(0 == this->m_pdata->m_status) // update the error code if not already set
+ this->m_pdata->m_status = error_code;
+ m_position = m_end; // don't bother parsing anything else
+ // get the error message:
+ std::string message = this->m_pdata->m_ptraits->error_string(error_code);
+ // and raise the exception, this will do nothing if exceptions are disabled:
+#ifndef BOOST_NO_EXCEPTIONS
+ if(0 == (this->flags() & regex_constants::no_except))
+ {
+ boost::regex_error e(message, error_code, position);
+ e.raise();
+ }
+#else
+ (void)position; // suppress warnings.
+#endif
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_all()
+{
+ bool result = true;
+ while(result && (m_position != m_end))
+ {
+ result = (this->*m_parser_proc)();
+ }
+ return result;
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4702)
+#endif
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_basic()
+{
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_escape:
+ return parse_basic_escape();
+ case regex_constants::syntax_dot:
+ return parse_match_any();
+ case regex_constants::syntax_caret:
+ ++m_position;
+ this->append_state(syntax_element_start_line);
+ break;
+ case regex_constants::syntax_dollar:
+ ++m_position;
+ this->append_state(syntax_element_end_line);
+ break;
+ case regex_constants::syntax_star:
+ if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line))
+ return parse_literal();
+ else
+ {
+ ++m_position;
+ return parse_repeat();
+ }
+ case regex_constants::syntax_plus:
+ if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex))
+ return parse_literal();
+ else
+ {
+ ++m_position;
+ return parse_repeat(1);
+ }
+ case regex_constants::syntax_question:
+ if(!(this->m_last_state) || (this->m_last_state->type == syntax_element_start_line) || !(this->flags() & regbase::emacs_ex))
+ return parse_literal();
+ else
+ {
+ ++m_position;
+ return parse_repeat(0, 1);
+ }
+ case regex_constants::syntax_open_set:
+ return parse_set();
+ case regex_constants::syntax_newline:
+ if(this->flags() & regbase::newline_alt)
+ return parse_alt();
+ else
+ return parse_literal();
+ default:
+ return parse_literal();
+ }
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_extended()
+{
+ bool result = true;
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_open_mark:
+ return parse_open_paren();
+ case regex_constants::syntax_close_mark:
+ return false;
+ case regex_constants::syntax_escape:
+ return parse_extended_escape();
+ case regex_constants::syntax_dot:
+ return parse_match_any();
+ case regex_constants::syntax_caret:
+ ++m_position;
+ this->append_state(
+ (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_start : syntax_element_start_line));
+ break;
+ case regex_constants::syntax_dollar:
+ ++m_position;
+ this->append_state(
+ (this->flags() & regex_constants::no_mod_m ? syntax_element_buffer_end : syntax_element_end_line));
+ break;
+ case regex_constants::syntax_star:
+ if(m_position == this->m_base)
+ {
+ fail(regex_constants::error_badrepeat, 0);
+ return false;
+ }
+ ++m_position;
+ return parse_repeat();
+ case regex_constants::syntax_question:
+ if(m_position == this->m_base)
+ {
+ fail(regex_constants::error_badrepeat, 0);
+ return false;
+ }
+ ++m_position;
+ return parse_repeat(0,1);
+ case regex_constants::syntax_plus:
+ if(m_position == this->m_base)
+ {
+ fail(regex_constants::error_badrepeat, 0);
+ return false;
+ }
+ ++m_position;
+ return parse_repeat(1);
+ case regex_constants::syntax_open_brace:
+ ++m_position;
+ return parse_repeat_range(false);
+ case regex_constants::syntax_close_brace:
+ fail(regex_constants::error_brace, this->m_position - this->m_end);
+ return false;
+ case regex_constants::syntax_or:
+ return parse_alt();
+ case regex_constants::syntax_open_set:
+ return parse_set();
+ case regex_constants::syntax_newline:
+ if(this->flags() & regbase::newline_alt)
+ return parse_alt();
+ else
+ return parse_literal();
+ case regex_constants::syntax_hash:
+ //
+ // If we have a mod_x flag set, then skip until
+ // we get to a newline character:
+ //
+ if((this->flags()
+ & (regbase::no_perl_ex|regbase::mod_x))
+ == regbase::mod_x)
+ {
+ while((m_position != m_end) && !is_separator(*m_position++)){}
+ return true;
+ }
+ // Otherwise fall through:
+ default:
+ result = parse_literal();
+ break;
+ }
+ return result;
+}
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_literal()
+{
+ // append this as a literal provided it's not a space character
+ // or the perl option regbase::mod_x is not set:
+ if(
+ ((this->flags()
+ & (regbase::main_option_type|regbase::mod_x|regbase::no_perl_ex))
+ != regbase::mod_x)
+ || !this->m_traits.isctype(*m_position, this->m_mask_space))
+ this->append_literal(*m_position);
+ ++m_position;
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_open_paren()
+{
+ //
+ // skip the '(' and error check:
+ //
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ //
+ // begin by checking for a perl-style (?...) extension:
+ //
+ if(
+ ((this->flags() & (regbase::main_option_type | regbase::no_perl_ex)) == 0)
+ || ((this->flags() & (regbase::main_option_type | regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex))
+ )
+ {
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)
+ return parse_perl_extension();
+ }
+ //
+ // update our mark count, and append the required state:
+ //
+ unsigned markid = 0;
+ if(0 == (this->flags() & regbase::nosubs))
+ {
+ markid = ++m_mark_count;
+ if(this->flags() & regbase::save_subexpression_location)
+ this->m_pdata->m_subs.push_back(std::pair<std::size_t, std::size_t>(std::distance(m_base, m_position) - 1, 0));
+ }
+ re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
+ pb->index = markid;
+ std::ptrdiff_t last_paren_start = this->getoffset(pb);
+ // back up insertion point for alternations, and set new point:
+ std::ptrdiff_t last_alt_point = m_alt_insert_point;
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ //
+ // back up the current flags in case we have a nested (?imsx) group:
+ //
+ regex_constants::syntax_option_type opts = this->flags();
+ bool old_case_change = m_has_case_change;
+ m_has_case_change = false; // no changes to this scope as yet...
+ //
+ // now recursively add more states, this will terminate when we get to a
+ // matching ')' :
+ //
+ parse_all();
+ //
+ // Unwind pushed alternatives:
+ //
+ if(0 == unwind_alts(last_paren_start))
+ return false;
+ //
+ // restore flags:
+ //
+ if(m_has_case_change)
+ {
+ // the case has changed in one or more of the alternatives
+ // within the scoped (...) block: we have to add a state
+ // to reset the case sensitivity:
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = opts & regbase::icase;
+ }
+ this->flags(opts);
+ m_has_case_change = old_case_change;
+ //
+ // we either have a ')' or we have run out of characters prematurely:
+ //
+ if(m_position == m_end)
+ {
+ this->fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_end));
+ return false;
+ }
+ BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
+ if(markid && (this->flags() & regbase::save_subexpression_location))
+ this->m_pdata->m_subs.at(markid - 1).second = std::distance(m_base, m_position);
+ ++m_position;
+ //
+ // append closing parenthesis state:
+ //
+ pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
+ pb->index = markid;
+ this->m_paren_start = last_paren_start;
+ //
+ // restore the alternate insertion point:
+ //
+ this->m_alt_insert_point = last_alt_point;
+ //
+ // allow backrefs to this mark:
+ //
+ if((markid > 0) && (markid < sizeof(unsigned) * CHAR_BIT))
+ this->m_backrefs |= 1u << (markid - 1);
+
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_basic_escape()
+{
+ ++m_position;
+ bool result = true;
+ switch(this->m_traits.escape_syntax_type(*m_position))
+ {
+ case regex_constants::syntax_open_mark:
+ return parse_open_paren();
+ case regex_constants::syntax_close_mark:
+ return false;
+ case regex_constants::syntax_plus:
+ if(this->flags() & regex_constants::bk_plus_qm)
+ {
+ ++m_position;
+ return parse_repeat(1);
+ }
+ else
+ return parse_literal();
+ case regex_constants::syntax_question:
+ if(this->flags() & regex_constants::bk_plus_qm)
+ {
+ ++m_position;
+ return parse_repeat(0, 1);
+ }
+ else
+ return parse_literal();
+ case regex_constants::syntax_open_brace:
+ if(this->flags() & regbase::no_intervals)
+ return parse_literal();
+ ++m_position;
+ return parse_repeat_range(true);
+ case regex_constants::syntax_close_brace:
+ if(this->flags() & regbase::no_intervals)
+ return parse_literal();
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ case regex_constants::syntax_or:
+ if(this->flags() & regbase::bk_vbar)
+ return parse_alt();
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::syntax_digit:
+ return parse_backref();
+ case regex_constants::escape_type_start_buffer:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_buffer_start);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_end_buffer:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_buffer_end);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_word_assert:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_boundary);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_not_word_assert:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_within_word);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_left_word:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_start);
+ }
+ else
+ result = parse_literal();
+ break;
+ case regex_constants::escape_type_right_word:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_end);
+ }
+ else
+ result = parse_literal();
+ break;
+ default:
+ if(this->flags() & regbase::emacs_ex)
+ {
+ bool negate = true;
+ switch(*m_position)
+ {
+ case 'w':
+ negate = false;
+ // fall through:
+ case 'W':
+ {
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+ char_set.add_class(this->m_word_mask);
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ return true;
+ }
+ case 's':
+ negate = false;
+ // fall through:
+ case 'S':
+ return add_emacs_code(negate);
+ case 'c':
+ case 'C':
+ // not supported yet:
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ default:
+ break;
+ }
+ }
+ result = parse_literal();
+ break;
+ }
+ return result;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_extended_escape()
+{
+ ++m_position;
+ bool negate = false; // in case this is a character class escape: \w \d etc
+ switch(this->m_traits.escape_syntax_type(*m_position))
+ {
+ case regex_constants::escape_type_not_class:
+ negate = true;
+ // fall through:
+ case regex_constants::escape_type_class:
+ {
+ typedef typename traits::char_class_type mask_type;
+ mask_type m = this->m_traits.lookup_classname(m_position, m_position+1);
+ if(m != 0)
+ {
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+ char_set.add_class(m);
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ return true;
+ }
+ //
+ // not a class, just a regular unknown escape:
+ //
+ this->append_literal(unescape_character());
+ break;
+ }
+ case regex_constants::syntax_digit:
+ return parse_backref();
+ case regex_constants::escape_type_left_word:
+ ++m_position;
+ this->append_state(syntax_element_word_start);
+ break;
+ case regex_constants::escape_type_right_word:
+ ++m_position;
+ this->append_state(syntax_element_word_end);
+ break;
+ case regex_constants::escape_type_start_buffer:
+ ++m_position;
+ this->append_state(syntax_element_buffer_start);
+ break;
+ case regex_constants::escape_type_end_buffer:
+ ++m_position;
+ this->append_state(syntax_element_buffer_end);
+ break;
+ case regex_constants::escape_type_word_assert:
+ ++m_position;
+ this->append_state(syntax_element_word_boundary);
+ break;
+ case regex_constants::escape_type_not_word_assert:
+ ++m_position;
+ this->append_state(syntax_element_within_word);
+ break;
+ case regex_constants::escape_type_Z:
+ ++m_position;
+ this->append_state(syntax_element_soft_buffer_end);
+ break;
+ case regex_constants::escape_type_Q:
+ return parse_QE();
+ case regex_constants::escape_type_C:
+ return parse_match_any();
+ case regex_constants::escape_type_X:
+ ++m_position;
+ this->append_state(syntax_element_combining);
+ break;
+ case regex_constants::escape_type_G:
+ ++m_position;
+ this->append_state(syntax_element_restart_continue);
+ break;
+ case regex_constants::escape_type_not_property:
+ negate = true;
+ // fall through:
+ case regex_constants::escape_type_property:
+ {
+ ++m_position;
+ char_class_type m;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ // maybe have \p{ddd}
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
+ {
+ const charT* base = m_position;
+ // skip forward until we find enclosing brace:
+ while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ m = this->m_traits.lookup_classname(++base, m_position++);
+ }
+ else
+ {
+ m = this->m_traits.lookup_classname(m_position, m_position+1);
+ ++m_position;
+ }
+ if(m != 0)
+ {
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+ char_set.add_class(m);
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ return true;
+ }
+ fail(regex_constants::error_ctype, m_position - m_base);
+ }
+ default:
+ this->append_literal(unescape_character());
+ break;
+ }
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_match_any()
+{
+ //
+ // we have a '.' that can match any character:
+ //
+ ++m_position;
+ static_cast<re_dot*>(
+ this->append_state(syntax_element_wild, sizeof(re_dot))
+ )->mask = static_cast<unsigned char>(this->flags() & regbase::no_mod_s
+ ? re_detail::force_not_newline
+ : this->flags() & regbase::mod_s ?
+ re_detail::force_newline : re_detail::dont_care);
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_repeat(std::size_t low, std::size_t high)
+{
+ bool greedy = true;
+ std::size_t insert_point;
+ //
+ // when we get to here we may have a non-greedy ? mark still to come:
+ //
+ if((m_position != m_end)
+ && (
+ (0 == (this->flags() & (regbase::main_option_type | regbase::no_perl_ex)))
+ || ((regbase::basic_syntax_group|regbase::emacs_ex) == (this->flags() & (regbase::main_option_type | regbase::emacs_ex)))
+ )
+ )
+ {
+ // OK we have a perl regex, check for a '?':
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_question)
+ {
+ greedy = false;
+ ++m_position;
+ }
+ }
+ if(0 == this->m_last_state)
+ {
+ fail(regex_constants::error_badrepeat, ::boost::re_detail::distance(m_base, m_position));
+ return false;
+ }
+ if(this->m_last_state->type == syntax_element_endmark)
+ {
+ // insert a repeat before the '(' matching the last ')':
+ insert_point = this->m_paren_start;
+ }
+ else if((this->m_last_state->type == syntax_element_literal) && (static_cast<re_literal*>(this->m_last_state)->length > 1))
+ {
+ // the last state was a literal with more than one character, split it in two:
+ re_literal* lit = static_cast<re_literal*>(this->m_last_state);
+ charT c = (static_cast<charT*>(static_cast<void*>(lit+1)))[lit->length - 1];
+ --(lit->length);
+ // now append new state:
+ lit = static_cast<re_literal*>(this->append_state(syntax_element_literal, sizeof(re_literal) + sizeof(charT)));
+ lit->length = 1;
+ (static_cast<charT*>(static_cast<void*>(lit+1)))[0] = c;
+ insert_point = this->getoffset(this->m_last_state);
+ }
+ else
+ {
+ // repeat the last state whatever it was, need to add some error checking here:
+ switch(this->m_last_state->type)
+ {
+ case syntax_element_start_line:
+ case syntax_element_end_line:
+ case syntax_element_word_boundary:
+ case syntax_element_within_word:
+ case syntax_element_word_start:
+ case syntax_element_word_end:
+ case syntax_element_buffer_start:
+ case syntax_element_buffer_end:
+ case syntax_element_alt:
+ case syntax_element_soft_buffer_end:
+ case syntax_element_restart_continue:
+ case syntax_element_jump:
+ case syntax_element_startmark:
+ case syntax_element_backstep:
+ // can't legally repeat any of the above:
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ default:
+ // do nothing...
+ break;
+ }
+ insert_point = this->getoffset(this->m_last_state);
+ }
+ //
+ // OK we now know what to repeat, so insert the repeat around it:
+ //
+ re_repeat* rep = static_cast<re_repeat*>(this->insert_state(insert_point, syntax_element_rep, re_repeater_size));
+ rep->min = low;
+ rep->max = high;
+ rep->greedy = greedy;
+ rep->leading = false;
+ // store our repeater position for later:
+ std::ptrdiff_t rep_off = this->getoffset(rep);
+ // and append a back jump to the repeat:
+ re_jump* jmp = static_cast<re_jump*>(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ jmp->alt.i = rep_off - this->getoffset(jmp);
+ this->m_pdata->m_data.align();
+ // now fill in the alt jump for the repeat:
+ rep = static_cast<re_repeat*>(this->getaddress(rep_off));
+ rep->alt.i = this->m_pdata->m_data.size() - rep_off;
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_repeat_range(bool isbasic)
+{
+ //
+ // parse a repeat-range:
+ //
+ std::size_t min, max;
+ int v;
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ // fail if at end:
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ // get min:
+ v = this->m_traits.toi(m_position, m_end, 10);
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ if(v < 0)
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ else if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ min = v;
+ // see if we have a comma:
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_comma)
+ {
+ // move on and error check:
+ ++m_position;
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ // get the value if any:
+ v = this->m_traits.toi(m_position, m_end, 10);
+ max = (v >= 0) ? v : (std::numeric_limits<std::size_t>::max)();
+ }
+ else
+ {
+ // no comma, max = min:
+ max = min;
+ }
+ // skip whitespace:
+ while((m_position != m_end) && this->m_traits.isctype(*m_position, this->m_mask_space))
+ ++m_position;
+ // OK now check trailing }:
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ if(isbasic)
+ {
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_escape)
+ {
+ ++m_position;
+ if(this->m_position == this->m_end)
+ {
+ fail(regex_constants::error_brace, this->m_position - this->m_base);
+ return false;
+ }
+ }
+ else
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_brace)
+ ++m_position;
+ else
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ //
+ // finally go and add the repeat, unless error:
+ //
+ if(min > max)
+ {
+ fail(regex_constants::error_badbrace, this->m_position - this->m_base);
+ return false;
+ }
+ return parse_repeat(min, max);
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_alt()
+{
+ //
+ // error check: if there have been no previous states,
+ // or if the last state was a '(' then error:
+ //
+ if(
+ ((this->m_last_state == 0) || (this->m_last_state->type == syntax_element_startmark))
+ &&
+ !(
+ ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group)
+ &&
+ ((this->flags() & regbase::no_empty_expressions) == 0)
+ )
+ )
+ {
+ fail(regex_constants::error_empty, this->m_position - this->m_base);
+ return false;
+ }
+ ++m_position;
+ //
+ // we need to append a trailing jump:
+ //
+ re_syntax_base* pj = this->append_state(re_detail::syntax_element_jump, sizeof(re_jump));
+ std::ptrdiff_t jump_offset = this->getoffset(pj);
+ //
+ // now insert the alternative:
+ //
+ re_alt* palt = static_cast<re_alt*>(this->insert_state(this->m_alt_insert_point, syntax_element_alt, re_alt_size));
+ jump_offset += re_alt_size;
+ this->m_pdata->m_data.align();
+ palt->alt.i = this->m_pdata->m_data.size() - this->getoffset(palt);
+ //
+ // update m_alt_insert_point so that the next alternate gets
+ // inserted at the start of the second of the two we've just created:
+ //
+ this->m_alt_insert_point = this->m_pdata->m_data.size();
+ //
+ // the start of this alternative must have a case changes state
+ // if the current block has messed around with case changes:
+ //
+ if(m_has_case_change)
+ {
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = this->m_icase;
+ }
+ //
+ // push the alternative onto our stack, a recursive
+ // implementation here is easier to understand (and faster
+ // as it happens), but causes all kinds of stack overflow problems
+ // on programs with small stacks (COM+).
+ //
+ m_alt_jumps.push_back(jump_offset);
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_set()
+{
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ basic_char_set<charT, traits> char_set;
+
+ const charT* base = m_position; // where the '[' was
+ const charT* item_base = m_position; // where the '[' or '^' was
+
+ while(m_position != m_end)
+ {
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_caret:
+ if(m_position == base)
+ {
+ char_set.negate();
+ ++m_position;
+ item_base = m_position;
+ }
+ else
+ parse_set_literal(char_set);
+ break;
+ case regex_constants::syntax_close_set:
+ if(m_position == item_base)
+ {
+ parse_set_literal(char_set);
+ break;
+ }
+ else
+ {
+ ++m_position;
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_range, m_position - m_base);
+ return false;
+ }
+ }
+ return true;
+ case regex_constants::syntax_open_set:
+ if(parse_inner_set(char_set))
+ break;
+ return true;
+ case regex_constants::syntax_escape:
+ {
+ //
+ // look ahead and see if this is a character class shortcut
+ // \d \w \s etc...
+ //
+ ++m_position;
+ if(this->m_traits.escape_syntax_type(*m_position)
+ == regex_constants::escape_type_class)
+ {
+ char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1);
+ if(m != 0)
+ {
+ char_set.add_class(m);
+ ++m_position;
+ break;
+ }
+ }
+ else if(this->m_traits.escape_syntax_type(*m_position)
+ == regex_constants::escape_type_not_class)
+ {
+ // negated character class:
+ char_class_type m = this->m_traits.lookup_classname(m_position, m_position+1);
+ if(m != 0)
+ {
+ char_set.add_negated_class(m);
+ ++m_position;
+ break;
+ }
+ }
+ // not a character class, just a regular escape:
+ --m_position;
+ parse_set_literal(char_set);
+ break;
+ }
+ default:
+ parse_set_literal(char_set);
+ break;
+ }
+ }
+ return m_position != m_end;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_inner_set(basic_char_set<charT, traits>& char_set)
+{
+ //
+ // we have either a character class [:name:]
+ // a collating element [.name.]
+ // or an equivalence class [=name=]
+ //
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_dot:
+ //
+ // a collating element is treated as a literal:
+ //
+ --m_position;
+ parse_set_literal(char_set);
+ return true;
+ case regex_constants::syntax_colon:
+ {
+ // check that character classes are actually enabled:
+ if((this->flags() & (regbase::main_option_type | regbase::no_char_classes))
+ == (regbase::basic_syntax_group | regbase::no_char_classes))
+ {
+ --m_position;
+ parse_set_literal(char_set);
+ return true;
+ }
+ // skip the ':'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ const charT* name_first = m_position;
+ // skip at least one character, then find the matching ':]'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_colon))
+ ++m_position;
+ const charT* name_last = m_position;
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ if((m_end == ++m_position)
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ //
+ // check for negated class:
+ //
+ bool negated = false;
+ if(this->m_traits.syntax_type(*name_first) == regex_constants::syntax_caret)
+ {
+ ++name_first;
+ negated = true;
+ }
+ typedef typename traits::char_class_type mask_type;
+ mask_type m = this->m_traits.lookup_classname(name_first, name_last);
+ if(m == 0)
+ {
+ if(char_set.empty() && (name_last - name_first == 1))
+ {
+ // maybe a special case:
+ ++m_position;
+ if( (m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position)
+ == regex_constants::syntax_close_set))
+ {
+ if(this->m_traits.escape_syntax_type(*name_first)
+ == regex_constants::escape_type_left_word)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_start);
+ return false;
+ }
+ if(this->m_traits.escape_syntax_type(*name_first)
+ == regex_constants::escape_type_right_word)
+ {
+ ++m_position;
+ this->append_state(syntax_element_word_end);
+ return false;
+ }
+ }
+ }
+ fail(regex_constants::error_ctype, name_first - m_base);
+ return false;
+ }
+ if(negated == false)
+ char_set.add_class(m);
+ else
+ char_set.add_negated_class(m);
+ ++m_position;
+ break;
+ }
+ case regex_constants::syntax_equal:
+ {
+ // skip the '='
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ const charT* name_first = m_position;
+ // skip at least one character, then find the matching '=]'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal))
+ ++m_position;
+ const charT* name_last = m_position;
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ if((m_end == ++m_position)
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return false;
+ }
+ string_type m = this->m_traits.lookup_collatename(name_first, name_last);
+ if((0 == m.size()) || (m.size() > 2))
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return false;
+ }
+ digraph<charT> d;
+ d.first = m[0];
+ if(m.size() > 1)
+ d.second = m[1];
+ else
+ d.second = 0;
+ char_set.add_equivalent(d);
+ ++m_position;
+ break;
+ }
+ default:
+ --m_position;
+ parse_set_literal(char_set);
+ break;
+ }
+ return true;
+}
+
+template <class charT, class traits>
+void basic_regex_parser<charT, traits>::parse_set_literal(basic_char_set<charT, traits>& char_set)
+{
+ digraph<charT> start_range(get_next_set_literal(char_set));
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return;
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash)
+ {
+ // we have a range:
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return;
+ }
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set)
+ {
+ digraph<charT> end_range = get_next_set_literal(char_set);
+ char_set.add_range(start_range, end_range);
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_dash)
+ {
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_brack, m_position - m_base);
+ return;
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_set)
+ {
+ // trailing - :
+ --m_position;
+ return;
+ }
+ fail(regex_constants::error_range, m_position - m_base);
+ return;
+ }
+ return;
+ }
+ --m_position;
+ }
+ char_set.add_single(start_range);
+}
+
+template <class charT, class traits>
+digraph<charT> basic_regex_parser<charT, traits>::get_next_set_literal(basic_char_set<charT, traits>& char_set)
+{
+ digraph<charT> result;
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_dash:
+ if(!char_set.empty())
+ {
+ // see if we are at the end of the set:
+ if((++m_position == m_end) || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_range, m_position - m_base);
+ return result;
+ }
+ --m_position;
+ }
+ result.first = *m_position++;
+ return result;
+ case regex_constants::syntax_escape:
+ // check to see if escapes are supported first:
+ if(this->flags() & regex_constants::no_escape_in_lists)
+ {
+ result = *m_position++;
+ break;
+ }
+ ++m_position;
+ result = unescape_character();
+ break;
+ case regex_constants::syntax_open_set:
+ {
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_collate, m_position - m_base);
+ return result;
+ }
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot)
+ {
+ --m_position;
+ result.first = *m_position;
+ ++m_position;
+ return result;
+ }
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_collate, m_position - m_base);
+ return result;
+ }
+ const charT* name_first = m_position;
+ // skip at least one character, then find the matching ':]'
+ if(m_end == ++m_position)
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_dot))
+ ++m_position;
+ const charT* name_last = m_position;
+ if(m_end == m_position)
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ if((m_end == ++m_position)
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_set))
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ ++m_position;
+ string_type s = this->m_traits.lookup_collatename(name_first, name_last);
+ if(s.empty() || (s.size() > 2))
+ {
+ fail(regex_constants::error_collate, name_first - m_base);
+ return result;
+ }
+ result.first = s[0];
+ if(s.size() > 1)
+ result.second = s[1];
+ else
+ result.second = 0;
+ return result;
+ }
+ default:
+ result = *m_position++;
+ }
+ return result;
+}
+
+//
+// does a value fit in the specified charT type?
+//
+template <class charT>
+bool valid_value(charT, int v, const mpl::true_&)
+{
+ return (v >> (sizeof(charT) * CHAR_BIT)) == 0;
+}
+template <class charT>
+bool valid_value(charT, int, const mpl::false_&)
+{
+ return true; // v will alsways fit in a charT
+}
+template <class charT>
+bool valid_value(charT c, int v)
+{
+ return valid_value(c, v, mpl::bool_<(sizeof(charT) < sizeof(int))>());
+}
+
+template <class charT, class traits>
+charT basic_regex_parser<charT, traits>::unescape_character()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ charT result(0);
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ switch(this->m_traits.escape_syntax_type(*m_position))
+ {
+ case regex_constants::escape_type_control_a:
+ result = charT('\a');
+ break;
+ case regex_constants::escape_type_e:
+ result = charT(27);
+ break;
+ case regex_constants::escape_type_control_f:
+ result = charT('\f');
+ break;
+ case regex_constants::escape_type_control_n:
+ result = charT('\n');
+ break;
+ case regex_constants::escape_type_control_r:
+ result = charT('\r');
+ break;
+ case regex_constants::escape_type_control_t:
+ result = charT('\t');
+ break;
+ case regex_constants::escape_type_control_v:
+ result = charT('\v');
+ break;
+ case regex_constants::escape_type_word_assert:
+ result = charT('\b');
+ break;
+ case regex_constants::escape_type_ascii_control:
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ /*
+ if((*m_position < charT('@'))
+ || (*m_position > charT(125)) )
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ */
+ result = static_cast<charT>(*m_position % 32);
+ break;
+ case regex_constants::escape_type_hex:
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ // maybe have \x{ddd}
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
+ {
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ int i = this->m_traits.toi(m_position, m_end, 16);
+ if((m_position == m_end)
+ || (i < 0)
+ || ((std::numeric_limits<charT>::is_specialized) && (charT(i) > (std::numeric_limits<charT>::max)()))
+ || (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
+ {
+ fail(regex_constants::error_badbrace, m_position - m_base);
+ return result;
+ }
+ ++m_position;
+ result = charT(i);
+ }
+ else
+ {
+ std::ptrdiff_t len = (std::min)(static_cast<std::ptrdiff_t>(2), m_end - m_position);
+ int i = this->m_traits.toi(m_position, m_position + len, 16);
+ if((i < 0)
+ || !valid_value(charT(0), i))
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ result = charT(i);
+ }
+ return result;
+ case regex_constants::syntax_digit:
+ {
+ // an octal escape sequence, the first character must be a zero
+ // followed by up to 3 octal digits:
+ std::ptrdiff_t len = (std::min)(::boost::re_detail::distance(m_position, m_end), static_cast<std::ptrdiff_t>(4));
+ const charT* bp = m_position;
+ int val = this->m_traits.toi(bp, bp + 1, 8);
+ if(val != 0)
+ {
+ // Oops not an octal escape after all:
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ val = this->m_traits.toi(m_position, m_position + len, 8);
+ if(val < 0)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return result;
+ }
+ return static_cast<charT>(val);
+ }
+ case regex_constants::escape_type_named_char:
+ {
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ // maybe have \N{name}
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_open_brace)
+ {
+ const charT* base = m_position;
+ // skip forward until we find enclosing brace:
+ while((m_position != m_end) && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_brace))
+ ++m_position;
+ if(m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ string_type s = this->m_traits.lookup_collatename(++base, m_position++);
+ if(s.empty())
+ {
+ fail(regex_constants::error_collate, m_position - m_base);
+ return false;
+ }
+ if(s.size() == 1)
+ {
+ return s[0];
+ }
+ }
+ // fall through is a failure:
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ default:
+ result = *m_position;
+ break;
+ }
+ ++m_position;
+ return result;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_backref()
+{
+ BOOST_ASSERT(m_position != m_end);
+ const charT* pc = m_position;
+ int i = this->m_traits.toi(pc, pc + 1, 10);
+ if((i == 0) || (((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group) && (this->flags() & regbase::no_bk_refs)))
+ {
+ // not a backref at all but an octal escape sequence:
+ charT c = unescape_character();
+ this->append_literal(c);
+ }
+ else if((i > 0) && (this->m_backrefs & (1u << (i-1))))
+ {
+ m_position = pc;
+ re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_backref, sizeof(re_brace)));
+ pb->index = i;
+ }
+ else
+ {
+ fail(regex_constants::error_backref, m_position - m_end);
+ return false;
+ }
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_QE()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ //
+ // parse a \Q...\E sequence:
+ //
+ ++m_position; // skip the Q
+ const charT* start = m_position;
+ const charT* end;
+ do
+ {
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_escape))
+ ++m_position;
+ if(m_position == m_end)
+ {
+ // a \Q...\E sequence may terminate with the end of the expression:
+ end = m_position;
+ break;
+ }
+ if(++m_position == m_end) // skip the escape
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ // check to see if it's a \E:
+ if(this->m_traits.escape_syntax_type(*m_position) == regex_constants::escape_type_E)
+ {
+ ++m_position;
+ end = m_position - 2;
+ break;
+ }
+ // otherwise go round again:
+ }while(true);
+ //
+ // now add all the character between the two escapes as literals:
+ //
+ while(start != end)
+ {
+ this->append_literal(*start);
+ ++start;
+ }
+ return true;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::parse_perl_extension()
+{
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ //
+ // treat comments as a special case, as these
+ // are the only ones that don't start with a leading
+ // startmark state:
+ //
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_hash)
+ {
+ while((m_position != m_end)
+ && (this->m_traits.syntax_type(*m_position++) != regex_constants::syntax_close_mark))
+ {}
+ return true;
+ }
+ //
+ // backup some state, and prepare the way:
+ //
+ int markid = 0;
+ std::ptrdiff_t jump_offset = 0;
+ re_brace* pb = static_cast<re_brace*>(this->append_state(syntax_element_startmark, sizeof(re_brace)));
+ std::ptrdiff_t last_paren_start = this->getoffset(pb);
+ // back up insertion point for alternations, and set new point:
+ std::ptrdiff_t last_alt_point = m_alt_insert_point;
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ std::ptrdiff_t expected_alt_point = m_alt_insert_point;
+ bool restore_flags = true;
+ regex_constants::syntax_option_type old_flags = this->flags();
+ bool old_case_change = m_has_case_change;
+ m_has_case_change = false;
+ //
+ // select the actual extension used:
+ //
+ switch(this->m_traits.syntax_type(*m_position))
+ {
+ case regex_constants::syntax_colon:
+ //
+ // a non-capturing mark:
+ //
+ pb->index = markid = 0;
+ ++m_position;
+ break;
+ case regex_constants::syntax_equal:
+ pb->index = markid = -1;
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ case regex_constants::syntax_not:
+ pb->index = markid = -2;
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ case regex_constants::escape_type_left_word:
+ {
+ // a lookbehind assertion:
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ regex_constants::syntax_type t = this->m_traits.syntax_type(*m_position);
+ if(t == regex_constants::syntax_not)
+ pb->index = markid = -2;
+ else if(t == regex_constants::syntax_equal)
+ pb->index = markid = -1;
+ else
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->append_state(syntax_element_backstep, sizeof(re_brace));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ }
+ case regex_constants::escape_type_right_word:
+ //
+ // an independent sub-expression:
+ //
+ pb->index = markid = -3;
+ ++m_position;
+ jump_offset = this->getoffset(this->append_state(syntax_element_jump, sizeof(re_jump)));
+ this->m_pdata->m_data.align();
+ m_alt_insert_point = this->m_pdata->m_data.size();
+ break;
+ case regex_constants::syntax_open_mark:
+ {
+ // a conditional expression:
+ pb->index = markid = -4;
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ int v = this->m_traits.toi(m_position, m_end, 10);
+ if(v > 0)
+ {
+ re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
+ br->index = v;
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_close_mark)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ }
+ else
+ {
+ // verify that we have a lookahead or lookbehind assert:
+ if(this->m_traits.syntax_type(*m_position) != regex_constants::syntax_question)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::escape_type_left_word)
+ {
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not))
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ m_position -= 3;
+ }
+ else
+ {
+ if((this->m_traits.syntax_type(*m_position) != regex_constants::syntax_equal)
+ && (this->m_traits.syntax_type(*m_position) != regex_constants::syntax_not))
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ m_position -= 2;
+ }
+ }
+ break;
+ }
+ case regex_constants::syntax_close_mark:
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ default:
+ //
+ // lets assume that we have a (?imsx) group and try and parse it:
+ //
+ regex_constants::syntax_option_type opts = parse_options();
+ if(m_position == m_end)
+ return false;
+ // make a note of whether we have a case change:
+ m_has_case_change = ((opts & regbase::icase) != (this->flags() & regbase::icase));
+ pb->index = markid = 0;
+ if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark)
+ {
+ // update flags and carry on as normal:
+ this->flags(opts);
+ restore_flags = false;
+ old_case_change |= m_has_case_change; // defer end of scope by one ')'
+ }
+ else if(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_colon)
+ {
+ // update flags and carry on until the matching ')' is found:
+ this->flags(opts);
+ ++m_position;
+ }
+ else
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+
+ // finally append a case change state if we need it:
+ if(m_has_case_change)
+ {
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = opts & regbase::icase;
+ }
+
+ }
+ //
+ // now recursively add more states, this will terminate when we get to a
+ // matching ')' :
+ //
+ parse_all();
+ //
+ // Unwind alternatives:
+ //
+ if(0 == unwind_alts(last_paren_start))
+ return false;
+ //
+ // we either have a ')' or we have run out of characters prematurely:
+ //
+ if(m_position == m_end)
+ {
+ this->fail(regex_constants::error_paren, ::boost::re_detail::distance(m_base, m_end));
+ return false;
+ }
+ BOOST_ASSERT(this->m_traits.syntax_type(*m_position) == regex_constants::syntax_close_mark);
+ ++m_position;
+ //
+ // restore the flags:
+ //
+ if(restore_flags)
+ {
+ // append a case change state if we need it:
+ if(m_has_case_change)
+ {
+ static_cast<re_case*>(
+ this->append_state(syntax_element_toggle_case, sizeof(re_case))
+ )->icase = old_flags & regbase::icase;
+ }
+ this->flags(old_flags);
+ }
+ //
+ // set up the jump pointer if we have one:
+ //
+ if(jump_offset)
+ {
+ this->m_pdata->m_data.align();
+ re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset));
+ jmp->alt.i = this->m_pdata->m_data.size() - this->getoffset(jmp);
+ if(this->m_last_state == jmp)
+ {
+ // Oops... we didn't have anything inside the assertion:
+ fail(regex_constants::error_empty, m_position - m_base);
+ return false;
+ }
+ }
+ //
+ // verify that if this is conditional expression, that we do have
+ // an alternative, if not add one:
+ //
+ if(markid == -4)
+ {
+ re_syntax_base* b = this->getaddress(expected_alt_point);
+ // Make sure we have exactly one alternative following this state:
+ if(b->type != syntax_element_alt)
+ {
+ re_alt* alt = static_cast<re_alt*>(this->insert_state(expected_alt_point, syntax_element_alt, sizeof(re_alt)));
+ alt->alt.i = this->m_pdata->m_data.size() - this->getoffset(alt);
+ }
+ else if(this->getaddress(static_cast<re_alt*>(b)->alt.i, b)->type == syntax_element_alt)
+ {
+ fail(regex_constants::error_bad_pattern, m_position - m_base);
+ return false;
+ }
+ // check for invalid repetition of next state:
+ b = this->getaddress(expected_alt_point);
+ b = this->getaddress(static_cast<re_alt*>(b)->next.i, b);
+ if((b->type != syntax_element_assert_backref)
+ && (b->type != syntax_element_startmark))
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
+ return false;
+ }
+ }
+ //
+ // append closing parenthesis state:
+ //
+ pb = static_cast<re_brace*>(this->append_state(syntax_element_endmark, sizeof(re_brace)));
+ pb->index = markid;
+ this->m_paren_start = last_paren_start;
+ //
+ // restore the alternate insertion point:
+ //
+ this->m_alt_insert_point = last_alt_point;
+ //
+ // and the case change data:
+ //
+ m_has_case_change = old_case_change;
+ return true;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::add_emacs_code(bool negate)
+{
+ //
+ // parses an emacs style \sx or \Sx construct.
+ //
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_escape, m_position - m_base);
+ return false;
+ }
+ basic_char_set<charT, traits> char_set;
+ if(negate)
+ char_set.negate();
+
+ static const charT s_punct[5] = { 'p', 'u', 'n', 'c', 't', };
+
+ switch(*m_position)
+ {
+ case 's':
+ case ' ':
+ char_set.add_class(this->m_mask_space);
+ break;
+ case 'w':
+ char_set.add_class(this->m_word_mask);
+ break;
+ case '_':
+ char_set.add_single(digraph<charT>(charT('$')));
+ char_set.add_single(digraph<charT>(charT('&')));
+ char_set.add_single(digraph<charT>(charT('*')));
+ char_set.add_single(digraph<charT>(charT('+')));
+ char_set.add_single(digraph<charT>(charT('-')));
+ char_set.add_single(digraph<charT>(charT('_')));
+ char_set.add_single(digraph<charT>(charT('<')));
+ char_set.add_single(digraph<charT>(charT('>')));
+ break;
+ case '.':
+ char_set.add_class(this->m_traits.lookup_classname(s_punct, s_punct+5));
+ break;
+ case '(':
+ char_set.add_single(digraph<charT>(charT('(')));
+ char_set.add_single(digraph<charT>(charT('[')));
+ char_set.add_single(digraph<charT>(charT('{')));
+ break;
+ case ')':
+ char_set.add_single(digraph<charT>(charT(')')));
+ char_set.add_single(digraph<charT>(charT(']')));
+ char_set.add_single(digraph<charT>(charT('}')));
+ break;
+ case '"':
+ char_set.add_single(digraph<charT>(charT('"')));
+ char_set.add_single(digraph<charT>(charT('\'')));
+ char_set.add_single(digraph<charT>(charT('`')));
+ break;
+ case '\'':
+ char_set.add_single(digraph<charT>(charT('\'')));
+ char_set.add_single(digraph<charT>(charT(',')));
+ char_set.add_single(digraph<charT>(charT('#')));
+ break;
+ case '<':
+ char_set.add_single(digraph<charT>(charT(';')));
+ break;
+ case '>':
+ char_set.add_single(digraph<charT>(charT('\n')));
+ char_set.add_single(digraph<charT>(charT('\f')));
+ break;
+ default:
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ if(0 == this->append_set(char_set))
+ {
+ fail(regex_constants::error_ctype, m_position - m_base);
+ return false;
+ }
+ ++m_position;
+ return true;
+}
+
+template <class charT, class traits>
+regex_constants::syntax_option_type basic_regex_parser<charT, traits>::parse_options()
+{
+ // we have a (?imsx-imsx) group, convert it into a set of flags:
+ regex_constants::syntax_option_type f = this->flags();
+ bool breakout = false;
+ do
+ {
+ switch(*m_position)
+ {
+ case 's':
+ f |= regex_constants::mod_s;
+ f &= ~regex_constants::no_mod_s;
+ break;
+ case 'm':
+ f &= ~regex_constants::no_mod_m;
+ break;
+ case 'i':
+ f |= regex_constants::icase;
+ break;
+ case 'x':
+ f |= regex_constants::mod_x;
+ break;
+ default:
+ breakout = true;
+ continue;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ }
+ while(!breakout);
+
+ if(*m_position == static_cast<charT>('-'))
+ {
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ do
+ {
+ switch(*m_position)
+ {
+ case 's':
+ f &= ~regex_constants::mod_s;
+ f |= regex_constants::no_mod_s;
+ break;
+ case 'm':
+ f |= regex_constants::no_mod_m;
+ break;
+ case 'i':
+ f &= ~regex_constants::icase;
+ break;
+ case 'x':
+ f &= ~regex_constants::mod_x;
+ break;
+ default:
+ breakout = true;
+ continue;
+ }
+ if(++m_position == m_end)
+ {
+ fail(regex_constants::error_paren, m_position - m_base);
+ return false;
+ }
+ }
+ while(!breakout);
+ }
+ return f;
+}
+
+template <class charT, class traits>
+bool basic_regex_parser<charT, traits>::unwind_alts(std::ptrdiff_t last_paren_start)
+{
+ //
+ // If we didn't actually add any states after the last
+ // alternative then that's an error:
+ //
+ if((this->m_alt_insert_point == static_cast<std::ptrdiff_t>(this->m_pdata->m_data.size()))
+ && m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start)
+ &&
+ !(
+ ((this->flags() & regbase::main_option_type) == regbase::perl_syntax_group)
+ &&
+ ((this->flags() & regbase::no_empty_expressions) == 0)
+ )
+ )
+ {
+ fail(regex_constants::error_empty, this->m_position - this->m_base);
+ return false;
+ }
+ //
+ // Fix up our alternatives:
+ //
+ while(m_alt_jumps.size() && (m_alt_jumps.back() > last_paren_start))
+ {
+ //
+ // fix up the jump to point to the end of the states
+ // that we've just added:
+ //
+ std::ptrdiff_t jump_offset = m_alt_jumps.back();
+ m_alt_jumps.pop_back();
+ this->m_pdata->m_data.align();
+ re_jump* jmp = static_cast<re_jump*>(this->getaddress(jump_offset));
+ BOOST_ASSERT(jmp->type == syntax_element_jump);
+ jmp->alt.i = this->m_pdata->m_data.size() - jump_offset;
+ }
+ return true;
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp
new file mode 100644
index 0000000..d99b0f3
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/c_regex_traits.hpp
@@ -0,0 +1,211 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE c_regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits class that wraps the global C locale.
+ */
+
+#ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_C_REGEX_TRAITS_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#include <boost/regex/v4/regex_workaround.hpp>
+#endif
+
+#include <cctype>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::strlen; using ::tolower;
+}
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+
+template <class charT>
+struct c_regex_traits;
+
+template<>
+struct BOOST_REGEX_DECL c_regex_traits<char>
+{
+ c_regex_traits(){}
+ typedef char char_type;
+ typedef std::size_t size_type;
+ typedef std::string string_type;
+ struct locale_type{};
+ typedef boost::uint32_t char_class_type;
+
+ static size_type length(const char_type* p)
+ {
+ return (std::strlen)(p);
+ }
+
+ char translate(char c) const
+ {
+ return c;
+ }
+ char translate_nocase(char c) const
+ {
+ return static_cast<char>((std::tolower)(static_cast<unsigned char>(c)));
+ }
+
+ static string_type BOOST_REGEX_CALL transform(const char* p1, const char* p2);
+ static string_type BOOST_REGEX_CALL transform_primary(const char* p1, const char* p2);
+
+ static char_class_type BOOST_REGEX_CALL lookup_classname(const char* p1, const char* p2);
+ static string_type BOOST_REGEX_CALL lookup_collatename(const char* p1, const char* p2);
+
+ static bool BOOST_REGEX_CALL isctype(char, char_class_type);
+ static int BOOST_REGEX_CALL value(char, int);
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return locale_type(); }
+
+private:
+ // this type is not copyable:
+ c_regex_traits(const c_regex_traits&);
+ c_regex_traits& operator=(const c_regex_traits&);
+};
+
+#ifndef BOOST_NO_WREGEX
+template<>
+struct BOOST_REGEX_DECL c_regex_traits<wchar_t>
+{
+ c_regex_traits(){}
+ typedef wchar_t char_type;
+ typedef std::size_t size_type;
+ typedef std::wstring string_type;
+ struct locale_type{};
+ typedef boost::uint32_t char_class_type;
+
+ static size_type length(const char_type* p)
+ {
+ return (std::wcslen)(p);
+ }
+
+ wchar_t translate(wchar_t c) const
+ {
+ return c;
+ }
+ wchar_t translate_nocase(wchar_t c) const
+ {
+ return (std::towlower)(c);
+ }
+
+ static string_type BOOST_REGEX_CALL transform(const wchar_t* p1, const wchar_t* p2);
+ static string_type BOOST_REGEX_CALL transform_primary(const wchar_t* p1, const wchar_t* p2);
+
+ static char_class_type BOOST_REGEX_CALL lookup_classname(const wchar_t* p1, const wchar_t* p2);
+ static string_type BOOST_REGEX_CALL lookup_collatename(const wchar_t* p1, const wchar_t* p2);
+
+ static bool BOOST_REGEX_CALL isctype(wchar_t, char_class_type);
+ static int BOOST_REGEX_CALL value(wchar_t, int);
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return locale_type(); }
+
+private:
+ // this type is not copyable:
+ c_regex_traits(const c_regex_traits&);
+ c_regex_traits& operator=(const c_regex_traits&);
+};
+
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+//
+// Provide an unsigned short version as well, so the user can link to this
+// no matter whether they build with /Zc:wchar_t or not (MSVC specific).
+//
+template<>
+struct BOOST_REGEX_DECL c_regex_traits<unsigned short>
+{
+ c_regex_traits(){}
+ typedef unsigned short char_type;
+ typedef std::size_t size_type;
+ typedef std::basic_string<unsigned short> string_type;
+ struct locale_type{};
+ typedef boost::uint32_t char_class_type;
+
+ static size_type length(const char_type* p)
+ {
+ return (std::wcslen)((const wchar_t*)p);
+ }
+
+ unsigned short translate(unsigned short c) const
+ {
+ return c;
+ }
+ unsigned short translate_nocase(unsigned short c) const
+ {
+ return (std::towlower)((wchar_t)c);
+ }
+
+ static string_type BOOST_REGEX_CALL transform(const unsigned short* p1, const unsigned short* p2);
+ static string_type BOOST_REGEX_CALL transform_primary(const unsigned short* p1, const unsigned short* p2);
+
+ static char_class_type BOOST_REGEX_CALL lookup_classname(const unsigned short* p1, const unsigned short* p2);
+ static string_type BOOST_REGEX_CALL lookup_collatename(const unsigned short* p1, const unsigned short* p2);
+
+ static bool BOOST_REGEX_CALL isctype(unsigned short, char_class_type);
+ static int BOOST_REGEX_CALL value(unsigned short, int);
+
+ locale_type imbue(locale_type l)
+ { return l; }
+ locale_type getloc()const
+ { return locale_type(); }
+
+private:
+ // this type is not copyable:
+ c_regex_traits(const c_regex_traits&);
+ c_regex_traits& operator=(const c_regex_traits&);
+};
+
+#endif
+
+#endif // BOOST_NO_WREGEX
+
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp
new file mode 100644
index 0000000..e8a501c
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/char_regex_traits.hpp
@@ -0,0 +1,81 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE char_regex_traits.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares deprecated traits classes char_regex_traits<>.
+ */
+
+
+#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
+#define BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+
+namespace deprecated{
+//
+// class char_regex_traits_i
+// provides case insensitive traits classes (deprecated):
+template <class charT>
+class char_regex_traits_i : public regex_traits<charT> {};
+
+template<>
+class char_regex_traits_i<char> : public regex_traits<char>
+{
+public:
+ typedef char char_type;
+ typedef unsigned char uchar_type;
+ typedef unsigned int size_type;
+ typedef regex_traits<char> base_type;
+
+};
+
+#ifndef BOOST_NO_WREGEX
+template<>
+class char_regex_traits_i<wchar_t> : public regex_traits<wchar_t>
+{
+public:
+ typedef wchar_t char_type;
+ typedef unsigned short uchar_type;
+ typedef unsigned int size_type;
+ typedef regex_traits<wchar_t> base_type;
+
+};
+#endif
+} // namespace deprecated
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif // include
+
diff --git a/3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp
new file mode 100644
index 0000000..89fe49d
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/cpp_regex_traits.hpp
@@ -0,0 +1,1062 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE cpp_regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits class cpp_regex_traits.
+ */
+
+#ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#ifndef BOOST_NO_STD_LOCALE
+
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#include <boost/regex/pattern_except.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+#endif
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
+#include <boost/regex/v4/primary_transform.hpp>
+#endif
+#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
+#include <boost/regex/pending/object_cache.hpp>
+#endif
+
+#include <istream>
+#include <ios>
+#include <climits>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4786)
+#endif
+
+namespace boost{
+
+//
+// forward declaration is needed by some compilers:
+//
+template <class charT>
+class cpp_regex_traits;
+
+namespace re_detail{
+
+//
+// class parser_buf:
+// acts as a stream buffer which wraps around a pair of pointers:
+//
+template <class charT,
+ class traits = ::std::char_traits<charT> >
+class parser_buf : public ::std::basic_streambuf<charT, traits>
+{
+ typedef ::std::basic_streambuf<charT, traits> base_type;
+ typedef typename base_type::int_type int_type;
+ typedef typename base_type::char_type char_type;
+ typedef typename base_type::pos_type pos_type;
+ typedef ::std::streamsize streamsize;
+ typedef typename base_type::off_type off_type;
+public:
+ parser_buf() : base_type() { setbuf(0, 0); }
+ const charT* getnext() { return this->gptr(); }
+protected:
+ std::basic_streambuf<charT, traits>* setbuf(char_type* s, streamsize n);
+ typename parser_buf<charT, traits>::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which);
+ typename parser_buf<charT, traits>::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which);
+private:
+ parser_buf& operator=(const parser_buf&);
+ parser_buf(const parser_buf&);
+};
+
+template<class charT, class traits>
+std::basic_streambuf<charT, traits>*
+parser_buf<charT, traits>::setbuf(char_type* s, streamsize n)
+{
+ this->setg(s, s, s + n);
+ return this;
+}
+
+template<class charT, class traits>
+typename parser_buf<charT, traits>::pos_type
+parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which)
+{
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ std::ptrdiff_t size = this->egptr() - this->eback();
+ std::ptrdiff_t pos = this->gptr() - this->eback();
+ charT* g = this->eback();
+ switch(way)
+ {
+ case ::std::ios_base::beg:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + off, g + size);
+ break;
+ case ::std::ios_base::end:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + size - off, g + size);
+ break;
+ case ::std::ios_base::cur:
+ {
+ std::ptrdiff_t newpos = static_cast<std::ptrdiff_t>(pos + off);
+ if((newpos < 0) || (newpos > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + newpos, g + size);
+ break;
+ }
+ default: ;
+ }
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#endif
+ return static_cast<pos_type>(this->gptr() - this->eback());
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template<class charT, class traits>
+typename parser_buf<charT, traits>::pos_type
+parser_buf<charT, traits>::seekpos(pos_type sp, ::std::ios_base::openmode which)
+{
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ off_type size = static_cast<off_type>(this->egptr() - this->eback());
+ charT* g = this->eback();
+ if(off_type(sp) <= size)
+ {
+ this->setg(g, g + off_type(sp), g + size);
+ }
+ return pos_type(off_type(-1));
+}
+
+//
+// class cpp_regex_traits_base:
+// acts as a container for locale and the facets we are using.
+//
+template <class charT>
+struct cpp_regex_traits_base
+{
+ cpp_regex_traits_base(const std::locale& l)
+ { imbue(l); }
+ std::locale imbue(const std::locale& l);
+
+ std::locale m_locale;
+ std::ctype<charT> const* m_pctype;
+#ifndef BOOST_NO_STD_MESSAGES
+ std::messages<charT> const* m_pmessages;
+#endif
+ std::collate<charT> const* m_pcollate;
+
+ bool operator<(const cpp_regex_traits_base& b)const
+ {
+ if(m_pctype == b.m_pctype)
+ {
+#ifndef BOOST_NO_STD_MESSAGES
+ if(m_pmessages == b.m_pmessages)
+ {
+ }
+ return m_pmessages < b.m_pmessages;
+#else
+ return m_pcollate < b.m_pcollate;
+#endif
+ }
+ return m_pctype < b.m_pctype;
+ }
+ bool operator==(const cpp_regex_traits_base& b)const
+ {
+ return (m_pctype == b.m_pctype)
+#ifndef BOOST_NO_STD_MESSAGES
+ && (m_pmessages == b.m_pmessages)
+#endif
+ && (m_pcollate == b.m_pcollate);
+ }
+};
+
+template <class charT>
+std::locale cpp_regex_traits_base<charT>::imbue(const std::locale& l)
+{
+ std::locale result(m_locale);
+ m_locale = l;
+ m_pctype = &BOOST_USE_FACET(std::ctype<charT>, l);
+#ifndef BOOST_NO_STD_MESSAGES
+ m_pmessages = &BOOST_USE_FACET(std::messages<charT>, l);
+#endif
+ m_pcollate = &BOOST_USE_FACET(std::collate<charT>, l);
+ return result;
+}
+
+//
+// class cpp_regex_traits_char_layer:
+// implements methods that require specialisation for narrow characters:
+//
+template <class charT>
+class cpp_regex_traits_char_layer : public cpp_regex_traits_base<charT>
+{
+ typedef std::basic_string<charT> string_type;
+ typedef std::map<charT, regex_constants::syntax_type> map_type;
+ typedef typename map_type::const_iterator map_iterator_type;
+public:
+ cpp_regex_traits_char_layer(const std::locale& l)
+ : cpp_regex_traits_base<charT>(l)
+ {
+ init();
+ }
+ cpp_regex_traits_char_layer(const cpp_regex_traits_base<charT>& b)
+ : cpp_regex_traits_base<charT>(b)
+ {
+ init();
+ }
+ void init();
+
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ return ((i == m_char_map.end()) ? 0 : i->second);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ if(i == m_char_map.end())
+ {
+ if(this->m_pctype->is(std::ctype_base::lower, c)) return regex_constants::escape_type_class;
+ if(this->m_pctype->is(std::ctype_base::upper, c)) return regex_constants::escape_type_not_class;
+ return 0;
+ }
+ return i->second;
+ }
+
+private:
+ string_type get_default_message(regex_constants::syntax_type);
+ // TODO: use a hash table when available!
+ map_type m_char_map;
+};
+
+template <class charT>
+void cpp_regex_traits_char_layer<charT>::init()
+{
+ // we need to start by initialising our syntax map so we know which
+ // character is used for which purpose:
+#ifndef BOOST_NO_STD_MESSAGES
+#ifndef __IBMCPP__
+ typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
+#else
+ typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
+#endif
+ std::string cat_name(cpp_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = this->m_pmessages->open(
+ cat_name,
+ this->m_locale);
+ if((int)cat < 0)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if((int)cat >= 0)
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+ try{
+#endif
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ string_type mss = this->m_pmessages->get(cat, 0, i, get_default_message(i));
+ for(typename string_type::size_type j = 0; j < mss.size(); ++j)
+ {
+ m_char_map[mss[j]] = i;
+ }
+ }
+ this->m_pmessages->close(cat);
+#ifndef BOOST_NO_EXCEPTIONS
+ }
+ catch(...)
+ {
+ this->m_pmessages->close(cat);
+ throw;
+ }
+#endif
+ }
+ else
+ {
+#endif
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ const char* ptr = get_default_syntax(i);
+ while(ptr && *ptr)
+ {
+ m_char_map[this->m_pctype->widen(*ptr)] = i;
+ ++ptr;
+ }
+ }
+#ifndef BOOST_NO_STD_MESSAGES
+ }
+#endif
+}
+
+template <class charT>
+typename cpp_regex_traits_char_layer<charT>::string_type
+ cpp_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i)
+{
+ const char* ptr = get_default_syntax(i);
+ string_type result;
+ while(ptr && *ptr)
+ {
+ result.append(1, this->m_pctype->widen(*ptr));
+ ++ptr;
+ }
+ return result;
+}
+
+//
+// specialised version for narrow characters:
+//
+template <>
+class BOOST_REGEX_DECL cpp_regex_traits_char_layer<char> : public cpp_regex_traits_base<char>
+{
+ typedef std::string string_type;
+public:
+ cpp_regex_traits_char_layer(const std::locale& l)
+ : cpp_regex_traits_base<char>(l)
+ {
+ init();
+ }
+ cpp_regex_traits_char_layer(const cpp_regex_traits_base<char>& l)
+ : cpp_regex_traits_base<char>(l)
+ {
+ init();
+ }
+
+ regex_constants::syntax_type syntax_type(char c)const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(char c) const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+
+private:
+ regex_constants::syntax_type m_char_map[1u << CHAR_BIT];
+ void init();
+};
+
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+enum
+{
+ char_class_space=1<<0,
+ char_class_print=1<<1,
+ char_class_cntrl=1<<2,
+ char_class_upper=1<<3,
+ char_class_lower=1<<4,
+ char_class_alpha=1<<5,
+ char_class_digit=1<<6,
+ char_class_punct=1<<7,
+ char_class_xdigit=1<<8,
+ char_class_alnum=char_class_alpha|char_class_digit,
+ char_class_graph=char_class_alnum|char_class_punct,
+ char_class_blank=1<<9,
+ char_class_word=1<<10,
+ char_class_unicode=1<<11
+};
+
+#endif
+
+//
+// class cpp_regex_traits_implementation:
+// provides pimpl implementation for cpp_regex_traits.
+//
+template <class charT>
+class cpp_regex_traits_implementation : public cpp_regex_traits_char_layer<charT>
+{
+public:
+ typedef typename cpp_regex_traits<charT>::char_class_type char_class_type;
+ typedef typename std::ctype<charT>::mask native_mask_type;
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ BOOST_STATIC_CONSTANT(char_class_type, mask_blank = 1u << 24);
+ BOOST_STATIC_CONSTANT(char_class_type, mask_word = 1u << 25);
+ BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 1u << 26);
+#endif
+
+ typedef std::basic_string<charT> string_type;
+ typedef charT char_type;
+ //cpp_regex_traits_implementation();
+ cpp_regex_traits_implementation(const std::locale& l)
+ : cpp_regex_traits_char_layer<charT>(l)
+ {
+ init();
+ }
+ cpp_regex_traits_implementation(const cpp_regex_traits_base<charT>& l)
+ : cpp_regex_traits_char_layer<charT>(l)
+ {
+ init();
+ }
+ std::string error_string(regex_constants::error_type n) const
+ {
+ if(!m_error_strings.empty())
+ {
+ std::map<int, std::string>::const_iterator p = m_error_strings.find(n);
+ return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second;
+ }
+ return get_default_error_string(n);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ char_class_type result = lookup_classname_imp(p1, p2);
+ if(result == 0)
+ {
+ string_type temp(p1, p2);
+ this->m_pctype->tolower(&*temp.begin(), &*temp.begin() + temp.size());
+ result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size());
+ }
+ return result;
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const;
+ string_type transform_primary(const charT* p1, const charT* p2) const;
+ string_type transform(const charT* p1, const charT* p2) const;
+private:
+ std::map<int, std::string> m_error_strings; // error messages indexed by numberic ID
+ std::map<string_type, char_class_type> m_custom_class_names; // character class names
+ std::map<string_type, string_type> m_custom_collate_names; // collating element names
+ unsigned m_collate_type; // the form of the collation string
+ charT m_collate_delim; // the collation group delimiter
+ //
+ // helpers:
+ //
+ char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const;
+ void init();
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+public:
+ bool isctype(charT c, char_class_type m)const;
+#endif
+};
+
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_blank;
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_word;
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type const cpp_regex_traits_implementation<charT>::mask_unicode;
+
+#endif
+#endif
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::string_type
+ cpp_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const
+{
+ //
+ // PRECONDITIONS:
+ //
+ // A bug in gcc 3.2 (and maybe other versions as well) treats
+ // p1 as a null terminated string, for efficiency reasons
+ // we work around this elsewhere, but just assert here that
+ // we adhere to gcc's (buggy) preconditions...
+ //
+ BOOST_ASSERT(*p2 == 0);
+
+ string_type result;
+ //
+ // swallowing all exceptions here is a bad idea
+ // however at least one std lib will always throw
+ // std::bad_alloc for certain arguments...
+ //
+ try{
+ //
+ // What we do here depends upon the format of the sort key returned by
+ // sort key returned by this->transform:
+ //
+ switch(m_collate_type)
+ {
+ case sort_C:
+ case sort_unknown:
+ // the best we can do is translate to lower case, then get a regular sort key:
+ {
+ result.assign(p1, p2);
+ this->m_pctype->tolower(&*result.begin(), &*result.begin() + result.size());
+ result = this->m_pcollate->transform(&*result.begin(), &*result.begin() + result.size());
+ break;
+ }
+ case sort_fixed:
+ {
+ // get a regular sort key, and then truncate it:
+ result.assign(this->m_pcollate->transform(p1, p2));
+ result.erase(this->m_collate_delim);
+ break;
+ }
+ case sort_delim:
+ // get a regular sort key, and then truncate everything after the delim:
+ result.assign(this->m_pcollate->transform(p1, p2));
+ std::size_t i;
+ for(i = 0; i < result.size(); ++i)
+ {
+ if(result[i] == m_collate_delim)
+ break;
+ }
+ result.erase(i);
+ break;
+ }
+ }catch(...){}
+ while(result.size() && (charT(0) == *result.rbegin()))
+ result.erase(result.size() - 1);
+ if(result.empty())
+ {
+ // character is ignorable at the primary level:
+ result = string_type(1, charT(0));
+ }
+ return result;
+}
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::string_type
+ cpp_regex_traits_implementation<charT>::transform(const charT* p1, const charT* p2) const
+{
+ //
+ // PRECONDITIONS:
+ //
+ // A bug in gcc 3.2 (and maybe other versions as well) treats
+ // p1 as a null terminated string, for efficiency reasons
+ // we work around this elsewhere, but just assert here that
+ // we adhere to gcc's (buggy) preconditions...
+ //
+ BOOST_ASSERT(*p2 == 0);
+ //
+ // swallowing all exceptions here is a bad idea
+ // however at least one std lib will always throw
+ // std::bad_alloc for certain arguments...
+ //
+ string_type result;
+ try{
+ result = this->m_pcollate->transform(p1, p2);
+ //
+ // Borland's STLPort version returns a NULL-terminated
+ // string that has garbage at the end - each call to
+ // std::collate<wchar_t>::transform returns a different string!
+ // So as a workaround, we'll truncate the string at the first NULL
+ // which _seems_ to work....
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x580)
+ result.erase(result.find(charT(0)));
+#else
+ //
+ // some implementations (Dinkumware) append unnecessary trailing \0's:
+ while(result.size() && (charT(0) == *result.rbegin()))
+ result.erase(result.size() - 1);
+#endif
+ BOOST_ASSERT(std::find(result.begin(), result.end(), charT(0)) == result.end());
+ }
+ catch(...)
+ {
+ }
+ return result;
+}
+
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::string_type
+ cpp_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const
+{
+ typedef typename std::map<string_type, string_type>::const_iterator iter_type;
+ if(m_custom_collate_names.size())
+ {
+ iter_type pos = m_custom_collate_names.find(string_type(p1, p2));
+ if(pos != m_custom_collate_names.end())
+ return pos->second;
+ }
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ std::string name(p1, p2);
+#else
+ std::string name;
+ const charT* p0 = p1;
+ while(p0 != p2)
+ name.append(1, char(*p0++));
+#endif
+ name = lookup_default_collate_name(name);
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ if(name.size())
+ return string_type(name.begin(), name.end());
+#else
+ if(name.size())
+ {
+ string_type result;
+ typedef std::string::const_iterator iter;
+ iter b = name.begin();
+ iter e = name.end();
+ while(b != e)
+ result.append(1, charT(*b++));
+ return result;
+ }
+#endif
+ if(p2 - p1 == 1)
+ return string_type(1, *p1);
+ return string_type();
+}
+
+template <class charT>
+void cpp_regex_traits_implementation<charT>::init()
+{
+#ifndef BOOST_NO_STD_MESSAGES
+#ifndef __IBMCPP__
+ typename std::messages<charT>::catalog cat = static_cast<std::messages<char>::catalog>(-1);
+#else
+ typename std::messages<charT>::catalog cat = reinterpret_cast<std::messages<char>::catalog>(-1);
+#endif
+ std::string cat_name(cpp_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = this->m_pmessages->open(
+ cat_name,
+ this->m_locale);
+ if((int)cat < 0)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if((int)cat >= 0)
+ {
+ //
+ // Error messages:
+ //
+ for(boost::regex_constants::error_type i = static_cast<boost::regex_constants::error_type>(0);
+ i <= boost::regex_constants::error_unknown;
+ i = static_cast<boost::regex_constants::error_type>(i + 1))
+ {
+ const char* p = get_default_error_string(i);
+ string_type default_message;
+ while(*p)
+ {
+ default_message.append(1, this->m_pctype->widen(*p));
+ ++p;
+ }
+ string_type s = this->m_pmessages->get(cat, 0, i+200, default_message);
+ std::string result;
+ for(std::string::size_type j = 0; j < s.size(); ++j)
+ {
+ result.append(1, this->m_pctype->narrow(s[j], 0));
+ }
+ m_error_strings[i] = result;
+ }
+ //
+ // Custom class names:
+ //
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ static const char_class_type masks[14] =
+ {
+ std::ctype<charT>::alnum,
+ std::ctype<charT>::alpha,
+ std::ctype<charT>::cntrl,
+ std::ctype<charT>::digit,
+ std::ctype<charT>::graph,
+ std::ctype<charT>::lower,
+ std::ctype<charT>::print,
+ std::ctype<charT>::punct,
+ std::ctype<charT>::space,
+ std::ctype<charT>::upper,
+ std::ctype<charT>::xdigit,
+ cpp_regex_traits_implementation<charT>::mask_blank,
+ cpp_regex_traits_implementation<charT>::mask_word,
+ cpp_regex_traits_implementation<charT>::mask_unicode,
+ };
+#else
+ static const char_class_type masks[14] =
+ {
+ ::boost::re_detail::char_class_alnum,
+ ::boost::re_detail::char_class_alpha,
+ ::boost::re_detail::char_class_cntrl,
+ ::boost::re_detail::char_class_digit,
+ ::boost::re_detail::char_class_graph,
+ ::boost::re_detail::char_class_lower,
+ ::boost::re_detail::char_class_print,
+ ::boost::re_detail::char_class_punct,
+ ::boost::re_detail::char_class_space,
+ ::boost::re_detail::char_class_upper,
+ ::boost::re_detail::char_class_xdigit,
+ ::boost::re_detail::char_class_blank,
+ ::boost::re_detail::char_class_word,
+ ::boost::re_detail::char_class_unicode,
+ };
+#endif
+ static const string_type null_string;
+ for(unsigned int j = 0; j <= 13; ++j)
+ {
+ string_type s(this->m_pmessages->get(cat, 0, j+300, null_string));
+ if(s.size())
+ this->m_custom_class_names[s] = masks[j];
+ }
+ }
+#endif
+ //
+ // get the collation format used by m_pcollate:
+ //
+ m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim);
+}
+
+template <class charT>
+typename cpp_regex_traits_implementation<charT>::char_class_type
+ cpp_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const
+{
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ static const char_class_type masks[20] =
+ {
+ 0,
+ std::ctype<char>::alnum,
+ std::ctype<char>::alpha,
+ cpp_regex_traits_implementation<charT>::mask_blank,
+ std::ctype<char>::cntrl,
+ std::ctype<char>::digit,
+ std::ctype<char>::digit,
+ std::ctype<char>::graph,
+ std::ctype<char>::lower,
+ std::ctype<char>::lower,
+ std::ctype<char>::print,
+ std::ctype<char>::punct,
+ std::ctype<char>::space,
+ std::ctype<char>::space,
+ std::ctype<char>::upper,
+ cpp_regex_traits_implementation<charT>::mask_unicode,
+ std::ctype<char>::upper,
+ std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,
+ std::ctype<char>::alnum | cpp_regex_traits_implementation<charT>::mask_word,
+ std::ctype<char>::xdigit,
+ };
+#else
+ static const char_class_type masks[20] =
+ {
+ 0,
+ ::boost::re_detail::char_class_alnum,
+ ::boost::re_detail::char_class_alpha,
+ ::boost::re_detail::char_class_blank,
+ ::boost::re_detail::char_class_cntrl,
+ ::boost::re_detail::char_class_digit,
+ ::boost::re_detail::char_class_digit,
+ ::boost::re_detail::char_class_graph,
+ ::boost::re_detail::char_class_lower,
+ ::boost::re_detail::char_class_lower,
+ ::boost::re_detail::char_class_print,
+ ::boost::re_detail::char_class_punct,
+ ::boost::re_detail::char_class_space,
+ ::boost::re_detail::char_class_space,
+ ::boost::re_detail::char_class_upper,
+ ::boost::re_detail::char_class_unicode,
+ ::boost::re_detail::char_class_upper,
+ ::boost::re_detail::char_class_alnum | ::boost::re_detail::char_class_word,
+ ::boost::re_detail::char_class_alnum | ::boost::re_detail::char_class_word,
+ ::boost::re_detail::char_class_xdigit,
+ };
+#endif
+ if(m_custom_class_names.size())
+ {
+ typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter;
+ map_iter pos = m_custom_class_names.find(string_type(p1, p2));
+ if(pos != m_custom_class_names.end())
+ return pos->second;
+ }
+ std::size_t state_id = 1 + re_detail::get_default_class_id(p1, p2);
+ BOOST_ASSERT(state_id < sizeof(masks) / sizeof(masks[0]));
+ return masks[state_id];
+}
+
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+template <class charT>
+bool cpp_regex_traits_implementation<charT>::isctype(const charT c, char_class_type mask) const
+{
+ return
+ ((mask & ::boost::re_detail::char_class_space) && (m_pctype->is(std::ctype<charT>::space, c)))
+ || ((mask & ::boost::re_detail::char_class_print) && (m_pctype->is(std::ctype<charT>::print, c)))
+ || ((mask & ::boost::re_detail::char_class_cntrl) && (m_pctype->is(std::ctype<charT>::cntrl, c)))
+ || ((mask & ::boost::re_detail::char_class_upper) && (m_pctype->is(std::ctype<charT>::upper, c)))
+ || ((mask & ::boost::re_detail::char_class_lower) && (m_pctype->is(std::ctype<charT>::lower, c)))
+ || ((mask & ::boost::re_detail::char_class_alpha) && (m_pctype->is(std::ctype<charT>::alpha, c)))
+ || ((mask & ::boost::re_detail::char_class_digit) && (m_pctype->is(std::ctype<charT>::digit, c)))
+ || ((mask & ::boost::re_detail::char_class_punct) && (m_pctype->is(std::ctype<charT>::punct, c)))
+ || ((mask & ::boost::re_detail::char_class_xdigit) && (m_pctype->is(std::ctype<charT>::xdigit, c)))
+ || ((mask & ::boost::re_detail::char_class_blank) && (m_pctype->is(std::ctype<charT>::space, c)) && !::boost::re_detail::is_separator(c))
+ || ((mask & ::boost::re_detail::char_class_word) && (c == '_'))
+ || ((mask & ::boost::re_detail::char_class_unicode) && ::boost::re_detail::is_extended(c));
+}
+#endif
+
+
+template <class charT>
+inline boost::shared_ptr<const cpp_regex_traits_implementation<charT> > create_cpp_regex_traits(const std::locale& l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT))
+{
+ cpp_regex_traits_base<charT> key(l);
+ return ::boost::object_cache<cpp_regex_traits_base<charT>, cpp_regex_traits_implementation<charT> >::get(key, 5);
+}
+
+} // re_detail
+
+template <class charT>
+class cpp_regex_traits
+{
+private:
+ typedef std::ctype<charT> ctype_type;
+public:
+ typedef charT char_type;
+ typedef std::size_t size_type;
+ typedef std::basic_string<char_type> string_type;
+ typedef std::locale locale_type;
+ typedef boost::uint_least32_t char_class_type;
+
+ struct boost_extensions_tag{};
+
+ cpp_regex_traits()
+ : m_pimpl(re_detail::create_cpp_regex_traits<charT>(std::locale()))
+ { }
+ static size_type length(const char_type* p)
+ {
+ return std::char_traits<charT>::length(p);
+ }
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ return m_pimpl->syntax_type(c);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ return m_pimpl->escape_syntax_type(c);
+ }
+ charT translate(charT c) const
+ {
+ return c;
+ }
+ charT translate_nocase(charT c) const
+ {
+ return m_pimpl->m_pctype->tolower(c);
+ }
+ charT translate(charT c, bool icase) const
+ {
+ return icase ? m_pimpl->m_pctype->tolower(c) : c;
+ }
+ charT tolower(charT c) const
+ {
+ return m_pimpl->m_pctype->tolower(c);
+ }
+ charT toupper(charT c) const
+ {
+ return m_pimpl->m_pctype->toupper(c);
+ }
+ string_type transform(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->transform(p1, p2);
+ }
+ string_type transform_primary(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->transform_primary(p1, p2);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_classname(p1, p2);
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_collatename(p1, p2);
+ }
+ bool isctype(charT c, char_class_type f) const
+ {
+#ifndef BOOST_REGEX_BUGGY_CTYPE_FACET
+ typedef typename std::ctype<charT>::mask ctype_mask;
+
+ static const ctype_mask mask_base =
+ static_cast<ctype_mask>(
+ std::ctype<charT>::alnum
+ | std::ctype<charT>::alpha
+ | std::ctype<charT>::cntrl
+ | std::ctype<charT>::digit
+ | std::ctype<charT>::graph
+ | std::ctype<charT>::lower
+ | std::ctype<charT>::print
+ | std::ctype<charT>::punct
+ | std::ctype<charT>::space
+ | std::ctype<charT>::upper
+ | std::ctype<charT>::xdigit);
+
+ if((f & mask_base)
+ && (m_pimpl->m_pctype->is(
+ static_cast<ctype_mask>(f & mask_base), c)))
+ return true;
+ else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c))
+ return true;
+ else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_word) && (c == '_'))
+ return true;
+ else if((f & re_detail::cpp_regex_traits_implementation<charT>::mask_blank)
+ && m_pimpl->m_pctype->is(std::ctype<charT>::space, c)
+ && !re_detail::is_separator(c))
+ return true;
+ return false;
+#else
+ return m_pimpl->isctype(c, f);
+#endif
+ }
+ int toi(const charT*& p1, const charT* p2, int radix)const;
+ int value(charT c, int radix)const
+ {
+ const charT* pc = &c;
+ return toi(pc, pc + 1, radix);
+ }
+ locale_type imbue(locale_type l)
+ {
+ std::locale result(getloc());
+ m_pimpl = re_detail::create_cpp_regex_traits<charT>(l);
+ return result;
+ }
+ locale_type getloc()const
+ {
+ return m_pimpl->m_locale;
+ }
+ std::string error_string(regex_constants::error_type n) const
+ {
+ return m_pimpl->error_string(n);
+ }
+
+ //
+ // extension:
+ // set the name of the message catalog in use (defaults to "boost_regex").
+ //
+ static std::string catalog_name(const std::string& name);
+ static std::string get_catalog_name();
+
+private:
+ boost::shared_ptr<const re_detail::cpp_regex_traits_implementation<charT> > m_pimpl;
+ //
+ // catalog name handler:
+ //
+ static std::string& get_catalog_name_inst();
+
+#ifdef BOOST_HAS_THREADS
+ static static_mutex& get_mutex_inst();
+#endif
+};
+
+
+template <class charT>
+int cpp_regex_traits<charT>::toi(const charT*& first, const charT* last, int radix)const
+{
+ re_detail::parser_buf<charT> sbuf; // buffer for parsing numbers.
+ std::basic_istream<charT> is(&sbuf); // stream for parsing numbers.
+
+ // we do NOT want to parse any thousands separators inside the stream:
+ last = std::find(first, last, BOOST_USE_FACET(std::numpunct<charT>, is.getloc()).thousands_sep());
+
+ sbuf.pubsetbuf(const_cast<charT*>(static_cast<const charT*>(first)), static_cast<std::streamsize>(last-first));
+ is.clear();
+ if(std::abs(radix) == 16) is >> std::hex;
+ else if(std::abs(radix) == 8) is >> std::oct;
+ else is >> std::dec;
+ int val;
+ if(is >> val)
+ {
+ first = first + ((last - first) - sbuf.in_avail());
+ return val;
+ }
+ else
+ return -1;
+}
+
+template <class charT>
+std::string cpp_regex_traits<charT>::catalog_name(const std::string& name)
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ get_catalog_name_inst() = name;
+ return result;
+}
+
+template <class charT>
+std::string& cpp_regex_traits<charT>::get_catalog_name_inst()
+{
+ static std::string s_name;
+ return s_name;
+}
+
+template <class charT>
+std::string cpp_regex_traits<charT>::get_catalog_name()
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ return result;
+}
+
+#ifdef BOOST_HAS_THREADS
+template <class charT>
+static_mutex& cpp_regex_traits<charT>::get_mutex_inst()
+{
+ static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT;
+ return s_mutex;
+}
+#endif
+
+
+} // boost
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/cregex.hpp b/3rdParty/Boost/boost/regex/v4/cregex.hpp
new file mode 100644
index 0000000..cafe396
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/cregex.hpp
@@ -0,0 +1,329 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE cregex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares POSIX API functions
+ * + boost::RegEx high level wrapper.
+ */
+
+#ifndef BOOST_RE_CREGEX_HPP_INCLUDED
+#define BOOST_RE_CREGEX_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#include <boost/regex/v4/match_flags.hpp>
+#include <boost/regex/v4/error_type.hpp>
+
+#ifdef __cplusplus
+#include <cstddef>
+#else
+#include <stddef.h>
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+/* include these defs only for POSIX compatablity */
+#ifdef __cplusplus
+namespace boost{
+extern "C" {
+#endif
+
+#if defined(__cplusplus) && !defined(BOOST_NO_STDC_NAMESPACE)
+typedef std::ptrdiff_t regoff_t;
+typedef std::size_t regsize_t;
+#else
+typedef ptrdiff_t regoff_t;
+typedef size_t regsize_t;
+#endif
+
+typedef struct
+{
+ unsigned int re_magic;
+#ifdef __cplusplus
+ std::size_t re_nsub; /* number of parenthesized subexpressions */
+#else
+ size_t re_nsub;
+#endif
+ const char* re_endp; /* end pointer for REG_PEND */
+ void* guts; /* none of your business :-) */
+ match_flag_type eflags; /* none of your business :-) */
+} regex_tA;
+
+#ifndef BOOST_NO_WREGEX
+typedef struct
+{
+ unsigned int re_magic;
+#ifdef __cplusplus
+ std::size_t re_nsub; /* number of parenthesized subexpressions */
+#else
+ size_t re_nsub;
+#endif
+ const wchar_t* re_endp; /* end pointer for REG_PEND */
+ void* guts; /* none of your business :-) */
+ match_flag_type eflags; /* none of your business :-) */
+} regex_tW;
+#endif
+
+typedef struct
+{
+ regoff_t rm_so; /* start of match */
+ regoff_t rm_eo; /* end of match */
+} regmatch_t;
+
+/* regcomp() flags */
+typedef enum{
+ REG_BASIC = 0000,
+ REG_EXTENDED = 0001,
+ REG_ICASE = 0002,
+ REG_NOSUB = 0004,
+ REG_NEWLINE = 0010,
+ REG_NOSPEC = 0020,
+ REG_PEND = 0040,
+ REG_DUMP = 0200,
+ REG_NOCOLLATE = 0400,
+ REG_ESCAPE_IN_LISTS = 01000,
+ REG_NEWLINE_ALT = 02000,
+ REG_PERLEX = 04000,
+
+ REG_PERL = REG_EXTENDED | REG_NOCOLLATE | REG_ESCAPE_IN_LISTS | REG_PERLEX,
+ REG_AWK = REG_EXTENDED | REG_ESCAPE_IN_LISTS,
+ REG_GREP = REG_BASIC | REG_NEWLINE_ALT,
+ REG_EGREP = REG_EXTENDED | REG_NEWLINE_ALT,
+
+ REG_ASSERT = 15,
+ REG_INVARG = 16,
+ REG_ATOI = 255, /* convert name to number (!) */
+ REG_ITOA = 0400 /* convert number to name (!) */
+} reg_comp_flags;
+
+/* regexec() flags */
+typedef enum{
+ REG_NOTBOL = 00001,
+ REG_NOTEOL = 00002,
+ REG_STARTEND = 00004
+} reg_exec_flags;
+
+//
+// POSIX error codes:
+//
+typedef unsigned reg_error_t;
+typedef reg_error_t reg_errcode_t; // backwards compatibility
+
+static const reg_error_t REG_NOERROR = 0; /* Success. */
+static const reg_error_t REG_NOMATCH = 1; /* Didn't find a match (for regexec). */
+
+ /* POSIX regcomp return error codes. (In the order listed in the
+ standard.) */
+static const reg_error_t REG_BADPAT = 2; /* Invalid pattern. */
+static const reg_error_t REG_ECOLLATE = 3; /* Undefined collating element. */
+static const reg_error_t REG_ECTYPE = 4; /* Invalid character class name. */
+static const reg_error_t REG_EESCAPE = 5; /* Trailing backslash. */
+static const reg_error_t REG_ESUBREG = 6; /* Invalid back reference. */
+static const reg_error_t REG_EBRACK = 7; /* Unmatched left bracket. */
+static const reg_error_t REG_EPAREN = 8; /* Parenthesis imbalance. */
+static const reg_error_t REG_EBRACE = 9; /* Unmatched \{. */
+static const reg_error_t REG_BADBR = 10; /* Invalid contents of \{\}. */
+static const reg_error_t REG_ERANGE = 11; /* Invalid range end. */
+static const reg_error_t REG_ESPACE = 12; /* Ran out of memory. */
+static const reg_error_t REG_BADRPT = 13; /* No preceding re for repetition op. */
+static const reg_error_t REG_EEND = 14; /* unexpected end of expression */
+static const reg_error_t REG_ESIZE = 15; /* expression too big */
+static const reg_error_t REG_ERPAREN = 8; /* = REG_EPAREN : unmatched right parenthesis */
+static const reg_error_t REG_EMPTY = 17; /* empty expression */
+static const reg_error_t REG_E_MEMORY = 15; /* = REG_ESIZE : out of memory */
+static const reg_error_t REG_ECOMPLEXITY = 18; /* complexity too high */
+static const reg_error_t REG_ESTACK = 19; /* out of stack space */
+static const reg_error_t REG_E_UNKNOWN = 20; /* unknown error */
+static const reg_error_t REG_ENOSYS = 20; /* = REG_E_UNKNOWN : Reserved. */
+
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA*, const char*, int);
+BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int, const regex_tA*, char*, regsize_t);
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecA(const regex_tA*, const char*, regsize_t, regmatch_t*, int);
+BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeA(regex_tA*);
+
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW*, const wchar_t*, int);
+BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int, const regex_tW*, wchar_t*, regsize_t);
+BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW*, const wchar_t*, regsize_t, regmatch_t*, int);
+BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW*);
+#endif
+
+#ifdef UNICODE
+#define regcomp regcompW
+#define regerror regerrorW
+#define regexec regexecW
+#define regfree regfreeW
+#define regex_t regex_tW
+#else
+#define regcomp regcompA
+#define regerror regerrorA
+#define regexec regexecA
+#define regfree regfreeA
+#define regex_t regex_tA
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+} // namespace
+#endif
+
+//
+// C++ high level wrapper goes here:
+//
+#if defined(__cplusplus)
+#include <string>
+#include <vector>
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+class RegEx;
+
+namespace re_detail{
+
+class RegExData;
+struct pred1;
+struct pred2;
+struct pred3;
+struct pred4;
+
+} // namespace re_detail
+
+#if (defined(BOOST_MSVC) || defined(__BORLANDC__)) && !defined(BOOST_DISABLE_WIN32)
+typedef bool (__cdecl *GrepCallback)(const RegEx& expression);
+typedef bool (__cdecl *GrepFileCallback)(const char* file, const RegEx& expression);
+typedef bool (__cdecl *FindFilesCallback)(const char* file);
+#else
+typedef bool (*GrepCallback)(const RegEx& expression);
+typedef bool (*GrepFileCallback)(const char* file, const RegEx& expression);
+typedef bool (*FindFilesCallback)(const char* file);
+#endif
+
+class BOOST_REGEX_DECL RegEx
+{
+private:
+ re_detail::RegExData* pdata;
+public:
+ RegEx();
+ RegEx(const RegEx& o);
+ ~RegEx();
+ explicit RegEx(const char* c, bool icase = false);
+ explicit RegEx(const std::string& s, bool icase = false);
+ RegEx& operator=(const RegEx& o);
+ RegEx& operator=(const char* p);
+ RegEx& operator=(const std::string& s){ return this->operator=(s.c_str()); }
+ unsigned int SetExpression(const char* p, bool icase = false);
+ unsigned int SetExpression(const std::string& s, bool icase = false){ return SetExpression(s.c_str(), icase); }
+ std::string Expression()const;
+ unsigned int error_code()const;
+ //
+ // now matching operators:
+ //
+ bool Match(const char* p, match_flag_type flags = match_default);
+ bool Match(const std::string& s, match_flag_type flags = match_default) { return Match(s.c_str(), flags); }
+ bool Search(const char* p, match_flag_type flags = match_default);
+ bool Search(const std::string& s, match_flag_type flags = match_default) { return Search(s.c_str(), flags); }
+ unsigned int Grep(GrepCallback cb, const char* p, match_flag_type flags = match_default);
+ unsigned int Grep(GrepCallback cb, const std::string& s, match_flag_type flags = match_default) { return Grep(cb, s.c_str(), flags); }
+ unsigned int Grep(std::vector<std::string>& v, const char* p, match_flag_type flags = match_default);
+ unsigned int Grep(std::vector<std::string>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); }
+ unsigned int Grep(std::vector<std::size_t>& v, const char* p, match_flag_type flags = match_default);
+ unsigned int Grep(std::vector<std::size_t>& v, const std::string& s, match_flag_type flags = match_default) { return Grep(v, s.c_str(), flags); }
+#ifndef BOOST_REGEX_NO_FILEITER
+ unsigned int GrepFiles(GrepFileCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default);
+ unsigned int GrepFiles(GrepFileCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return GrepFiles(cb, files.c_str(), recurse, flags); }
+ unsigned int FindFiles(FindFilesCallback cb, const char* files, bool recurse = false, match_flag_type flags = match_default);
+ unsigned int FindFiles(FindFilesCallback cb, const std::string& files, bool recurse = false, match_flag_type flags = match_default) { return FindFiles(cb, files.c_str(), recurse, flags); }
+#endif
+
+ std::string Merge(const std::string& in, const std::string& fmt,
+ bool copy = true, match_flag_type flags = match_default);
+ std::string Merge(const char* in, const char* fmt,
+ bool copy = true, match_flag_type flags = match_default);
+
+ std::size_t Split(std::vector<std::string>& v, std::string& s, match_flag_type flags = match_default, unsigned max_count = ~0);
+ //
+ // now operators for returning what matched in more detail:
+ //
+ std::size_t Position(int i = 0)const;
+ std::size_t Length(int i = 0)const;
+ bool Matched(int i = 0)const;
+ std::size_t Marks()const;
+ std::string What(int i = 0)const;
+ std::string operator[](int i)const { return What(i); }
+
+ static const std::size_t npos;
+
+ friend struct re_detail::pred1;
+ friend struct re_detail::pred2;
+ friend struct re_detail::pred3;
+ friend struct re_detail::pred4;
+};
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif
+
+#endif // include guard
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/error_type.hpp b/3rdParty/Boost/boost/regex/v4/error_type.hpp
new file mode 100644
index 0000000..b6633a0
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/error_type.hpp
@@ -0,0 +1,58 @@
+/*
+ *
+ * Copyright (c) 2003-2005
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE error_type.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression error type enumerator.
+ */
+
+#ifndef BOOST_REGEX_ERROR_TYPE_HPP
+#define BOOST_REGEX_ERROR_TYPE_HPP
+
+#ifdef __cplusplus
+namespace boost{
+#endif
+
+#ifdef __cplusplus
+namespace regex_constants{
+
+enum error_type{
+
+ error_ok = 0, // not used
+ error_no_match = 1, // not used
+ error_bad_pattern = 2,
+ error_collate = 3,
+ error_ctype = 4,
+ error_escape = 5,
+ error_backref = 6,
+ error_brack = 7,
+ error_paren = 8,
+ error_brace = 9,
+ error_badbrace = 10,
+ error_range = 11,
+ error_space = 12,
+ error_badrepeat = 13,
+ error_end = 14, // not used
+ error_size = 15,
+ error_right_paren = 16, // not used
+ error_empty = 17,
+ error_complexity = 18,
+ error_stack = 19,
+ error_unknown = 20
+};
+
+}
+}
+#endif // __cplusplus
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/v4/fileiter.hpp b/3rdParty/Boost/boost/regex/v4/fileiter.hpp
new file mode 100644
index 0000000..f13c4b2
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/fileiter.hpp
@@ -0,0 +1,455 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE fileiter.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares various platform independent file and
+ * directory iterators, plus binary file input in
+ * the form of class map_file.
+ */
+
+#ifndef BOOST_RE_FILEITER_HPP_INCLUDED
+#define BOOST_RE_FILEITER_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#include <boost/assert.hpp>
+
+#ifndef BOOST_REGEX_NO_FILEITER
+
+#if (defined(__CYGWIN__) || defined(__CYGWIN32__)) && !defined(BOOST_REGEX_NO_W32)
+#error "Sorry, can't mix <windows.h> with STL code and gcc compiler: if you ran configure, try again with configure --disable-ms-windows"
+#define BOOST_REGEX_FI_WIN32_MAP
+#define BOOST_REGEX_FI_POSIX_DIR
+#elif (defined(__WIN32__) || defined(_WIN32) || defined(WIN32)) && !defined(BOOST_REGEX_NO_W32)
+#define BOOST_REGEX_FI_WIN32_MAP
+#define BOOST_REGEX_FI_WIN32_DIR
+#else
+#define BOOST_REGEX_FI_POSIX_MAP
+#define BOOST_REGEX_FI_POSIX_DIR
+#endif
+
+#if defined(BOOST_REGEX_FI_WIN32_MAP)||defined(BOOST_REGEX_FI_WIN32_DIR)
+#include <windows.h>
+#endif
+
+#if defined(BOOST_REGEX_FI_WIN32_DIR)
+
+#include <cstddef>
+
+namespace boost{
+ namespace re_detail{
+
+#ifndef BOOST_NO_ANSI_APIS
+typedef WIN32_FIND_DATAA _fi_find_data;
+#else
+typedef WIN32_FIND_DATAW _fi_find_data;
+#endif
+typedef HANDLE _fi_find_handle;
+
+ } // namespace re_detail
+
+} // namespace boost
+
+#define _fi_invalid_handle INVALID_HANDLE_VALUE
+#define _fi_dir FILE_ATTRIBUTE_DIRECTORY
+
+#elif defined(BOOST_REGEX_FI_POSIX_DIR)
+
+#include <cstddef>
+#include <cstdio>
+#include <cctype>
+#include <iterator>
+#include <list>
+#include <cassert>
+#include <dirent.h>
+
+#if defined(__SUNPRO_CC)
+using std::list;
+#endif
+
+#ifndef MAX_PATH
+#define MAX_PATH 256
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+struct _fi_find_data
+{
+ unsigned dwFileAttributes;
+ char cFileName[MAX_PATH];
+};
+
+struct _fi_priv_data;
+
+typedef _fi_priv_data* _fi_find_handle;
+#define _fi_invalid_handle 0
+#define _fi_dir 1
+
+_fi_find_handle _fi_FindFirstFile(const char* lpFileName, _fi_find_data* lpFindFileData);
+bool _fi_FindNextFile(_fi_find_handle hFindFile, _fi_find_data* lpFindFileData);
+bool _fi_FindClose(_fi_find_handle hFindFile);
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+ } // namespace re_detail
+} // namespace boost
+
+#ifdef FindFirstFile
+ #undef FindFirstFile
+#endif
+#ifdef FindNextFile
+ #undef FindNextFile
+#endif
+#ifdef FindClose
+ #undef FindClose
+#endif
+
+#define FindFirstFileA _fi_FindFirstFile
+#define FindNextFileA _fi_FindNextFile
+#define FindClose _fi_FindClose
+
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#ifdef BOOST_REGEX_FI_WIN32_MAP // win32 mapfile
+
+class BOOST_REGEX_DECL mapfile
+{
+ HANDLE hfile;
+ HANDLE hmap;
+ const char* _first;
+ const char* _last;
+public:
+
+ typedef const char* iterator;
+
+ mapfile(){ hfile = hmap = 0; _first = _last = 0; }
+ mapfile(const char* file){ hfile = hmap = 0; _first = _last = 0; open(file); }
+ ~mapfile(){ close(); }
+ void open(const char* file);
+ void close();
+ const char* begin(){ return _first; }
+ const char* end(){ return _last; }
+ size_t size(){ return _last - _first; }
+ bool valid(){ return (hfile != 0) && (hfile != INVALID_HANDLE_VALUE); }
+};
+
+
+#else
+
+class BOOST_REGEX_DECL mapfile_iterator;
+
+class BOOST_REGEX_DECL mapfile
+{
+ typedef char* pointer;
+ std::FILE* hfile;
+ long int _size;
+ pointer* _first;
+ pointer* _last;
+ mutable std::list<pointer*> condemed;
+ enum sizes
+ {
+ buf_size = 4096
+ };
+ void lock(pointer* node)const;
+ void unlock(pointer* node)const;
+public:
+
+ typedef mapfile_iterator iterator;
+
+ mapfile(){ hfile = 0; _size = 0; _first = _last = 0; }
+ mapfile(const char* file){ hfile = 0; _size = 0; _first = _last = 0; open(file); }
+ ~mapfile(){ close(); }
+ void open(const char* file);
+ void close();
+ iterator begin()const;
+ iterator end()const;
+ unsigned long size()const{ return _size; }
+ bool valid()const{ return hfile != 0; }
+ friend class mapfile_iterator;
+};
+
+class BOOST_REGEX_DECL mapfile_iterator
+#if !defined(BOOST_NO_STD_ITERATOR) || defined(BOOST_MSVC_STD_ITERATOR)
+: public std::iterator<std::random_access_iterator_tag, char>
+#endif
+{
+ typedef mapfile::pointer internal_pointer;
+ internal_pointer* node;
+ const mapfile* file;
+ unsigned long offset;
+ long position()const
+ {
+ return file ? ((node - file->_first) * mapfile::buf_size + offset) : 0;
+ }
+ void position(long pos)
+ {
+ if(file)
+ {
+ node = file->_first + (pos / mapfile::buf_size);
+ offset = pos % mapfile::buf_size;
+ }
+ }
+public:
+ typedef std::ptrdiff_t difference_type;
+ typedef char value_type;
+ typedef const char* pointer;
+ typedef const char& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+
+ mapfile_iterator() { node = 0; file = 0; offset = 0; }
+ mapfile_iterator(const mapfile* f, long arg_position)
+ {
+ file = f;
+ node = f->_first + arg_position / mapfile::buf_size;
+ offset = arg_position % mapfile::buf_size;
+ if(file)
+ file->lock(node);
+ }
+ mapfile_iterator(const mapfile_iterator& i)
+ {
+ file = i.file;
+ node = i.node;
+ offset = i.offset;
+ if(file)
+ file->lock(node);
+ }
+ ~mapfile_iterator()
+ {
+ if(file && node)
+ file->unlock(node);
+ }
+ mapfile_iterator& operator = (const mapfile_iterator& i);
+ char operator* ()const
+ {
+ BOOST_ASSERT(node >= file->_first);
+ BOOST_ASSERT(node < file->_last);
+ return file ? *(*node + sizeof(int) + offset) : char(0);
+ }
+ char operator[] (long off)const
+ {
+ mapfile_iterator tmp(*this);
+ tmp += off;
+ return *tmp;
+ }
+ mapfile_iterator& operator++ ();
+ mapfile_iterator operator++ (int);
+ mapfile_iterator& operator-- ();
+ mapfile_iterator operator-- (int);
+
+ mapfile_iterator& operator += (long off)
+ {
+ position(position() + off);
+ return *this;
+ }
+ mapfile_iterator& operator -= (long off)
+ {
+ position(position() - off);
+ return *this;
+ }
+
+ friend inline bool operator==(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return (i.file == j.file) && (i.node == j.node) && (i.offset == j.offset);
+ }
+
+ friend inline bool operator!=(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return !(i == j);
+ }
+
+ friend inline bool operator<(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() < j.position();
+ }
+ friend inline bool operator>(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() > j.position();
+ }
+ friend inline bool operator<=(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() <= j.position();
+ }
+ friend inline bool operator>=(const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() >= j.position();
+ }
+
+ friend mapfile_iterator operator + (const mapfile_iterator& i, long off);
+ friend mapfile_iterator operator + (long off, const mapfile_iterator& i)
+ {
+ mapfile_iterator tmp(i);
+ return tmp += off;
+ }
+ friend mapfile_iterator operator - (const mapfile_iterator& i, long off);
+ friend inline long operator - (const mapfile_iterator& i, const mapfile_iterator& j)
+ {
+ return i.position() - j.position();
+ }
+};
+
+#endif
+
+// _fi_sep determines the directory separator, either '\\' or '/'
+BOOST_REGEX_DECL extern const char* _fi_sep;
+
+struct file_iterator_ref
+{
+ _fi_find_handle hf;
+ _fi_find_data _data;
+ long count;
+};
+
+
+class BOOST_REGEX_DECL file_iterator
+{
+ char* _root;
+ char* _path;
+ char* ptr;
+ file_iterator_ref* ref;
+
+public:
+ typedef std::ptrdiff_t difference_type;
+ typedef const char* value_type;
+ typedef const char** pointer;
+ typedef const char*& reference;
+ typedef std::input_iterator_tag iterator_category;
+
+ file_iterator();
+ file_iterator(const char* wild);
+ ~file_iterator();
+ file_iterator(const file_iterator&);
+ file_iterator& operator=(const file_iterator&);
+ const char* root()const { return _root; }
+ const char* path()const { return _path; }
+ const char* name()const { return ptr; }
+ _fi_find_data* data() { return &(ref->_data); }
+ void next();
+ file_iterator& operator++() { next(); return *this; }
+ file_iterator operator++(int);
+ const char* operator*() { return path(); }
+
+ friend inline bool operator == (const file_iterator& f1, const file_iterator& f2)
+ {
+ return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle));
+ }
+
+ friend inline bool operator != (const file_iterator& f1, const file_iterator& f2)
+ {
+ return !(f1 == f2);
+ }
+
+};
+
+// dwa 9/13/00 - suppress unused parameter warning
+inline bool operator < (const file_iterator&, const file_iterator&)
+{
+ return false;
+}
+
+
+class BOOST_REGEX_DECL directory_iterator
+{
+ char* _root;
+ char* _path;
+ char* ptr;
+ file_iterator_ref* ref;
+
+public:
+ typedef std::ptrdiff_t difference_type;
+ typedef const char* value_type;
+ typedef const char** pointer;
+ typedef const char*& reference;
+ typedef std::input_iterator_tag iterator_category;
+
+ directory_iterator();
+ directory_iterator(const char* wild);
+ ~directory_iterator();
+ directory_iterator(const directory_iterator& other);
+ directory_iterator& operator=(const directory_iterator& other);
+
+ const char* root()const { return _root; }
+ const char* path()const { return _path; }
+ const char* name()const { return ptr; }
+ _fi_find_data* data() { return &(ref->_data); }
+ void next();
+ directory_iterator& operator++() { next(); return *this; }
+ directory_iterator operator++(int);
+ const char* operator*() { return path(); }
+
+ static const char* separator() { return _fi_sep; }
+
+ friend inline bool operator == (const directory_iterator& f1, const directory_iterator& f2)
+ {
+ return ((f1.ref->hf == _fi_invalid_handle) && (f2.ref->hf == _fi_invalid_handle));
+ }
+
+
+ friend inline bool operator != (const directory_iterator& f1, const directory_iterator& f2)
+ {
+ return !(f1 == f2);
+ }
+
+ };
+
+inline bool operator < (const directory_iterator&, const directory_iterator&)
+{
+ return false;
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+
+} // namespace re_detail
+using boost::re_detail::directory_iterator;
+using boost::re_detail::file_iterator;
+using boost::re_detail::mapfile;
+} // namespace boost
+
+#endif // BOOST_REGEX_NO_FILEITER
+#endif // BOOST_RE_FILEITER_HPP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/instances.hpp b/3rdParty/Boost/boost/regex/v4/instances.hpp
new file mode 100644
index 0000000..d12dc6b
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/instances.hpp
@@ -0,0 +1,215 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE instances.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Defines those template instances that are placed in the
+ * library rather than in the users object files.
+ */
+
+//
+// note no include guard, we may include this multiple times:
+//
+#ifndef BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+namespace boost{
+
+//
+// this header can be included multiple times, each time with
+// a different character type, BOOST_REGEX_CHAR_T must be defined
+// first:
+//
+#ifndef BOOST_REGEX_CHAR_T
+# error "BOOST_REGEX_CHAR_T not defined"
+#endif
+
+#ifndef BOOST_REGEX_TRAITS_T
+# define BOOST_REGEX_TRAITS_T , boost::regex_traits<BOOST_REGEX_CHAR_T >
+#endif
+
+//
+// what follows is compiler specific:
+//
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# pragma option push -Jgx
+# endif
+
+template class BOOST_REGEX_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
+template class BOOST_REGEX_DECL match_results< const BOOST_REGEX_CHAR_T* >;
+#ifndef BOOST_NO_STD_ALLOCATOR
+template class BOOST_REGEX_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
+#endif
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# pragma option pop
+# endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#elif defined(BOOST_MSVC) || defined(__ICL)
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# ifdef __GNUC__
+# define template __extension__ extern template
+# else
+# if BOOST_MSVC > 1310
+# define BOOST_REGEX_TEMPLATE_DECL
+# endif
+# define template extern template
+# endif
+# endif
+
+#ifndef BOOST_REGEX_TEMPLATE_DECL
+# define BOOST_REGEX_TEMPLATE_DECL BOOST_REGEX_DECL
+#endif
+
+# ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4251 4231 4660)
+# endif
+
+template class BOOST_REGEX_TEMPLATE_DECL basic_regex< BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >;
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template class BOOST_REGEX_TEMPLATE_DECL match_results< const BOOST_REGEX_CHAR_T* >;
+#endif
+#ifndef BOOST_NO_STD_ALLOCATOR
+template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >;
+#endif
+#if !(defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB <= 1))\
+ && !(defined(BOOST_INTEL_CXX_VERSION) && (BOOST_INTEL_CXX_VERSION <= 800))\
+ && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))\
+ && !defined(BOOST_REGEX_ICU_INSTANCES)
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template class BOOST_REGEX_TEMPLATE_DECL match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >;
+#endif
+#ifndef BOOST_NO_STD_ALLOCATOR
+template class BOOST_REGEX_TEMPLATE_DECL ::boost::re_detail::perl_matcher< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >;
+#endif
+#endif
+
+
+# ifdef BOOST_MSVC
+# pragma warning(pop)
+# endif
+
+# ifdef template
+# undef template
+# endif
+
+#undef BOOST_REGEX_TEMPLATE_DECL
+
+#elif (defined(__GNUC__) && (__GNUC__ >= 3))
+
+# ifndef BOOST_REGEX_INSTANTIATE
+# define template __extension__ extern template
+# endif
+
+#if !defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_REGEX_ICU_INSTANCES)
+namespace re_detail{
+template BOOST_REGEX_DECL
+std::locale cpp_regex_traits_base<BOOST_REGEX_CHAR_T>::imbue(const std::locale& l);
+
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform_primary(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::transform(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::string_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_collatename(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+template BOOST_REGEX_DECL
+void cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::init();
+template BOOST_REGEX_DECL
+cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::char_class_type
+ cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::lookup_classname_imp(const BOOST_REGEX_CHAR_T* p1, const BOOST_REGEX_CHAR_T* p2) const;
+#ifdef BOOST_REGEX_BUGGY_CTYPE_FACET
+template BOOST_REGEX_DECL
+bool cpp_regex_traits_implementation<BOOST_REGEX_CHAR_T>::isctype(const BOOST_REGEX_CHAR_T c, char_class_type mask) const;
+#endif
+} // namespace
+template BOOST_REGEX_DECL
+int cpp_regex_traits<BOOST_REGEX_CHAR_T>::toi(const BOOST_REGEX_CHAR_T*& first, const BOOST_REGEX_CHAR_T* last, int radix)const;
+template BOOST_REGEX_DECL
+std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::catalog_name(const std::string& name);
+template BOOST_REGEX_DECL
+std::string& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name_inst();
+template BOOST_REGEX_DECL
+std::string cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_catalog_name();
+#ifdef BOOST_HAS_THREADS
+template BOOST_REGEX_DECL
+static_mutex& cpp_regex_traits<BOOST_REGEX_CHAR_T>::get_mutex_inst();
+#endif
+#endif
+
+template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >&
+ basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::do_assign(
+ const BOOST_REGEX_CHAR_T* p1,
+ const BOOST_REGEX_CHAR_T* p2,
+ flag_type f);
+template BOOST_REGEX_DECL basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::locale_type BOOST_REGEX_CALL
+ basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >::imbue(locale_type l);
+
+template BOOST_REGEX_DECL void BOOST_REGEX_CALL
+ match_results<const BOOST_REGEX_CHAR_T*>::maybe_assign(
+ const match_results<const BOOST_REGEX_CHAR_T*>& m);
+
+namespace re_detail{
+template BOOST_REGEX_DECL void perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::construct_init(
+ const basic_regex<BOOST_REGEX_CHAR_T BOOST_REGEX_TRAITS_T >& e, match_flag_type f);
+template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::match();
+template BOOST_REGEX_DECL bool perl_matcher<BOOST_REGEX_CHAR_T const *, match_results< const BOOST_REGEX_CHAR_T* >::allocator_type BOOST_REGEX_TRAITS_T >::find();
+} // namespace
+
+#if (defined(__GLIBCPP__) || defined(__GLIBCXX__)) \
+ && !defined(BOOST_REGEX_ICU_INSTANCES)\
+ && !defined(__SGI_STL_PORT)\
+ && !defined(_STLPORT_VERSION)
+// std:basic_string<>::const_iterator instances as well:
+template BOOST_REGEX_DECL void BOOST_REGEX_CALL
+ match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>::maybe_assign(
+ const match_results<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator>& m);
+
+namespace re_detail{
+template BOOST_REGEX_DECL void perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::construct_init(
+ const basic_regex<BOOST_REGEX_CHAR_T>& e, match_flag_type f);
+template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::match();
+template BOOST_REGEX_DECL bool perl_matcher<std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator, match_results< std::basic_string<BOOST_REGEX_CHAR_T>::const_iterator >::allocator_type, boost::regex_traits<BOOST_REGEX_CHAR_T > >::find();
+} // namespace
+#endif
+
+# ifdef template
+# undef template
+# endif
+
+
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/iterator_category.hpp b/3rdParty/Boost/boost/regex/v4/iterator_category.hpp
new file mode 100644
index 0000000..20870a0
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/iterator_category.hpp
@@ -0,0 +1,87 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_match.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Iterator traits for selecting an iterator type as
+ * an integral constant expression.
+ */
+
+
+#ifndef BOOST_REGEX_ITERATOR_CATEGORY_HPP
+#define BOOST_REGEX_ITERATOR_CATEGORY_HPP
+
+#include <iterator>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+
+namespace boost{
+namespace detail{
+
+template <class I>
+struct is_random_imp
+{
+private:
+ typedef typename std::iterator_traits<I>::iterator_category cat;
+public:
+ BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible<cat*, std::random_access_iterator_tag*>::value));
+};
+
+template <class I>
+struct is_random_pointer_imp
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template <bool is_pointer_type>
+struct is_random_imp_selector
+{
+ template <class I>
+ struct rebind
+ {
+ typedef is_random_imp<I> type;
+ };
+};
+
+template <>
+struct is_random_imp_selector<true>
+{
+ template <class I>
+ struct rebind
+ {
+ typedef is_random_pointer_imp<I> type;
+ };
+};
+
+}
+
+template <class I>
+struct is_random_access_iterator
+{
+private:
+ typedef detail::is_random_imp_selector< ::boost::is_pointer<I>::value> selector;
+ typedef typename selector::template rebind<I> bound_type;
+ typedef typename bound_type::type answer;
+public:
+ BOOST_STATIC_CONSTANT(bool, value = answer::value);
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template <class I>
+const bool is_random_access_iterator<I>::value;
+#endif
+
+}
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/iterator_traits.hpp b/3rdParty/Boost/boost/regex/v4/iterator_traits.hpp
new file mode 100644
index 0000000..f7afacb
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/iterator_traits.hpp
@@ -0,0 +1,135 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE iterator_traits.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares iterator traits workarounds.
+ */
+
+#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
+#define BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template <class T>
+struct regex_iterator_traits
+{
+ typedef typename T::iterator_category iterator_category;
+ typedef typename T::value_type value_type;
+#if !defined(BOOST_NO_STD_ITERATOR)
+ typedef typename T::difference_type difference_type;
+ typedef typename T::pointer pointer;
+ typedef typename T::reference reference;
+#else
+ typedef std::ptrdiff_t difference_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+#endif
+};
+
+template <class T>
+struct pointer_iterator_traits
+{
+ typedef std::ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T* pointer;
+ typedef T& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+};
+template <class T>
+struct const_pointer_iterator_traits
+{
+ typedef std::ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T* pointer;
+ typedef const T& reference;
+ typedef std::random_access_iterator_tag iterator_category;
+};
+
+template<>
+struct regex_iterator_traits<char*> : pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<const char*> : const_pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<wchar_t*> : pointer_iterator_traits<wchar_t>{};
+template<>
+struct regex_iterator_traits<const wchar_t*> : const_pointer_iterator_traits<wchar_t>{};
+//
+// the follwoing are needed for ICU support:
+//
+template<>
+struct regex_iterator_traits<unsigned char*> : pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<const unsigned char*> : const_pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<int*> : pointer_iterator_traits<int>{};
+template<>
+struct regex_iterator_traits<const int*> : const_pointer_iterator_traits<int>{};
+
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+template<>
+struct regex_iterator_traits<unsigned short*> : pointer_iterator_traits<unsigned short>{};
+template<>
+struct regex_iterator_traits<const unsigned short*> : const_pointer_iterator_traits<unsigned short>{};
+#endif
+
+#if defined(__SGI_STL_PORT) && defined(__STL_DEBUG)
+template<>
+struct regex_iterator_traits<std::string::iterator> : pointer_iterator_traits<char>{};
+template<>
+struct regex_iterator_traits<std::string::const_iterator> : const_pointer_iterator_traits<char>{};
+#ifndef BOOST_NO_STD_WSTRING
+template<>
+struct regex_iterator_traits<std::wstring::iterator> : pointer_iterator_traits<wchar_t>{};
+template<>
+struct regex_iterator_traits<std::wstring::const_iterator> : const_pointer_iterator_traits<wchar_t>{};
+#endif // BOOST_NO_WSTRING
+#endif // stport
+
+#else
+
+template <class T>
+struct regex_iterator_traits : public std::iterator_traits<T> {};
+
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/match_flags.hpp b/3rdParty/Boost/boost/regex/v4/match_flags.hpp
new file mode 100644
index 0000000..9585aca
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/match_flags.hpp
@@ -0,0 +1,138 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE match_flags.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares match_flags type.
+ */
+
+#ifndef BOOST_REGEX_V4_MATCH_FLAGS
+#define BOOST_REGEX_V4_MATCH_FLAGS
+
+#ifdef __cplusplus
+# include <boost/cstdint.hpp>
+#endif
+
+#ifdef __cplusplus
+namespace boost{
+ namespace regex_constants{
+#endif
+
+typedef enum _match_flags
+{
+ match_default = 0,
+ match_not_bol = 1, // first is not start of line
+ match_not_eol = match_not_bol << 1, // last is not end of line
+ match_not_bob = match_not_eol << 1, // first is not start of buffer
+ match_not_eob = match_not_bob << 1, // last is not end of buffer
+ match_not_bow = match_not_eob << 1, // first is not start of word
+ match_not_eow = match_not_bow << 1, // last is not end of word
+ match_not_dot_newline = match_not_eow << 1, // \n is not matched by '.'
+ match_not_dot_null = match_not_dot_newline << 1, // '\0' is not matched by '.'
+ match_prev_avail = match_not_dot_null << 1, // *--first is a valid expression
+ match_init = match_prev_avail << 1, // internal use
+ match_any = match_init << 1, // don't care what we match
+ match_not_null = match_any << 1, // string can't be null
+ match_continuous = match_not_null << 1, // each grep match must continue from
+ // uninterupted from the previous one
+ match_partial = match_continuous << 1, // find partial matches
+
+ match_stop = match_partial << 1, // stop after first match (grep) V3 only
+ match_not_initial_null = match_stop, // don't match initial null, V4 only
+ match_all = match_stop << 1, // must find the whole of input even if match_any is set
+ match_perl = match_all << 1, // Use perl matching rules
+ match_posix = match_perl << 1, // Use POSIX matching rules
+ match_nosubs = match_posix << 1, // don't trap marked subs
+ match_extra = match_nosubs << 1, // include full capture information for repeated captures
+ match_single_line = match_extra << 1, // treat text as single line and ignor any \n's when matching ^ and $.
+ match_unused1 = match_single_line << 1, // unused
+ match_unused2 = match_unused1 << 1, // unused
+ match_unused3 = match_unused2 << 1, // unused
+ match_max = match_unused3,
+
+ format_perl = 0, // perl style replacement
+ format_default = 0, // ditto.
+ format_sed = match_max << 1, // sed style replacement.
+ format_all = format_sed << 1, // enable all extentions to sytax.
+ format_no_copy = format_all << 1, // don't copy non-matching segments.
+ format_first_only = format_no_copy << 1, // Only replace first occurance.
+ format_is_if = format_first_only << 1, // internal use only.
+ format_literal = format_is_if << 1 // treat string as a literal
+
+} match_flags;
+
+#if (defined(_MSC_VER) && (_MSC_VER < 1300)) || defined(__BORLANDC__)
+typedef unsigned long match_flag_type;
+#else
+typedef match_flags match_flag_type;
+
+
+#ifdef __cplusplus
+inline match_flags operator&(match_flags m1, match_flags m2)
+{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) & static_cast<boost::int32_t>(m2)); }
+inline match_flags operator|(match_flags m1, match_flags m2)
+{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) | static_cast<boost::int32_t>(m2)); }
+inline match_flags operator^(match_flags m1, match_flags m2)
+{ return static_cast<match_flags>(static_cast<boost::int32_t>(m1) ^ static_cast<boost::int32_t>(m2)); }
+inline match_flags operator~(match_flags m1)
+{ return static_cast<match_flags>(~static_cast<boost::int32_t>(m1)); }
+inline match_flags& operator&=(match_flags& m1, match_flags m2)
+{ m1 = m1&m2; return m1; }
+inline match_flags& operator|=(match_flags& m1, match_flags m2)
+{ m1 = m1|m2; return m1; }
+inline match_flags& operator^=(match_flags& m1, match_flags m2)
+{ m1 = m1^m2; return m1; }
+#endif
+#endif
+
+#ifdef __cplusplus
+} // namespace regex_constants
+//
+// import names into boost for backwards compatiblity:
+//
+using regex_constants::match_flag_type;
+using regex_constants::match_default;
+using regex_constants::match_not_bol;
+using regex_constants::match_not_eol;
+using regex_constants::match_not_bob;
+using regex_constants::match_not_eob;
+using regex_constants::match_not_bow;
+using regex_constants::match_not_eow;
+using regex_constants::match_not_dot_newline;
+using regex_constants::match_not_dot_null;
+using regex_constants::match_prev_avail;
+//using regex_constants::match_init;
+using regex_constants::match_any;
+using regex_constants::match_not_null;
+using regex_constants::match_continuous;
+using regex_constants::match_partial;
+//using regex_constants::match_stop;
+using regex_constants::match_all;
+using regex_constants::match_perl;
+using regex_constants::match_posix;
+using regex_constants::match_nosubs;
+using regex_constants::match_extra;
+using regex_constants::match_single_line;
+//using regex_constants::match_max;
+using regex_constants::format_all;
+using regex_constants::format_sed;
+using regex_constants::format_perl;
+using regex_constants::format_default;
+using regex_constants::format_no_copy;
+using regex_constants::format_first_only;
+//using regex_constants::format_is_if;
+
+} // namespace boost
+#endif // __cplusplus
+#endif // include guard
+
diff --git a/3rdParty/Boost/boost/regex/v4/match_results.hpp b/3rdParty/Boost/boost/regex/v4/match_results.hpp
new file mode 100644
index 0000000..acf509f
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/match_results.hpp
@@ -0,0 +1,427 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE match_results.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class match_results.
+ */
+
+#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP
+#define BOOST_REGEX_V4_MATCH_RESULTS_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660)
+#endif
+
+template <class BidiIterator, class Allocator>
+class match_results
+{
+private:
+#ifndef BOOST_NO_STD_ALLOCATOR
+ typedef std::vector<sub_match<BidiIterator>, Allocator> vector_type;
+#else
+ typedef std::vector<sub_match<BidiIterator> > vector_type;
+#endif
+public:
+ typedef sub_match<BidiIterator> value_type;
+#if !defined(BOOST_NO_STD_ALLOCATOR) && !(defined(BOOST_MSVC) && defined(_STLPORT_VERSION))
+ typedef typename Allocator::const_reference const_reference;
+#else
+ typedef const value_type& const_reference;
+#endif
+ typedef const_reference reference;
+ typedef typename vector_type::const_iterator const_iterator;
+ typedef const_iterator iterator;
+ typedef typename re_detail::regex_iterator_traits<
+ BidiIterator>::difference_type difference_type;
+ typedef typename Allocator::size_type size_type;
+ typedef Allocator allocator_type;
+ typedef typename re_detail::regex_iterator_traits<
+ BidiIterator>::value_type char_type;
+ typedef std::basic_string<char_type> string_type;
+
+ // construct/copy/destroy:
+ explicit match_results(const Allocator& a = Allocator())
+#ifndef BOOST_NO_STD_ALLOCATOR
+ : m_subs(a), m_base() {}
+#else
+ : m_subs(), m_base() { (void)a; }
+#endif
+ match_results(const match_results& m)
+ : m_subs(m.m_subs), m_base(m.m_base) {}
+ match_results& operator=(const match_results& m)
+ {
+ m_subs = m.m_subs;
+ m_base = m.m_base;
+ return *this;
+ }
+ ~match_results(){}
+
+ // size:
+ size_type size() const
+ { return empty() ? 0 : m_subs.size() - 2; }
+ size_type max_size() const
+ { return m_subs.max_size(); }
+ bool empty() const
+ { return m_subs.size() < 2; }
+ // element access:
+ difference_type length(int sub = 0) const
+ {
+ sub += 2;
+ if((sub < (int)m_subs.size()) && (sub > 0))
+ return m_subs[sub].length();
+ return 0;
+ }
+ difference_type position(size_type sub = 0) const
+ {
+ sub += 2;
+ if(sub < m_subs.size())
+ {
+ const sub_match<BidiIterator>& s = m_subs[sub];
+ if(s.matched || (sub == 2))
+ {
+ return ::boost::re_detail::distance((BidiIterator)(m_base), (BidiIterator)(s.first));
+ }
+ }
+ return ~static_cast<difference_type>(0);
+ }
+ string_type str(int sub = 0) const
+ {
+ sub += 2;
+ string_type result;
+ if(sub < (int)m_subs.size() && (sub > 0))
+ {
+ const sub_match<BidiIterator>& s = m_subs[sub];
+ if(s.matched)
+ {
+ result = s.str();
+ }
+ }
+ return result;
+ }
+ const_reference operator[](int sub) const
+ {
+ sub += 2;
+ if(sub < (int)m_subs.size() && (sub >= 0))
+ {
+ return m_subs[sub];
+ }
+ return m_null;
+ }
+
+ const_reference prefix() const
+ {
+ return (*this)[-1];
+ }
+
+ const_reference suffix() const
+ {
+ return (*this)[-2];
+ }
+ const_iterator begin() const
+ {
+ return (m_subs.size() > 2) ? (m_subs.begin() + 2) : m_subs.end();
+ }
+ const_iterator end() const
+ {
+ return m_subs.end();
+ }
+ // format:
+ template <class OutputIterator>
+ OutputIterator format(OutputIterator out,
+ const string_type& fmt,
+ match_flag_type flags = format_default) const
+ {
+ re_detail::trivial_format_traits<char_type> traits;
+ return re_detail::regex_format_imp(out, *this, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+ }
+ string_type format(const string_type& fmt,
+ match_flag_type flags = format_default) const
+ {
+ string_type result;
+ re_detail::string_out_iterator<string_type> i(result);
+ re_detail::trivial_format_traits<char_type> traits;
+ re_detail::regex_format_imp(i, *this, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+ return result;
+ }
+ // format with locale:
+ template <class OutputIterator, class RegexT>
+ OutputIterator format(OutputIterator out,
+ const string_type& fmt,
+ match_flag_type flags,
+ const RegexT& re) const
+ {
+ return ::boost::re_detail::regex_format_imp(out, *this, fmt.data(), fmt.data() + fmt.size(), flags, re.get_traits());
+ }
+ template <class RegexT>
+ string_type format(const string_type& fmt,
+ match_flag_type flags,
+ const RegexT& re) const
+ {
+ string_type result;
+ re_detail::string_out_iterator<string_type> i(result);
+ ::boost::re_detail::regex_format_imp(i, *this, fmt.data(), fmt.data() + fmt.size(), flags, re.get_traits());
+ return result;
+ }
+
+ allocator_type get_allocator() const
+ {
+#ifndef BOOST_NO_STD_ALLOCATOR
+ return m_subs.get_allocator();
+#else
+ return allocator_type();
+#endif
+ }
+ void swap(match_results& that)
+ {
+ std::swap(m_subs, that.m_subs);
+ std::swap(m_base, that.m_base);
+ }
+ bool operator==(const match_results& that)const
+ {
+ return (m_subs == that.m_subs) && (m_base == that.m_base);
+ }
+ bool operator!=(const match_results& that)const
+ { return !(*this == that); }
+
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ typedef typename sub_match<BidiIterator>::capture_sequence_type capture_sequence_type;
+
+ const capture_sequence_type& captures(int i)const
+ {
+ return (*this)[i].captures();
+ }
+#endif
+
+ //
+ // private access functions:
+ void BOOST_REGEX_CALL set_second(BidiIterator i)
+ {
+ BOOST_ASSERT(m_subs.size() > 2);
+ m_subs[2].second = i;
+ m_subs[2].matched = true;
+ m_subs[0].first = i;
+ m_subs[0].matched = (m_subs[0].first != m_subs[0].second);
+ m_null.first = i;
+ m_null.second = i;
+ m_null.matched = false;
+ }
+
+ void BOOST_REGEX_CALL set_second(BidiIterator i, size_type pos, bool m = true)
+ {
+ pos += 2;
+ BOOST_ASSERT(m_subs.size() > pos);
+ m_subs[pos].second = i;
+ m_subs[pos].matched = m;
+ if(pos == 2)
+ {
+ m_subs[0].first = i;
+ m_subs[0].matched = (m_subs[0].first != m_subs[0].second);
+ m_null.first = i;
+ m_null.second = i;
+ m_null.matched = false;
+ }
+ }
+ void BOOST_REGEX_CALL set_size(size_type n, BidiIterator i, BidiIterator j)
+ {
+ value_type v(j);
+ size_type len = m_subs.size();
+ if(len > n + 2)
+ {
+ m_subs.erase(m_subs.begin()+n+2, m_subs.end());
+ std::fill(m_subs.begin(), m_subs.end(), v);
+ }
+ else
+ {
+ std::fill(m_subs.begin(), m_subs.end(), v);
+ if(n+2 != len)
+ m_subs.insert(m_subs.end(), n+2-len, v);
+ }
+ m_subs[1].first = i;
+ }
+ void BOOST_REGEX_CALL set_base(BidiIterator pos)
+ {
+ m_base = pos;
+ }
+ BidiIterator base()const
+ {
+ return m_base;
+ }
+ void BOOST_REGEX_CALL set_first(BidiIterator i)
+ {
+ // set up prefix:
+ m_subs[1].second = i;
+ m_subs[1].matched = (m_subs[1].first != i);
+ // set up $0:
+ m_subs[2].first = i;
+ // zero out everything else:
+ for(size_type n = 3; n < m_subs.size(); ++n)
+ {
+ m_subs[n].first = m_subs[n].second = m_subs[0].second;
+ m_subs[n].matched = false;
+ }
+ }
+ void BOOST_REGEX_CALL set_first(BidiIterator i, size_type pos)
+ {
+ BOOST_ASSERT(pos+2 < m_subs.size());
+ if(pos)
+ m_subs[pos+2].first = i;
+ else
+ set_first(i);
+ }
+ void BOOST_REGEX_CALL maybe_assign(const match_results<BidiIterator, Allocator>& m);
+
+
+private:
+ vector_type m_subs; // subexpressions
+ BidiIterator m_base; // where the search started from
+ sub_match<BidiIterator> m_null; // a null match
+};
+
+template <class BidiIterator, class Allocator>
+void BOOST_REGEX_CALL match_results<BidiIterator, Allocator>::maybe_assign(const match_results<BidiIterator, Allocator>& m)
+{
+ const_iterator p1, p2;
+ p1 = begin();
+ p2 = m.begin();
+ //
+ // Distances are measured from the start of *this* match, unless this isn't
+ // a valid match in which case we use the start of the whole sequence. Note that
+ // no subsequent match-candidate can ever be to the left of the first match found.
+ // This ensures that when we are using bidirectional iterators, that distances
+ // measured are as short as possible, and therefore as efficient as possible
+ // to compute. Finally note that we don't use the "matched" data member to test
+ // whether a sub-expression is a valid match, because partial matches set this
+ // to false for sub-expression 0.
+ //
+ BidiIterator l_end = this->suffix().second;
+ BidiIterator l_base = (p1->first == l_end) ? this->prefix().first : (*this)[0].first;
+ difference_type len1 = 0;
+ difference_type len2 = 0;
+ difference_type base1 = 0;
+ difference_type base2 = 0;
+ std::size_t i;
+ for(i = 0; i < size(); ++i, ++p1, ++p2)
+ {
+ //
+ // Leftmost takes priority over longest; handle special cases
+ // where distances need not be computed first (an optimisation
+ // for bidirectional iterators: ensure that we don't accidently
+ // compute the length of the whole sequence, as this can be really
+ // expensive).
+ //
+ if(p1->first == l_end)
+ {
+ if(p2->first != l_end)
+ {
+ // p2 must be better than p1, and no need to calculate
+ // actual distances:
+ base1 = 1;
+ base2 = 0;
+ break;
+ }
+ else
+ {
+ // *p1 and *p2 are either unmatched or match end-of sequence,
+ // either way no need to calculate distances:
+ if((p1->matched == false) && (p2->matched == true))
+ break;
+ if((p1->matched == true) && (p2->matched == false))
+ return;
+ continue;
+ }
+ }
+ else if(p2->first == l_end)
+ {
+ // p1 better than p2, and no need to calculate distances:
+ return;
+ }
+ base1 = ::boost::re_detail::distance(l_base, p1->first);
+ base2 = ::boost::re_detail::distance(l_base, p2->first);
+ BOOST_ASSERT(base1 >= 0);
+ BOOST_ASSERT(base2 >= 0);
+ if(base1 < base2) return;
+ if(base2 < base1) break;
+
+ len1 = ::boost::re_detail::distance((BidiIterator)p1->first, (BidiIterator)p1->second);
+ len2 = ::boost::re_detail::distance((BidiIterator)p2->first, (BidiIterator)p2->second);
+ BOOST_ASSERT(len1 >= 0);
+ BOOST_ASSERT(len2 >= 0);
+ if((len1 != len2) || ((p1->matched == false) && (p2->matched == true)))
+ break;
+ if((p1->matched == true) && (p2->matched == false))
+ return;
+ }
+ if(i == size())
+ return;
+ if(base2 < base1)
+ *this = m;
+ else if((len2 > len1) || ((p1->matched == false) && (p2->matched == true)) )
+ *this = m;
+}
+
+template <class BidiIterator, class Allocator>
+void swap(match_results<BidiIterator, Allocator>& a, match_results<BidiIterator, Allocator>& b)
+{
+ a.swap(b);
+}
+
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT, class traits, class BidiIterator, class Allocator>
+std::basic_ostream<charT, traits>&
+ operator << (std::basic_ostream<charT, traits>& os,
+ const match_results<BidiIterator, Allocator>& s)
+{
+ return (os << s.str());
+}
+#else
+template <class BidiIterator, class Allocator>
+std::ostream& operator << (std::ostream& os,
+ const match_results<BidiIterator, Allocator>& s)
+{
+ return (os << s.str());
+}
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp b/3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp
new file mode 100644
index 0000000..222142d
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/mem_block_cache.hpp
@@ -0,0 +1,99 @@
+ /*
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE mem_block_cache.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: memory block cache used by the non-recursive matcher.
+ */
+
+#ifndef BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP
+#define BOOST_REGEX_V4_MEM_BLOCK_CACHE_HPP
+
+#include <new>
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost{
+namespace re_detail{
+
+struct mem_block_node
+{
+ mem_block_node* next;
+};
+
+struct mem_block_cache
+{
+ // this member has to be statically initialsed:
+ mem_block_node* next;
+ unsigned cached_blocks;
+#ifdef BOOST_HAS_THREADS
+ boost::static_mutex mut;
+#endif
+
+ ~mem_block_cache()
+ {
+ while(next)
+ {
+ mem_block_node* old = next;
+ next = next->next;
+ ::operator delete(old);
+ }
+ }
+ void* get()
+ {
+#ifdef BOOST_HAS_THREADS
+ boost::static_mutex::scoped_lock g(mut);
+#endif
+ if(next)
+ {
+ mem_block_node* result = next;
+ next = next->next;
+ --cached_blocks;
+ return result;
+ }
+ return ::operator new(BOOST_REGEX_BLOCKSIZE);
+ }
+ void put(void* p)
+ {
+#ifdef BOOST_HAS_THREADS
+ boost::static_mutex::scoped_lock g(mut);
+#endif
+ if(cached_blocks >= BOOST_REGEX_MAX_CACHE_BLOCKS)
+ {
+ ::operator delete(p);
+ }
+ else
+ {
+ mem_block_node* old = static_cast<mem_block_node*>(p);
+ old->next = next;
+ next = old;
+ ++cached_blocks;
+ }
+ }
+};
+
+extern mem_block_cache block_cache;
+
+}
+} // namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher.hpp
new file mode 100644
index 0000000..33afe6e
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/perl_matcher.hpp
@@ -0,0 +1,556 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#ifndef BOOST_REGEX_MATCHER_HPP
+#define BOOST_REGEX_MATCHER_HPP
+
+#include <boost/regex/v4/iterator_category.hpp>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4800)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+//
+// error checking API:
+//
+BOOST_REGEX_DECL void BOOST_REGEX_CALL verify_options(boost::regex_constants::syntax_option_type ef, match_flag_type mf);
+//
+// function can_start:
+//
+template <class charT>
+inline bool can_start(charT c, const unsigned char* map, unsigned char mask)
+{
+ return ((c < static_cast<charT>(0)) ? true : ((c >= static_cast<charT>(1 << CHAR_BIT)) ? true : map[c] & mask));
+}
+inline bool can_start(char c, const unsigned char* map, unsigned char mask)
+{
+ return map[(unsigned char)c] & mask;
+}
+inline bool can_start(signed char c, const unsigned char* map, unsigned char mask)
+{
+ return map[(unsigned char)c] & mask;
+}
+inline bool can_start(unsigned char c, const unsigned char* map, unsigned char mask)
+{
+ return map[c] & mask;
+}
+inline bool can_start(unsigned short c, const unsigned char* map, unsigned char mask)
+{
+ return ((c >= (1 << CHAR_BIT)) ? true : map[c] & mask);
+}
+#if !defined(__hpux) // WCHAR_MIN not usable in pp-directives.
+#if defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+inline bool can_start(wchar_t c, const unsigned char* map, unsigned char mask)
+{
+ return ((c >= static_cast<wchar_t>(1u << CHAR_BIT)) ? true : map[c] & mask);
+}
+#endif
+#endif
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+inline bool can_start(unsigned int c, const unsigned char* map, unsigned char mask)
+{
+ return (((c >= static_cast<unsigned int>(1u << CHAR_BIT)) ? true : map[c] & mask));
+}
+#endif
+
+
+//
+// Unfortunately Rogue Waves standard library appears to have a bug
+// in std::basic_string::compare that results in eroneous answers
+// in some cases (tested with Borland C++ 5.1, Rogue Wave lib version
+// 0x020101) the test case was:
+// {39135,0} < {0xff,0}
+// which succeeds when it should not.
+//
+#ifndef _RWSTD_VER
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+template <class C, class T, class A>
+inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
+{
+ if(0 == *p)
+ {
+ if(s.empty() || ((s.size() == 1) && (s[0] == 0)))
+ return 0;
+ }
+ return s.compare(p);
+}
+#endif
+#else
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
+template <class C, class T, class A>
+inline int string_compare(const std::basic_string<C,T,A>& s, const C* p)
+{
+ if(0 == *p)
+ {
+ if(s.empty() || ((s.size() == 1) && (s[0] == 0)))
+ return 0;
+ }
+ return s.compare(p);
+}
+#endif
+inline int string_compare(const std::string& s, const char* p)
+{ return std::strcmp(s.c_str(), p); }
+# ifndef BOOST_NO_WREGEX
+inline int string_compare(const std::wstring& s, const wchar_t* p)
+{ return std::wcscmp(s.c_str(), p); }
+#endif
+#endif
+template <class Seq, class C>
+inline int string_compare(const Seq& s, const C* p)
+{
+ std::size_t i = 0;
+ while((i < s.size()) && (p[i] == s[i]))
+ {
+ ++i;
+ }
+ return (i == s.size()) ? -p[i] : s[i] - p[i];
+}
+# define STR_COMP(s,p) string_compare(s,p)
+
+template<class charT>
+inline const charT* re_skip_past_null(const charT* p)
+{
+ while (*p != static_cast<charT>(0)) ++p;
+ return ++p;
+}
+
+template <class iterator, class charT, class traits_type, class char_classT>
+iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
+ iterator last,
+ const re_set_long<char_classT>* set_,
+ const regex_data<charT, traits_type>& e, bool icase)
+{
+ const charT* p = reinterpret_cast<const charT*>(set_+1);
+ iterator ptr;
+ unsigned int i;
+ //bool icase = e.m_flags & regex_constants::icase;
+
+ if(next == last) return next;
+
+ typedef typename traits_type::string_type traits_string_type;
+ const ::boost::regex_traits_wrapper<traits_type>& traits_inst = *(e.m_ptraits);
+
+ // dwa 9/13/00 suppress incorrect MSVC warning - it claims this is never
+ // referenced
+ (void)traits_inst;
+
+ // try and match a single character, could be a multi-character
+ // collating element...
+ for(i = 0; i < set_->csingles; ++i)
+ {
+ ptr = next;
+ if(*p == static_cast<charT>(0))
+ {
+ // treat null string as special case:
+ if(traits_inst.translate(*ptr, icase) != *p)
+ {
+ while(*p == static_cast<charT>(0))++p;
+ continue;
+ }
+ return set_->isnot ? next : (ptr == next) ? ++next : ptr;
+ }
+ else
+ {
+ while(*p && (ptr != last))
+ {
+ if(traits_inst.translate(*ptr, icase) != *p)
+ break;
+ ++p;
+ ++ptr;
+ }
+
+ if(*p == static_cast<charT>(0)) // if null we've matched
+ return set_->isnot ? next : (ptr == next) ? ++next : ptr;
+
+ p = re_skip_past_null(p); // skip null
+ }
+ }
+
+ charT col = traits_inst.translate(*next, icase);
+
+
+ if(set_->cranges || set_->cequivalents)
+ {
+ traits_string_type s1;
+ //
+ // try and match a range, NB only a single character can match
+ if(set_->cranges)
+ {
+ if((e.m_flags & regex_constants::collate) == 0)
+ s1.assign(1, col);
+ else
+ {
+ charT a[2] = { col, charT(0), };
+ s1 = traits_inst.transform(a, a + 1);
+ }
+ for(i = 0; i < set_->cranges; ++i)
+ {
+ if(STR_COMP(s1, p) >= 0)
+ {
+ do{ ++p; }while(*p);
+ ++p;
+ if(STR_COMP(s1, p) <= 0)
+ return set_->isnot ? next : ++next;
+ }
+ else
+ {
+ // skip first string
+ do{ ++p; }while(*p);
+ ++p;
+ }
+ // skip second string
+ do{ ++p; }while(*p);
+ ++p;
+ }
+ }
+ //
+ // try and match an equivalence class, NB only a single character can match
+ if(set_->cequivalents)
+ {
+ charT a[2] = { col, charT(0), };
+ s1 = traits_inst.transform_primary(a, a +1);
+ for(i = 0; i < set_->cequivalents; ++i)
+ {
+ if(STR_COMP(s1, p) == 0)
+ return set_->isnot ? next : ++next;
+ // skip string
+ do{ ++p; }while(*p);
+ ++p;
+ }
+ }
+ }
+ if(traits_inst.isctype(col, set_->cclasses) == true)
+ return set_->isnot ? next : ++next;
+ if((set_->cnclasses != 0) && (traits_inst.isctype(col, set_->cnclasses) == false))
+ return set_->isnot ? next : ++next;
+ return set_->isnot ? ++next : next;
+}
+
+template <class BidiIterator>
+class repeater_count
+{
+ repeater_count** stack;
+ repeater_count* next;
+ int state_id;
+ std::size_t count; // the number of iterations so far
+ BidiIterator start_pos; // where the last repeat started
+public:
+ repeater_count(repeater_count** s)
+ {
+ stack = s;
+ next = 0;
+ state_id = -1;
+ count = 0;
+ }
+ repeater_count(int i, repeater_count** s, BidiIterator start)
+ : start_pos(start)
+ {
+ state_id = i;
+ stack = s;
+ next = *stack;
+ *stack = this;
+ if(state_id > next->state_id)
+ count = 0;
+ else
+ {
+ repeater_count* p = next;
+ while(p->state_id != state_id)
+ p = p->next;
+ count = p->count;
+ start_pos = p->start_pos;
+ }
+ }
+ ~repeater_count()
+ {
+ *stack = next;
+ }
+ std::size_t get_count() { return count; }
+ int get_id() { return state_id; }
+ std::size_t operator++() { return ++count; }
+ bool check_null_repeat(const BidiIterator& pos, std::size_t max)
+ {
+ // this is called when we are about to start a new repeat,
+ // if the last one was NULL move our count to max,
+ // otherwise save the current position.
+ bool result = (count == 0) ? false : (pos == start_pos);
+ if(result)
+ count = max;
+ else
+ start_pos = pos;
+ return result;
+ }
+};
+
+struct saved_state;
+
+enum saved_state_type
+{
+ saved_type_end = 0,
+ saved_type_paren = 1,
+ saved_type_recurse = 2,
+ saved_type_assertion = 3,
+ saved_state_alt = 4,
+ saved_state_repeater_count = 5,
+ saved_state_extra_block = 6,
+ saved_state_greedy_single_repeat = 7,
+ saved_state_rep_slow_dot = 8,
+ saved_state_rep_fast_dot = 9,
+ saved_state_rep_char = 10,
+ saved_state_rep_short_set = 11,
+ saved_state_rep_long_set = 12,
+ saved_state_non_greedy_long_repeat = 13,
+ saved_state_count = 14
+};
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable : 4251 4231 4660)
+#endif
+
+template <class BidiIterator, class Allocator, class traits>
+class perl_matcher
+{
+public:
+ typedef typename traits::char_type char_type;
+ typedef perl_matcher<BidiIterator, Allocator, traits> self_type;
+ typedef bool (self_type::*matcher_proc_type)(void);
+ typedef std::size_t traits_size_type;
+ typedef typename is_byte<char_type>::width_type width_type;
+ typedef typename regex_iterator_traits<BidiIterator>::difference_type difference_type;
+
+ perl_matcher(BidiIterator first, BidiIterator end,
+ match_results<BidiIterator, Allocator>& what,
+ const basic_regex<char_type, traits>& e,
+ match_flag_type f,
+ BidiIterator l_base)
+ : m_result(what), base(first), last(end),
+ position(first), backstop(l_base), re(e), traits_inst(e.get_traits()),
+ m_independent(false), next_count(&rep_obj), rep_obj(&next_count)
+ {
+ construct_init(e, f);
+ }
+
+ bool match();
+ bool find();
+
+ void setf(match_flag_type f)
+ { m_match_flags |= f; }
+ void unsetf(match_flag_type f)
+ { m_match_flags &= ~f; }
+
+private:
+ void construct_init(const basic_regex<char_type, traits>& e, match_flag_type f);
+
+ bool find_imp();
+ bool match_imp();
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+ typedef bool (perl_matcher::*protected_proc_type)();
+ bool protected_call(protected_proc_type);
+#endif
+ void estimate_max_state_count(std::random_access_iterator_tag*);
+ void estimate_max_state_count(void*);
+ bool match_prefix();
+ bool match_all_states();
+
+ // match procs, stored in s_match_vtable:
+ bool match_startmark();
+ bool match_endmark();
+ bool match_literal();
+ bool match_start_line();
+ bool match_end_line();
+ bool match_wild();
+ bool match_match();
+ bool match_word_boundary();
+ bool match_within_word();
+ bool match_word_start();
+ bool match_word_end();
+ bool match_buffer_start();
+ bool match_buffer_end();
+ bool match_backref();
+ bool match_long_set();
+ bool match_set();
+ bool match_jump();
+ bool match_alt();
+ bool match_rep();
+ bool match_combining();
+ bool match_soft_buffer_end();
+ bool match_restart_continue();
+ bool match_long_set_repeat();
+ bool match_set_repeat();
+ bool match_char_repeat();
+ bool match_dot_repeat_fast();
+ bool match_dot_repeat_slow();
+ bool match_backstep();
+ bool match_assert_backref();
+ bool match_toggle_case();
+#ifdef BOOST_REGEX_RECURSIVE
+ bool backtrack_till_match(std::size_t count);
+#endif
+
+ // find procs stored in s_find_vtable:
+ bool find_restart_any();
+ bool find_restart_word();
+ bool find_restart_line();
+ bool find_restart_buf();
+ bool find_restart_lit();
+
+private:
+ // final result structure to be filled in:
+ match_results<BidiIterator, Allocator>& m_result;
+ // temporary result for POSIX matches:
+ scoped_ptr<match_results<BidiIterator, Allocator> > m_temp_match;
+ // pointer to actual result structure to fill in:
+ match_results<BidiIterator, Allocator>* m_presult;
+ // start of sequence being searched:
+ BidiIterator base;
+ // end of sequence being searched:
+ BidiIterator last;
+ // current character being examined:
+ BidiIterator position;
+ // where to restart next search after failed match attempt:
+ BidiIterator restart;
+ // where the current search started from, acts as base for $` during grep:
+ BidiIterator search_base;
+ // how far we can go back when matching lookbehind:
+ BidiIterator backstop;
+ // the expression being examined:
+ const basic_regex<char_type, traits>& re;
+ // the expression's traits class:
+ const ::boost::regex_traits_wrapper<traits>& traits_inst;
+ // the next state in the machine being matched:
+ const re_syntax_base* pstate;
+ // matching flags in use:
+ match_flag_type m_match_flags;
+ // how many states we have examined so far:
+ boost::uintmax_t state_count;
+ // max number of states to examine before giving up:
+ boost::uintmax_t max_state_count;
+ // whether we should ignore case or not:
+ bool icase;
+ // set to true when (position == last), indicates that we may have a partial match:
+ bool m_has_partial_match;
+ // set to true whenever we get a match:
+ bool m_has_found_match;
+ // set to true whenever we're inside an independent sub-expression:
+ bool m_independent;
+ // the current repeat being examined:
+ repeater_count<BidiIterator>* next_count;
+ // the first repeat being examined (top of linked list):
+ repeater_count<BidiIterator> rep_obj;
+ // the mask to pass when matching word boundaries:
+ typename traits::char_class_type m_word_mask;
+ // the bitmask to use when determining whether a match_any matches a newline or not:
+ unsigned char match_any_mask;
+
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ //
+ // additional members for non-recursive version:
+ //
+ typedef bool (self_type::*unwind_proc_type)(bool);
+
+ void extend_stack();
+ bool unwind(bool);
+ bool unwind_end(bool);
+ bool unwind_paren(bool);
+ bool unwind_recursion_stopper(bool);
+ bool unwind_assertion(bool);
+ bool unwind_alt(bool);
+ bool unwind_repeater_counter(bool);
+ bool unwind_extra_block(bool);
+ bool unwind_greedy_single_repeat(bool);
+ bool unwind_slow_dot_repeat(bool);
+ bool unwind_fast_dot_repeat(bool);
+ bool unwind_char_repeat(bool);
+ bool unwind_short_set_repeat(bool);
+ bool unwind_long_set_repeat(bool);
+ bool unwind_non_greedy_repeat(bool);
+ void destroy_single_repeat();
+ void push_matched_paren(int index, const sub_match<BidiIterator>& sub);
+ void push_recursion_stopper();
+ void push_assertion(const re_syntax_base* ps, bool positive);
+ void push_alt(const re_syntax_base* ps);
+ void push_repeater_count(int i, repeater_count<BidiIterator>** s);
+ void push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id);
+ void push_non_greedy_repeat(const re_syntax_base* ps);
+
+
+ // pointer to base of stack:
+ saved_state* m_stack_base;
+ // pointer to current stack position:
+ saved_state* m_backup_state;
+ // determines what value to return when unwinding from recursion,
+ // allows for mixed recursive/non-recursive algorithm:
+ bool m_recursive_result;
+ // how many memory blocks have we used up?:
+ unsigned used_block_count;
+#endif
+
+ // these operations aren't allowed, so are declared private,
+ // bodies are provided to keep explicit-instantiation requests happy:
+ perl_matcher& operator=(const perl_matcher&)
+ {
+ return *this;
+ }
+ perl_matcher(const perl_matcher& that)
+ : m_result(that.m_result), re(that.re), traits_inst(that.traits_inst), rep_obj(0) {}
+};
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace re_detail
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+//
+// include the implementation of perl_matcher:
+//
+#ifdef BOOST_REGEX_RECURSIVE
+#include <boost/regex/v4/perl_matcher_recursive.hpp>
+#else
+#include <boost/regex/v4/perl_matcher_non_recursive.hpp>
+#endif
+// this one has to be last:
+#include <boost/regex/v4/perl_matcher_common.hpp>
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp
new file mode 100644
index 0000000..399caa3
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/perl_matcher_common.hpp
@@ -0,0 +1,971 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE perl_matcher_common.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Definitions of perl_matcher member functions that are
+ * common to both the recursive and non-recursive versions.
+ */
+
+#ifndef BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP
+#define BOOST_REGEX_V4_PERL_MATCHER_COMMON_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef __BORLANDC__
+# pragma option push -w-8008 -w-8066
+#endif
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4800)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+template <class BidiIterator, class Allocator, class traits>
+void perl_matcher<BidiIterator, Allocator, traits>::construct_init(const basic_regex<char_type, traits>& e, match_flag_type f)
+{
+ typedef typename regex_iterator_traits<BidiIterator>::iterator_category category;
+ typedef typename basic_regex<char_type, traits>::flag_type expression_flag_type;
+
+ if(e.empty())
+ {
+ // precondition failure: e is not a valid regex.
+ std::invalid_argument ex("Invalid regular expression object");
+ boost::throw_exception(ex);
+ }
+ pstate = 0;
+ m_match_flags = f;
+ estimate_max_state_count(static_cast<category*>(0));
+ expression_flag_type re_f = re.flags();
+ icase = re_f & regex_constants::icase;
+ if(!(m_match_flags & (match_perl|match_posix)))
+ {
+ if((re_f & (regbase::main_option_type|regbase::no_perl_ex)) == 0)
+ m_match_flags |= match_perl;
+ else if((re_f & (regbase::main_option_type|regbase::emacs_ex)) == (regbase::basic_syntax_group|regbase::emacs_ex))
+ m_match_flags |= match_perl;
+ else
+ m_match_flags |= match_posix;
+ }
+ if(m_match_flags & match_posix)
+ {
+ m_temp_match.reset(new match_results<BidiIterator, Allocator>());
+ m_presult = m_temp_match.get();
+ }
+ else
+ m_presult = &m_result;
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ m_stack_base = 0;
+ m_backup_state = 0;
+#endif
+ // find the value to use for matching word boundaries:
+ m_word_mask = re.get_data().m_word_mask;
+ // find bitmask to use for matching '.':
+ match_any_mask = static_cast<unsigned char>((f & match_not_dot_newline) ? re_detail::test_not_newline : re_detail::test_newline);
+}
+
+template <class BidiIterator, class Allocator, class traits>
+void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(std::random_access_iterator_tag*)
+{
+ //
+ // How many states should we allow our machine to visit before giving up?
+ // This is a heuristic: it takes the greater of O(N^2) and O(NS^2)
+ // where N is the length of the string, and S is the number of states
+ // in the machine. It's tempting to up this to O(N^2S) or even O(N^2S^2)
+ // but these take unreasonably amounts of time to bale out in pathological
+ // cases.
+ //
+ // Calculate NS^2 first:
+ //
+ static const boost::uintmax_t k = 100000;
+ boost::uintmax_t dist = boost::re_detail::distance(base, last);
+ if(dist == 0)
+ dist = 1;
+ boost::uintmax_t states = re.size();
+ if(states == 0)
+ states = 1;
+ states *= states;
+ if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states *= dist;
+ if((std::numeric_limits<boost::uintmax_t>::max)() - k < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states += k;
+
+ max_state_count = states;
+
+ //
+ // Now calculate N^2:
+ //
+ states = dist;
+ if((std::numeric_limits<boost::uintmax_t>::max)() / dist < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states *= dist;
+ if((std::numeric_limits<boost::uintmax_t>::max)() - k < states)
+ {
+ max_state_count = (std::numeric_limits<boost::uintmax_t>::max)() - 2;
+ return;
+ }
+ states += k;
+ //
+ // N^2 can be a very large number indeed, to prevent things getting out
+ // of control, cap the max states:
+ //
+ if(states > BOOST_REGEX_MAX_STATE_COUNT)
+ states = BOOST_REGEX_MAX_STATE_COUNT;
+ //
+ // If (the possibly capped) N^2 is larger than our first estimate,
+ // use this instead:
+ //
+ if(states > max_state_count)
+ max_state_count = states;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::estimate_max_state_count(void*)
+{
+ // we don't know how long the sequence is:
+ max_state_count = BOOST_REGEX_MAX_STATE_COUNT;
+}
+
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::protected_call(
+ protected_proc_type proc)
+{
+ ::boost::re_detail::concrete_protected_call
+ <perl_matcher<BidiIterator, Allocator, traits> >
+ obj(this, proc);
+ return obj.execute();
+
+}
+#endif
+
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::match()
+{
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+ return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::match_imp);
+#else
+ return match_imp();
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_imp()
+{
+ // initialise our stack if we are non-recursive:
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ save_state_init init(&m_stack_base, &m_backup_state);
+ used_block_count = BOOST_REGEX_MAX_BLOCKS;
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try{
+#endif
+#endif
+
+ // reset our state machine:
+ position = base;
+ search_base = base;
+ state_count = 0;
+ m_match_flags |= regex_constants::match_all;
+ m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last);
+ m_presult->set_base(base);
+ if(m_match_flags & match_posix)
+ m_result = *m_presult;
+ verify_options(re.flags(), m_match_flags);
+ if(0 == match_prefix())
+ return false;
+ return m_result[0].second == last;
+
+#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS)
+ }
+ catch(...)
+ {
+ // unwind all pushed states, apart from anything else this
+ // ensures that all the states are correctly destructed
+ // not just the memory freed.
+ while(unwind(true)){}
+ throw;
+ }
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::find()
+{
+#ifdef BOOST_REGEX_HAS_MS_STACK_GUARD
+ return protected_call(&perl_matcher<BidiIterator, Allocator, traits>::find_imp);
+#else
+ return find_imp();
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_imp()
+{
+ static matcher_proc_type const s_find_vtable[7] =
+ {
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_any,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_word,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_prefix,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit,
+ &perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit,
+ };
+
+ // initialise our stack if we are non-recursive:
+#ifdef BOOST_REGEX_NON_RECURSIVE
+ save_state_init init(&m_stack_base, &m_backup_state);
+ used_block_count = BOOST_REGEX_MAX_BLOCKS;
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try{
+#endif
+#endif
+
+ state_count = 0;
+ if((m_match_flags & regex_constants::match_init) == 0)
+ {
+ // reset our state machine:
+ search_base = position = base;
+ pstate = re.get_first_state();
+ m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), base, last);
+ m_presult->set_base(base);
+ m_match_flags |= regex_constants::match_init;
+ }
+ else
+ {
+ // start again:
+ search_base = position = m_result[0].second;
+ // If last match was null and match_not_null was not set then increment
+ // our start position, otherwise we go into an infinite loop:
+ if(((m_match_flags & match_not_null) == 0) && (m_result.length() == 0))
+ {
+ if(position == last)
+ return false;
+ else
+ ++position;
+ }
+ // reset $` start:
+ m_presult->set_size((m_match_flags & match_nosubs) ? 1 : re.mark_count(), search_base, last);
+ //if((base != search_base) && (base == backstop))
+ // m_match_flags |= match_prev_avail;
+ }
+ if(m_match_flags & match_posix)
+ {
+ m_result.set_size(re.mark_count(), base, last);
+ m_result.set_base(base);
+ }
+
+ verify_options(re.flags(), m_match_flags);
+ // find out what kind of expression we have:
+ unsigned type = (m_match_flags & match_continuous) ?
+ static_cast<unsigned int>(regbase::restart_continue)
+ : static_cast<unsigned int>(re.get_restart_type());
+
+ // call the appropriate search routine:
+ matcher_proc_type proc = s_find_vtable[type];
+ return (this->*proc)();
+
+#if defined(BOOST_REGEX_NON_RECURSIVE) && !defined(BOOST_NO_EXCEPTIONS)
+ }
+ catch(...)
+ {
+ // unwind all pushed states, apart from anything else this
+ // ensures that all the states are correctly destructed
+ // not just the memory freed.
+ while(unwind(true)){}
+ throw;
+ }
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_prefix()
+{
+ m_has_partial_match = false;
+ m_has_found_match = false;
+ pstate = re.get_first_state();
+ m_presult->set_first(position);
+ restart = position;
+ match_all_states();
+ if(!m_has_found_match && m_has_partial_match && (m_match_flags & match_partial))
+ {
+ m_has_found_match = true;
+ m_presult->set_second(last, 0, false);
+ position = last;
+ }
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(m_has_found_match && (match_extra & m_match_flags))
+ {
+ //
+ // we have a match, reverse the capture information:
+ //
+ for(unsigned i = 0; i < m_presult->size(); ++i)
+ {
+ typename sub_match<BidiIterator>::capture_sequence_type & seq = ((*m_presult)[i]).get_captures();
+ std::reverse(seq.begin(), seq.end());
+ }
+ }
+#endif
+ if(!m_has_found_match)
+ position = restart; // reset search postion
+ return m_has_found_match;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_endmark()
+{
+ int index = static_cast<const re_brace*>(pstate)->index;
+ if(index > 0)
+ {
+ if((m_match_flags & match_nosubs) == 0)
+ m_presult->set_second(position, index);
+ }
+ else if((index < 0) && (index != -4))
+ {
+ // matched forward lookahead:
+ pstate = 0;
+ return true;
+ }
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_literal()
+{
+ unsigned int len = static_cast<const re_literal*>(pstate)->length;
+ const char_type* what = reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1);
+ //
+ // compare string with what we stored in
+ // our records:
+ for(unsigned int i = 0; i < len; ++i, ++position)
+ {
+ if((position == last) || (traits_inst.translate(*position, icase) != what[i]))
+ return false;
+ }
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_start_line()
+{
+ if(position == backstop)
+ {
+ if((m_match_flags & match_prev_avail) == 0)
+ {
+ if((m_match_flags & match_not_bol) == 0)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+ }
+ }
+ else if(m_match_flags & match_single_line)
+ return false;
+
+ // check the previous value character:
+ BidiIterator t(position);
+ --t;
+ if(position != last)
+ {
+ if(is_separator(*t) && !((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n'))) )
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ }
+ else if(is_separator(*t))
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_end_line()
+{
+ if(position != last)
+ {
+ if(m_match_flags & match_single_line)
+ return false;
+ // we're not yet at the end so *first is always valid:
+ if(is_separator(*position))
+ {
+ if((position != backstop) || (m_match_flags & match_prev_avail))
+ {
+ // check that we're not in the middle of \r\n sequence
+ BidiIterator t(position);
+ --t;
+ if((*t == static_cast<char_type>('\r')) && (*position == static_cast<char_type>('\n')))
+ {
+ return false;
+ }
+ }
+ pstate = pstate->next.p;
+ return true;
+ }
+ }
+ else if((m_match_flags & match_not_eol) == 0)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_wild()
+{
+ if(position == last)
+ return false;
+ if(is_separator(*position) && ((match_any_mask & static_cast<const re_dot*>(pstate)->mask) == 0))
+ return false;
+ if((*position == char_type(0)) && (m_match_flags & match_not_dot_null))
+ return false;
+ pstate = pstate->next.p;
+ ++position;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_match()
+{
+ if((m_match_flags & match_not_null) && (position == (*m_presult)[0].first))
+ return false;
+ if((m_match_flags & match_all) && (position != last))
+ return false;
+ if((m_match_flags & regex_constants::match_not_initial_null) && (position == search_base))
+ return false;
+ m_presult->set_second(position);
+ pstate = 0;
+ m_has_found_match = true;
+ if((m_match_flags & match_posix) == match_posix)
+ {
+ m_result.maybe_assign(*m_presult);
+ if((m_match_flags & match_any) == 0)
+ return false;
+ }
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(match_extra & m_match_flags)
+ {
+ for(unsigned i = 0; i < m_presult->size(); ++i)
+ if((*m_presult)[i].matched)
+ ((*m_presult)[i]).get_captures().push_back((*m_presult)[i]);
+ }
+#endif
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary()
+{
+ bool b; // indcates whether next character is a word character
+ if(position != last)
+ {
+ // prev and this character must be opposites:
+ #if defined(BOOST_REGEX_USE_C_LOCALE) && defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
+ b = traits::isctype(*position, m_word_mask);
+ #else
+ b = traits_inst.isctype(*position, m_word_mask);
+ #endif
+ }
+ else
+ {
+ b = (m_match_flags & match_not_eow) ? true : false;
+ }
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ {
+ if(m_match_flags & match_not_bow)
+ b ^= true;
+ else
+ b ^= false;
+ }
+ else
+ {
+ --position;
+ b ^= traits_inst.isctype(*position, m_word_mask);
+ ++position;
+ }
+ if(b)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false; // no match if we get to here...
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_within_word()
+{
+ if(position == last)
+ return false;
+ // both prev and this character must be m_word_mask:
+ bool prev = traits_inst.isctype(*position, m_word_mask);
+ {
+ bool b;
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ return false;
+ else
+ {
+ --position;
+ b = traits_inst.isctype(*position, m_word_mask);
+ ++position;
+ }
+ if(b == prev)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_word_start()
+{
+ if(position == last)
+ return false; // can't be starting a word if we're already at the end of input
+ if(!traits_inst.isctype(*position, m_word_mask))
+ return false; // next character isn't a word character
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ {
+ if(m_match_flags & match_not_bow)
+ return false; // no previous input
+ }
+ else
+ {
+ // otherwise inside buffer:
+ BidiIterator t(position);
+ --t;
+ if(traits_inst.isctype(*t, m_word_mask))
+ return false; // previous character not non-word
+ }
+ // OK we have a match:
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_word_end()
+{
+ if((position == backstop) && ((m_match_flags & match_prev_avail) == 0))
+ return false; // start of buffer can't be end of word
+ BidiIterator t(position);
+ --t;
+ if(traits_inst.isctype(*t, m_word_mask) == false)
+ return false; // previous character wasn't a word character
+
+ if(position == last)
+ {
+ if(m_match_flags & match_not_eow)
+ return false; // end of buffer but not end of word
+ }
+ else
+ {
+ // otherwise inside buffer:
+ if(traits_inst.isctype(*position, m_word_mask))
+ return false; // next character is a word character
+ }
+ pstate = pstate->next.p;
+ return true; // if we fall through to here then we've succeeded
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start()
+{
+ if((position != backstop) || (m_match_flags & match_not_bob))
+ return false;
+ // OK match:
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end()
+{
+ if((position != last) || (m_match_flags & match_not_eob))
+ return false;
+ // OK match:
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_backref()
+{
+ //
+ // Compare with what we previously matched.
+ // Note that this succeeds if the backref did not partisipate
+ // in the match, this is in line with ECMAScript, but not Perl
+ // or PCRE.
+ //
+ BidiIterator i = (*m_presult)[static_cast<const re_brace*>(pstate)->index].first;
+ BidiIterator j = (*m_presult)[static_cast<const re_brace*>(pstate)->index].second;
+ while(i != j)
+ {
+ if((position == last) || (traits_inst.translate(*position, icase) != traits_inst.translate(*i, icase)))
+ return false;
+ ++i;
+ ++position;
+ }
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set()
+{
+ typedef typename traits::char_class_type char_class_type;
+ // let the traits class do the work:
+ if(position == last)
+ return false;
+ BidiIterator t = re_is_set_member(position, last, static_cast<const re_set_long<char_class_type>*>(pstate), re.get_data(), icase);
+ if(t != position)
+ {
+ pstate = pstate->next.p;
+ position = t;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_set()
+{
+ if(position == last)
+ return false;
+ if(static_cast<const re_set*>(pstate)->_map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ pstate = pstate->next.p;
+ ++position;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_jump()
+{
+ pstate = static_cast<const re_jump*>(pstate)->alt.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_combining()
+{
+ if(position == last)
+ return false;
+ if(is_combining(traits_inst.translate(*position, icase)))
+ return false;
+ ++position;
+ while((position != last) && is_combining(traits_inst.translate(*position, icase)))
+ ++position;
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end()
+{
+ if(m_match_flags & match_not_eob)
+ return false;
+ BidiIterator p(position);
+ while((p != last) && is_separator(traits_inst.translate(*p, icase)))++p;
+ if(p != last)
+ return false;
+ pstate = pstate->next.p;
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue()
+{
+ if(position == search_base)
+ {
+ pstate = pstate->next.p;
+ return true;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_backstep()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ if( ::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ std::ptrdiff_t maxlen = ::boost::re_detail::distance(backstop, position);
+ if(maxlen < static_cast<const re_brace*>(pstate)->index)
+ return false;
+ std::advance(position, -static_cast<const re_brace*>(pstate)->index);
+ }
+ else
+ {
+ int c = static_cast<const re_brace*>(pstate)->index;
+ while(c--)
+ {
+ if(position == backstop)
+ return false;
+ --position;
+ }
+ }
+ pstate = pstate->next.p;
+ return true;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline bool perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref()
+{
+ // return true if marked sub-expression N has been matched:
+ bool result = (*m_presult)[static_cast<const re_brace*>(pstate)->index].matched;
+ pstate = pstate->next.p;
+ return result;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case()
+{
+ // change our case sensitivity:
+ this->icase = static_cast<const re_case*>(pstate)->icase;
+ pstate = pstate->next.p;
+ return true;
+}
+
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_any()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ const unsigned char* _map = re.get_map();
+ while(true)
+ {
+ // skip everything we can't match:
+ while((position != last) && !can_start(*position, _map, (unsigned char)mask_any) )
+ ++position;
+ if(position == last)
+ {
+ // run out of characters, try a null match if possible:
+ if(re.can_be_null())
+ return match_prefix();
+ break;
+ }
+ // now try and obtain a match:
+ if(match_prefix())
+ return true;
+ if(position == last)
+ return false;
+ ++position;
+ }
+ return false;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_word()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ // do search optimised for word starts:
+ const unsigned char* _map = re.get_map();
+ if((m_match_flags & match_prev_avail) || (position != base))
+ --position;
+ else if(match_prefix())
+ return true;
+ do
+ {
+ while((position != last) && traits_inst.isctype(*position, m_word_mask))
+ ++position;
+ while((position != last) && !traits_inst.isctype(*position, m_word_mask))
+ ++position;
+ if(position == last)
+ break;
+
+ if(can_start(*position, _map, (unsigned char)mask_any) )
+ {
+ if(match_prefix())
+ return true;
+ }
+ if(position == last)
+ break;
+ } while(true);
+ return false;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_line()
+{
+ // do search optimised for line starts:
+ const unsigned char* _map = re.get_map();
+ if(match_prefix())
+ return true;
+ while(position != last)
+ {
+ while((position != last) && !is_separator(*position))
+ ++position;
+ if(position == last)
+ return false;
+ ++position;
+ if(position == last)
+ {
+ if(re.can_be_null() && match_prefix())
+ return true;
+ return false;
+ }
+
+ if( can_start(*position, _map, (unsigned char)mask_any) )
+ {
+ if(match_prefix())
+ return true;
+ }
+ if(position == last)
+ return false;
+ //++position;
+ }
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_buf()
+{
+ if((position == base) && ((m_match_flags & match_not_bob) == 0))
+ return match_prefix();
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::find_restart_lit()
+{
+#if 0
+ if(position == last)
+ return false; // can't possibly match if we're at the end already
+
+ unsigned type = (m_match_flags & match_continuous) ?
+ static_cast<unsigned int>(regbase::restart_continue)
+ : static_cast<unsigned int>(re.get_restart_type());
+
+ const kmp_info<char_type>* info = access::get_kmp(re);
+ int len = info->len;
+ const char_type* x = info->pstr;
+ int j = 0;
+ while (position != last)
+ {
+ while((j > -1) && (x[j] != traits_inst.translate(*position, icase)))
+ j = info->kmp_next[j];
+ ++position;
+ ++j;
+ if(j >= len)
+ {
+ if(type == regbase::restart_fixed_lit)
+ {
+ std::advance(position, -j);
+ restart = position;
+ std::advance(restart, len);
+ m_result.set_first(position);
+ m_result.set_second(restart);
+ position = restart;
+ return true;
+ }
+ else
+ {
+ restart = position;
+ std::advance(position, -j);
+ if(match_prefix())
+ return true;
+ else
+ {
+ for(int k = 0; (restart != position) && (k < j); ++k, --restart)
+ {} // dwa 10/20/2000 - warning suppression for MWCW
+ if(restart != last)
+ ++restart;
+ position = restart;
+ j = 0; //we could do better than this...
+ }
+ }
+ }
+ }
+ if((m_match_flags & match_partial) && (position == last) && j)
+ {
+ // we need to check for a partial match:
+ restart = position;
+ std::advance(position, -j);
+ return match_prefix();
+ }
+#endif
+ return false;
+}
+
+} // namespace re_detail
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#ifdef __BORLANDC__
+# pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp
new file mode 100644
index 0000000..10e0347
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/perl_matcher_non_recursive.hpp
@@ -0,0 +1,1400 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE perl_matcher_common.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Definitions of perl_matcher member functions that are
+ * specific to the non-recursive implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP
+#define BOOST_REGEX_V4_PERL_MATCHER_NON_RECURSIVE_HPP
+
+#include <new>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4800)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+template <class T>
+inline void inplace_destroy(T* p)
+{
+ (void)p; // warning suppression
+ p->~T();
+}
+
+struct saved_state
+{
+ union{
+ unsigned int state_id;
+ // this padding ensures correct alignment on 64-bit platforms:
+ std::size_t padding1;
+ std::ptrdiff_t padding2;
+ void* padding3;
+ };
+ saved_state(unsigned i) : state_id(i) {}
+};
+
+template <class BidiIterator>
+struct saved_matched_paren : public saved_state
+{
+ int index;
+ sub_match<BidiIterator> sub;
+ saved_matched_paren(int i, const sub_match<BidiIterator>& s) : saved_state(1), index(i), sub(s){};
+};
+
+template <class BidiIterator>
+struct saved_position : public saved_state
+{
+ const re_syntax_base* pstate;
+ BidiIterator position;
+ saved_position(const re_syntax_base* ps, BidiIterator pos, int i) : saved_state(i), pstate(ps), position(pos){};
+};
+
+template <class BidiIterator>
+struct saved_assertion : public saved_position<BidiIterator>
+{
+ bool positive;
+ saved_assertion(bool p, const re_syntax_base* ps, BidiIterator pos)
+ : saved_position<BidiIterator>(ps, pos, saved_type_assertion), positive(p){};
+};
+
+template <class BidiIterator>
+struct saved_repeater : public saved_state
+{
+ repeater_count<BidiIterator> count;
+ saved_repeater(int i, repeater_count<BidiIterator>** s, BidiIterator start)
+ : saved_state(saved_state_repeater_count), count(i,s,start){}
+};
+
+struct saved_extra_block : public saved_state
+{
+ saved_state *base, *end;
+ saved_extra_block(saved_state* b, saved_state* e)
+ : saved_state(saved_state_extra_block), base(b), end(e) {}
+};
+
+struct save_state_init
+{
+ saved_state** stack;
+ save_state_init(saved_state** base, saved_state** end)
+ : stack(base)
+ {
+ *base = static_cast<saved_state*>(get_mem_block());
+ *end = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(*base)+BOOST_REGEX_BLOCKSIZE);
+ --(*end);
+ (void) new (*end)saved_state(0);
+ BOOST_ASSERT(*end > *base);
+ }
+ ~save_state_init()
+ {
+ put_mem_block(*stack);
+ *stack = 0;
+ }
+};
+
+template <class BidiIterator>
+struct saved_single_repeat : public saved_state
+{
+ std::size_t count;
+ const re_repeat* rep;
+ BidiIterator last_position;
+ saved_single_repeat(std::size_t c, const re_repeat* r, BidiIterator lp, int arg_id)
+ : saved_state(arg_id), count(c), rep(r), last_position(lp){}
+};
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
+{
+ static matcher_proc_type const s_match_vtable[29] =
+ {
+ (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_match,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
+ (::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
+ };
+
+ push_recursion_stopper();
+ do{
+ while(pstate)
+ {
+ matcher_proc_type proc = s_match_vtable[pstate->type];
+ ++state_count;
+ if(!(this->*proc)())
+ {
+ if(state_count > max_state_count)
+ raise_error(traits_inst, regex_constants::error_space);
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ bool successful_unwind = unwind(false);
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(false == successful_unwind)
+ return m_recursive_result;
+ }
+ }
+ }while(unwind(true));
+ return m_recursive_result;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+void perl_matcher<BidiIterator, Allocator, traits>::extend_stack()
+{
+ if(used_block_count)
+ {
+ --used_block_count;
+ saved_state* stack_base;
+ saved_state* backup_state;
+ stack_base = static_cast<saved_state*>(get_mem_block());
+ backup_state = reinterpret_cast<saved_state*>(reinterpret_cast<char*>(stack_base)+BOOST_REGEX_BLOCKSIZE);
+ saved_extra_block* block = static_cast<saved_extra_block*>(backup_state);
+ --block;
+ (void) new (block) saved_extra_block(m_stack_base, m_backup_state);
+ m_stack_base = stack_base;
+ m_backup_state = block;
+ }
+ else
+ raise_error(traits_inst, regex_constants::error_size);
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_matched_paren(int index, const sub_match<BidiIterator>& sub)
+{
+ BOOST_ASSERT(index);
+ saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_matched_paren<BidiIterator>(index, sub);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_recursion_stopper()
+{
+ saved_state* pmp = m_backup_state;
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = m_backup_state;
+ --pmp;
+ }
+ (void) new (pmp)saved_state(saved_type_recurse);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_assertion(const re_syntax_base* ps, bool positive)
+{
+ saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_assertion<BidiIterator>(positive, ps, position);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_alt(const re_syntax_base* ps)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_alt);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_non_greedy_repeat(const re_syntax_base* ps)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_position<BidiIterator>(ps, position, saved_state_non_greedy_long_repeat);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_repeater_count(int i, repeater_count<BidiIterator>** s)
+{
+ saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_repeater<BidiIterator>(i, s, position);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::push_single_repeat(std::size_t c, const re_repeat* r, BidiIterator last_position, int state_id)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+ --pmp;
+ if(pmp < m_stack_base)
+ {
+ extend_stack();
+ pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+ --pmp;
+ }
+ (void) new (pmp)saved_single_repeat<BidiIterator>(c, r, last_position, state_id);
+ m_backup_state = pmp;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
+{
+ int index = static_cast<const re_brace*>(pstate)->index;
+ switch(index)
+ {
+ case 0:
+ pstate = pstate->next.p;
+ break;
+ case -1:
+ case -2:
+ {
+ // forward lookahead assert:
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ push_assertion(next_pstate, index == -1);
+ break;
+ }
+ case -3:
+ {
+ // independent sub-expression, currently this is always recursive:
+ bool old_independent = m_independent;
+ m_independent = true;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ bool r = match_all_states();
+ pstate = next_pstate;
+ m_independent = old_independent;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(r && (m_match_flags & match_extra))
+ {
+ //
+ // our captures have been stored in *m_presult
+ // we need to unpack them, and insert them
+ // back in the right order when we unwind the stack:
+ //
+ match_results<BidiIterator, Allocator> temp_match(*m_presult);
+ unsigned i;
+ for(i = 0; i < temp_match.size(); ++i)
+ (*m_presult)[i].get_captures().clear();
+ // match everything else:
+ r = match_all_states();
+ // now place the stored captures back:
+ for(i = 0; i < temp_match.size(); ++i)
+ {
+ typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
+ seq& s1 = (*m_presult)[i].get_captures();
+ const seq& s2 = temp_match[i].captures();
+ s1.insert(
+ s1.end(),
+ s2.begin(),
+ s2.end());
+ }
+ }
+#endif
+ return r;
+ }
+ case -4:
+ {
+ // conditional expression:
+ const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
+ BOOST_ASSERT(alt->type == syntax_element_alt);
+ pstate = alt->next.p;
+ if(pstate->type == syntax_element_assert_backref)
+ {
+ if(!match_assert_backref())
+ pstate = alt->alt.p;
+ break;
+ }
+ else
+ {
+ // zero width assertion, have to match this recursively:
+ BOOST_ASSERT(pstate->type == syntax_element_startmark);
+ bool negated = static_cast<const re_brace*>(pstate)->index == -2;
+ BidiIterator saved_position = position;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ bool r = match_all_states();
+ position = saved_position;
+ if(negated)
+ r = !r;
+ if(r)
+ pstate = next_pstate;
+ else
+ pstate = alt->alt.p;
+ break;
+ }
+ }
+ default:
+ {
+ BOOST_ASSERT(index > 0);
+ if((m_match_flags & match_nosubs) == 0)
+ {
+ push_matched_paren(index, (*m_presult)[index]);
+ m_presult->set_first(position, index);
+ }
+ pstate = pstate->next.p;
+ break;
+ }
+ }
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
+{
+ bool take_first, take_second;
+ const re_alt* jmp = static_cast<const re_alt*>(pstate);
+
+ // find out which of these two alternatives we need to take:
+ if(position == last)
+ {
+ take_first = jmp->can_be_null & mask_take;
+ take_second = jmp->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
+ }
+
+ if(take_first)
+ {
+ // we can take the first alternative,
+ // see if we need to push next alternative:
+ if(take_second)
+ {
+ push_alt(jmp->alt.p);
+ }
+ pstate = pstate->next.p;
+ return true;
+ }
+ if(take_second)
+ {
+ pstate = jmp->alt.p;
+ return true;
+ }
+ return false; // neither option is possible
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127 4244)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+
+ // find out which of these two alternatives we need to take:
+ bool take_first, take_second;
+ if(position == last)
+ {
+ take_first = rep->can_be_null & mask_take;
+ take_second = rep->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
+ }
+
+ if((m_backup_state->state_id != saved_state_repeater_count)
+ || (static_cast<saved_repeater<BidiIterator>*>(m_backup_state)->count.get_id() != rep->state_id)
+ || (next_count->get_id() != rep->state_id))
+ {
+ // we're moving to a different repeat from the last
+ // one, so set up a counter object:
+ push_repeater_count(rep->state_id, &next_count);
+ }
+ //
+ // If we've had at least one repeat already, and the last one
+ // matched the NULL string then set the repeat count to
+ // maximum:
+ //
+ next_count->check_null_repeat(position, rep->max);
+
+ if(next_count->get_count() < rep->min)
+ {
+ // we must take the repeat:
+ if(take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return true;
+ }
+ return false;
+ }
+
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // try and take the repeat if we can:
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ if(take_second)
+ {
+ // store position in case we fail:
+ push_alt(rep->alt.p);
+ }
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return true;
+ }
+ else if(take_second)
+ {
+ pstate = rep->alt.p;
+ return true;
+ }
+ return false; // can't take anything, fail...
+ }
+ else // non-greedy
+ {
+ // try and skip the repeat if we can:
+ if(take_second)
+ {
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // store position in case we fail:
+ push_non_greedy_repeat(rep->next.p);
+ }
+ pstate = rep->alt.p;
+ return true;
+ }
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return true;
+ }
+ }
+ return false;
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
+{
+ unsigned count = 0;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ re_syntax_base* psingle = rep->next.p;
+ // match compulsary repeats first:
+ while(count < rep->min)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ return false;
+ ++count;
+ }
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // repeat for as long as we can:
+ while(count < rep->max)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ break;
+ ++count;
+ }
+ // remember where we got to if this is a leading repeat:
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_slow_dot);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
+{
+ if(m_match_flags & match_not_dot_null)
+ return match_dot_repeat_slow();
+ if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
+ return match_dot_repeat_slow();
+
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ unsigned count = static_cast<unsigned>((std::min)(static_cast<unsigned>(::boost::re_detail::distance(position, last)), static_cast<unsigned>(greedy ? rep->max : rep->min)));
+ if(rep->min > count)
+ {
+ position = last;
+ return false; // not enough text left to match
+ }
+ std::advance(position, count);
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_fast_dot);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
+ const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
+ std::size_t count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && (traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ ++count;
+ }
+ }
+
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_char);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
+ std::size_t count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ }
+
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_short_set);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ typedef typename traits::char_class_type mask_type;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const re_set_long<mask_type>* set = static_cast<const re_set_long<mask_type>*>(pstate->next.p);
+ std::size_t count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ ++count;
+ }
+ }
+
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ {
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ // push backtrack info if available:
+ if(count - rep->min)
+ push_single_repeat(count, rep, position, saved_state_greedy_single_repeat);
+ // jump to next state:
+ pstate = rep->alt.p;
+ return true;
+ }
+ else
+ {
+ // non-greedy, push state and return true if we can skip:
+ if(count < rep->max)
+ push_single_repeat(count, rep, position, saved_state_rep_long_set);
+ pstate = rep->alt.p;
+ return (position == last) ? (rep->can_be_null & mask_skip) : can_start(*position, rep->_map, mask_skip);
+ }
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+/****************************************************************************
+
+Unwind and associated proceedures follow, these perform what normal stack
+unwinding does in the recursive implementation.
+
+****************************************************************************/
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind(bool have_match)
+{
+ static unwind_proc_type const s_unwind_table[14] =
+ {
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_paren,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_alt,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat,
+ };
+
+ m_recursive_result = have_match;
+ unwind_proc_type unwinder;
+ bool cont;
+ //
+ // keep unwinding our stack until we have something to do:
+ //
+ do
+ {
+ unwinder = s_unwind_table[m_backup_state->state_id];
+ cont = (this->*unwinder)(m_recursive_result);
+ }while(cont);
+ //
+ // return true if we have more states to try:
+ //
+ return pstate ? true : false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_end(bool)
+{
+ pstate = 0; // nothing left to search
+ return false; // end of stack nothing more to search
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_paren(bool have_match)
+{
+ saved_matched_paren<BidiIterator>* pmp = static_cast<saved_matched_paren<BidiIterator>*>(m_backup_state);
+ // restore previous values if no match was found:
+ if(have_match == false)
+ {
+ m_presult->set_first(pmp->sub.first, pmp->index);
+ m_presult->set_second(pmp->sub.second, pmp->index, pmp->sub.matched);
+ }
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ //
+ // we have a match, push the capture information onto the stack:
+ //
+ else if(pmp->sub.matched && (match_extra & m_match_flags))
+ ((*m_presult)[pmp->index]).get_captures().push_back(pmp->sub);
+#endif
+ // unwind stack:
+ m_backup_state = pmp+1;
+ boost::re_detail::inplace_destroy(pmp);
+ return true; // keep looking
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_recursion_stopper(bool)
+{
+ boost::re_detail::inplace_destroy(m_backup_state++);
+ pstate = 0; // nothing left to search
+ return false; // end of stack nothing more to search
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_assertion(bool r)
+{
+ saved_assertion<BidiIterator>* pmp = static_cast<saved_assertion<BidiIterator>*>(m_backup_state);
+ pstate = pmp->pstate;
+ position = pmp->position;
+ bool result = (r == pmp->positive);
+ m_recursive_result = pmp->positive ? r : !r;
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return !result; // return false if the assertion was matched to stop search.
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_alt(bool r)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ if(!r)
+ {
+ pstate = pmp->pstate;
+ position = pmp->position;
+ }
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return r;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_repeater_counter(bool)
+{
+ saved_repeater<BidiIterator>* pmp = static_cast<saved_repeater<BidiIterator>*>(m_backup_state);
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return true; // keep looking
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_extra_block(bool)
+{
+ saved_extra_block* pmp = static_cast<saved_extra_block*>(m_backup_state);
+ void* condemmed = m_stack_base;
+ m_stack_base = pmp->base;
+ m_backup_state = pmp->end;
+ boost::re_detail::inplace_destroy(pmp);
+ put_mem_block(condemmed);
+ return true; // keep looking
+}
+
+template <class BidiIterator, class Allocator, class traits>
+inline void perl_matcher<BidiIterator, Allocator, traits>::destroy_single_repeat()
+{
+ saved_single_repeat<BidiIterator>* p = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+ boost::re_detail::inplace_destroy(p++);
+ m_backup_state = p;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_greedy_single_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+
+ count -= rep->min;
+
+ if((m_match_flags & match_partial) && (position == last))
+ m_has_partial_match = true;
+
+ BOOST_ASSERT(count);
+ position = pmp->last_position;
+
+ // backtrack till we can skip out:
+ do
+ {
+ --position;
+ --count;
+ ++state_count;
+ }while(count && !can_start(*position, rep->_map, mask_skip));
+
+ // if we've hit base, destroy this state:
+ if(count == 0)
+ {
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count + rep->min;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_slow_dot_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ BOOST_ASSERT(rep->type == syntax_element_dot_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_wild);
+
+ BOOST_ASSERT(count < rep->max);
+ pstate = rep->next.p;
+ position = pmp->last_position;
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(!match_wild())
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++count;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_fast_dot_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+
+ BOOST_ASSERT(count < rep->max);
+ position = pmp->last_position;
+ if(position != last)
+ {
+
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ ++position;
+ ++count;
+ ++state_count;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_char_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ pstate = rep->next.p;
+ const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(pstate) + 1);
+ position = pmp->last_position;
+
+ BOOST_ASSERT(rep->type == syntax_element_char_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_literal);
+ BOOST_ASSERT(count < rep->max);
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(traits_inst.translate(*position, icase) != what)
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++count;
+ ++ position;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ // remember where we got to if this is a leading repeat:
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_short_set_repeat(bool r)
+{
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ pstate = rep->next.p;
+ const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
+ position = pmp->last_position;
+
+ BOOST_ASSERT(rep->type == syntax_element_short_set_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_set);
+ BOOST_ASSERT(count < rep->max);
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(!map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++count;
+ ++ position;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ // remember where we got to if this is a leading repeat:
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_long_set_repeat(bool r)
+{
+ typedef typename traits::char_class_type mask_type;
+ saved_single_repeat<BidiIterator>* pmp = static_cast<saved_single_repeat<BidiIterator>*>(m_backup_state);
+
+ // if we have a match, just discard this state:
+ if(r)
+ {
+ destroy_single_repeat();
+ return true;
+ }
+
+ const re_repeat* rep = pmp->rep;
+ std::size_t count = pmp->count;
+ pstate = rep->next.p;
+ const re_set_long<mask_type>* set = static_cast<const re_set_long<mask_type>*>(pstate);
+ position = pmp->last_position;
+
+ BOOST_ASSERT(rep->type == syntax_element_long_set_rep);
+ BOOST_ASSERT(rep->next.p != 0);
+ BOOST_ASSERT(rep->alt.p != 0);
+ BOOST_ASSERT(rep->next.p->type == syntax_element_long_set);
+ BOOST_ASSERT(count < rep->max);
+
+ if(position != last)
+ {
+ // wind forward until we can skip out of the repeat:
+ do
+ {
+ if(position == re_is_set_member(position, last, set, re.get_data(), icase))
+ {
+ // failed repeat match, discard this state and look for another:
+ destroy_single_repeat();
+ return true;
+ }
+ ++position;
+ ++count;
+ ++state_count;
+ pstate = rep->next.p;
+ }while((count < rep->max) && (position != last) && !can_start(*position, rep->_map, mask_skip));
+ }
+ // remember where we got to if this is a leading repeat:
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ if(position == last)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ if(0 == (rep->can_be_null & mask_skip))
+ return true;
+ }
+ else if(count == rep->max)
+ {
+ // can't repeat any more, remove the pushed state:
+ destroy_single_repeat();
+ if(!can_start(*position, rep->_map, mask_skip))
+ return true;
+ }
+ else
+ {
+ pmp->count = count;
+ pmp->last_position = position;
+ }
+ pstate = rep->alt.p;
+ return false;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::unwind_non_greedy_repeat(bool r)
+{
+ saved_position<BidiIterator>* pmp = static_cast<saved_position<BidiIterator>*>(m_backup_state);
+ if(!r)
+ {
+ position = pmp->position;
+ pstate = pmp->pstate;
+ ++(*next_count);
+ }
+ boost::re_detail::inplace_destroy(pmp++);
+ m_backup_state = pmp;
+ return r;
+}
+
+} // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp b/3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp
new file mode 100644
index 0000000..68e1aac
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/perl_matcher_recursive.hpp
@@ -0,0 +1,854 @@
+/*
+ *
+ * Copyright (c) 2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE perl_matcher_common.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Definitions of perl_matcher member functions that are
+ * specific to the recursive implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
+#define BOOST_REGEX_V4_PERL_MATCHER_RECURSIVE_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4800)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+template <class BidiIterator>
+class backup_subex
+{
+ int index;
+ sub_match<BidiIterator> sub;
+public:
+ template <class A>
+ backup_subex(const match_results<BidiIterator, A>& w, int i)
+ : index(i), sub(w[i], false) {}
+ template <class A>
+ void restore(match_results<BidiIterator, A>& w)
+ {
+ w.set_first(sub.first, index);
+ w.set_second(sub.second, index, sub.matched);
+ }
+ const sub_match<BidiIterator>& get() { return sub; }
+};
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_all_states()
+{
+ static matcher_proc_type const s_match_vtable[29] =
+ {
+ (&perl_matcher<BidiIterator, Allocator, traits>::match_startmark),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_endmark,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_literal,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_start_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_end_line,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_wild,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_match,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_boundary,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_within_word,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_word_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_start,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_jump,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_alt,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_rep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_combining,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_soft_buffer_end,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_restart_continue,
+ (::boost::is_random_access_iterator<BidiIterator>::value ? &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast : &perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow),
+ &perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_backstep,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_assert_backref,
+ &perl_matcher<BidiIterator, Allocator, traits>::match_toggle_case,
+ };
+
+ if(state_count > max_state_count)
+ raise_error(traits_inst, regex_constants::error_space);
+ while(pstate)
+ {
+ matcher_proc_type proc = s_match_vtable[pstate->type];
+ ++state_count;
+ if(!(this->*proc)())
+ {
+ if((m_match_flags & match_partial) && (position == last) && (position != search_base))
+ m_has_partial_match = true;
+ return 0;
+ }
+ }
+ return true;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_startmark()
+{
+ int index = static_cast<const re_brace*>(pstate)->index;
+ bool r = true;
+ switch(index)
+ {
+ case 0:
+ pstate = pstate->next.p;
+ break;
+ case -1:
+ case -2:
+ {
+ // forward lookahead assert:
+ BidiIterator old_position(position);
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ r = match_all_states();
+ pstate = next_pstate;
+ position = old_position;
+ if((r && (index != -1)) || (!r && (index != -2)))
+ r = false;
+ else
+ r = true;
+ break;
+ }
+ case -3:
+ {
+ // independent sub-expression:
+ bool old_independent = m_independent;
+ m_independent = true;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ r = match_all_states();
+ pstate = next_pstate;
+ m_independent = old_independent;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(r && (m_match_flags & match_extra))
+ {
+ //
+ // our captures have been stored in *m_presult
+ // we need to unpack them, and insert them
+ // back in the right order when we unwind the stack:
+ //
+ unsigned i;
+ match_results<BidiIterator, Allocator> tm(*m_presult);
+ for(i = 0; i < tm.size(); ++i)
+ (*m_presult)[i].get_captures().clear();
+ // match everything else:
+ r = match_all_states();
+ // now place the stored captures back:
+ for(i = 0; i < tm.size(); ++i)
+ {
+ typedef typename sub_match<BidiIterator>::capture_sequence_type seq;
+ seq& s1 = (*m_presult)[i].get_captures();
+ const seq& s2 = tm[i].captures();
+ s1.insert(
+ s1.end(),
+ s2.begin(),
+ s2.end());
+ }
+ }
+#endif
+ break;
+ }
+ case -4:
+ {
+ // conditional expression:
+ const re_alt* alt = static_cast<const re_alt*>(pstate->next.p);
+ BOOST_ASSERT(alt->type == syntax_element_alt);
+ pstate = alt->next.p;
+ if(pstate->type == syntax_element_assert_backref)
+ {
+ if(!match_assert_backref())
+ pstate = alt->alt.p;
+ break;
+ }
+ else
+ {
+ // zero width assertion, have to match this recursively:
+ BOOST_ASSERT(pstate->type == syntax_element_startmark);
+ bool negated = static_cast<const re_brace*>(pstate)->index == -2;
+ BidiIterator saved_position = position;
+ const re_syntax_base* next_pstate = static_cast<const re_jump*>(pstate->next.p)->alt.p->next.p;
+ pstate = pstate->next.p->next.p;
+ bool r = match_all_states();
+ position = saved_position;
+ if(negated)
+ r = !r;
+ if(r)
+ pstate = next_pstate;
+ else
+ pstate = alt->alt.p;
+ break;
+ }
+ }
+ default:
+ {
+ BOOST_ASSERT(index > 0);
+ if((m_match_flags & match_nosubs) == 0)
+ {
+ backup_subex<BidiIterator> sub(*m_presult, index);
+ m_presult->set_first(position, index);
+ pstate = pstate->next.p;
+ r = match_all_states();
+ if(r == false)
+ sub.restore(*m_presult);
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ //
+ // we have a match, push the capture information onto the stack:
+ //
+ else if(sub.get().matched && (match_extra & m_match_flags))
+ ((*m_presult)[index]).get_captures().push_back(sub.get());
+#endif
+ }
+ else
+ {
+ pstate = pstate->next.p;
+ }
+ break;
+ }
+ }
+ return r;
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_alt()
+{
+ bool take_first, take_second;
+ const re_alt* jmp = static_cast<const re_alt*>(pstate);
+
+ // find out which of these two alternatives we need to take:
+ if(position == last)
+ {
+ take_first = jmp->can_be_null & mask_take;
+ take_second = jmp->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, jmp->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, jmp->_map, (unsigned char)mask_skip);
+ }
+
+ if(take_first)
+ {
+ // we can take the first alternative,
+ // see if we need to push next alternative:
+ if(take_second)
+ {
+ BidiIterator oldposition(position);
+ const re_syntax_base* old_pstate = jmp->alt.p;
+ pstate = pstate->next.p;
+ if(!match_all_states())
+ {
+ pstate = old_pstate;
+ position = oldposition;
+ }
+ return true;
+ }
+ pstate = pstate->next.p;
+ return true;
+ }
+ if(take_second)
+ {
+ pstate = jmp->alt.p;
+ return true;
+ }
+ return false; // neither option is possible
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_rep()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127 4244)
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ //
+ // Always copy the repeat count, so that the state is restored
+ // when we exit this scope:
+ //
+ repeater_count<BidiIterator> r(rep->state_id, &next_count, position);
+ //
+ // If we've had at least one repeat already, and the last one
+ // matched the NULL string then set the repeat count to
+ // maximum:
+ //
+ next_count->check_null_repeat(position, rep->max);
+
+ // find out which of these two alternatives we need to take:
+ bool take_first, take_second;
+ if(position == last)
+ {
+ take_first = rep->can_be_null & mask_take;
+ take_second = rep->can_be_null & mask_skip;
+ }
+ else
+ {
+ take_first = can_start(*position, rep->_map, (unsigned char)mask_take);
+ take_second = can_start(*position, rep->_map, (unsigned char)mask_skip);
+ }
+
+ if(next_count->get_count() < rep->min)
+ {
+ // we must take the repeat:
+ if(take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return match_all_states();
+ }
+ return false;
+ }
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // try and take the repeat if we can:
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // store position in case we fail:
+ BidiIterator pos = position;
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ if(match_all_states())
+ return true;
+ // failed repeat, reset posistion and fall through for alternative:
+ position = pos;
+ }
+ if(take_second)
+ {
+ pstate = rep->alt.p;
+ return true;
+ }
+ return false; // can't take anything, fail...
+ }
+ else // non-greedy
+ {
+ // try and skip the repeat if we can:
+ if(take_second)
+ {
+ // store position in case we fail:
+ BidiIterator pos = position;
+ pstate = rep->alt.p;
+ if(match_all_states())
+ return true;
+ // failed alternative, reset posistion and fall through for repeat:
+ position = pos;
+ }
+ if((next_count->get_count() < rep->max) && take_first)
+ {
+ // increase the counter:
+ ++(*next_count);
+ pstate = rep->next.p;
+ return match_all_states();
+ }
+ }
+ return false;
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_slow()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ unsigned count = 0;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ re_syntax_base* psingle = rep->next.p;
+ // match compulsary repeats first:
+ while(count < rep->min)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ return false;
+ ++count;
+ }
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ if(greedy)
+ {
+ // normal repeat:
+ while(count < rep->max)
+ {
+ pstate = psingle;
+ if(!match_wild())
+ break;
+ ++count;
+ }
+ if((rep->leading) && (count < rep->max))
+ restart = position;
+ pstate = rep;
+ return backtrack_till_match(count - rep->min);
+ }
+ else
+ {
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ ++count;
+ pstate = psingle;
+ position = save_pos;
+ if(!match_wild())
+ return false;
+ }while(true);
+ }
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_dot_repeat_fast()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ if(m_match_flags & match_not_dot_null)
+ return match_dot_repeat_slow();
+ if((static_cast<const re_dot*>(pstate->next.p)->mask & match_any_mask) == 0)
+ return match_dot_repeat_slow();
+ //
+ // start by working out how much we can skip:
+ //
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4267)
+#endif
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t count = (std::min)(static_cast<std::size_t>(::boost::re_detail::distance(position, last)), static_cast<std::size_t>(greedy ? rep->max : rep->min));
+ if(rep->min > count)
+ {
+ position = last;
+ return false; // not enough text left to match
+ }
+ std::advance(position, count);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ ++position;
+ ++count;
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ if(save_pos == last)
+ return false;
+ position = ++save_pos;
+ ++count;
+ }while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_char_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#pragma warning(disable:4267)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ BOOST_ASSERT(1 == static_cast<const re_literal*>(rep->next.p)->length);
+ const char_type what = *reinterpret_cast<const char_type*>(static_cast<const re_literal*>(rep->next.p) + 1);
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t count, desired;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ desired =
+ (std::min)(
+ (std::size_t)(greedy ? rep->max : rep->min),
+ (std::size_t)::boost::re_detail::distance(position, last));
+ count = desired;
+ ++desired;
+ if(icase)
+ {
+ while(--desired && (traits_inst.translate_nocase(*position) == what))
+ {
+ ++position;
+ }
+ }
+ else
+ {
+ while(--desired && (traits_inst.translate(*position) == what))
+ {
+ ++position;
+ }
+ }
+ count = count - desired;
+ }
+ else
+ {
+ count = 0;
+ desired = greedy ? rep->max : rep->min;
+ while((count < desired) && (position != last) && (traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ ++count;
+ }
+ }
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ if((traits_inst.translate(*position, icase) == what))
+ {
+ ++position;
+ ++count;
+ }
+ else
+ return false; // counldn't repeat even though it was the only option
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ position = save_pos;
+ if(position == last)
+ return false;
+ if(traits_inst.translate(*position, icase) == what)
+ {
+ ++position;
+ ++count;
+ }
+ else
+ {
+ return false;
+ }
+ }while(true);
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const unsigned char* map = static_cast<const re_set*>(rep->next.p)->_map;
+ unsigned count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ }
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ else
+ return false; // counldn't repeat even though it was the only option
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ position = save_pos;
+ if(position == last)
+ return false;
+ if(map[static_cast<unsigned char>(traits_inst.translate(*position, icase))])
+ {
+ ++position;
+ ++count;
+ }
+ else
+ {
+ return false;
+ }
+ }while(true);
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::match_long_set_repeat()
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+#ifdef __BORLANDC__
+#pragma option push -w-8008 -w-8066 -w-8004
+#endif
+ typedef typename traits::char_class_type char_class_type;
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ const re_set_long<char_class_type>* set = static_cast<const re_set_long<char_class_type>*>(pstate->next.p);
+ unsigned count = 0;
+ //
+ // start by working out how much we can skip:
+ //
+ bool greedy = (rep->greedy) && (!(m_match_flags & regex_constants::match_any) || m_independent);
+ std::size_t desired = greedy ? rep->max : rep->min;
+ if(::boost::is_random_access_iterator<BidiIterator>::value)
+ {
+ BidiIterator end = position;
+ std::advance(end, (std::min)((std::size_t)::boost::re_detail::distance(position, last), desired));
+ BidiIterator origin(position);
+ while((position != end) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ }
+ count = (unsigned)::boost::re_detail::distance(origin, position);
+ }
+ else
+ {
+ while((count < desired) && (position != last) && (position != re_is_set_member(position, last, set, re.get_data(), icase)))
+ {
+ ++position;
+ ++count;
+ }
+ }
+ if((rep->leading) && (count < rep->max) && greedy)
+ restart = position;
+ if(count < rep->min)
+ return false;
+
+ if(greedy)
+ return backtrack_till_match(count - rep->min);
+
+ // non-greedy, keep trying till we get a match:
+ BidiIterator save_pos;
+ do
+ {
+ while((position != last) && (count < rep->max) && !can_start(*position, rep->_map, mask_skip))
+ {
+ if(position != re_is_set_member(position, last, set, re.get_data(), icase))
+ {
+ ++position;
+ ++count;
+ }
+ else
+ return false; // counldn't repeat even though it was the only option
+ }
+ if((rep->leading) && (rep->max == UINT_MAX))
+ restart = position;
+ pstate = rep->alt.p;
+ save_pos = position;
+ ++state_count;
+ if(match_all_states())
+ return true;
+ if(count >= rep->max)
+ return false;
+ position = save_pos;
+ if(position == last)
+ return false;
+ if(position != re_is_set_member(position, last, set, re.get_data(), icase))
+ {
+ ++position;
+ ++count;
+ }
+ else
+ {
+ return false;
+ }
+ }while(true);
+#ifdef __BORLANDC__
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+template <class BidiIterator, class Allocator, class traits>
+bool perl_matcher<BidiIterator, Allocator, traits>::backtrack_till_match(std::size_t count)
+{
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4127)
+#endif
+ if((m_match_flags & match_partial) && (position == last))
+ m_has_partial_match = true;
+
+ const re_repeat* rep = static_cast<const re_repeat*>(pstate);
+ BidiIterator backtrack = position;
+ if(position == last)
+ {
+ if(rep->can_be_null & mask_skip)
+ {
+ pstate = rep->alt.p;
+ if(match_all_states())
+ return true;
+ }
+ if(count)
+ {
+ position = --backtrack;
+ --count;
+ }
+ else
+ return false;
+ }
+ do
+ {
+ while(count && !can_start(*position, rep->_map, mask_skip))
+ {
+ --position;
+ --count;
+ ++state_count;
+ }
+ pstate = rep->alt.p;
+ backtrack = position;
+ if(match_all_states())
+ return true;
+ if(count == 0)
+ return false;
+ position = --backtrack;
+ ++state_count;
+ --count;
+ }while(true);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+}
+
+} // namespace re_detail
+} // namespace boost
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/primary_transform.hpp b/3rdParty/Boost/boost/regex/v4/primary_transform.hpp
new file mode 100644
index 0000000..989f500
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/primary_transform.hpp
@@ -0,0 +1,146 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE: primary_transform.hpp
+ * VERSION: see <boost/version.hpp>
+ * DESCRIPTION: Heuristically determines the sort string format in use
+ * by the current locale.
+ */
+
+#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
+#define BOOST_REGEX_PRIMARY_TRANSFORM
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+ namespace re_detail{
+
+
+enum{
+ sort_C,
+ sort_fixed,
+ sort_delim,
+ sort_unknown
+};
+
+template <class S, class charT>
+unsigned count_chars(const S& s, charT c)
+{
+ //
+ // Count how many occurances of character c occur
+ // in string s: if c is a delimeter between collation
+ // fields, then this should be the same value for all
+ // sort keys:
+ //
+ unsigned int count = 0;
+ for(unsigned pos = 0; pos < s.size(); ++pos)
+ {
+ if(s[pos] == c) ++count;
+ }
+ return count;
+}
+
+
+template <class traits, class charT>
+unsigned find_sort_syntax(const traits* pt, charT* delim)
+{
+ //
+ // compare 'a' with 'A' to see how similar they are,
+ // should really use a-accute but we can't portably do that,
+ //
+ typedef typename traits::string_type string_type;
+ typedef typename traits::char_type char_type;
+
+ // Suppress incorrect warning for MSVC
+ (void)pt;
+
+ char_type a[2] = {'a', '\0', };
+ string_type sa(pt->transform(a, a+1));
+ if(sa == a)
+ {
+ *delim = 0;
+ return sort_C;
+ }
+ char_type A[2] = { 'A', '\0', };
+ string_type sA(pt->transform(A, A+1));
+ char_type c[2] = { ';', '\0', };
+ string_type sc(pt->transform(c, c+1));
+
+ int pos = 0;
+ while((pos <= static_cast<int>(sa.size())) && (pos <= static_cast<int>(sA.size())) && (sa[pos] == sA[pos])) ++pos;
+ --pos;
+ if(pos < 0)
+ {
+ *delim = 0;
+ return sort_unknown;
+ }
+ //
+ // at this point sa[pos] is either the end of a fixed width field
+ // or the character that acts as a delimiter:
+ //
+ charT maybe_delim = sa[pos];
+ if((pos != 0) && (count_chars(sa, maybe_delim) == count_chars(sA, maybe_delim)) && (count_chars(sa, maybe_delim) == count_chars(sc, maybe_delim)))
+ {
+ *delim = maybe_delim;
+ return sort_delim;
+ }
+ //
+ // OK doen't look like a delimiter, try for fixed width field:
+ //
+ if((sa.size() == sA.size()) && (sa.size() == sc.size()))
+ {
+ // note assumes that the fixed width field is less than
+ // (numeric_limits<charT>::max)(), should be true for all types
+ // I can't imagine 127 character fields...
+ *delim = static_cast<charT>(++pos);
+ return sort_fixed;
+ }
+ //
+ // don't know what it is:
+ //
+ *delim = 0;
+ return sort_unknown;
+}
+
+
+ } // namespace re_detail
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/protected_call.hpp b/3rdParty/Boost/boost/regex/v4/protected_call.hpp
new file mode 100644
index 0000000..ebf15ba
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/protected_call.hpp
@@ -0,0 +1,81 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE basic_regex_creator.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class basic_regex_creator which fills in
+ * the data members of a regex_data object.
+ */
+
+#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
+#define BOOST_REGEX_V4_PROTECTED_CALL_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+class BOOST_REGEX_DECL abstract_protected_call
+{
+public:
+ bool BOOST_REGEX_CALL execute()const;
+ // this stops gcc-4 from complaining:
+ virtual ~abstract_protected_call(){}
+private:
+ virtual bool call()const = 0;
+};
+
+template <class T>
+class concrete_protected_call
+ : public abstract_protected_call
+{
+public:
+ typedef bool (T::*proc_type)();
+ concrete_protected_call(T* o, proc_type p)
+ : obj(o), proc(p) {}
+private:
+ virtual bool call()const;
+ T* obj;
+ proc_type proc;
+};
+
+template <class T>
+bool concrete_protected_call<T>::call()const
+{
+ return (obj->*proc)();
+}
+
+}
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/v4/regbase.hpp b/3rdParty/Boost/boost/regex/v4/regbase.hpp
new file mode 100644
index 0000000..2b737d5
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regbase.hpp
@@ -0,0 +1,180 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regbase.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares class regbase.
+ */
+
+#ifndef BOOST_REGEX_V4_REGBASE_HPP
+#define BOOST_REGEX_V4_REGBASE_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+//
+// class regbase
+// handles error codes and flags
+//
+class BOOST_REGEX_DECL regbase
+{
+public:
+ enum flag_type_
+ {
+ //
+ // Divide the flags up into logical groups:
+ // bits 0-7 indicate main synatx type.
+ // bits 8-15 indicate syntax subtype.
+ // bits 16-31 indicate options that are common to all
+ // regex syntaxes.
+ // In all cases the default is 0.
+ //
+ // Main synatx group:
+ //
+ perl_syntax_group = 0, // default
+ basic_syntax_group = 1, // POSIX basic
+ literal = 2, // all characters are literals
+ main_option_type = literal | basic_syntax_group | perl_syntax_group, // everything!
+ //
+ // options specific to perl group:
+ //
+ no_bk_refs = 1 << 8, // \d not allowed
+ no_perl_ex = 1 << 9, // disable perl extensions
+ no_mod_m = 1 << 10, // disable Perl m modifier
+ mod_x = 1 << 11, // Perl x modifier
+ mod_s = 1 << 12, // force s modifier on (overrides match_not_dot_newline)
+ no_mod_s = 1 << 13, // force s modifier off (overrides match_not_dot_newline)
+
+ //
+ // options specific to basic group:
+ //
+ no_char_classes = 1 << 8, // [[:CLASS:]] not allowed
+ no_intervals = 1 << 9, // {x,y} not allowed
+ bk_plus_qm = 1 << 10, // uses \+ and \?
+ bk_vbar = 1 << 11, // use \| for alternatives
+ emacs_ex = 1 << 12, // enables emacs extensions
+
+ //
+ // options common to all groups:
+ //
+ no_escape_in_lists = 1 << 16, // '\' not special inside [...]
+ newline_alt = 1 << 17, // \n is the same as |
+ no_except = 1 << 18, // no exception on error
+ failbit = 1 << 19, // error flag
+ icase = 1 << 20, // characters are matched regardless of case
+ nocollate = 0, // don't use locale specific collation (deprecated)
+ collate = 1 << 21, // use locale specific collation
+ nosubs = 1 << 22, // don't mark sub-expressions
+ save_subexpression_location = 1 << 23, // save subexpression locations
+ no_empty_expressions = 1 << 24, // no empty expressions allowed
+ optimize = 0, // not really supported
+
+
+
+ basic = basic_syntax_group | collate | no_escape_in_lists,
+ extended = no_bk_refs | collate | no_perl_ex | no_escape_in_lists,
+ normal = 0,
+ emacs = basic_syntax_group | collate | emacs_ex | bk_vbar,
+ awk = no_bk_refs | collate | no_perl_ex,
+ grep = basic | newline_alt,
+ egrep = extended | newline_alt,
+ sed = basic,
+ perl = normal,
+ ECMAScript = normal,
+ JavaScript = normal,
+ JScript = normal
+ };
+ typedef unsigned int flag_type;
+
+ enum restart_info
+ {
+ restart_any = 0,
+ restart_word = 1,
+ restart_line = 2,
+ restart_buf = 3,
+ restart_continue = 4,
+ restart_lit = 5,
+ restart_fixed_lit = 6,
+ restart_count = 7
+ };
+};
+
+//
+// provide std lib proposal compatible constants:
+//
+namespace regex_constants{
+
+ enum flag_type_
+ {
+
+ no_except = ::boost::regbase::no_except,
+ failbit = ::boost::regbase::failbit,
+ literal = ::boost::regbase::literal,
+ icase = ::boost::regbase::icase,
+ nocollate = ::boost::regbase::nocollate,
+ collate = ::boost::regbase::collate,
+ nosubs = ::boost::regbase::nosubs,
+ optimize = ::boost::regbase::optimize,
+ bk_plus_qm = ::boost::regbase::bk_plus_qm,
+ bk_vbar = ::boost::regbase::bk_vbar,
+ no_intervals = ::boost::regbase::no_intervals,
+ no_char_classes = ::boost::regbase::no_char_classes,
+ no_escape_in_lists = ::boost::regbase::no_escape_in_lists,
+ no_mod_m = ::boost::regbase::no_mod_m,
+ mod_x = ::boost::regbase::mod_x,
+ mod_s = ::boost::regbase::mod_s,
+ no_mod_s = ::boost::regbase::no_mod_s,
+ save_subexpression_location = ::boost::regbase::save_subexpression_location,
+ no_empty_expressions = ::boost::regbase::no_empty_expressions,
+
+ basic = ::boost::regbase::basic,
+ extended = ::boost::regbase::extended,
+ normal = ::boost::regbase::normal,
+ emacs = ::boost::regbase::emacs,
+ awk = ::boost::regbase::awk,
+ grep = ::boost::regbase::grep,
+ egrep = ::boost::regbase::egrep,
+ sed = basic,
+ perl = normal,
+ ECMAScript = normal,
+ JavaScript = normal,
+ JScript = normal
+ };
+ typedef ::boost::regbase::flag_type syntax_option_type;
+
+} // namespace regex_constants
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex.hpp b/3rdParty/Boost/boost/regex/v4/regex.hpp
new file mode 100644
index 0000000..7cc260a
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex.hpp
@@ -0,0 +1,202 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares boost::basic_regex<> and associated
+ * functions and classes. This header is the main
+ * entry point for the template regex code.
+ */
+
+#ifndef BOOST_RE_REGEX_HPP_INCLUDED
+#define BOOST_RE_REGEX_HPP_INCLUDED
+
+#ifdef __cplusplus
+
+// what follows is all C++ don't include in C builds!!
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#include <boost/regex/v4/regex_workaround.hpp>
+#endif
+
+#ifndef BOOST_REGEX_FWD_HPP
+#include <boost/regex_fwd.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_HPP
+#include <boost/regex/regex_traits.hpp>
+#endif
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#include <boost/regex/v4/error_type.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_MATCH_FLAGS
+#include <boost/regex/v4/match_flags.hpp>
+#endif
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#include <boost/regex/v4/regex_raw_buffer.hpp>
+#endif
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#include <boost/regex/pattern_except.hpp>
+#endif
+
+#ifndef BOOST_REGEX_V4_CHAR_REGEX_TRAITS_HPP
+#include <boost/regex/v4/char_regex_traits.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_STATES_HPP
+#include <boost/regex/v4/states.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGBASE_HPP
+#include <boost/regex/v4/regbase.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_ITERATOR_TRAITS_HPP
+#include <boost/regex/v4/iterator_traits.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP
+#include <boost/regex/v4/basic_regex.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_CREATOR_HPP
+#include <boost/regex/v4/basic_regex_creator.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_BASIC_REGEX_PARSER_HPP
+#include <boost/regex/v4/basic_regex_parser.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP
+#include <boost/regex/v4/sub_match.hpp>
+#endif
+#ifndef BOOST_REGEX_FORMAT_HPP
+#include <boost/regex/v4/regex_format.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_MATCH_RESULTS_HPP
+#include <boost/regex/v4/match_results.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_PROTECTED_CALL_HPP
+#include <boost/regex/v4/protected_call.hpp>
+#endif
+#ifndef BOOST_REGEX_MATCHER_HPP
+#include <boost/regex/v4/perl_matcher.hpp>
+#endif
+//
+// template instances:
+//
+#define BOOST_REGEX_CHAR_T char
+#ifdef BOOST_REGEX_NARROW_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+
+#ifndef BOOST_NO_WREGEX
+#define BOOST_REGEX_CHAR_T wchar_t
+#ifdef BOOST_REGEX_WIDE_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+#endif
+
+#if !defined(BOOST_NO_WREGEX) && defined(BOOST_REGEX_HAS_OTHER_WCHAR_T)
+#define BOOST_REGEX_CHAR_T unsigned short
+#ifdef BOOST_REGEX_US_INSTANTIATE
+# define BOOST_REGEX_INSTANTIATE
+#endif
+#include <boost/regex/v4/instances.hpp>
+#undef BOOST_REGEX_CHAR_T
+#ifdef BOOST_REGEX_INSTANTIATE
+# undef BOOST_REGEX_INSTANTIATE
+#endif
+#endif
+
+
+namespace boost{
+#ifdef BOOST_REGEX_NO_FWD
+typedef basic_regex<char, regex_traits<char> > regex;
+#ifndef BOOST_NO_WREGEX
+typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
+#endif
+#endif
+
+typedef match_results<const char*> cmatch;
+typedef match_results<std::string::const_iterator> smatch;
+#ifndef BOOST_NO_WREGEX
+typedef match_results<const wchar_t*> wcmatch;
+typedef match_results<std::wstring::const_iterator> wsmatch;
+#endif
+
+} // namespace boost
+#ifndef BOOST_REGEX_MATCH_HPP
+#include <boost/regex/v4/regex_match.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP
+#include <boost/regex/v4/regex_search.hpp>
+#endif
+#ifndef BOOST_REGEX_ITERATOR_HPP
+#include <boost/regex/v4/regex_iterator.hpp>
+#endif
+#ifndef BOOST_REGEX_TOKEN_ITERATOR_HPP
+#include <boost/regex/v4/regex_token_iterator.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP
+#include <boost/regex/v4/regex_grep.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP
+#include <boost/regex/v4/regex_replace.hpp>
+#endif
+#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP
+#include <boost/regex/v4/regex_merge.hpp>
+#endif
+#ifndef BOOST_REGEX_SPLIT_HPP
+#include <boost/regex/v4/regex_split.hpp>
+#endif
+
+#endif // __cplusplus
+
+#endif // include
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_format.hpp b/3rdParty/Boost/boost/regex/v4/regex_format.hpp
new file mode 100644
index 0000000..d114c2e
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_format.hpp
@@ -0,0 +1,662 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_format.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides formatting output routines for search and replace
+ * operations. Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_FORMAT_HPP
+#define BOOST_REGEX_FORMAT_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+//
+// Forward declaration:
+//
+ template <class BidiIterator, class Allocator = BOOST_DEDUCED_TYPENAME std::vector<sub_match<BidiIterator> >::allocator_type >
+class match_results;
+
+namespace re_detail{
+
+//
+// struct trivial_format_traits:
+// defines minimum localisation support for formatting
+// in the case that the actual regex traits is unavailable.
+//
+template <class charT>
+struct trivial_format_traits
+{
+ typedef charT char_type;
+
+ static std::ptrdiff_t length(const charT* p)
+ {
+ return global_length(p);
+ }
+ static charT tolower(charT c)
+ {
+ return ::boost::re_detail::global_lower(c);
+ }
+ static charT toupper(charT c)
+ {
+ return ::boost::re_detail::global_upper(c);
+ }
+ static int value(const charT c, int radix)
+ {
+ int result = global_value(c);
+ return result >= radix ? -1 : result;
+ }
+ int toi(const charT*& p1, const charT* p2, int radix)const
+ {
+ return global_toi(p1, p2, radix, *this);
+ }
+};
+
+template <class OutputIterator, class Results, class traits>
+class basic_regex_formatter
+{
+public:
+ typedef typename traits::char_type char_type;
+ basic_regex_formatter(OutputIterator o, const Results& r, const traits& t)
+ : m_traits(t), m_results(r), m_out(o), m_state(output_copy), m_restore_state(output_copy), m_have_conditional(false) {}
+ OutputIterator format(const char_type* p1, const char_type* p2, match_flag_type f);
+ OutputIterator format(const char_type* p1, match_flag_type f)
+ {
+ return format(p1, p1 + m_traits.length(p1), f);
+ }
+private:
+ typedef typename Results::value_type sub_match_type;
+ enum output_state
+ {
+ output_copy,
+ output_next_lower,
+ output_next_upper,
+ output_lower,
+ output_upper,
+ output_none
+ };
+
+ void put(char_type c);
+ void put(const sub_match_type& sub);
+ void format_all();
+ void format_perl();
+ void format_escape();
+ void format_conditional();
+ void format_until_scope_end();
+
+ const traits& m_traits; // the traits class for localised formatting operations
+ const Results& m_results; // the match_results being used.
+ OutputIterator m_out; // where to send output.
+ const char_type* m_position; // format string, current position
+ const char_type* m_end; // format string end
+ match_flag_type m_flags; // format flags to use
+ output_state m_state; // what to do with the next character
+ output_state m_restore_state; // what state to restore to.
+ bool m_have_conditional; // we are parsing a conditional
+private:
+ basic_regex_formatter(const basic_regex_formatter&);
+ basic_regex_formatter& operator=(const basic_regex_formatter&);
+};
+
+template <class OutputIterator, class Results, class traits>
+OutputIterator basic_regex_formatter<OutputIterator, Results, traits>::format(const char_type* p1, const char_type* p2, match_flag_type f)
+{
+ m_position = p1;
+ m_end = p2;
+ m_flags = f;
+ format_all();
+ return m_out;
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_all()
+{
+ // over and over:
+ while(m_position != m_end)
+ {
+ switch(*m_position)
+ {
+ case '&':
+ if(m_flags & ::boost::regex_constants::format_sed)
+ {
+ ++m_position;
+ put(m_results[0]);
+ break;
+ }
+ put(*m_position++);
+ break;
+ case '\\':
+ format_escape();
+ break;
+ case '(':
+ if(m_flags & boost::regex_constants::format_all)
+ {
+ ++m_position;
+ bool have_conditional = m_have_conditional;
+ m_have_conditional = false;
+ format_until_scope_end();
+ m_have_conditional = have_conditional;
+ if(m_position == m_end)
+ return;
+ BOOST_ASSERT(*m_position == static_cast<char_type>(')'));
+ ++m_position; // skip the closing ')'
+ break;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case ')':
+ if(m_flags & boost::regex_constants::format_all)
+ {
+ return;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case ':':
+ if((m_flags & boost::regex_constants::format_all) && m_have_conditional)
+ {
+ return;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case '?':
+ if(m_flags & boost::regex_constants::format_all)
+ {
+ ++m_position;
+ format_conditional();
+ break;
+ }
+ put(*m_position);
+ ++m_position;
+ break;
+ case '$':
+ if((m_flags & format_sed) == 0)
+ {
+ format_perl();
+ break;
+ }
+ // fall through, not a special character:
+ default:
+ put(*m_position);
+ ++m_position;
+ break;
+ }
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_perl()
+{
+ //
+ // On entry *m_position points to a '$' character
+ // output the information that goes with it:
+ //
+ BOOST_ASSERT(*m_position == '$');
+ //
+ // see if this is a trailing '$':
+ //
+ if(++m_position == m_end)
+ {
+ --m_position;
+ put(*m_position);
+ ++m_position;
+ return;
+ }
+ //
+ // OK find out what kind it is:
+ //
+ bool have_brace = false;
+ const char_type* save_position = m_position;
+ switch(*m_position)
+ {
+ case '&':
+ ++m_position;
+ put(this->m_results[0]);
+ break;
+ case '`':
+ ++m_position;
+ put(this->m_results.prefix());
+ break;
+ case '\'':
+ ++m_position;
+ put(this->m_results.suffix());
+ break;
+ case '$':
+ put(*m_position++);
+ break;
+ case '{':
+ have_brace = true;
+ ++m_position;
+ // fall through....
+ default:
+ // see if we have a number:
+ {
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
+ int v = m_traits.toi(m_position, m_position + len, 10);
+ if((v < 0) || (have_brace && ((m_position == m_end) || (*m_position != '}'))))
+ {
+ // leave the $ as is, and carry on:
+ m_position = --save_position;
+ put(*m_position);
+ ++m_position;
+ break;
+ }
+ // otherwise output sub v:
+ put(this->m_results[v]);
+ if(have_brace)
+ ++m_position;
+ }
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_escape()
+{
+ // skip the escape and check for trailing escape:
+ if(++m_position == m_end)
+ {
+ put(static_cast<char_type>('\\'));
+ return;
+ }
+ // now switch on the escape type:
+ switch(*m_position)
+ {
+ case 'a':
+ put(static_cast<char_type>('\a'));
+ ++m_position;
+ break;
+ case 'f':
+ put(static_cast<char_type>('\f'));
+ ++m_position;
+ break;
+ case 'n':
+ put(static_cast<char_type>('\n'));
+ ++m_position;
+ break;
+ case 'r':
+ put(static_cast<char_type>('\r'));
+ ++m_position;
+ break;
+ case 't':
+ put(static_cast<char_type>('\t'));
+ ++m_position;
+ break;
+ case 'v':
+ put(static_cast<char_type>('\v'));
+ ++m_position;
+ break;
+ case 'x':
+ if(++m_position == m_end)
+ {
+ put(static_cast<char_type>('x'));
+ return;
+ }
+ // maybe have \x{ddd}
+ if(*m_position == static_cast<char_type>('{'))
+ {
+ ++m_position;
+ int val = m_traits.toi(m_position, m_end, 16);
+ if(val < 0)
+ {
+ // invalid value treat everything as literals:
+ put(static_cast<char_type>('x'));
+ put(static_cast<char_type>('{'));
+ return;
+ }
+ if(*m_position != static_cast<char_type>('}'))
+ {
+ while(*m_position != static_cast<char_type>('\\'))
+ --m_position;
+ ++m_position;
+ put(*m_position++);
+ return;
+ }
+ ++m_position;
+ put(static_cast<char_type>(val));
+ return;
+ }
+ else
+ {
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
+ int val = m_traits.toi(m_position, m_position + len, 16);
+ if(val < 0)
+ {
+ --m_position;
+ put(*m_position++);
+ return;
+ }
+ put(static_cast<char_type>(val));
+ }
+ break;
+ case 'c':
+ if(++m_position == m_end)
+ {
+ --m_position;
+ put(*m_position++);
+ return;
+ }
+ put(static_cast<char_type>(*m_position++ % 32));
+ break;
+ case 'e':
+ put(static_cast<char_type>(27));
+ ++m_position;
+ break;
+ default:
+ // see if we have a perl specific escape:
+ if((m_flags & boost::regex_constants::format_sed) == 0)
+ {
+ bool breakout = false;
+ switch(*m_position)
+ {
+ case 'l':
+ ++m_position;
+ m_restore_state = m_state;
+ m_state = output_next_lower;
+ breakout = true;
+ break;
+ case 'L':
+ ++m_position;
+ m_state = output_lower;
+ breakout = true;
+ break;
+ case 'u':
+ ++m_position;
+ m_restore_state = m_state;
+ m_state = output_next_upper;
+ breakout = true;
+ break;
+ case 'U':
+ ++m_position;
+ m_state = output_upper;
+ breakout = true;
+ break;
+ case 'E':
+ ++m_position;
+ m_state = output_copy;
+ breakout = true;
+ break;
+ }
+ if(breakout)
+ break;
+ }
+ // see if we have a \n sed style backreference:
+ int v = m_traits.toi(m_position, m_position+1, 10);
+ if((v > 0) || ((v == 0) && (m_flags & ::boost::regex_constants::format_sed)))
+ {
+ put(m_results[v]);
+ break;
+ }
+ else if(v == 0)
+ {
+ // octal ecape sequence:
+ --m_position;
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(4), len);
+ v = m_traits.toi(m_position, m_position + len, 8);
+ BOOST_ASSERT(v >= 0);
+ put(static_cast<char_type>(v));
+ break;
+ }
+ // Otherwise output the character "as is":
+ put(*m_position++);
+ break;
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_conditional()
+{
+ if(m_position == m_end)
+ {
+ // oops trailing '?':
+ put(static_cast<char_type>('?'));
+ return;
+ }
+ std::ptrdiff_t len = ::boost::re_detail::distance(m_position, m_end);
+ len = (std::min)(static_cast<std::ptrdiff_t>(2), len);
+ int v = m_traits.toi(m_position, m_position + len, 10);
+ if(v < 0)
+ {
+ // oops not a number:
+ put(static_cast<char_type>('?'));
+ return;
+ }
+
+ // output varies depending upon whether sub-expression v matched or not:
+ if(m_results[v].matched)
+ {
+ m_have_conditional = true;
+ format_all();
+ m_have_conditional = false;
+ if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
+ {
+ // skip the ':':
+ ++m_position;
+ // save output state, then turn it off:
+ output_state saved_state = m_state;
+ m_state = output_none;
+ // format the rest of this scope:
+ format_until_scope_end();
+ // restore output state:
+ m_state = saved_state;
+ }
+ }
+ else
+ {
+ // save output state, then turn it off:
+ output_state saved_state = m_state;
+ m_state = output_none;
+ // format until ':' or ')':
+ m_have_conditional = true;
+ format_all();
+ m_have_conditional = false;
+ // restore state:
+ m_state = saved_state;
+ if((m_position != m_end) && (*m_position == static_cast<char_type>(':')))
+ {
+ // skip the ':':
+ ++m_position;
+ // format the rest of this scope:
+ format_until_scope_end();
+ }
+ }
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::format_until_scope_end()
+{
+ do
+ {
+ format_all();
+ if((m_position == m_end) || (*m_position == static_cast<char_type>(')')))
+ return;
+ put(*m_position++);
+ }while(m_position != m_end);
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::put(char_type c)
+{
+ // write a single character to output
+ // according to which case translation mode we are in:
+ switch(this->m_state)
+ {
+ case output_none:
+ return;
+ case output_next_lower:
+ c = m_traits.tolower(c);
+ this->m_state = m_restore_state;
+ break;
+ case output_next_upper:
+ c = m_traits.toupper(c);
+ this->m_state = m_restore_state;
+ break;
+ case output_lower:
+ c = m_traits.tolower(c);
+ break;
+ case output_upper:
+ c = m_traits.toupper(c);
+ break;
+ default:
+ break;
+ }
+ *m_out = c;
+ ++m_out;
+}
+
+template <class OutputIterator, class Results, class traits>
+void basic_regex_formatter<OutputIterator, Results, traits>::put(const sub_match_type& sub)
+{
+ typedef typename sub_match_type::iterator iterator_type;
+ iterator_type i = sub.first;
+ while(i != sub.second)
+ {
+ put(*i);
+ ++i;
+ }
+}
+
+template <class S>
+class string_out_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<std::output_iterator_tag, typename S::value_type>
+#endif
+{
+ S* out;
+public:
+ string_out_iterator(S& s) : out(&s) {}
+ string_out_iterator& operator++() { return *this; }
+ string_out_iterator& operator++(int) { return *this; }
+ string_out_iterator& operator*() { return *this; }
+ string_out_iterator& operator=(typename S::value_type v)
+ {
+ out->append(1, v);
+ return *this;
+ }
+
+#ifdef BOOST_NO_STD_ITERATOR
+ typedef std::ptrdiff_t difference_type;
+ typedef typename S::value_type value_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+ typedef std::output_iterator_tag iterator_category;
+#endif
+};
+
+template <class OutputIterator, class Iterator, class Alloc, class charT, class traits>
+OutputIterator regex_format_imp(OutputIterator out,
+ const match_results<Iterator, Alloc>& m,
+ const charT* p1, const charT* p2,
+ match_flag_type flags,
+ const traits& t
+ )
+{
+ if(flags & regex_constants::format_literal)
+ {
+ return re_detail::copy(p1, p2, out);
+ }
+
+ re_detail::basic_regex_formatter<
+ OutputIterator,
+ match_results<Iterator, Alloc>,
+ traits > f(out, m, t);
+ return f.format(p1, p2, flags);
+}
+
+
+} // namespace re_detail
+
+template <class OutputIterator, class Iterator, class charT>
+OutputIterator regex_format(OutputIterator out,
+ const match_results<Iterator>& m,
+ const charT* fmt,
+ match_flag_type flags = format_all
+ )
+{
+ re_detail::trivial_format_traits<charT> traits;
+ return re_detail::regex_format_imp(out, m, fmt, fmt + traits.length(fmt), flags, traits);
+}
+
+template <class OutputIterator, class Iterator, class charT>
+OutputIterator regex_format(OutputIterator out,
+ const match_results<Iterator>& m,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = format_all
+ )
+{
+ re_detail::trivial_format_traits<charT> traits;
+ return re_detail::regex_format_imp(out, m, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+}
+
+template <class Iterator, class charT>
+std::basic_string<charT> regex_format(const match_results<Iterator>& m,
+ const charT* fmt,
+ match_flag_type flags = format_all)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ re_detail::trivial_format_traits<charT> traits;
+ re_detail::regex_format_imp(i, m, fmt, fmt + traits.length(fmt), flags, traits);
+ return result;
+}
+
+template <class Iterator, class charT>
+std::basic_string<charT> regex_format(const match_results<Iterator>& m,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = format_all)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ re_detail::trivial_format_traits<charT> traits;
+ re_detail::regex_format_imp(i, m, fmt.data(), fmt.data() + fmt.size(), flags, traits);
+ return result;
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_FORMAT_HPP
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_fwd.hpp b/3rdParty/Boost/boost/regex/v4/regex_fwd.hpp
new file mode 100644
index 0000000..3076b06
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_fwd.hpp
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_fwd.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Forward declares boost::basic_regex<> and
+ * associated typedefs.
+ */
+
+#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
+#define BOOST_REGEX_FWD_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+//
+// define BOOST_REGEX_NO_FWD if this
+// header doesn't work!
+//
+#ifdef BOOST_REGEX_NO_FWD
+# ifndef BOOST_RE_REGEX_HPP
+# include <boost/regex.hpp>
+# endif
+#else
+
+namespace boost{
+
+template <class charT>
+class cpp_regex_traits;
+template <class charT>
+struct c_regex_traits;
+template <class charT>
+class w32_regex_traits;
+
+#ifdef BOOST_REGEX_USE_WIN32_LOCALE
+template <class charT, class implementationT = w32_regex_traits<charT> >
+struct regex_traits;
+#elif defined(BOOST_REGEX_USE_CPP_LOCALE)
+template <class charT, class implementationT = cpp_regex_traits<charT> >
+struct regex_traits;
+#else
+template <class charT, class implementationT = c_regex_traits<charT> >
+struct regex_traits;
+#endif
+
+template <class charT, class traits = regex_traits<charT> >
+class basic_regex;
+
+typedef basic_regex<char, regex_traits<char> > regex;
+#ifndef BOOST_NO_WREGEX
+typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_NO_FWD
+
+#endif
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_grep.hpp b/3rdParty/Boost/boost/regex/v4/regex_grep.hpp
new file mode 100644
index 0000000..3a3d906
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_grep.hpp
@@ -0,0 +1,155 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_grep.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_grep implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_GREP_HPP
+#define BOOST_REGEX_V4_REGEX_GREP_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+//
+// regex_grep:
+// find all non-overlapping matches within the sequence first last:
+//
+template <class Predicate, class BidiIterator, class charT, class traits>
+inline unsigned int regex_grep(Predicate foo,
+ BidiIterator first,
+ BidiIterator last,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ if(e.flags() & regex_constants::failbit)
+ return false;
+
+ typedef typename match_results<BidiIterator>::allocator_type match_allocator_type;
+
+ match_results<BidiIterator> m;
+ re_detail::perl_matcher<BidiIterator, match_allocator_type, traits> matcher(first, last, m, e, flags, first);
+ unsigned int count = 0;
+ while(matcher.find())
+ {
+ ++count;
+ if(0 == foo(m))
+ return count; // caller doesn't want to go on
+ if(m[0].second == last)
+ return count; // we've reached the end, don't try and find an extra null match.
+ if(m.length() == 0)
+ {
+ if(m[0].second == last)
+ return count;
+ // we found a NULL-match, now try to find
+ // a non-NULL one at the same position:
+ match_results<BidiIterator, match_allocator_type> m2(m);
+ matcher.setf(match_not_null | match_continuous);
+ if(matcher.find())
+ {
+ ++count;
+ if(0 == foo(m))
+ return count;
+ }
+ else
+ {
+ // reset match back to where it was:
+ m = m2;
+ }
+ matcher.unsetf((match_not_null | match_continuous) & ~flags);
+ }
+ }
+ return count;
+}
+
+//
+// regex_grep convenience interfaces:
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+//
+// this isn't really a partial specialisation, but template function
+// overloading - if the compiler doesn't support partial specialisation
+// then it really won't support this either:
+template <class Predicate, class charT, class traits>
+inline unsigned int regex_grep(Predicate foo, const charT* str,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, str, str + traits::length(str), e, flags);
+}
+
+template <class Predicate, class ST, class SA, class charT, class traits>
+inline unsigned int regex_grep(Predicate foo, const std::basic_string<charT, ST, SA>& s,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, s.begin(), s.end(), e, flags);
+}
+#else // partial specialisation
+inline unsigned int regex_grep(bool (*foo)(const cmatch&), const char* str,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, str, str + regex::traits_type::length(str), e, flags);
+}
+#ifndef BOOST_NO_WREGEX
+inline unsigned int regex_grep(bool (*foo)(const wcmatch&), const wchar_t* str,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, str, str + wregex::traits_type::length(str), e, flags);
+}
+#endif
+inline unsigned int regex_grep(bool (*foo)(const match_results<std::string::const_iterator>&), const std::string& s,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, s.begin(), s.end(), e, flags);
+}
+#if !defined(BOOST_NO_WREGEX)
+inline unsigned int regex_grep(bool (*foo)(const match_results<std::basic_string<wchar_t>::const_iterator>&),
+ const std::basic_string<wchar_t>& s,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_grep(foo, s.begin(), s.end(), e, flags);
+}
+#endif
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_GREP_HPP
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_iterator.hpp b/3rdParty/Boost/boost/regex/v4/regex_iterator.hpp
new file mode 100644
index 0000000..c2f2c49
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_iterator.hpp
@@ -0,0 +1,201 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+#define BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+
+#include <boost/shared_ptr.hpp>
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <class BidirectionalIterator,
+ class charT,
+ class traits>
+class regex_iterator_implementation
+{
+ typedef basic_regex<charT, traits> regex_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator base; // start of sequence
+ BidirectionalIterator end; // end of sequence
+ const regex_type re; // the expression
+ match_flag_type flags; // flags for matching
+
+public:
+ regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
+ : base(), end(last), re(*p), flags(f){}
+ bool init(BidirectionalIterator first)
+ {
+ base = first;
+ return regex_search(first, end, what, re, flags);
+ }
+ bool compare(const regex_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
+ }
+ const match_results<BidirectionalIterator>& get()
+ { return what; }
+ bool next()
+ {
+ //if(what.prefix().first != what[0].second)
+ // flags |= match_prev_avail;
+ BidirectionalIterator next_start = what[0].second;
+ match_flag_type f(flags);
+ if(!what.length())
+ f |= regex_constants::match_not_initial_null;
+ //if(base != next_start)
+ // f |= regex_constants::match_not_bob;
+ bool result = regex_search(next_start, end, what, re, f, base);
+ if(result)
+ what.set_base(base);
+ return result;
+ }
+private:
+ regex_iterator_implementation& operator=(const regex_iterator_implementation&);
+};
+
+template <class BidirectionalIterator,
+ class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type,
+ class traits = regex_traits<charT> >
+class regex_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ match_results<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const match_results<BidirectionalIterator>*,
+ const match_results<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef regex_iterator_implementation<BidirectionalIterator, charT, traits> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef basic_regex<charT, traits> regex_type;
+ typedef match_results<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ regex_iterator(){}
+ regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
+ const regex_type& re,
+ match_flag_type m = match_default)
+ : pdata(new impl(&re, b, m))
+ {
+ if(!pdata->init(a))
+ {
+ pdata.reset();
+ }
+ }
+ regex_iterator(const regex_iterator& that)
+ : pdata(that.pdata) {}
+ regex_iterator& operator=(const regex_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const regex_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const regex_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ regex_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ regex_iterator operator++(int)
+ {
+ regex_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef regex_iterator<const char*> cregex_iterator;
+typedef regex_iterator<std::string::const_iterator> sregex_iterator;
+#ifndef BOOST_NO_WREGEX
+typedef regex_iterator<const wchar_t*> wcregex_iterator;
+typedef regex_iterator<std::wstring::const_iterator> wsregex_iterator;
+#endif
+
+// make_regex_iterator:
+template <class charT, class traits>
+inline regex_iterator<const charT*, charT, traits> make_regex_iterator(const charT* p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, m);
+}
+template <class charT, class traits, class ST, class SA>
+inline regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, m);
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_match.hpp b/3rdParty/Boost/boost/regex/v4/regex_match.hpp
new file mode 100644
index 0000000..e947a15
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_match.hpp
@@ -0,0 +1,382 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_match.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Regular expression matching algorithms.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+
+#ifndef BOOST_REGEX_MATCH_HPP
+#define BOOST_REGEX_MATCH_HPP
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+//
+// proc regex_match
+// returns true if the specified regular expression matches
+// the whole of the input. Fills in what matched in m.
+//
+template <class BidiIterator, class Allocator, class charT, class traits>
+bool regex_match(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, first);
+ return matcher.match();
+}
+template <class iterator, class charT, class traits>
+bool regex_match(iterator first, iterator last,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ match_results<iterator> m;
+ return regex_match(first, last, m, e, flags | regex_constants::match_any);
+}
+//
+// query_match convenience interfaces:
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+//
+// this isn't really a partial specialisation, but template function
+// overloading - if the compiler doesn't support partial specialisation
+// then it really won't support this either:
+template <class charT, class Allocator, class traits>
+inline bool regex_match(const charT* str,
+ match_results<const charT*, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + traits::length(str), m, e, flags);
+}
+
+template <class ST, class SA, class Allocator, class charT, class traits>
+inline bool regex_match(const std::basic_string<charT, ST, SA>& s,
+ match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+template <class charT, class traits>
+inline bool regex_match(const charT* str,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const charT*> m;
+ return regex_match(str, str + traits::length(str), m, e, flags | regex_constants::match_any);
+}
+
+template <class ST, class SA, class charT, class traits>
+inline bool regex_match(const std::basic_string<charT, ST, SA>& s,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ typedef typename std::basic_string<charT, ST, SA>::const_iterator iterator;
+ match_results<iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#else // partial ordering
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const char* str,
+ cmatch& m,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const char* str,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const char*> m;
+ return regex_match(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+#ifndef BOOST_NO_WREGEX
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const wchar_t* str,
+ wcmatch& m,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_match(const wchar_t* str,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<const wchar_t*> m;
+ return regex_match(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+#endif
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const basic_regex<char, cpp_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const basic_regex<char, c_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const std::string& s,
+ smatch& m,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::string& s,
+ const basic_regex<char, w32_regex_traits<char> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::string::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+#if !defined(BOOST_NO_WREGEX)
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_STD_LOCALE
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const basic_regex<wchar_t, cpp_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const basic_regex<wchar_t, c_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ match_results<std::basic_string<wchar_t>::const_iterator>& m,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ return regex_match(s.begin(), s.end(), m, e, flags);
+}
+inline bool regex_match(const std::basic_string<wchar_t>& s,
+ const basic_regex<wchar_t, w32_regex_traits<wchar_t> >& e,
+ match_flag_type flags = match_default)
+{
+ match_results<std::basic_string<wchar_t>::const_iterator> m;
+ return regex_match(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#endif
+#endif
+
+#endif
+
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_MATCH_HPP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_merge.hpp b/3rdParty/Boost/boost/regex/v4/regex_merge.hpp
new file mode 100644
index 0000000..404ca77
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_merge.hpp
@@ -0,0 +1,93 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_format.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides formatting output routines for search and replace
+ * operations. Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_MERGE_HPP
+#define BOOST_REGEX_V4_REGEX_MERGE_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <class OutputIterator, class Iterator, class traits, class charT>
+inline OutputIterator regex_merge(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(out, first, last, e, fmt, flags);
+}
+
+template <class OutputIterator, class Iterator, class traits, class charT>
+inline OutputIterator regex_merge(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_merge(out, first, last, e, fmt.c_str(), flags);
+}
+
+template <class traits, class charT>
+inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(s, e, fmt, flags);
+}
+
+template <class traits, class charT>
+inline std::basic_string<charT> regex_merge(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(s, e, fmt, flags);
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_MERGE_HPP
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp b/3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp
new file mode 100644
index 0000000..52d45a2
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_raw_buffer.hpp
@@ -0,0 +1,210 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_raw_buffer.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Raw character buffer for regex code.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_RAW_BUFFER_HPP
+#define BOOST_REGEX_RAW_BUFFER_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <algorithm>
+#include <cstddef>
+
+namespace boost{
+ namespace re_detail{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+struct empty_padding{};
+
+union padding
+{
+ void* p;
+ unsigned int i;
+};
+
+template <int N>
+struct padding3
+{
+ enum{
+ padding_size = 8,
+ padding_mask = 7
+ };
+};
+
+template<>
+struct padding3<2>
+{
+ enum{
+ padding_size = 2,
+ padding_mask = 1
+ };
+};
+
+template<>
+struct padding3<4>
+{
+ enum{
+ padding_size = 4,
+ padding_mask = 3
+ };
+};
+
+template<>
+struct padding3<8>
+{
+ enum{
+ padding_size = 8,
+ padding_mask = 7
+ };
+};
+
+template<>
+struct padding3<16>
+{
+ enum{
+ padding_size = 16,
+ padding_mask = 15
+ };
+};
+
+enum{
+ padding_size = padding3<sizeof(padding)>::padding_size,
+ padding_mask = padding3<sizeof(padding)>::padding_mask
+};
+
+//
+// class raw_storage
+// basically this is a simplified vector<unsigned char>
+// this is used by basic_regex for expression storage
+//
+
+class BOOST_REGEX_DECL raw_storage
+{
+public:
+ typedef std::size_t size_type;
+ typedef unsigned char* pointer;
+private:
+ pointer last, start, end;
+public:
+
+ raw_storage();
+ raw_storage(size_type n);
+
+ ~raw_storage()
+ {
+ ::operator delete(start);
+ }
+
+ void BOOST_REGEX_CALL resize(size_type n);
+
+ void* BOOST_REGEX_CALL extend(size_type n)
+ {
+ if(size_type(last - end) < n)
+ resize(n + (end - start));
+ register pointer result = end;
+ end += n;
+ return result;
+ }
+
+ void* BOOST_REGEX_CALL insert(size_type pos, size_type n);
+
+ size_type BOOST_REGEX_CALL size()
+ {
+ return end - start;
+ }
+
+ size_type BOOST_REGEX_CALL capacity()
+ {
+ return last - start;
+ }
+
+ void* BOOST_REGEX_CALL data()const
+ {
+ return start;
+ }
+
+ size_type BOOST_REGEX_CALL index(void* ptr)
+ {
+ return static_cast<pointer>(ptr) - static_cast<pointer>(data());
+ }
+
+ void BOOST_REGEX_CALL clear()
+ {
+ end = start;
+ }
+
+ void BOOST_REGEX_CALL align()
+ {
+ // move end up to a boundary:
+ end = start + (((end - start) + padding_mask) & ~padding_mask);
+ }
+ void swap(raw_storage& that)
+ {
+ std::swap(start, that.start);
+ std::swap(end, that.end);
+ std::swap(last, that.last);
+ }
+};
+
+inline raw_storage::raw_storage()
+{
+ last = start = end = 0;
+}
+
+inline raw_storage::raw_storage(size_type n)
+{
+ start = end = static_cast<pointer>(::operator new(n));
+ BOOST_REGEX_NOEH_ASSERT(start)
+ last = start + n;
+}
+
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace re_detail
+} // namespace boost
+
+#endif
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_replace.hpp b/3rdParty/Boost/boost/regex/v4/regex_replace.hpp
new file mode 100644
index 0000000..c4544c0
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_replace.hpp
@@ -0,0 +1,122 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_format.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides formatting output routines for search and replace
+ * operations. Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP
+#define BOOST_REGEX_V4_REGEX_REPLACE_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <class OutputIterator, class BidirectionalIterator, class traits, class charT>
+OutputIterator regex_replace(OutputIterator out,
+ BidirectionalIterator first,
+ BidirectionalIterator last,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ regex_iterator<BidirectionalIterator, charT, traits> i(first, last, e, flags);
+ regex_iterator<BidirectionalIterator, charT, traits> j;
+ if(i == j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(first, last, out);
+ }
+ else
+ {
+ BidirectionalIterator last_m(first);
+ while(i != j)
+ {
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(i->prefix().first, i->prefix().second, out);
+ out = i->format(out, fmt, flags, e);
+ last_m = (*i)[0].second;
+ if(flags & regex_constants::format_first_only)
+ break;
+ ++i;
+ }
+ if(!(flags & regex_constants::format_no_copy))
+ out = re_detail::copy(last_m, last, out);
+ }
+ return out;
+}
+
+template <class OutputIterator, class Iterator, class traits, class charT>
+inline OutputIterator regex_replace(OutputIterator out,
+ Iterator first,
+ Iterator last,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ return regex_replace(out, first, last, e, fmt.c_str(), flags);
+}
+
+template <class traits, class charT>
+std::basic_string<charT> regex_replace(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const charT* fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ regex_replace(i, s.begin(), s.end(), e, fmt, flags);
+ return result;
+}
+
+template <class traits, class charT>
+std::basic_string<charT> regex_replace(const std::basic_string<charT>& s,
+ const basic_regex<charT, traits>& e,
+ const std::basic_string<charT>& fmt,
+ match_flag_type flags = match_default)
+{
+ std::basic_string<charT> result;
+ re_detail::string_out_iterator<std::basic_string<charT> > i(result);
+ regex_replace(i, s.begin(), s.end(), e, fmt.c_str(), flags);
+ return result;
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_REPLACE_HPP
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_search.hpp b/3rdParty/Boost/boost/regex/v4/regex_search.hpp
new file mode 100644
index 0000000..cf5579d
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_search.hpp
@@ -0,0 +1,217 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_search.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_search implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_SEARCH_HPP
+#define BOOST_REGEX_V4_REGEX_SEARCH_HPP
+
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <class BidiIterator, class Allocator, class charT, class traits>
+bool regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(first, last, m, e, flags, first);
+}
+
+template <class BidiIterator, class Allocator, class charT, class traits>
+bool regex_search(BidiIterator first, BidiIterator last,
+ match_results<BidiIterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags,
+ BidiIterator base)
+{
+ if(e.flags() & regex_constants::failbit)
+ return false;
+
+ re_detail::perl_matcher<BidiIterator, Allocator, traits> matcher(first, last, m, e, flags, base);
+ return matcher.find();
+}
+
+//
+// regex_search convenience interfaces:
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+//
+// this isn't really a partial specialisation, but template function
+// overloading - if the compiler doesn't support partial specialisation
+// then it really won't support this either:
+template <class charT, class Allocator, class traits>
+inline bool regex_search(const charT* str,
+ match_results<const charT*, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + traits::length(str), m, e, flags);
+}
+
+template <class ST, class SA, class Allocator, class charT, class traits>
+inline bool regex_search(const std::basic_string<charT, ST, SA>& s,
+ match_results<typename std::basic_string<charT, ST, SA>::const_iterator, Allocator>& m,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), m, e, flags);
+}
+#else // partial overloads:
+inline bool regex_search(const char* str,
+ cmatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + regex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_search(const char* first, const char* last,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ cmatch m;
+ return regex_search(first, last, m, e, flags | regex_constants::match_any);
+}
+
+#ifndef BOOST_NO_WREGEX
+inline bool regex_search(const wchar_t* str,
+ wcmatch& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + wregex::traits_type::length(str), m, e, flags);
+}
+inline bool regex_search(const wchar_t* first, const wchar_t* last,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ wcmatch m;
+ return regex_search(first, last, m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_search(const std::string& s,
+ smatch& m,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), m, e, flags);
+}
+#if !defined(BOOST_NO_WREGEX)
+inline bool regex_search(const std::basic_string<wchar_t>& s,
+ wsmatch& m,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), m, e, flags);
+}
+#endif
+
+#endif
+
+template <class BidiIterator, class charT, class traits>
+bool regex_search(BidiIterator first, BidiIterator last,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ if(e.flags() & regex_constants::failbit)
+ return false;
+
+ match_results<BidiIterator> m;
+ typedef typename match_results<BidiIterator>::allocator_type match_alloc_type;
+ re_detail::perl_matcher<BidiIterator, match_alloc_type, traits> matcher(first, last, m, e, flags | regex_constants::match_any, first);
+ return matcher.find();
+}
+
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+
+template <class charT, class traits>
+inline bool regex_search(const charT* str,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(str, str + traits::length(str), e, flags);
+}
+
+template <class ST, class SA, class charT, class traits>
+inline bool regex_search(const std::basic_string<charT, ST, SA>& s,
+ const basic_regex<charT, traits>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_search(s.begin(), s.end(), e, flags);
+}
+#else // non-template function overloads
+inline bool regex_search(const char* str,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ cmatch m;
+ return regex_search(str, str + regex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#ifndef BOOST_NO_WREGEX
+inline bool regex_search(const wchar_t* str,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ wcmatch m;
+ return regex_search(str, str + wregex::traits_type::length(str), m, e, flags | regex_constants::match_any);
+}
+#endif
+inline bool regex_search(const std::string& s,
+ const regex& e,
+ match_flag_type flags = match_default)
+{
+ smatch m;
+ return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+#if !defined(BOOST_NO_WREGEX)
+inline bool regex_search(const std::basic_string<wchar_t>& s,
+ const wregex& e,
+ match_flag_type flags = match_default)
+{
+ wsmatch m;
+ return regex_search(s.begin(), s.end(), m, e, flags | regex_constants::match_any);
+}
+
+#endif // BOOST_NO_WREGEX
+
+#endif // partial overload
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_SEARCH_HPP
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_split.hpp b/3rdParty/Boost/boost/regex/v4/regex_split.hpp
new file mode 100644
index 0000000..a7ae350
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_split.hpp
@@ -0,0 +1,172 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_split.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Implements regex_split and associated functions.
+ * Note this is an internal header file included
+ * by regex.hpp, do not include on its own.
+ */
+
+#ifndef BOOST_REGEX_SPLIT_HPP
+#define BOOST_REGEX_SPLIT_HPP
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4800)
+#endif
+
+namespace re_detail{
+
+template <class charT>
+const basic_regex<charT>& get_default_expression(charT)
+{
+ static const charT expression_text[4] = { '\\', 's', '+', '\00', };
+ static const basic_regex<charT> e(expression_text);
+ return e;
+}
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1>
+class split_pred
+{
+ typedef std::basic_string<charT, Traits1, Alloc1> string_type;
+ typedef typename string_type::const_iterator iterator_type;
+ iterator_type* p_last;
+ OutputIterator* p_out;
+ std::size_t* p_max;
+ std::size_t initial_max;
+public:
+ split_pred(iterator_type* a, OutputIterator* b, std::size_t* c)
+ : p_last(a), p_out(b), p_max(c), initial_max(*c) {}
+
+ bool operator()(const match_results<iterator_type>& what);
+};
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1>
+bool split_pred<OutputIterator, charT, Traits1, Alloc1>::operator()
+ (const match_results<iterator_type>& what)
+{
+ *p_last = what[0].second;
+ if(what.size() > 1)
+ {
+ // output sub-expressions only:
+ for(unsigned i = 1; i < what.size(); ++i)
+ {
+ *(*p_out) = what.str(i);
+ ++(*p_out);
+ if(0 == --*p_max) return false;
+ }
+ return *p_max != 0;
+ }
+ else
+ {
+ // output $` only if it's not-null or not at the start of the input:
+ const sub_match<iterator_type>& sub = what[-1];
+ if((sub.first != sub.second) || (*p_max != initial_max))
+ {
+ *(*p_out) = sub.str();
+ ++(*p_out);
+ return --*p_max;
+ }
+ }
+ //
+ // initial null, do nothing:
+ return true;
+}
+
+} // namespace re_detail
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2>
+std::size_t regex_split(OutputIterator out,
+ std::basic_string<charT, Traits1, Alloc1>& s,
+ const basic_regex<charT, Traits2>& e,
+ match_flag_type flags,
+ std::size_t max_split)
+{
+ typedef typename std::basic_string<charT, Traits1, Alloc1>::const_iterator ci_t;
+ typedef typename match_results<ci_t>::allocator_type match_allocator;
+ ci_t last = s.begin();
+ std::size_t init_size = max_split;
+ re_detail::split_pred<OutputIterator, charT, Traits1, Alloc1> pred(&last, &out, &max_split);
+ ci_t i, j;
+ i = s.begin();
+ j = s.end();
+ regex_grep(pred, i, j, e, flags);
+ //
+ // if there is still input left, do a final push as long as max_split
+ // is not exhausted, and we're not splitting sub-expressions rather
+ // than whitespace:
+ if(max_split && (last != s.end()) && (e.mark_count() == 1))
+ {
+ *out = std::basic_string<charT, Traits1, Alloc1>((ci_t)last, (ci_t)s.end());
+ ++out;
+ last = s.end();
+ --max_split;
+ }
+ //
+ // delete from the string everything that has been processed so far:
+ s.erase(0, last - s.begin());
+ //
+ // return the number of new records pushed:
+ return init_size - max_split;
+}
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1, class Traits2>
+inline std::size_t regex_split(OutputIterator out,
+ std::basic_string<charT, Traits1, Alloc1>& s,
+ const basic_regex<charT, Traits2>& e,
+ match_flag_type flags = match_default)
+{
+ return regex_split(out, s, e, flags, UINT_MAX);
+}
+
+template <class OutputIterator, class charT, class Traits1, class Alloc1>
+inline std::size_t regex_split(OutputIterator out,
+ std::basic_string<charT, Traits1, Alloc1>& s)
+{
+ return regex_split(out, s, re_detail::get_default_expression(charT(0)), match_default, UINT_MAX);
+}
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp b/3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp
new file mode 100644
index 0000000..4e8bc36
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_token_iterator.hpp
@@ -0,0 +1,342 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_token_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides regex_token_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+#define BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+
+#include <boost/shared_ptr.hpp>
+#include <boost/detail/workaround.hpp>
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
+//
+// Borland C++ Builder 6, and Visual C++ 6,
+// can't cope with the array template constructor
+// so we have a template member that will accept any type as
+// argument, and then assert that is really is an array:
+//
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_array.hpp>
+#endif
+
+namespace boost{
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
+# pragma warning(push)
+# pragma warning(disable:4700)
+#endif
+
+template <class BidirectionalIterator,
+ class charT,
+ class traits>
+class regex_token_iterator_implementation
+{
+ typedef basic_regex<charT, traits> regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator base; // start of search area
+ BidirectionalIterator end; // end of search area
+ const regex_type re; // the expression
+ match_flag_type flags; // match flags
+ value_type result; // the current string result
+ int N; // the current sub-expression being enumerated
+ std::vector<int> subs; // the sub-expressions to enumerate
+
+public:
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f)
+ : end(last), re(*p), flags(f){ subs.push_back(sub); }
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
+ : end(last), re(*p), flags(f), subs(v){}
+#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ // assert that T really is an array:
+ BOOST_STATIC_ASSERT(::boost::is_array<T>::value);
+ const std::size_t array_size = sizeof(T) / sizeof(submatches[0]);
+ for(std::size_t i = 0; i < array_size; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#else
+ template <std::size_t CN>
+ regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ for(std::size_t i = 0; i < CN; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#endif
+#endif
+ bool init(BidirectionalIterator first)
+ {
+ N = 0;
+ base = first;
+ if(regex_search(first, end, what, re, flags, base) == true)
+ {
+ N = 0;
+ result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]);
+ return true;
+ }
+ else if((subs[N] == -1) && (first != end))
+ {
+ result.first = first;
+ result.second = end;
+ result.matched = (first != end);
+ N = -1;
+ return true;
+ }
+ return false;
+ }
+ bool compare(const regex_token_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data())
+ && (end == that.end)
+ && (flags == that.flags)
+ && (N == that.N)
+ && (what[0].first == that.what[0].first)
+ && (what[0].second == that.what[0].second);
+ }
+ const value_type& get()
+ { return result; }
+ bool next()
+ {
+ if(N == -1)
+ return false;
+ if(N+1 < (int)subs.size())
+ {
+ ++N;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ //if(what.prefix().first != what[0].second)
+ // flags |= /*match_prev_avail |*/ regex_constants::match_not_bob;
+ BidirectionalIterator last_end(what[0].second);
+ if(regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base))
+ {
+ N =0;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ else if((last_end != end) && (subs[0] == -1))
+ {
+ N =-1;
+ result.first = last_end;
+ result.second = end;
+ result.matched = (last_end != end);
+ return true;
+ }
+ return false;
+ }
+private:
+ regex_token_iterator_implementation& operator=(const regex_token_iterator_implementation&);
+};
+
+template <class BidirectionalIterator,
+ class charT = BOOST_DEDUCED_TYPENAME re_detail::regex_iterator_traits<BidirectionalIterator>::value_type,
+ class traits = regex_traits<charT> >
+class regex_token_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ sub_match<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const sub_match<BidirectionalIterator>*,
+ const sub_match<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef regex_token_iterator_implementation<BidirectionalIterator, charT, traits> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef basic_regex<charT, traits> regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ regex_token_iterator(){}
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ int submatch = 0, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatch, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const std::vector<int>& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const T& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#else
+ template <std::size_t N>
+ regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const int (&submatches)[N], match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#endif
+#endif
+ regex_token_iterator(const regex_token_iterator& that)
+ : pdata(that.pdata) {}
+ regex_token_iterator& operator=(const regex_token_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const regex_token_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const regex_token_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ regex_token_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ regex_token_iterator operator++(int)
+ {
+ regex_token_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef regex_token_iterator<const char*> cregex_token_iterator;
+typedef regex_token_iterator<std::string::const_iterator> sregex_token_iterator;
+#ifndef BOOST_NO_WREGEX
+typedef regex_token_iterator<const wchar_t*> wcregex_token_iterator;
+typedef regex_token_iterator<std::wstring::const_iterator> wsregex_token_iterator;
+#endif
+
+template <class charT, class traits>
+inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
+}
+template <class charT, class traits, class ST, class SA>
+inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
+}
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template <class charT, class traits, std::size_t N>
+inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
+}
+template <class charT, class traits, class ST, class SA, std::size_t N>
+inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
+}
+#endif
+template <class charT, class traits>
+inline regex_token_iterator<const charT*, charT, traits> make_regex_token_iterator(const charT* p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<const charT*, charT, traits>(p, p+traits::length(p), e, submatch, m);
+}
+template <class charT, class traits, class ST, class SA>
+inline regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits> make_regex_token_iterator(const std::basic_string<charT, ST, SA>& p, const basic_regex<charT, traits>& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return regex_token_iterator<typename std::basic_string<charT, ST, SA>::const_iterator, charT, traits>(p.begin(), p.end(), e, submatch, m);
+}
+
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
+# pragma warning(pop)
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/regex_traits.hpp
new file mode 100644
index 0000000..f5f0402
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_traits.hpp
@@ -0,0 +1,189 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits classes.
+ */
+
+#ifndef BOOST_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_REGEX_TRAITS_HPP_INCLUDED
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#include <boost/regex/v4/regex_workaround.hpp>
+#endif
+#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
+#include <boost/regex/v4/syntax_type.hpp>
+#endif
+#ifndef BOOST_REGEX_ERROR_TYPE_HPP
+#include <boost/regex/v4/error_type.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+#endif
+#ifndef BOOST_NO_STD_LOCALE
+# ifndef BOOST_CPP_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/cpp_regex_traits.hpp>
+# endif
+#endif
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
+# ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/c_regex_traits.hpp>
+# endif
+#endif
+#if defined(_WIN32) && !defined(BOOST_REGEX_NO_W32)
+# ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
+# include <boost/regex/v4/w32_regex_traits.hpp>
+# endif
+#endif
+#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
+#include <boost/regex_fwd.hpp>
+#endif
+
+#include "boost/mpl/has_xxx.hpp"
+#include <boost/static_assert.hpp>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+
+template <class charT, class implementationT >
+struct regex_traits : public implementationT
+{
+ regex_traits() : implementationT() {}
+};
+
+//
+// class regex_traits_wrapper.
+// this is what our implementation will actually store;
+// it provides default implementations of the "optional"
+// interfaces that we support, in addition to the
+// required "standard" ones:
+//
+namespace re_detail{
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000)
+BOOST_MPL_HAS_XXX_TRAIT_DEF(boost_extensions_tag)
+#else
+template<class T>
+struct has_boost_extensions_tag
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+#endif
+
+template <class BaseT>
+struct default_wrapper : public BaseT
+{
+ typedef typename BaseT::char_type char_type;
+ std::string error_string(::boost::regex_constants::error_type e)const
+ {
+ return ::boost::re_detail::get_default_error_string(e);
+ }
+ ::boost::regex_constants::syntax_type syntax_type(char_type c)const
+ {
+ return ((c & 0x7f) == c) ? get_default_syntax_type(static_cast<char>(c)) : ::boost::regex_constants::syntax_char;
+ }
+ ::boost::regex_constants::escape_syntax_type escape_syntax_type(char_type c)const
+ {
+ return ((c & 0x7f) == c) ? get_default_escape_syntax_type(static_cast<char>(c)) : ::boost::regex_constants::escape_type_identity;
+ }
+ int toi(const char_type*& p1, const char_type* p2, int radix)const
+ {
+ return ::boost::re_detail::global_toi(p1, p2, radix, *this);
+ }
+ char_type translate(char_type c, bool icase)const
+ {
+ return (icase ? this->translate_nocase(c) : this->translate(c));
+ }
+ char_type translate(char_type c)const
+ {
+ return BaseT::translate(c);
+ }
+ char_type tolower(char_type c)const
+ {
+ return ::boost::re_detail::global_lower(c);
+ }
+ char_type toupper(char_type c)const
+ {
+ return ::boost::re_detail::global_upper(c);
+ }
+};
+
+template <class BaseT, bool has_extensions>
+struct compute_wrapper_base
+{
+ typedef BaseT type;
+};
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__HP_aCC, < 60000)
+template <class BaseT>
+struct compute_wrapper_base<BaseT, false>
+{
+ typedef default_wrapper<BaseT> type;
+};
+#else
+template <>
+struct compute_wrapper_base<c_regex_traits<char>, false>
+{
+ typedef default_wrapper<c_regex_traits<char> > type;
+};
+#ifndef BOOST_NO_WREGEX
+template <>
+struct compute_wrapper_base<c_regex_traits<wchar_t>, false>
+{
+ typedef default_wrapper<c_regex_traits<wchar_t> > type;
+};
+#endif
+#endif
+
+} // namespace re_detail
+
+template <class BaseT>
+struct regex_traits_wrapper
+ : public ::boost::re_detail::compute_wrapper_base<
+ BaseT,
+ ::boost::re_detail::has_boost_extensions_tag<BaseT>::value
+ >::type
+{
+ regex_traits_wrapper(){}
+private:
+ regex_traits_wrapper(const regex_traits_wrapper&);
+ regex_traits_wrapper& operator=(const regex_traits_wrapper&);
+};
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif // include
+
diff --git a/3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp b/3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp
new file mode 100644
index 0000000..42428dd
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_traits_defaults.hpp
@@ -0,0 +1,331 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_traits_defaults.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares API's for access to regex_traits default properties.
+ */
+
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#define BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
+#include <boost/regex/v4/syntax_type.hpp>
+#endif
+#ifndef BOOST_REGEX_ERROR_TYPE_HPP
+#include <boost/regex/v4/error_type.hpp>
+#endif
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::strlen;
+}
+#endif
+
+namespace boost{ namespace re_detail{
+
+
+//
+// helpers to suppress warnings:
+//
+template <class charT>
+inline bool is_extended(charT c)
+{ return c > 256; }
+inline bool is_extended(char)
+{ return false; }
+
+
+BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_syntax(regex_constants::syntax_type n);
+BOOST_REGEX_DECL const char* BOOST_REGEX_CALL get_default_error_string(regex_constants::error_type n);
+BOOST_REGEX_DECL regex_constants::syntax_type BOOST_REGEX_CALL get_default_syntax_type(char c);
+BOOST_REGEX_DECL regex_constants::escape_syntax_type BOOST_REGEX_CALL get_default_escape_syntax_type(char c);
+
+// is charT c a combining character?
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL is_combining_implementation(uint_least16_t s);
+
+template <class charT>
+inline bool is_combining(charT c)
+{
+ return (c <= static_cast<charT>(0)) ? false : ((c >= static_cast<charT>((std::numeric_limits<uint_least16_t>::max)())) ? false : is_combining_implementation(static_cast<unsigned short>(c)));
+}
+template <>
+inline bool is_combining<char>(char)
+{
+ return false;
+}
+template <>
+inline bool is_combining<signed char>(signed char)
+{
+ return false;
+}
+template <>
+inline bool is_combining<unsigned char>(unsigned char)
+{
+ return false;
+}
+#ifndef __hpux // can't use WCHAR_MAX/MIN in pp-directives
+#ifdef _MSC_VER
+template<>
+inline bool is_combining<wchar_t>(wchar_t c)
+{
+ return is_combining_implementation(static_cast<unsigned short>(c));
+}
+#elif !defined(__DECCXX) && !defined(__osf__) && !defined(__OSF__) && defined(WCHAR_MIN) && (WCHAR_MIN == 0) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+#if defined(WCHAR_MAX) && (WCHAR_MAX <= USHRT_MAX)
+template<>
+inline bool is_combining<wchar_t>(wchar_t c)
+{
+ return is_combining_implementation(static_cast<unsigned short>(c));
+}
+#else
+template<>
+inline bool is_combining<wchar_t>(wchar_t c)
+{
+ return (c >= (std::numeric_limits<uint_least16_t>::max)()) ? false : is_combining_implementation(static_cast<unsigned short>(c));
+}
+#endif
+#endif
+#endif
+
+//
+// is a charT c a line separator?
+//
+template <class charT>
+inline bool is_separator(charT c)
+{
+ return BOOST_REGEX_MAKE_BOOL(
+ (c == static_cast<charT>('\n'))
+ || (c == static_cast<charT>('\r'))
+ || (c == static_cast<charT>('\f'))
+ || (static_cast<boost::uint16_t>(c) == 0x2028u)
+ || (static_cast<boost::uint16_t>(c) == 0x2029u)
+ || (static_cast<boost::uint16_t>(c) == 0x85u));
+}
+template <>
+inline bool is_separator<char>(char c)
+{
+ return BOOST_REGEX_MAKE_BOOL((c == '\n') || (c == '\r') || (c == '\f'));
+}
+
+//
+// get a default collating element:
+//
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL lookup_default_collate_name(const std::string& name);
+
+//
+// get the state_id of a character clasification, the individual
+// traits classes then transform that state_id into a bitmask:
+//
+template <class charT>
+struct character_pointer_range
+{
+ const charT* p1;
+ const charT* p2;
+
+ bool operator < (const character_pointer_range& r)const
+ {
+ return std::lexicographical_compare(p1, p2, r.p1, r.p2);
+ }
+ bool operator == (const character_pointer_range& r)const
+ {
+ // Not only do we check that the ranges are of equal size before
+ // calling std::equal, but there is no other algorithm available:
+ // not even a non-standard MS one. So forward to unchecked_equal
+ // in the MS case.
+ return ((p2 - p1) == (r.p2 - r.p1)) && re_detail::equal(p1, p2, r.p1);
+ }
+};
+template <class charT>
+int get_default_class_id(const charT* p1, const charT* p2)
+{
+ static const charT data[72] = {
+ 'a', 'l', 'n', 'u', 'm',
+ 'a', 'l', 'p', 'h', 'a',
+ 'b', 'l', 'a', 'n', 'k',
+ 'c', 'n', 't', 'r', 'l',
+ 'd', 'i', 'g', 'i', 't',
+ 'g', 'r', 'a', 'p', 'h',
+ 'l', 'o', 'w', 'e', 'r',
+ 'p', 'r', 'i', 'n', 't',
+ 'p', 'u', 'n', 'c', 't',
+ 's', 'p', 'a', 'c', 'e',
+ 'u', 'n', 'i', 'c', 'o', 'd', 'e',
+ 'u', 'p', 'p', 'e', 'r',
+ 'w', 'o', 'r', 'd',
+ 'x', 'd', 'i', 'g', 'i', 't',
+ };
+
+ static const character_pointer_range<charT> ranges[19] =
+ {
+ {data+0, data+5,}, // alnum
+ {data+5, data+10,}, // alpha
+ {data+10, data+15,}, // blank
+ {data+15, data+20,}, // cntrl
+ {data+20, data+21,}, // d
+ {data+20, data+25,}, // digit
+ {data+25, data+30,}, // graph
+ {data+30, data+31,}, // l
+ {data+30, data+35,}, // lower
+ {data+35, data+40,}, // print
+ {data+40, data+45,}, // punct
+ {data+45, data+46,}, // s
+ {data+45, data+50,}, // space
+ {data+57, data+58,}, // u
+ {data+50, data+57,}, // unicode
+ {data+57, data+62,}, // upper
+ {data+62, data+63,}, // w
+ {data+62, data+66,}, // word
+ {data+66, data+72,}, // xdigit
+ };
+ static const character_pointer_range<charT>* ranges_begin = ranges;
+ static const character_pointer_range<charT>* ranges_end = ranges + (sizeof(ranges)/sizeof(ranges[0]));
+
+ character_pointer_range<charT> t = { p1, p2, };
+ const character_pointer_range<charT>* p = std::lower_bound(ranges_begin, ranges_end, t);
+ if((p != ranges_end) && (t == *p))
+ return static_cast<int>(p - ranges);
+ return -1;
+}
+
+//
+// helper functions:
+//
+template <class charT>
+std::ptrdiff_t global_length(const charT* p)
+{
+ std::ptrdiff_t n = 0;
+ while(*p)
+ {
+ ++p;
+ ++n;
+ }
+ return n;
+}
+template<>
+inline std::ptrdiff_t global_length<char>(const char* p)
+{
+ return (std::strlen)(p);
+}
+#ifndef BOOST_NO_WREGEX
+template<>
+inline std::ptrdiff_t global_length<wchar_t>(const wchar_t* p)
+{
+ return (std::wcslen)(p);
+}
+#endif
+template <class charT>
+inline charT BOOST_REGEX_CALL global_lower(charT c)
+{
+ return c;
+}
+template <class charT>
+inline charT BOOST_REGEX_CALL global_upper(charT c)
+{
+ return c;
+}
+
+BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_lower(char c);
+BOOST_REGEX_DECL char BOOST_REGEX_CALL do_global_upper(char c);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_lower(wchar_t c);
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL do_global_upper(wchar_t c);
+#endif
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_lower(unsigned short c);
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL do_global_upper(unsigned short c);
+#endif
+//
+// This sucks: declare template specialisations of global_lower/global_upper
+// that just forward to the non-template implementation functions. We do
+// this because there is one compiler (Compaq Tru64 C++) that doesn't seem
+// to differentiate between templates and non-template overloads....
+// what's more, the primary template, plus all overloads have to be
+// defined in the same translation unit (if one is inline they all must be)
+// otherwise the "local template instantiation" compiler option can pick
+// the wrong instantiation when linking:
+//
+template<> inline char BOOST_REGEX_CALL global_lower<char>(char c){ return do_global_lower(c); }
+template<> inline char BOOST_REGEX_CALL global_upper<char>(char c){ return do_global_upper(c); }
+#ifndef BOOST_NO_WREGEX
+template<> inline wchar_t BOOST_REGEX_CALL global_lower<wchar_t>(wchar_t c){ return do_global_lower(c); }
+template<> inline wchar_t BOOST_REGEX_CALL global_upper<wchar_t>(wchar_t c){ return do_global_upper(c); }
+#endif
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+template<> inline unsigned short BOOST_REGEX_CALL global_lower<unsigned short>(unsigned short c){ return do_global_lower(c); }
+template<> inline unsigned short BOOST_REGEX_CALL global_upper<unsigned short>(unsigned short c){ return do_global_upper(c); }
+#endif
+
+template <class charT>
+int global_value(charT c)
+{
+ static const charT zero = '0';
+ static const charT nine = '9';
+ static const charT a = 'a';
+ static const charT f = 'f';
+ static const charT A = 'A';
+ static const charT F = 'F';
+
+ if(c > f) return -1;
+ if(c >= a) return 10 + (c - a);
+ if(c > F) return -1;
+ if(c >= A) return 10 + (c - A);
+ if(c > nine) return -1;
+ if(c >= zero) return c - zero;
+ return -1;
+}
+template <class charT, class traits>
+int global_toi(const charT*& p1, const charT* p2, int radix, const traits& t)
+{
+ (void)t; // warning suppression
+ int next_value = t.value(*p1, radix);
+ if((p1 == p2) || (next_value < 0) || (next_value >= radix))
+ return -1;
+ int result = 0;
+ while(p1 != p2)
+ {
+ next_value = t.value(*p1, radix);
+ if((next_value < 0) || (next_value >= radix))
+ break;
+ result *= radix;
+ result += next_value;
+ ++p1;
+ }
+ return result;
+}
+
+} // re_detail
+} // boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/v4/regex_workaround.hpp b/3rdParty/Boost/boost/regex/v4/regex_workaround.hpp
new file mode 100644
index 0000000..fc3c212
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/regex_workaround.hpp
@@ -0,0 +1,202 @@
+/*
+ *
+ * Copyright (c) 1998-2005
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE regex_workarounds.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares Misc workarounds.
+ */
+
+#ifndef BOOST_REGEX_WORKAROUND_HPP
+#define BOOST_REGEX_WORKAROUND_HPP
+
+
+#include <new>
+#include <cstring>
+#include <cstdlib>
+#include <cstddef>
+#include <cassert>
+#include <cstdio>
+#include <climits>
+#include <string>
+#include <stdexcept>
+#include <iterator>
+#include <algorithm>
+#include <iosfwd>
+#include <vector>
+#include <map>
+#include <boost/limits.hpp>
+#include <boost/assert.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/mpl/bool_fwd.hpp>
+#ifndef BOOST_NO_STD_LOCALE
+# include <locale>
+#endif
+
+#if defined(BOOST_NO_STDC_NAMESPACE)
+namespace std{
+ using ::sprintf; using ::strcpy; using ::strcat; using ::strlen;
+}
+#endif
+
+namespace boost{ namespace re_detail{
+#ifdef BOOST_NO_STD_DISTANCE
+template <class T>
+std::ptrdiff_t distance(const T& x, const T& y)
+{ return y - x; }
+#else
+using std::distance;
+#endif
+}}
+
+
+#ifdef BOOST_REGEX_NO_BOOL
+# define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>((x) ? true : false)
+#else
+# define BOOST_REGEX_MAKE_BOOL(x) static_cast<bool>(x)
+#endif
+
+/*****************************************************************************
+ *
+ * Fix broken broken namespace support:
+ *
+ ****************************************************************************/
+
+#if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
+
+namespace std{
+ using ::ptrdiff_t;
+ using ::size_t;
+ using ::abs;
+ using ::memset;
+ using ::memcpy;
+}
+
+#endif
+
+/*****************************************************************************
+ *
+ * helper functions pointer_construct/pointer_destroy:
+ *
+ ****************************************************************************/
+
+#ifdef __cplusplus
+namespace boost{ namespace re_detail{
+
+#ifdef BOOST_MSVC
+#pragma warning (push)
+#pragma warning (disable : 4100)
+#endif
+
+template <class T>
+inline void pointer_destroy(T* p)
+{ p->~T(); (void)p; }
+
+#ifdef BOOST_MSVC
+#pragma warning (pop)
+#endif
+
+template <class T>
+inline void pointer_construct(T* p, const T& t)
+{ new (p) T(t); }
+
+}} // namespaces
+#endif
+
+/*****************************************************************************
+ *
+ * helper function copy:
+ *
+ ****************************************************************************/
+
+#ifdef __cplusplus
+namespace boost{ namespace re_detail{
+#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(_CPPLIB_VER) && defined(BOOST_DINKUMWARE_STDLIB) && !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
+ //
+ // MSVC 8 will either emit warnings or else refuse to compile
+ // code that makes perfectly legitimate use of std::copy, when
+ // the OutputIterator type is a user-defined class (apparently all user
+ // defined iterators are "unsafe"). This code works around that:
+ //
+ template<class InputIterator, class OutputIterator>
+ inline OutputIterator copy(
+ InputIterator first,
+ InputIterator last,
+ OutputIterator dest
+ )
+ {
+ return stdext::unchecked_copy(first, last, dest);
+ }
+ template<class InputIterator1, class InputIterator2>
+ inline bool equal(
+ InputIterator1 first,
+ InputIterator1 last,
+ InputIterator2 with
+ )
+ {
+ return stdext::unchecked_equal(first, last, with);
+ }
+
+#else
+ using std::copy;
+ using std::equal;
+#endif
+#if BOOST_WORKAROUND(BOOST_MSVC,>=1400) && defined(__STDC_WANT_SECURE_LIB__) && __STDC_WANT_SECURE_LIB__
+
+ // use safe versions of strcpy etc:
+ using ::strcpy_s;
+ using ::strcat_s;
+#else
+ inline std::size_t strcpy_s(
+ char *strDestination,
+ std::size_t sizeInBytes,
+ const char *strSource
+ )
+ {
+ if(std::strlen(strSource)+1 > sizeInBytes)
+ return 1;
+ std::strcpy(strDestination, strSource);
+ return 0;
+ }
+ inline std::size_t strcat_s(
+ char *strDestination,
+ std::size_t sizeInBytes,
+ const char *strSource
+ )
+ {
+ if(std::strlen(strSource) + std::strlen(strDestination) + 1 > sizeInBytes)
+ return 1;
+ std::strcat(strDestination, strSource);
+ return 0;
+ }
+
+#endif
+
+ inline void overflow_error_if_not_zero(std::size_t i)
+ {
+ if(i)
+ {
+ std::overflow_error e("String buffer too small");
+ boost::throw_exception(e);
+ }
+ }
+
+}} // namespaces
+
+#endif // __cplusplus
+
+#endif // include guard
+
diff --git a/3rdParty/Boost/boost/regex/v4/states.hpp b/3rdParty/Boost/boost/regex/v4/states.hpp
new file mode 100644
index 0000000..44dd2b4
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/states.hpp
@@ -0,0 +1,290 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE states.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares internal state machine structures.
+ */
+
+#ifndef BOOST_REGEX_V4_STATES_HPP
+#define BOOST_REGEX_V4_STATES_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+namespace re_detail{
+
+/*** mask_type *******************************************************
+Whenever we have a choice of two alternatives, we use an array of bytes
+to indicate which of the two alternatives it is possible to take for any
+given input character. If mask_take is set, then we can take the next
+state, and if mask_skip is set then we can take the alternative.
+***********************************************************************/
+enum mask_type
+{
+ mask_take = 1,
+ mask_skip = 2,
+ mask_init = 4,
+ mask_any = mask_skip | mask_take,
+ mask_all = mask_any
+};
+
+/*** helpers **********************************************************
+These helpers let us use function overload resolution to detect whether
+we have narrow or wide character strings:
+***********************************************************************/
+struct _narrow_type{};
+struct _wide_type{};
+template <class charT> struct is_byte;
+template<> struct is_byte<char> { typedef _narrow_type width_type; };
+template<> struct is_byte<unsigned char>{ typedef _narrow_type width_type; };
+template<> struct is_byte<signed char> { typedef _narrow_type width_type; };
+template <class charT> struct is_byte { typedef _wide_type width_type; };
+
+/*** enum syntax_element_type ******************************************
+Every record in the state machine falls into one of the following types:
+***********************************************************************/
+enum syntax_element_type
+{
+ // start of a marked sub-expression, or perl-style (?...) extension
+ syntax_element_startmark = 0,
+ // end of a marked sub-expression, or perl-style (?...) extension
+ syntax_element_endmark = syntax_element_startmark + 1,
+ // any sequence of literal characters
+ syntax_element_literal = syntax_element_endmark + 1,
+ // start of line assertion: ^
+ syntax_element_start_line = syntax_element_literal + 1,
+ // end of line assertion $
+ syntax_element_end_line = syntax_element_start_line + 1,
+ // match any character: .
+ syntax_element_wild = syntax_element_end_line + 1,
+ // end of expression: we have a match when we get here
+ syntax_element_match = syntax_element_wild + 1,
+ // perl style word boundary: \b
+ syntax_element_word_boundary = syntax_element_match + 1,
+ // perl style within word boundary: \B
+ syntax_element_within_word = syntax_element_word_boundary + 1,
+ // start of word assertion: \<
+ syntax_element_word_start = syntax_element_within_word + 1,
+ // end of word assertion: \>
+ syntax_element_word_end = syntax_element_word_start + 1,
+ // start of buffer assertion: \`
+ syntax_element_buffer_start = syntax_element_word_end + 1,
+ // end of buffer assertion: \'
+ syntax_element_buffer_end = syntax_element_buffer_start + 1,
+ // backreference to previously matched sub-expression
+ syntax_element_backref = syntax_element_buffer_end + 1,
+ // either a wide character set [..] or one with multicharacter collating elements:
+ syntax_element_long_set = syntax_element_backref + 1,
+ // narrow character set: [...]
+ syntax_element_set = syntax_element_long_set + 1,
+ // jump to a new state in the machine:
+ syntax_element_jump = syntax_element_set + 1,
+ // choose between two production states:
+ syntax_element_alt = syntax_element_jump + 1,
+ // a repeat
+ syntax_element_rep = syntax_element_alt + 1,
+ // match a combining character sequence
+ syntax_element_combining = syntax_element_rep + 1,
+ // perl style soft buffer end: \z
+ syntax_element_soft_buffer_end = syntax_element_combining + 1,
+ // perl style continuation: \G
+ syntax_element_restart_continue = syntax_element_soft_buffer_end + 1,
+ // single character repeats:
+ syntax_element_dot_rep = syntax_element_restart_continue + 1,
+ syntax_element_char_rep = syntax_element_dot_rep + 1,
+ syntax_element_short_set_rep = syntax_element_char_rep + 1,
+ syntax_element_long_set_rep = syntax_element_short_set_rep + 1,
+ // a backstep for lookbehind repeats:
+ syntax_element_backstep = syntax_element_long_set_rep + 1,
+ // an assertion that a mark was matched:
+ syntax_element_assert_backref = syntax_element_backstep + 1,
+ syntax_element_toggle_case = syntax_element_assert_backref + 1
+};
+
+#ifdef BOOST_REGEX_DEBUG
+// dwa 09/26/00 - This is needed to suppress warnings about an ambiguous conversion
+std::ostream& operator<<(std::ostream&, syntax_element_type);
+#endif
+
+struct re_syntax_base;
+
+/*** union offset_type ************************************************
+Points to another state in the machine. During machine construction
+we use integral offsets, but these are converted to pointers before
+execution of the machine.
+***********************************************************************/
+union offset_type
+{
+ re_syntax_base* p;
+ std::ptrdiff_t i;
+};
+
+/*** struct re_syntax_base ********************************************
+Base class for all states in the machine.
+***********************************************************************/
+struct re_syntax_base
+{
+ syntax_element_type type; // what kind of state this is
+ offset_type next; // next state in the machine
+};
+
+/*** struct re_brace **************************************************
+A marked parenthesis.
+***********************************************************************/
+struct re_brace : public re_syntax_base
+{
+ // The index to match, can be zero (don't mark the sub-expression)
+ // or negative (for perl style (?...) extentions):
+ int index;
+};
+
+/*** struct re_dot **************************************************
+Match anything.
+***********************************************************************/
+enum
+{
+ dont_care = 1,
+ force_not_newline = 0,
+ force_newline = 2,
+
+ test_not_newline = 2,
+ test_newline = 3
+};
+struct re_dot : public re_syntax_base
+{
+ unsigned char mask;
+};
+
+/*** struct re_literal ************************************************
+A string of literals, following this structure will be an
+array of characters: charT[length]
+***********************************************************************/
+struct re_literal : public re_syntax_base
+{
+ unsigned int length;
+};
+
+/*** struct re_case ************************************************
+Indicates whether we are moving to a case insensive block or not
+***********************************************************************/
+struct re_case : public re_syntax_base
+{
+ bool icase;
+};
+
+/*** struct re_set_long ***********************************************
+A wide character set of characters, following this structure will be
+an array of type charT:
+First csingles null-terminated strings
+Then 2 * cranges NULL terminated strings
+Then cequivalents NULL terminated strings
+***********************************************************************/
+template <class mask_type>
+struct re_set_long : public re_syntax_base
+{
+ unsigned int csingles, cranges, cequivalents;
+ mask_type cclasses;
+ mask_type cnclasses;
+ bool isnot;
+ bool singleton;
+};
+
+/*** struct re_set ****************************************************
+A set of narrow-characters, matches any of _map which is none-zero
+***********************************************************************/
+struct re_set : public re_syntax_base
+{
+ unsigned char _map[1 << CHAR_BIT];
+};
+
+/*** struct re_jump ***************************************************
+Jump to a new location in the machine (not next).
+***********************************************************************/
+struct re_jump : public re_syntax_base
+{
+ offset_type alt; // location to jump to
+};
+
+/*** struct re_alt ***************************************************
+Jump to a new location in the machine (possibly next).
+***********************************************************************/
+struct re_alt : public re_jump
+{
+ unsigned char _map[1 << CHAR_BIT]; // which characters can take the jump
+ unsigned int can_be_null; // true if we match a NULL string
+};
+
+/*** struct re_repeat *************************************************
+Repeat a section of the machine
+***********************************************************************/
+struct re_repeat : public re_alt
+{
+ std::size_t min, max; // min and max allowable repeats
+ int state_id; // Unique identifier for this repeat
+ bool leading; // True if this repeat is at the start of the machine (lets us optimize some searches)
+ bool greedy; // True if this is a greedy repeat
+};
+
+/*** enum re_jump_size_type *******************************************
+Provides compiled size of re_jump structure (allowing for trailing alignment).
+We provide this so we know how manybytes to insert when constructing the machine
+(The value of padding_mask is defined in regex_raw_buffer.hpp).
+***********************************************************************/
+enum re_jump_size_type
+{
+ re_jump_size = (sizeof(re_jump) + padding_mask) & ~(padding_mask),
+ re_repeater_size = (sizeof(re_repeat) + padding_mask) & ~(padding_mask),
+ re_alt_size = (sizeof(re_alt) + padding_mask) & ~(padding_mask)
+};
+
+/*** proc re_is_set_member *********************************************
+Forward declaration: we'll need this one later...
+***********************************************************************/
+
+template<class charT, class traits>
+struct regex_data;
+
+template <class iterator, class charT, class traits_type, class char_classT>
+iterator BOOST_REGEX_CALL re_is_set_member(iterator next,
+ iterator last,
+ const re_set_long<char_classT>* set_,
+ const regex_data<charT, traits_type>& e, bool icase);
+
+} // namespace re_detail
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/sub_match.hpp b/3rdParty/Boost/boost/regex/v4/sub_match.hpp
new file mode 100644
index 0000000..1c79e39
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/sub_match.hpp
@@ -0,0 +1,509 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE sub_match.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares template class sub_match.
+ */
+
+#ifndef BOOST_REGEX_V4_SUB_MATCH_HPP
+#define BOOST_REGEX_V4_SUB_MATCH_HPP
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+namespace boost{
+
+template <class BidiIterator>
+struct sub_match : public std::pair<BidiIterator, BidiIterator>
+{
+ typedef typename re_detail::regex_iterator_traits<BidiIterator>::value_type value_type;
+#if defined(BOOST_NO_STD_ITERATOR_TRAITS) || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+ typedef std::ptrdiff_t difference_type;
+#else
+ typedef typename re_detail::regex_iterator_traits<BidiIterator>::difference_type difference_type;
+#endif
+ typedef BidiIterator iterator_type;
+ typedef BidiIterator iterator;
+ typedef BidiIterator const_iterator;
+
+ bool matched;
+
+ sub_match() : std::pair<BidiIterator, BidiIterator>(), matched(false) {}
+ sub_match(BidiIterator i) : std::pair<BidiIterator, BidiIterator>(i, i), matched(false) {}
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1310)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)\
+ && !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590042))
+ template <class T, class A>
+ operator std::basic_string<value_type, T, A> ()const
+ {
+ return std::basic_string<value_type, T, A>(this->first, this->second);
+ }
+#else
+ operator std::basic_string<value_type> ()const
+ {
+ return str();
+ }
+#endif
+ difference_type BOOST_REGEX_CALL length()const
+ {
+ difference_type n = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
+ return n;
+ }
+ std::basic_string<value_type> str()const
+ {
+ std::basic_string<value_type> result;
+ std::size_t len = ::boost::re_detail::distance((BidiIterator)this->first, (BidiIterator)this->second);
+ result.reserve(len);
+ BidiIterator i = this->first;
+ while(i != this->second)
+ {
+ result.append(1, *i);
+ ++i;
+ }
+ return result;
+ }
+ int compare(const sub_match& s)const
+ {
+ if(matched != s.matched)
+ return static_cast<int>(matched) - static_cast<int>(s.matched);
+ return str().compare(s.str());
+ }
+ int compare(const std::basic_string<value_type>& s)const
+ {
+ return str().compare(s);
+ }
+ int compare(const value_type* p)const
+ {
+ return str().compare(p);
+ }
+
+ bool operator==(const sub_match& that)const
+ { return compare(that) == 0; }
+ bool BOOST_REGEX_CALL operator !=(const sub_match& that)const
+ { return compare(that) != 0; }
+ bool operator<(const sub_match& that)const
+ { return compare(that) < 0; }
+ bool operator>(const sub_match& that)const
+ { return compare(that) > 0; }
+ bool operator<=(const sub_match& that)const
+ { return compare(that) <= 0; }
+ bool operator>=(const sub_match& that)const
+ { return compare(that) >= 0; }
+
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ typedef std::vector<sub_match<BidiIterator> > capture_sequence_type;
+
+ const capture_sequence_type& captures()const
+ {
+ if(!m_captures)
+ m_captures.reset(new capture_sequence_type());
+ return *m_captures;
+ }
+ //
+ // Private implementation API: DO NOT USE!
+ //
+ capture_sequence_type& get_captures()const
+ {
+ if(!m_captures)
+ m_captures.reset(new capture_sequence_type());
+ return *m_captures;
+ }
+
+private:
+ mutable boost::scoped_ptr<capture_sequence_type> m_captures;
+public:
+
+#endif
+ sub_match(const sub_match& that, bool
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ deep_copy
+#endif
+ = true
+ )
+ : std::pair<BidiIterator, BidiIterator>(that),
+ matched(that.matched)
+ {
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(that.m_captures)
+ if(deep_copy)
+ m_captures.reset(new capture_sequence_type(*(that.m_captures)));
+#endif
+ }
+ sub_match& operator=(const sub_match& that)
+ {
+ this->first = that.first;
+ this->second = that.second;
+ matched = that.matched;
+#ifdef BOOST_REGEX_MATCH_EXTRA
+ if(that.m_captures)
+ get_captures() = *(that.m_captures);
+#endif
+ return *this;
+ }
+
+
+#ifdef BOOST_OLD_REGEX_H
+ //
+ // the following are deprecated, do not use!!
+ //
+ operator int()const;
+ operator unsigned int()const;
+ operator short()const
+ {
+ return (short)(int)(*this);
+ }
+ operator unsigned short()const
+ {
+ return (unsigned short)(unsigned int)(*this);
+ }
+#endif
+};
+
+typedef sub_match<const char*> csub_match;
+typedef sub_match<std::string::const_iterator> ssub_match;
+#ifndef BOOST_NO_WREGEX
+typedef sub_match<const wchar_t*> wcsub_match;
+typedef sub_match<std::wstring::const_iterator> wssub_match;
+#endif
+
+// comparison to std::basic_string<> part 1:
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator == (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) == 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator != (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) != 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator < (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) < 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator <= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) <= 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator >= (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) >= 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator > (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return s.compare(m.str()) > 0; }
+// comparison to std::basic_string<> part 2:
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator == (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) == 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator != (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) != 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator < (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) < 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator > (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) > 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator <= (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) <= 0; }
+template <class RandomAccessIterator, class traits, class Allocator>
+inline bool operator >= (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{ return m.str().compare(s) >= 0; }
+// comparison to const charT* part 1:
+template <class RandomAccessIterator>
+inline bool operator == (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) != 0; }
+template <class RandomAccessIterator>
+inline bool operator > (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) > 0; }
+template <class RandomAccessIterator>
+inline bool operator < (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) < 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s)
+{ return m.str().compare(s) <= 0; }
+// comparison to const charT* part 2:
+template <class RandomAccessIterator>
+inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) != 0; }
+template <class RandomAccessIterator>
+inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) > 0; }
+template <class RandomAccessIterator>
+inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) < 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(s) <= 0; }
+
+// comparison to const charT& part 1:
+template <class RandomAccessIterator>
+inline bool operator == (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) != 0; }
+template <class RandomAccessIterator>
+inline bool operator > (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) > 0; }
+template <class RandomAccessIterator>
+inline bool operator < (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) < 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
+// comparison to const charT* part 2:
+template <class RandomAccessIterator>
+inline bool operator == (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) == 0; }
+template <class RandomAccessIterator>
+inline bool operator != (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) != 0; }
+template <class RandomAccessIterator>
+inline bool operator < (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) > 0; }
+template <class RandomAccessIterator>
+inline bool operator > (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) < 0; }
+template <class RandomAccessIterator>
+inline bool operator <= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) >= 0; }
+template <class RandomAccessIterator>
+inline bool operator >= (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{ return m.str().compare(0, m.length(), &s, 1) <= 0; }
+
+// addition operators:
+template <class RandomAccessIterator, class traits, class Allocator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>
+operator + (const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
+ result.reserve(s.size() + m.length() + 1);
+ return result.append(s).append(m.first, m.second);
+}
+template <class RandomAccessIterator, class traits, class Allocator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>
+operator + (const sub_match<RandomAccessIterator>& m,
+ const std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator>& s)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type, traits, Allocator> result;
+ result.reserve(s.size() + m.length() + 1);
+ return result.append(m.first, m.second).append(s);
+}
+#if !(defined(__GNUC__) && defined(BOOST_NO_STD_LOCALE))
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
+ return result.append(s).append(m.first, m.second);
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(std::char_traits<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>::length(s) + m.length() + 1);
+ return result.append(m.first, m.second).append(s);
+}
+#else
+// worwaround versions:
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const* s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ return s + m.str();
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const * s)
+{
+ return m.str() + s;
+}
+#endif
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s,
+ const sub_match<RandomAccessIterator>& m)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(m.length() + 2);
+ return result.append(1, s).append(m.first, m.second);
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m,
+ typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type const& s)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(m.length() + 2);
+ return result.append(m.first, m.second).append(1, s);
+}
+template <class RandomAccessIterator>
+inline std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type>
+operator + (const sub_match<RandomAccessIterator>& m1,
+ const sub_match<RandomAccessIterator>& m2)
+{
+ std::basic_string<typename re_detail::regex_iterator_traits<RandomAccessIterator>::value_type> result;
+ result.reserve(m1.length() + m2.length() + 1);
+ return result.append(m1.first, m1.second).append(m2.first, m2.second);
+}
+#ifndef BOOST_NO_STD_LOCALE
+template <class charT, class traits, class RandomAccessIterator>
+std::basic_ostream<charT, traits>&
+ operator << (std::basic_ostream<charT, traits>& os,
+ const sub_match<RandomAccessIterator>& s)
+{
+ return (os << s.str());
+}
+#else
+template <class RandomAccessIterator>
+std::ostream& operator << (std::ostream& os,
+ const sub_match<RandomAccessIterator>& s)
+{
+ return (os << s.str());
+}
+#endif
+
+#ifdef BOOST_OLD_REGEX_H
+namespace re_detail{
+template <class BidiIterator, class charT>
+int do_toi(BidiIterator i, BidiIterator j, char c, int radix)
+{
+ std::string s(i, j);
+ char* p;
+ int result = std::strtol(s.c_str(), &p, radix);
+ if(*p)raise_regex_exception("Bad sub-expression");
+ return result;
+}
+
+//
+// helper:
+template <class I, class charT>
+int do_toi(I& i, I j, charT c)
+{
+ int result = 0;
+ while((i != j) && (isdigit(*i)))
+ {
+ result = result*10 + (*i - '0');
+ ++i;
+ }
+ return result;
+}
+}
+
+
+template <class BidiIterator>
+sub_match<BidiIterator>::operator int()const
+{
+ BidiIterator i = first;
+ BidiIterator j = second;
+ if(i == j)raise_regex_exception("Bad sub-expression");
+ int neg = 1;
+ if((i != j) && (*i == '-'))
+ {
+ neg = -1;
+ ++i;
+ }
+ neg *= re_detail::do_toi(i, j, *i);
+ if(i != j)raise_regex_exception("Bad sub-expression");
+ return neg;
+}
+template <class BidiIterator>
+sub_match<BidiIterator>::operator unsigned int()const
+{
+ BidiIterator i = first;
+ BidiIterator j = second;
+ if(i == j)
+ raise_regex_exception("Bad sub-expression");
+ return re_detail::do_toi(i, j, *first);
+}
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
+
diff --git a/3rdParty/Boost/boost/regex/v4/syntax_type.hpp b/3rdParty/Boost/boost/regex/v4/syntax_type.hpp
new file mode 100644
index 0000000..92c00d4
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/syntax_type.hpp
@@ -0,0 +1,102 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE syntax_type.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression synatx type enumerator.
+ */
+
+#ifndef BOOST_REGEX_SYNTAX_TYPE_HPP
+#define BOOST_REGEX_SYNTAX_TYPE_HPP
+
+namespace boost{
+namespace regex_constants{
+
+typedef unsigned char syntax_type;
+
+//
+// values chosen are binary compatible with previous version:
+//
+static const syntax_type syntax_char = 0;
+static const syntax_type syntax_open_mark = 1;
+static const syntax_type syntax_close_mark = 2;
+static const syntax_type syntax_dollar = 3;
+static const syntax_type syntax_caret = 4;
+static const syntax_type syntax_dot = 5;
+static const syntax_type syntax_star = 6;
+static const syntax_type syntax_plus = 7;
+static const syntax_type syntax_question = 8;
+static const syntax_type syntax_open_set = 9;
+static const syntax_type syntax_close_set = 10;
+static const syntax_type syntax_or = 11;
+static const syntax_type syntax_escape = 12;
+static const syntax_type syntax_dash = 14;
+static const syntax_type syntax_open_brace = 15;
+static const syntax_type syntax_close_brace = 16;
+static const syntax_type syntax_digit = 17;
+static const syntax_type syntax_comma = 27;
+static const syntax_type syntax_equal = 37;
+static const syntax_type syntax_colon = 36;
+static const syntax_type syntax_not = 53;
+
+// extensions:
+
+static const syntax_type syntax_hash = 13;
+static const syntax_type syntax_newline = 26;
+
+// escapes:
+
+typedef syntax_type escape_syntax_type;
+
+static const escape_syntax_type escape_type_word_assert = 18;
+static const escape_syntax_type escape_type_not_word_assert = 19;
+static const escape_syntax_type escape_type_control_f = 29;
+static const escape_syntax_type escape_type_control_n = 30;
+static const escape_syntax_type escape_type_control_r = 31;
+static const escape_syntax_type escape_type_control_t = 32;
+static const escape_syntax_type escape_type_control_v = 33;
+static const escape_syntax_type escape_type_ascii_control = 35;
+static const escape_syntax_type escape_type_hex = 34;
+static const escape_syntax_type escape_type_unicode = 0; // not used
+static const escape_syntax_type escape_type_identity = 0; // not used
+static const escape_syntax_type escape_type_backref = syntax_digit;
+static const escape_syntax_type escape_type_decimal = syntax_digit; // not used
+static const escape_syntax_type escape_type_class = 22;
+static const escape_syntax_type escape_type_not_class = 23;
+
+// extensions:
+
+static const escape_syntax_type escape_type_left_word = 20;
+static const escape_syntax_type escape_type_right_word = 21;
+static const escape_syntax_type escape_type_start_buffer = 24; // for \`
+static const escape_syntax_type escape_type_end_buffer = 25; // for \'
+static const escape_syntax_type escape_type_control_a = 28; // for \a
+static const escape_syntax_type escape_type_e = 38; // for \e
+static const escape_syntax_type escape_type_E = 47; // for \Q\E
+static const escape_syntax_type escape_type_Q = 48; // for \Q\E
+static const escape_syntax_type escape_type_X = 49; // for \X
+static const escape_syntax_type escape_type_C = 50; // for \C
+static const escape_syntax_type escape_type_Z = 51; // for \Z
+static const escape_syntax_type escape_type_G = 52; // for \G
+
+static const escape_syntax_type escape_type_property = 54; // for \p
+static const escape_syntax_type escape_type_not_property = 55; // for \P
+static const escape_syntax_type escape_type_named_char = 56; // for \N
+
+static const escape_syntax_type syntax_max = 57;
+
+}
+}
+
+
+#endif
diff --git a/3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp b/3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp
new file mode 100644
index 0000000..7e893e6
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/u32regex_iterator.hpp
@@ -0,0 +1,193 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE u32regex_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides u32regex_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP
+#define BOOST_REGEX_V4_U32REGEX_ITERATOR_HPP
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+template <class BidirectionalIterator>
+class u32regex_iterator_implementation
+{
+ typedef u32regex regex_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator base; // start of sequence
+ BidirectionalIterator end; // end of sequence
+ const regex_type re; // the expression
+ match_flag_type flags; // flags for matching
+
+public:
+ u32regex_iterator_implementation(const regex_type* p, BidirectionalIterator last, match_flag_type f)
+ : base(), end(last), re(*p), flags(f){}
+ bool init(BidirectionalIterator first)
+ {
+ base = first;
+ return u32regex_search(first, end, what, re, flags, base);
+ }
+ bool compare(const u32regex_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data()) && (end == that.end) && (flags == that.flags) && (what[0].first == that.what[0].first) && (what[0].second == that.what[0].second);
+ }
+ const match_results<BidirectionalIterator>& get()
+ { return what; }
+ bool next()
+ {
+ //if(what.prefix().first != what[0].second)
+ // flags |= match_prev_avail;
+ BidirectionalIterator next_start = what[0].second;
+ match_flag_type f(flags);
+ if(!what.length())
+ f |= regex_constants::match_not_initial_null;
+ //if(base != next_start)
+ // f |= regex_constants::match_not_bob;
+ bool result = u32regex_search(next_start, end, what, re, f, base);
+ if(result)
+ what.set_base(base);
+ return result;
+ }
+private:
+ u32regex_iterator_implementation& operator=(const u32regex_iterator_implementation&);
+};
+
+template <class BidirectionalIterator>
+class u32regex_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ match_results<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const match_results<BidirectionalIterator>*,
+ const match_results<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef u32regex_iterator_implementation<BidirectionalIterator> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef u32regex regex_type;
+ typedef match_results<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ u32regex_iterator(){}
+ u32regex_iterator(BidirectionalIterator a, BidirectionalIterator b,
+ const regex_type& re,
+ match_flag_type m = match_default)
+ : pdata(new impl(&re, b, m))
+ {
+ if(!pdata->init(a))
+ {
+ pdata.reset();
+ }
+ }
+ u32regex_iterator(const u32regex_iterator& that)
+ : pdata(that.pdata) {}
+ u32regex_iterator& operator=(const u32regex_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const u32regex_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const u32regex_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ u32regex_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ u32regex_iterator operator++(int)
+ {
+ u32regex_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef u32regex_iterator<const char*> utf8regex_iterator;
+typedef u32regex_iterator<const UChar*> utf16regex_iterator;
+typedef u32regex_iterator<const UChar32*> utf32regex_iterator;
+
+inline u32regex_iterator<const char*> make_u32regex_iterator(const char* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const char*>(p, p+std::strlen(p), e, m);
+}
+#ifndef BOOST_NO_WREGEX
+inline u32regex_iterator<const wchar_t*> make_u32regex_iterator(const wchar_t* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const wchar_t*>(p, p+std::wcslen(p), e, m);
+}
+#endif
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
+inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UChar* p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const UChar*>(p, p+u_strlen(p), e, m);
+}
+#endif
+template <class charT, class Traits, class Alloc>
+inline u32regex_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+inline u32regex_iterator<const UChar*> make_u32regex_iterator(const UnicodeString& s, const u32regex& e, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, m);
+}
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_ITERATOR_HPP
+
diff --git a/3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp b/3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp
new file mode 100644
index 0000000..2726d48
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/u32regex_token_iterator.hpp
@@ -0,0 +1,377 @@
+/*
+ *
+ * Copyright (c) 2003
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE u32regex_token_iterator.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Provides u32regex_token_iterator implementation.
+ */
+
+#ifndef BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
+#define BOOST_REGEX_V4_U32REGEX_TOKEN_ITERATOR_HPP
+
+#if (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
+//
+// Borland C++ Builder 6, and Visual C++ 6,
+// can't cope with the array template constructor
+// so we have a template member that will accept any type as
+// argument, and then assert that is really is an array:
+//
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/is_array.hpp>
+#endif
+
+namespace boost{
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1300)
+# pragma warning(push)
+# pragma warning(disable:4700)
+#endif
+
+template <class BidirectionalIterator>
+class u32regex_token_iterator_implementation
+{
+ typedef u32regex regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+
+ match_results<BidirectionalIterator> what; // current match
+ BidirectionalIterator end; // end of search area
+ BidirectionalIterator base; // start of search area
+ const regex_type re; // the expression
+ match_flag_type flags; // match flags
+ value_type result; // the current string result
+ int N; // the current sub-expression being enumerated
+ std::vector<int> subs; // the sub-expressions to enumerate
+
+public:
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, int sub, match_flag_type f)
+ : end(last), re(*p), flags(f){ subs.push_back(sub); }
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const std::vector<int>& v, match_flag_type f)
+ : end(last), re(*p), flags(f), subs(v){}
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // can't reliably get this to work....
+#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const T& submatches, match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ // assert that T really is an array:
+ BOOST_STATIC_ASSERT(::boost::is_array<T>::value);
+ const std::size_t array_size = sizeof(T) / sizeof(submatches[0]);
+ for(std::size_t i = 0; i < array_size; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#else
+ template <std::size_t CN>
+ u32regex_token_iterator_implementation(const regex_type* p, BidirectionalIterator last, const int (&submatches)[CN], match_flag_type f)
+ : end(last), re(*p), flags(f)
+ {
+ for(std::size_t i = 0; i < CN; ++i)
+ {
+ subs.push_back(submatches[i]);
+ }
+ }
+#endif
+
+ bool init(BidirectionalIterator first)
+ {
+ base = first;
+ N = 0;
+ if(u32regex_search(first, end, what, re, flags, base) == true)
+ {
+ N = 0;
+ result = ((subs[N] == -1) ? what.prefix() : what[(int)subs[N]]);
+ return true;
+ }
+ else if((subs[N] == -1) && (first != end))
+ {
+ result.first = first;
+ result.second = end;
+ result.matched = (first != end);
+ N = -1;
+ return true;
+ }
+ return false;
+ }
+ bool compare(const u32regex_token_iterator_implementation& that)
+ {
+ if(this == &that) return true;
+ return (&re.get_data() == &that.re.get_data())
+ && (end == that.end)
+ && (flags == that.flags)
+ && (N == that.N)
+ && (what[0].first == that.what[0].first)
+ && (what[0].second == that.what[0].second);
+ }
+ const value_type& get()
+ { return result; }
+ bool next()
+ {
+ if(N == -1)
+ return false;
+ if(N+1 < (int)subs.size())
+ {
+ ++N;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ //if(what.prefix().first != what[0].second)
+ // flags |= match_prev_avail | regex_constants::match_not_bob;
+ BidirectionalIterator last_end(what[0].second);
+ if(u32regex_search(last_end, end, what, re, ((what[0].first == what[0].second) ? flags | regex_constants::match_not_initial_null : flags), base))
+ {
+ N =0;
+ result =((subs[N] == -1) ? what.prefix() : what[subs[N]]);
+ return true;
+ }
+ else if((last_end != end) && (subs[0] == -1))
+ {
+ N =-1;
+ result.first = last_end;
+ result.second = end;
+ result.matched = (last_end != end);
+ return true;
+ }
+ return false;
+ }
+private:
+ u32regex_token_iterator_implementation& operator=(const u32regex_token_iterator_implementation&);
+};
+
+template <class BidirectionalIterator>
+class u32regex_token_iterator
+#ifndef BOOST_NO_STD_ITERATOR
+ : public std::iterator<
+ std::forward_iterator_tag,
+ sub_match<BidirectionalIterator>,
+ typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type,
+ const sub_match<BidirectionalIterator>*,
+ const sub_match<BidirectionalIterator>& >
+#endif
+{
+private:
+ typedef u32regex_token_iterator_implementation<BidirectionalIterator> impl;
+ typedef shared_ptr<impl> pimpl;
+public:
+ typedef u32regex regex_type;
+ typedef sub_match<BidirectionalIterator> value_type;
+ typedef typename re_detail::regex_iterator_traits<BidirectionalIterator>::difference_type
+ difference_type;
+ typedef const value_type* pointer;
+ typedef const value_type& reference;
+ typedef std::forward_iterator_tag iterator_category;
+
+ u32regex_token_iterator(){}
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ int submatch = 0, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatch, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const std::vector<int>& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ // can't reliably get this to work....
+#elif (BOOST_WORKAROUND(__BORLANDC__, >= 0x560) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570)))\
+ || BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700)
+ template <class T>
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const T& submatches, match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#else
+ template <std::size_t N>
+ u32regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re,
+ const int (&submatches)[N], match_flag_type m = match_default)
+ : pdata(new impl(&re, b, submatches, m))
+ {
+ if(!pdata->init(a))
+ pdata.reset();
+ }
+#endif
+ u32regex_token_iterator(const u32regex_token_iterator& that)
+ : pdata(that.pdata) {}
+ u32regex_token_iterator& operator=(const u32regex_token_iterator& that)
+ {
+ pdata = that.pdata;
+ return *this;
+ }
+ bool operator==(const u32regex_token_iterator& that)const
+ {
+ if((pdata.get() == 0) || (that.pdata.get() == 0))
+ return pdata.get() == that.pdata.get();
+ return pdata->compare(*(that.pdata.get()));
+ }
+ bool operator!=(const u32regex_token_iterator& that)const
+ { return !(*this == that); }
+ const value_type& operator*()const
+ { return pdata->get(); }
+ const value_type* operator->()const
+ { return &(pdata->get()); }
+ u32regex_token_iterator& operator++()
+ {
+ cow();
+ if(0 == pdata->next())
+ {
+ pdata.reset();
+ }
+ return *this;
+ }
+ u32regex_token_iterator operator++(int)
+ {
+ u32regex_token_iterator result(*this);
+ ++(*this);
+ return result;
+ }
+private:
+
+ pimpl pdata;
+
+ void cow()
+ {
+ // copy-on-write
+ if(pdata.get() && !pdata.unique())
+ {
+ pdata.reset(new impl(*(pdata.get())));
+ }
+ }
+};
+
+typedef u32regex_token_iterator<const char*> utf8regex_token_iterator;
+typedef u32regex_token_iterator<const UChar*> utf16regex_token_iterator;
+typedef u32regex_token_iterator<const UChar32*> utf32regex_token_iterator;
+
+// construction from an integral sub_match state_id:
+inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
+}
+#ifndef BOOST_NO_WREGEX
+inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
+}
+#endif
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m);
+}
+#endif
+template <class charT, class Traits, class Alloc>
+inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, int submatch = 0, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
+}
+
+#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// construction from a reference to an array:
+template <std::size_t N>
+inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
+}
+#ifndef BOOST_NO_WREGEX
+template <std::size_t N>
+inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
+}
+#endif
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
+template <std::size_t N>
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, m);
+}
+#endif
+template <class charT, class Traits, class Alloc, std::size_t N>
+inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+template <std::size_t N>
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, const int (&submatch)[N], regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
+}
+#endif // BOOST_MSVC < 1300
+
+// construction from a vector of sub_match state_id's:
+inline u32regex_token_iterator<const char*> make_u32regex_token_iterator(const char* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const char*>(p, p+std::strlen(p), e, submatch, m);
+}
+#ifndef BOOST_NO_WREGEX
+inline u32regex_token_iterator<const wchar_t*> make_u32regex_token_iterator(const wchar_t* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const wchar_t*>(p, p+std::wcslen(p), e, submatch, m);
+}
+#endif
+#if !defined(U_WCHAR_IS_UTF16) && (U_SIZEOF_WCHAR_T != 2)
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UChar* p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(p, p+u_strlen(p), e, submatch, m);
+}
+#endif
+template <class charT, class Traits, class Alloc>
+inline u32regex_token_iterator<typename std::basic_string<charT, Traits, Alloc>::const_iterator> make_u32regex_token_iterator(const std::basic_string<charT, Traits, Alloc>& p, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ typedef typename std::basic_string<charT, Traits, Alloc>::const_iterator iter_type;
+ return u32regex_token_iterator<iter_type>(p.begin(), p.end(), e, m);
+}
+inline u32regex_token_iterator<const UChar*> make_u32regex_token_iterator(const UnicodeString& s, const u32regex& e, const std::vector<int>& submatch, regex_constants::match_flag_type m = regex_constants::match_default)
+{
+ return u32regex_token_iterator<const UChar*>(s.getBuffer(), s.getBuffer() + s.length(), e, submatch, m);
+}
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+# pragma warning(pop)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+} // namespace boost
+
+#endif // BOOST_REGEX_V4_REGEX_TOKEN_ITERATOR_HPP
+
+
+
+
diff --git a/3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp b/3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp
new file mode 100644
index 0000000..21a9694
--- /dev/null
+++ b/3rdParty/Boost/boost/regex/v4/w32_regex_traits.hpp
@@ -0,0 +1,731 @@
+/*
+ *
+ * Copyright (c) 2004
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE w32_regex_traits.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Declares regular expression traits class w32_regex_traits.
+ */
+
+#ifndef BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
+#define BOOST_W32_REGEX_TRAITS_HPP_INCLUDED
+
+#ifndef BOOST_RE_PAT_EXCEPT_HPP
+#include <boost/regex/pattern_except.hpp>
+#endif
+#ifndef BOOST_REGEX_TRAITS_DEFAULTS_HPP_INCLUDED
+#include <boost/regex/v4/regex_traits_defaults.hpp>
+#endif
+#ifdef BOOST_HAS_THREADS
+#include <boost/regex/pending/static_mutex.hpp>
+#endif
+#ifndef BOOST_REGEX_PRIMARY_TRANSFORM
+#include <boost/regex/v4/primary_transform.hpp>
+#endif
+#ifndef BOOST_REGEX_OBJECT_CACHE_HPP
+#include <boost/regex/pending/object_cache.hpp>
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4786)
+#pragma warning(disable:4800)
+#endif
+
+namespace boost{
+
+//
+// forward declaration is needed by some compilers:
+//
+template <class charT>
+class w32_regex_traits;
+
+namespace re_detail{
+
+//
+// start by typedeffing the types we'll need:
+//
+typedef ::boost::uint32_t lcid_type; // placeholder for LCID.
+typedef ::boost::shared_ptr<void> cat_type; // placeholder for dll HANDLE.
+
+//
+// then add wrappers around the actual Win32 API's (ie implementation hiding):
+//
+BOOST_REGEX_DECL lcid_type BOOST_REGEX_CALL w32_get_default_locale();
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(char, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(wchar_t, lcid_type);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_lower(unsigned short ca, lcid_type state_id);
+#endif
+#endif
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(char, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(wchar_t, lcid_type);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is_upper(unsigned short ca, lcid_type state_id);
+#endif
+#endif
+BOOST_REGEX_DECL cat_type BOOST_REGEX_CALL w32_cat_open(const std::string& name);
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::string& def);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type state_id, int i, const std::wstring& def);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::basic_string<unsigned short>& def);
+#endif
+#endif
+BOOST_REGEX_DECL std::string BOOST_REGEX_CALL w32_transform(lcid_type state_id, const char* p1, const char* p2);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_transform(lcid_type state_id, const wchar_t* p1, const wchar_t* p2);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL std::basic_string<unsigned short> BOOST_REGEX_CALL w32_transform(lcid_type state_id, const unsigned short* p1, const unsigned short* p2);
+#endif
+#endif
+BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_tolower(char c, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_tolower(wchar_t c, lcid_type);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL unsigned short BOOST_REGEX_CALL w32_tolower(unsigned short c, lcid_type state_id);
+#endif
+#endif
+BOOST_REGEX_DECL char BOOST_REGEX_CALL w32_toupper(char c, lcid_type);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL wchar_t BOOST_REGEX_CALL w32_toupper(wchar_t c, lcid_type);
+#endif
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, char c);
+#ifndef BOOST_NO_WREGEX
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type, boost::uint32_t mask, wchar_t c);
+#ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
+BOOST_REGEX_DECL bool BOOST_REGEX_CALL w32_is(lcid_type state_id, boost::uint32_t m, unsigned short c);
+#endif
+#endif
+//
+// class w32_regex_traits_base:
+// acts as a container for locale and the facets we are using.
+//
+template <class charT>
+struct w32_regex_traits_base
+{
+ w32_regex_traits_base(lcid_type l)
+ { imbue(l); }
+ lcid_type imbue(lcid_type l);
+
+ lcid_type m_locale;
+};
+
+template <class charT>
+inline lcid_type w32_regex_traits_base<charT>::imbue(lcid_type l)
+{
+ lcid_type result(m_locale);
+ m_locale = l;
+ return result;
+}
+
+//
+// class w32_regex_traits_char_layer:
+// implements methods that require specialisation for narrow characters:
+//
+template <class charT>
+class w32_regex_traits_char_layer : public w32_regex_traits_base<charT>
+{
+ typedef std::basic_string<charT> string_type;
+ typedef std::map<charT, regex_constants::syntax_type> map_type;
+ typedef typename map_type::const_iterator map_iterator_type;
+public:
+ w32_regex_traits_char_layer(const lcid_type l);
+
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ return ((i == m_char_map.end()) ? 0 : i->second);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ map_iterator_type i = m_char_map.find(c);
+ if(i == m_char_map.end())
+ {
+ if(::boost::re_detail::w32_is_lower(c, this->m_locale)) return regex_constants::escape_type_class;
+ if(::boost::re_detail::w32_is_upper(c, this->m_locale)) return regex_constants::escape_type_not_class;
+ return 0;
+ }
+ return i->second;
+ }
+ charT tolower(charT c)const
+ {
+ return ::boost::re_detail::w32_tolower(c, this->m_locale);
+ }
+ bool isctype(boost::uint32_t mask, charT c)const
+ {
+ return ::boost::re_detail::w32_is(this->m_locale, mask, c);
+ }
+
+private:
+ string_type get_default_message(regex_constants::syntax_type);
+ // TODO: use a hash table when available!
+ map_type m_char_map;
+};
+
+template <class charT>
+w32_regex_traits_char_layer<charT>::w32_regex_traits_char_layer(::boost::re_detail::lcid_type l)
+ : w32_regex_traits_base<charT>(l)
+{
+ // we need to start by initialising our syntax map so we know which
+ // character is used for which purpose:
+ cat_type cat;
+ std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = ::boost::re_detail::w32_cat_open(cat_name);
+ if(!cat)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if(cat)
+ {
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ string_type mss = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i, get_default_message(i));
+ for(typename string_type::size_type j = 0; j < mss.size(); ++j)
+ {
+ this->m_char_map[mss[j]] = i;
+ }
+ }
+ }
+ else
+ {
+ for(regex_constants::syntax_type i = 1; i < regex_constants::syntax_max; ++i)
+ {
+ const char* ptr = get_default_syntax(i);
+ while(ptr && *ptr)
+ {
+ this->m_char_map[static_cast<charT>(*ptr)] = i;
+ ++ptr;
+ }
+ }
+ }
+}
+
+template <class charT>
+typename w32_regex_traits_char_layer<charT>::string_type
+ w32_regex_traits_char_layer<charT>::get_default_message(regex_constants::syntax_type i)
+{
+ const char* ptr = get_default_syntax(i);
+ string_type result;
+ while(ptr && *ptr)
+ {
+ result.append(1, static_cast<charT>(*ptr));
+ ++ptr;
+ }
+ return result;
+}
+
+//
+// specialised version for narrow characters:
+//
+template <>
+class BOOST_REGEX_DECL w32_regex_traits_char_layer<char> : public w32_regex_traits_base<char>
+{
+ typedef std::string string_type;
+public:
+ w32_regex_traits_char_layer(::boost::re_detail::lcid_type l)
+ : w32_regex_traits_base<char>(l)
+ {
+ init();
+ }
+
+ regex_constants::syntax_type syntax_type(char c)const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(char c) const
+ {
+ return m_char_map[static_cast<unsigned char>(c)];
+ }
+ char tolower(char c)const
+ {
+ return m_lower_map[static_cast<unsigned char>(c)];
+ }
+ bool isctype(boost::uint32_t mask, char c)const
+ {
+ return m_type_map[static_cast<unsigned char>(c)] & mask;
+ }
+
+private:
+ regex_constants::syntax_type m_char_map[1u << CHAR_BIT];
+ char m_lower_map[1u << CHAR_BIT];
+ boost::uint16_t m_type_map[1u << CHAR_BIT];
+ void init();
+};
+
+//
+// class w32_regex_traits_implementation:
+// provides pimpl implementation for w32_regex_traits.
+//
+template <class charT>
+class w32_regex_traits_implementation : public w32_regex_traits_char_layer<charT>
+{
+public:
+ typedef typename w32_regex_traits<charT>::char_class_type char_class_type;
+ BOOST_STATIC_CONSTANT(char_class_type, mask_word = 0x0400); // must be C1_DEFINED << 1
+ BOOST_STATIC_CONSTANT(char_class_type, mask_unicode = 0x0800); // must be C1_DEFINED << 2
+ BOOST_STATIC_CONSTANT(char_class_type, mask_base = 0x3ff); // all the masks used by the CT_CTYPE1 group
+
+ typedef std::basic_string<charT> string_type;
+ typedef charT char_type;
+ w32_regex_traits_implementation(::boost::re_detail::lcid_type l);
+ std::string error_string(regex_constants::error_type n) const
+ {
+ if(!m_error_strings.empty())
+ {
+ std::map<int, std::string>::const_iterator p = m_error_strings.find(n);
+ return (p == m_error_strings.end()) ? std::string(get_default_error_string(n)) : p->second;
+ }
+ return get_default_error_string(n);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ char_class_type result = lookup_classname_imp(p1, p2);
+ if(result == 0)
+ {
+ typedef typename string_type::size_type size_type;
+ string_type temp(p1, p2);
+ for(size_type i = 0; i < temp.size(); ++i)
+ temp[i] = this->tolower(temp[i]);
+ result = lookup_classname_imp(&*temp.begin(), &*temp.begin() + temp.size());
+ }
+ return result;
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const;
+ string_type transform_primary(const charT* p1, const charT* p2) const;
+ string_type transform(const charT* p1, const charT* p2) const
+ {
+ return ::boost::re_detail::w32_transform(this->m_locale, p1, p2);
+ }
+private:
+ std::map<int, std::string> m_error_strings; // error messages indexed by numberic ID
+ std::map<string_type, char_class_type> m_custom_class_names; // character class names
+ std::map<string_type, string_type> m_custom_collate_names; // collating element names
+ unsigned m_collate_type; // the form of the collation string
+ charT m_collate_delim; // the collation group delimiter
+ //
+ // helpers:
+ //
+ char_class_type lookup_classname_imp(const charT* p1, const charT* p2) const;
+};
+
+template <class charT>
+typename w32_regex_traits_implementation<charT>::string_type
+ w32_regex_traits_implementation<charT>::transform_primary(const charT* p1, const charT* p2) const
+{
+ string_type result;
+ //
+ // What we do here depends upon the format of the sort key returned by
+ // sort key returned by this->transform:
+ //
+ switch(m_collate_type)
+ {
+ case sort_C:
+ case sort_unknown:
+ // the best we can do is translate to lower case, then get a regular sort key:
+ {
+ result.assign(p1, p2);
+ typedef typename string_type::size_type size_type;
+ for(size_type i = 0; i < result.size(); ++i)
+ result[i] = this->tolower(result[i]);
+ result = this->transform(&*result.begin(), &*result.begin() + result.size());
+ break;
+ }
+ case sort_fixed:
+ {
+ // get a regular sort key, and then truncate it:
+ result.assign(this->transform(p1, p2));
+ result.erase(this->m_collate_delim);
+ break;
+ }
+ case sort_delim:
+ // get a regular sort key, and then truncate everything after the delim:
+ result.assign(this->transform(p1, p2));
+ std::size_t i;
+ for(i = 0; i < result.size(); ++i)
+ {
+ if(result[i] == m_collate_delim)
+ break;
+ }
+ result.erase(i);
+ break;
+ }
+ if(result.empty())
+ result = string_type(1, charT(0));
+ return result;
+}
+
+template <class charT>
+typename w32_regex_traits_implementation<charT>::string_type
+ w32_regex_traits_implementation<charT>::lookup_collatename(const charT* p1, const charT* p2) const
+{
+ typedef typename std::map<string_type, string_type>::const_iterator iter_type;
+ if(m_custom_collate_names.size())
+ {
+ iter_type pos = m_custom_collate_names.find(string_type(p1, p2));
+ if(pos != m_custom_collate_names.end())
+ return pos->second;
+ }
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ std::string name(p1, p2);
+#else
+ std::string name;
+ const charT* p0 = p1;
+ while(p0 != p2)
+ name.append(1, char(*p0++));
+#endif
+ name = lookup_default_collate_name(name);
+#if !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)\
+ && !BOOST_WORKAROUND(BOOST_MSVC, < 1300)\
+ && !BOOST_WORKAROUND(__BORLANDC__, <= 0x0551)
+ if(name.size())
+ return string_type(name.begin(), name.end());
+#else
+ if(name.size())
+ {
+ string_type result;
+ typedef std::string::const_iterator iter;
+ iter b = name.begin();
+ iter e = name.end();
+ while(b != e)
+ result.append(1, charT(*b++));
+ return result;
+ }
+#endif
+ if(p2 - p1 == 1)
+ return string_type(1, *p1);
+ return string_type();
+}
+
+template <class charT>
+w32_regex_traits_implementation<charT>::w32_regex_traits_implementation(::boost::re_detail::lcid_type l)
+: w32_regex_traits_char_layer<charT>(l)
+{
+ cat_type cat;
+ std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
+ if(cat_name.size())
+ {
+ cat = ::boost::re_detail::w32_cat_open(cat_name);
+ if(!cat)
+ {
+ std::string m("Unable to open message catalog: ");
+ std::runtime_error err(m + cat_name);
+ boost::re_detail::raise_runtime_error(err);
+ }
+ }
+ //
+ // if we have a valid catalog then load our messages:
+ //
+ if(cat)
+ {
+ //
+ // Error messages:
+ //
+ for(boost::regex_constants::error_type i = static_cast<boost::regex_constants::error_type>(0);
+ i <= boost::regex_constants::error_unknown;
+ i = static_cast<boost::regex_constants::error_type>(i + 1))
+ {
+ const char* p = get_default_error_string(i);
+ string_type default_message;
+ while(*p)
+ {
+ default_message.append(1, static_cast<charT>(*p));
+ ++p;
+ }
+ string_type s = ::boost::re_detail::w32_cat_get(cat, this->m_locale, i+200, default_message);
+ std::string result;
+ for(std::string::size_type j = 0; j < s.size(); ++j)
+ {
+ result.append(1, static_cast<char>(s[j]));
+ }
+ m_error_strings[i] = result;
+ }
+ //
+ // Custom class names:
+ //
+ static const char_class_type masks[14] =
+ {
+ 0x0104u, // C1_ALPHA | C1_DIGIT
+ 0x0100u, // C1_ALPHA
+ 0x0020u, // C1_CNTRL
+ 0x0004u, // C1_DIGIT
+ (~(0x0020u|0x0008u) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE
+ 0x0002u, // C1_LOWER
+ (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL
+ 0x0010u, // C1_PUNCT
+ 0x0008u, // C1_SPACE
+ 0x0001u, // C1_UPPER
+ 0x0080u, // C1_XDIGIT
+ 0x0040u, // C1_BLANK
+ w32_regex_traits_implementation<charT>::mask_word,
+ w32_regex_traits_implementation<charT>::mask_unicode,
+ };
+ static const string_type null_string;
+ for(unsigned int j = 0; j <= 13; ++j)
+ {
+ string_type s(::boost::re_detail::w32_cat_get(cat, this->m_locale, j+300, null_string));
+ if(s.size())
+ this->m_custom_class_names[s] = masks[j];
+ }
+ }
+ //
+ // get the collation format used by m_pcollate:
+ //
+ m_collate_type = re_detail::find_sort_syntax(this, &m_collate_delim);
+}
+
+template <class charT>
+typename w32_regex_traits_implementation<charT>::char_class_type
+ w32_regex_traits_implementation<charT>::lookup_classname_imp(const charT* p1, const charT* p2) const
+{
+ static const char_class_type masks[20] =
+ {
+ 0,
+ 0x0104u, // C1_ALPHA | C1_DIGIT
+ 0x0100u, // C1_ALPHA
+ 0x0040u, // C1_BLANK
+ 0x0020u, // C1_CNTRL
+ 0x0004u, // C1_DIGIT
+ 0x0004u, // C1_DIGIT
+ (~(0x0020u|0x0008u|0x0040) & 0x01ffu) | 0x0400u, // not C1_CNTRL or C1_SPACE or C1_BLANK
+ 0x0002u, // C1_LOWER
+ 0x0002u, // C1_LOWER
+ (~0x0020u & 0x01ffu) | 0x0400, // not C1_CNTRL
+ 0x0010u, // C1_PUNCT
+ 0x0008u, // C1_SPACE
+ 0x0008u, // C1_SPACE
+ 0x0001u, // C1_UPPER
+ w32_regex_traits_implementation<charT>::mask_unicode,
+ 0x0001u, // C1_UPPER
+ 0x0104u | w32_regex_traits_implementation<charT>::mask_word,
+ 0x0104u | w32_regex_traits_implementation<charT>::mask_word,
+ 0x0080u, // C1_XDIGIT
+ };
+ if(m_custom_class_names.size())
+ {
+ typedef typename std::map<std::basic_string<charT>, char_class_type>::const_iterator map_iter;
+ map_iter pos = m_custom_class_names.find(string_type(p1, p2));
+ if(pos != m_custom_class_names.end())
+ return pos->second;
+ }
+ std::size_t state_id = 1 + re_detail::get_default_class_id(p1, p2);
+ if(state_id < sizeof(masks) / sizeof(masks[0]))
+ return masks[state_id];
+ return masks[0];
+}
+
+
+template <class charT>
+boost::shared_ptr<const w32_regex_traits_implementation<charT> > create_w32_regex_traits(::boost::re_detail::lcid_type l BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(charT))
+{
+ // TODO: create a cache for previously constructed objects.
+ return boost::object_cache< ::boost::re_detail::lcid_type, w32_regex_traits_implementation<charT> >::get(l, 5);
+}
+
+} // re_detail
+
+template <class charT>
+class w32_regex_traits
+{
+public:
+ typedef charT char_type;
+ typedef std::size_t size_type;
+ typedef std::basic_string<char_type> string_type;
+ typedef ::boost::re_detail::lcid_type locale_type;
+ typedef boost::uint_least32_t char_class_type;
+
+ struct boost_extensions_tag{};
+
+ w32_regex_traits()
+ : m_pimpl(re_detail::create_w32_regex_traits<charT>(::boost::re_detail::w32_get_default_locale()))
+ { }
+ static size_type length(const char_type* p)
+ {
+ return std::char_traits<charT>::length(p);
+ }
+ regex_constants::syntax_type syntax_type(charT c)const
+ {
+ return m_pimpl->syntax_type(c);
+ }
+ regex_constants::escape_syntax_type escape_syntax_type(charT c) const
+ {
+ return m_pimpl->escape_syntax_type(c);
+ }
+ charT translate(charT c) const
+ {
+ return c;
+ }
+ charT translate_nocase(charT c) const
+ {
+ return this->m_pimpl->tolower(c);
+ }
+ charT translate(charT c, bool icase) const
+ {
+ return icase ? this->m_pimpl->tolower(c) : c;
+ }
+ charT tolower(charT c) const
+ {
+ return this->m_pimpl->tolower(c);
+ }
+ charT toupper(charT c) const
+ {
+ return ::boost::re_detail::w32_toupper(c, this->m_pimpl->m_locale);
+ }
+ string_type transform(const charT* p1, const charT* p2) const
+ {
+ return ::boost::re_detail::w32_transform(this->m_pimpl->m_locale, p1, p2);
+ }
+ string_type transform_primary(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->transform_primary(p1, p2);
+ }
+ char_class_type lookup_classname(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_classname(p1, p2);
+ }
+ string_type lookup_collatename(const charT* p1, const charT* p2) const
+ {
+ return m_pimpl->lookup_collatename(p1, p2);
+ }
+ bool isctype(charT c, char_class_type f) const
+ {
+ if((f & re_detail::w32_regex_traits_implementation<charT>::mask_base)
+ && (this->m_pimpl->isctype(f & re_detail::w32_regex_traits_implementation<charT>::mask_base, c)))
+ return true;
+ else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_unicode) && re_detail::is_extended(c))
+ return true;
+ else if((f & re_detail::w32_regex_traits_implementation<charT>::mask_word) && (c == '_'))
+ return true;
+ return false;
+ }
+ int toi(const charT*& p1, const charT* p2, int radix)const
+ {
+ return ::boost::re_detail::global_toi(p1, p2, radix, *this);
+ }
+ int value(charT c, int radix)const
+ {
+ int result = ::boost::re_detail::global_value(c);
+ return result < radix ? result : -1;
+ }
+ locale_type imbue(locale_type l)
+ {
+ ::boost::re_detail::lcid_type result(getloc());
+ m_pimpl = re_detail::create_w32_regex_traits<charT>(l);
+ return result;
+ }
+ locale_type getloc()const
+ {
+ return m_pimpl->m_locale;
+ }
+ std::string error_string(regex_constants::error_type n) const
+ {
+ return m_pimpl->error_string(n);
+ }
+
+ //
+ // extension:
+ // set the name of the message catalog in use (defaults to "boost_regex").
+ //
+ static std::string catalog_name(const std::string& name);
+ static std::string get_catalog_name();
+
+private:
+ boost::shared_ptr<const re_detail::w32_regex_traits_implementation<charT> > m_pimpl;
+ //
+ // catalog name handler:
+ //
+ static std::string& get_catalog_name_inst();
+
+#ifdef BOOST_HAS_THREADS
+ static static_mutex& get_mutex_inst();
+#endif
+};
+
+template <class charT>
+std::string w32_regex_traits<charT>::catalog_name(const std::string& name)
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ get_catalog_name_inst() = name;
+ return result;
+}
+
+template <class charT>
+std::string& w32_regex_traits<charT>::get_catalog_name_inst()
+{
+ static std::string s_name;
+ return s_name;
+}
+
+template <class charT>
+std::string w32_regex_traits<charT>::get_catalog_name()
+{
+#ifdef BOOST_HAS_THREADS
+ static_mutex::scoped_lock lk(get_mutex_inst());
+#endif
+ std::string result(get_catalog_name_inst());
+ return result;
+}
+
+#ifdef BOOST_HAS_THREADS
+template <class charT>
+static_mutex& w32_regex_traits<charT>::get_mutex_inst()
+{
+ static static_mutex s_mutex = BOOST_STATIC_MUTEX_INIT;
+ return s_mutex;
+}
+#endif
+
+
+} // boost
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable: 4103)
+#endif
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/regex_fwd.hpp b/3rdParty/Boost/boost/regex_fwd.hpp
new file mode 100644
index 0000000..2ee4a24
--- /dev/null
+++ b/3rdParty/Boost/boost/regex_fwd.hpp
@@ -0,0 +1,33 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+ /*
+ * LOCATION: see http://www.boost.org/libs/regex for documentation.
+ * FILE regex_fwd.cpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Forward declares boost::basic_regex<> and
+ * associated typedefs.
+ */
+
+#ifndef BOOST_REGEX_FWD_HPP
+#define BOOST_REGEX_FWD_HPP
+
+#ifndef BOOST_REGEX_CONFIG_HPP
+#include <boost/regex/config.hpp>
+#endif
+
+#include <boost/regex/v4/regex_fwd.hpp>
+
+#endif
+
+
+
+
diff --git a/3rdParty/Boost/boost/scoped_array.hpp b/3rdParty/Boost/boost/scoped_array.hpp
new file mode 100644
index 0000000..c02fa31
--- /dev/null
+++ b/3rdParty/Boost/boost/scoped_array.hpp
@@ -0,0 +1,16 @@
+#ifndef BOOST_SCOPED_ARRAY_HPP_INCLUDED
+#define BOOST_SCOPED_ARRAY_HPP_INCLUDED
+
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/smart_ptr/scoped_array.htm
+//
+
+#include <boost/smart_ptr/scoped_array.hpp>
+
+#endif // #ifndef BOOST_SCOPED_ARRAY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/scoped_ptr.hpp b/3rdParty/Boost/boost/scoped_ptr.hpp
new file mode 100644
index 0000000..cb916da
--- /dev/null
+++ b/3rdParty/Boost/boost/scoped_ptr.hpp
@@ -0,0 +1,16 @@
+#ifndef BOOST_SCOPED_PTR_HPP_INCLUDED
+#define BOOST_SCOPED_PTR_HPP_INCLUDED
+
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/smart_ptr/scoped_ptr.htm
+//
+
+#include <boost/smart_ptr/scoped_ptr.hpp>
+
+#endif // #ifndef BOOST_SCOPED_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/shared_array.hpp b/3rdParty/Boost/boost/shared_array.hpp
new file mode 100644
index 0000000..0700ce4
--- /dev/null
+++ b/3rdParty/Boost/boost/shared_array.hpp
@@ -0,0 +1,19 @@
+#ifndef BOOST_SHARED_ARRAY_HPP_INCLUDED
+#define BOOST_SHARED_ARRAY_HPP_INCLUDED
+
+//
+// shared_array.hpp
+//
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/shared_array.htm for documentation.
+//
+
+#include <boost/smart_ptr/shared_array.hpp>
+
+#endif // #ifndef BOOST_SHARED_ARRAY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/shared_ptr.hpp b/3rdParty/Boost/boost/shared_ptr.hpp
new file mode 100644
index 0000000..d31978c
--- /dev/null
+++ b/3rdParty/Boost/boost/shared_ptr.hpp
@@ -0,0 +1,19 @@
+#ifndef BOOST_SHARED_PTR_HPP_INCLUDED
+#define BOOST_SHARED_PTR_HPP_INCLUDED
+
+//
+// shared_ptr.hpp
+//
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001-2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
+//
+
+#include <boost/smart_ptr/shared_ptr.hpp>
+
+#endif // #ifndef BOOST_SHARED_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/signal.hpp b/3rdParty/Boost/boost/signal.hpp
new file mode 100644
index 0000000..d1538e1
--- /dev/null
+++ b/3rdParty/Boost/boost/signal.hpp
@@ -0,0 +1,358 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2006. 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)
+
+// For more information, see http://www.boost.org/libs/signals
+
+#ifndef BOOST_SIGNAL_HPP
+#define BOOST_SIGNAL_HPP
+
+#ifndef BOOST_SIGNALS_MAX_ARGS
+# define BOOST_SIGNALS_MAX_ARGS 10
+#endif
+
+#include <boost/config.hpp>
+#include <boost/type_traits/function_traits.hpp>
+#include <boost/signals/signal0.hpp>
+#include <boost/signals/signal1.hpp>
+#include <boost/signals/signal2.hpp>
+#include <boost/signals/signal3.hpp>
+#include <boost/signals/signal4.hpp>
+#include <boost/signals/signal5.hpp>
+#include <boost/signals/signal6.hpp>
+#include <boost/signals/signal7.hpp>
+#include <boost/signals/signal8.hpp>
+#include <boost/signals/signal9.hpp>
+#include <boost/signals/signal10.hpp>
+#include <boost/function.hpp>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+#ifndef BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
+ namespace BOOST_SIGNALS_NAMESPACE {
+ namespace detail {
+ template<int Arity,
+ typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl;
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<0, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal0<typename traits::result_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<1, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal1<typename traits::result_type,
+ typename traits::arg1_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<2, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal2<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<3, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal3<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<4, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal4<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<5, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal5<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ typename traits::arg5_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<6, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal6<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ typename traits::arg5_type,
+ typename traits::arg6_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<7, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal7<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ typename traits::arg5_type,
+ typename traits::arg6_type,
+ typename traits::arg7_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<8, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal8<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ typename traits::arg5_type,
+ typename traits::arg6_type,
+ typename traits::arg7_type,
+ typename traits::arg8_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<9, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal9<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ typename traits::arg5_type,
+ typename traits::arg6_type,
+ typename traits::arg7_type,
+ typename traits::arg8_type,
+ typename traits::arg9_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ class real_get_signal_impl<10, Signature, Combiner, Group, GroupCompare,
+ SlotFunction>
+ {
+ typedef function_traits<Signature> traits;
+
+ public:
+ typedef signal10<typename traits::result_type,
+ typename traits::arg1_type,
+ typename traits::arg2_type,
+ typename traits::arg3_type,
+ typename traits::arg4_type,
+ typename traits::arg5_type,
+ typename traits::arg6_type,
+ typename traits::arg7_type,
+ typename traits::arg8_type,
+ typename traits::arg9_type,
+ typename traits::arg10_type,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction> type;
+ };
+
+ template<typename Signature,
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction>
+ struct get_signal_impl :
+ public real_get_signal_impl<(function_traits<Signature>::arity),
+ Signature,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction>
+ {
+ };
+
+ } // end namespace detail
+ } // end namespace BOOST_SIGNALS_NAMESPACE
+
+ // Very lightweight wrapper around the signalN classes that allows signals to
+ // be created where the number of arguments does not need to be part of the
+ // class name.
+ template<
+ typename Signature, // function type R (T1, T2, ..., TN)
+ typename Combiner = last_value<typename function_traits<Signature>::result_type>,
+ typename Group = int,
+ typename GroupCompare = std::less<Group>,
+ typename SlotFunction = function<Signature>
+ >
+ class signal :
+ public BOOST_SIGNALS_NAMESPACE::detail::get_signal_impl<Signature,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction>::type
+ {
+ typedef typename BOOST_SIGNALS_NAMESPACE::detail::get_signal_impl<
+ Signature,
+ Combiner,
+ Group,
+ GroupCompare,
+ SlotFunction>::type base_type;
+
+ public:
+ explicit signal(const Combiner& combiner = Combiner(),
+ const GroupCompare& group_compare = GroupCompare()) :
+ base_type(combiner, group_compare)
+ {
+ }
+ };
+#endif // ndef BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
+
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNAL_HPP
diff --git a/3rdParty/Boost/boost/signals.hpp b/3rdParty/Boost/boost/signals.hpp
new file mode 100644
index 0000000..7e83ed5
--- /dev/null
+++ b/3rdParty/Boost/boost/signals.hpp
@@ -0,0 +1,10 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2003-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)
+
+// For more information, see http://www.boost.org/libs/signals
+#include <boost/signal.hpp>
+
diff --git a/3rdParty/Boost/boost/signals/connection.hpp b/3rdParty/Boost/boost/signals/connection.hpp
new file mode 100644
index 0000000..48493aa
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/connection.hpp
@@ -0,0 +1,213 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_CONNECTION_HPP
+#define BOOST_SIGNALS_CONNECTION_HPP
+
+#include <boost/signals/detail/signals_common.hpp>
+#include <boost/smart_ptr.hpp>
+#include <boost/operators.hpp>
+#include <boost/any.hpp>
+#include <list>
+#include <cassert>
+#include <utility>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+ namespace BOOST_SIGNALS_NAMESPACE {
+ class trackable;
+
+ namespace detail {
+ // Represents an object that has been bound as part of a slot, and how
+ // to notify that object of a disconnect
+ struct bound_object {
+ void* obj;
+ void* data;
+ void (*disconnect)(void*, void*);
+
+ bool operator==(const bound_object& other) const
+ { return obj == other.obj && data == other.data; }
+ bool operator<(const bound_object& other) const
+ { return obj < other.obj; }
+
+ // To support intel 80 compiler, 2004/03/18 (Mark Rodgers)
+ bool operator!=(const bound_object& other) const
+ { return !(*this==other); }
+ bool operator>(const bound_object& other) const
+ { return !(*this < other); }
+ };
+
+ // Describes the connection between a signal and the objects that are
+ // bound for a specific slot. Enables notification of the signal and the
+ // slots when a disconnect is requested.
+ struct basic_connection {
+ void* signal;
+ void* signal_data;
+ void (*signal_disconnect)(void*, void*);
+ bool blocked_;
+
+ std::list<bound_object> bound_objects;
+ };
+ } // end namespace detail
+
+ // The user may freely pass around the "connection" object and terminate
+ // the connection at any time using disconnect().
+ class BOOST_SIGNALS_DECL connection :
+ private less_than_comparable1<connection>,
+ private equality_comparable1<connection>
+ {
+ public:
+ connection() : con(), controlling_connection(false) {}
+ connection(const connection&);
+ ~connection();
+
+ // Block he connection: if the connection is still active, there
+ // will be no notification
+ void block(bool should_block = true) { con->blocked_ = should_block; }
+ void unblock() { con->blocked_ = false; }
+ bool blocked() const { return !connected() || con->blocked_; }
+
+ // Disconnect the signal and slot, if they are connected
+ void disconnect() const;
+
+ // Returns true if the signal and slot are connected
+ bool connected() const { return con.get() && con->signal_disconnect; }
+
+ // Comparison of connections
+ bool operator==(const connection& other) const;
+ bool operator<(const connection& other) const;
+
+ // Connection assignment
+ connection& operator=(const connection& other) ;
+
+ // Swap connections
+ void swap(connection& other);
+
+ public: // TBD: CHANGE THIS
+ // Set whether this connection object is controlling or not
+ void set_controlling(bool control = true)
+ { controlling_connection = control; }
+
+ shared_ptr<BOOST_SIGNALS_NAMESPACE::detail::basic_connection>
+ get_connection() const
+ { return con; }
+
+ private:
+ friend class detail::signal_base_impl;
+ friend class detail::slot_base;
+ friend class trackable;
+
+ // Reset this connection to refer to a different actual connection
+ void reset(BOOST_SIGNALS_NAMESPACE::detail::basic_connection*);
+
+ // Add a bound object to this connection (not for users)
+ void add_bound_object(const BOOST_SIGNALS_NAMESPACE::detail::bound_object& b);
+
+ friend class BOOST_SIGNALS_NAMESPACE::detail::bound_objects_visitor;
+
+ // Pointer to the actual contents of the connection
+ shared_ptr<BOOST_SIGNALS_NAMESPACE::detail::basic_connection> con;
+
+ // True if the destruction of this connection object should disconnect
+ bool controlling_connection;
+ };
+
+ // Similar to connection, but will disconnect the connection when it is
+ // destroyed unless release() has been called.
+ class BOOST_SIGNALS_DECL scoped_connection : public connection {
+ public:
+ scoped_connection() : connection(), released(false) {}
+ scoped_connection(const connection&);
+ scoped_connection(const scoped_connection&);
+ ~scoped_connection();
+
+ connection release();
+
+ inline void swap(scoped_connection&);
+
+ scoped_connection& operator=(const connection&);
+ scoped_connection& operator=(const scoped_connection&);
+
+ private:
+ bool released;
+ };
+
+ namespace detail {
+ struct connection_slot_pair {
+ connection first;
+ any second;
+
+ connection_slot_pair() {}
+
+ connection_slot_pair(const connection& c, const any& a)
+ : first(c), second(a)
+ {
+ }
+
+ // Dummys to allow explicit instantiation to work
+ bool operator==(const connection_slot_pair&) const { return false; }
+ bool operator<(const connection_slot_pair&) const { return false;}
+ };
+
+ // Determines if the underlying connection is disconnected
+ struct is_disconnected {
+ typedef connection_slot_pair argument_type;
+ typedef bool result_type;
+
+ inline bool operator()(const argument_type& c) const
+ {
+ return !c.first.connected();
+ }
+ };
+
+ // Determines if the underlying connection is callable, ie if
+ // it is connected and not blocked
+ struct is_callable {
+ typedef connection_slot_pair argument_type;
+ typedef bool result_type;
+
+ inline bool operator()(const argument_type& c) const
+ {
+ return c.first.connected() && !c.first.blocked() ;
+ }
+ };
+
+ // Autodisconnects the bound object when it is destroyed unless the
+ // release method is invoked.
+ class auto_disconnect_bound_object {
+ public:
+ auto_disconnect_bound_object(const bound_object& b) :
+ binding(b), auto_disconnect(true)
+ {
+ }
+
+ ~auto_disconnect_bound_object()
+ {
+ if (auto_disconnect)
+ binding.disconnect(binding.obj, binding.data);
+ }
+
+ void release() { auto_disconnect = false; }
+
+ private:
+ bound_object binding;
+ bool auto_disconnect;
+ };
+ } // end namespace detail
+ } // end namespace BOOST_SIGNALS_NAMESPACE
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNALS_CONNECTION_HPP
diff --git a/3rdParty/Boost/boost/signals/detail/config.hpp b/3rdParty/Boost/boost/signals/detail/config.hpp
new file mode 100644
index 0000000..bdd6d20
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/detail/config.hpp
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright (c) 1998-2002
+ * John Maddock
+ *
+ * Copyright (c) 2003-2004
+ * Douglas Gregor
+ *
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ */
+
+#ifndef BOOST_SIGNALS_CONFIG_HPP
+#define BOOST_SIGNALS_CONFIG_HPP
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_HAS_DECLSPEC
+# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SIGNALS_DYN_LINK)
+# ifdef BOOST_SIGNALS_SOURCE
+# define BOOST_SIGNALS_DECL __declspec(dllexport)
+# else
+# define BOOST_SIGNALS_DECL __declspec(dllimport)
+# endif // BOOST_SIGNALS_SOURCE
+# endif // DYN_LINK
+#endif // BOOST_HAS_DECLSPEC
+
+#ifndef BOOST_SIGNALS_DECL
+# define BOOST_SIGNALS_DECL
+#endif
+
+// Setup autolinking
+#if !defined(BOOST_SIGNALS_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_SIGNALS_NO_LIB)
+# define BOOST_LIB_NAME boost_signals
+
+# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SIGNALS_DYN_LINK)
+# define BOOST_DYN_LINK
+# endif
+
+# include <boost/config/auto_link.hpp>
+#endif // autolinking on
+
+#endif // BOOST_SIGNALS_CONFIG_HPP
+
+
+
+
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/signals/detail/named_slot_map.hpp b/3rdParty/Boost/boost/signals/detail/named_slot_map.hpp
new file mode 100644
index 0000000..e31d380
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/detail/named_slot_map.hpp
@@ -0,0 +1,193 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_NAMED_SLOT_MAP_HPP
+#define BOOST_SIGNALS_NAMED_SLOT_MAP_HPP
+
+#include <boost/signals/detail/config.hpp>
+#include <boost/signals/detail/signals_common.hpp>
+#include <boost/signals/connection.hpp>
+#include <boost/utility.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/function/function2.hpp>
+#include <boost/iterator/iterator_facade.hpp>
+#include <map>
+#include <memory>
+#include <utility>
+
+namespace boost { namespace BOOST_SIGNALS_NAMESPACE {
+
+enum connect_position { at_back, at_front };
+
+namespace detail {
+
+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() { }
+
+ template<typename T>
+ stored_group(const T& group) : kind(sk_group), group(new T(group)) { }
+
+ bool is_front() const { return kind == sk_front; }
+ bool is_back() const { return kind == sk_back; }
+ bool empty() const { return kind == sk_empty; }
+
+ void* get() const { return group.get(); }
+
+ private:
+ storage_kind kind;
+ shared_ptr<void> group;
+};
+
+typedef function2<bool, stored_group, stored_group> compare_type;
+
+// This function object bridges from a pair of any objects that hold
+// values of type Key to the underlying function object that compares
+// values of type Key.
+template<typename Compare, typename Key>
+class group_bridge_compare {
+public:
+ typedef bool result_type;
+ typedef const stored_group& first_argument_type;
+ typedef const stored_group& second_argument_type;
+
+ group_bridge_compare(const Compare& c) : comp(c)
+ { }
+
+ bool operator()(const stored_group& k1, const stored_group& k2) const
+ {
+ if (k1.is_front()) return !k2.is_front();
+ if (k1.is_back()) return false;
+ if (k2.is_front()) return false;
+ if (k2.is_back()) return true;
+
+ // Neither is empty, so compare their values to order them
+ return comp(*static_cast<Key*>(k1.get()), *static_cast<Key*>(k2.get()));
+ }
+
+private:
+ Compare comp;
+};
+
+class BOOST_SIGNALS_DECL named_slot_map_iterator :
+ public iterator_facade<named_slot_map_iterator,
+ connection_slot_pair,
+ forward_traversal_tag>
+{
+ typedef std::list<connection_slot_pair> group_list;
+ typedef group_list::iterator slot_pair_iterator;
+ typedef std::map<stored_group, group_list, compare_type> slot_container_type;
+ typedef slot_container_type::iterator group_iterator;
+ typedef slot_container_type::const_iterator const_group_iterator;
+
+ typedef iterator_facade<named_slot_map_iterator,
+ connection_slot_pair,
+ forward_traversal_tag> inherited;
+public:
+ named_slot_map_iterator() : slot_assigned(false)
+ { }
+ named_slot_map_iterator(const named_slot_map_iterator& other)
+ : group(other.group), last_group(other.last_group),
+ slot_assigned(other.slot_assigned)
+ {
+ if (slot_assigned) slot_ = other.slot_;
+ }
+ named_slot_map_iterator& operator=(const named_slot_map_iterator& other)
+ {
+ slot_assigned = other.slot_assigned;
+ group = other.group;
+ last_group = other.last_group;
+ if (slot_assigned) slot_ = other.slot_;
+ return *this;
+ }
+ connection_slot_pair& dereference() const
+ {
+ return *slot_;
+ }
+ void increment()
+ {
+ ++slot_;
+ if (slot_ == group->second.end()) {
+ ++group;
+ init_next_group();
+ }
+ }
+ bool equal(const named_slot_map_iterator& other) const {
+ return (group == other.group
+ && (group == last_group
+ || slot_ == other.slot_));
+ }
+
+#if BOOST_WORKAROUND(_MSC_VER, <= 1500)
+ void decrement();
+ void advance(difference_type);
+#endif
+
+private:
+ named_slot_map_iterator(group_iterator group, group_iterator last) :
+ group(group), last_group(last), slot_assigned(false)
+ { init_next_group(); }
+ named_slot_map_iterator(group_iterator group, group_iterator last,
+ slot_pair_iterator slot) :
+ group(group), last_group(last), slot_(slot), slot_assigned(true)
+ { }
+
+ void init_next_group()
+ {
+ while (group != last_group && group->second.empty()) ++group;
+ if (group != last_group) {
+ slot_ = group->second.begin();
+ slot_assigned = true;
+ }
+ }
+
+ group_iterator group;
+ group_iterator last_group;
+ slot_pair_iterator slot_;
+ bool slot_assigned;
+
+ friend class named_slot_map;
+};
+
+class BOOST_SIGNALS_DECL named_slot_map
+{
+public:
+ typedef named_slot_map_iterator iterator;
+
+ named_slot_map(const compare_type& compare);
+
+ void clear();
+ iterator begin();
+ iterator end();
+ iterator insert(const stored_group& name, const connection& con,
+ const any& slot, connect_position at);
+ void disconnect(const stored_group& name);
+ void erase(iterator pos);
+ void remove_disconnected_slots();
+
+private:
+ typedef std::list<connection_slot_pair> group_list;
+ typedef std::map<stored_group, group_list, compare_type> slot_container_type;
+ typedef slot_container_type::iterator group_iterator;
+ typedef slot_container_type::const_iterator const_group_iterator;
+
+ bool empty(const_group_iterator group) const
+ {
+ return (group->second.empty() && group != groups.begin() && group != back);
+ }
+ slot_container_type groups;
+ group_iterator back;
+};
+
+} } }
+
+#endif // BOOST_SIGNALS_NAMED_SLOT_MAP_HPP
diff --git a/3rdParty/Boost/boost/signals/detail/signal_base.hpp b/3rdParty/Boost/boost/signals/detail/signal_base.hpp
new file mode 100644
index 0000000..0438cf7
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/detail/signal_base.hpp
@@ -0,0 +1,159 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL_BASE_HEADER
+#define BOOST_SIGNALS_SIGNAL_BASE_HEADER
+
+#include <boost/signals/detail/config.hpp>
+#include <boost/signals/detail/signals_common.hpp>
+#include <boost/signals/detail/named_slot_map.hpp>
+#include <boost/signals/connection.hpp>
+#include <boost/signals/trackable.hpp>
+#include <boost/signals/slot.hpp>
+#include <boost/smart_ptr.hpp>
+#include <boost/utility.hpp>
+#include <boost/function/function2.hpp>
+#include <utility>
+#include <vector>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+ namespace BOOST_SIGNALS_NAMESPACE {
+ namespace detail {
+ // Must be constructed before calling the slots, because it safely
+ // manages call depth
+ class BOOST_SIGNALS_DECL call_notification {
+ public:
+ call_notification(const shared_ptr<signal_base_impl>&);
+ ~call_notification();
+
+ shared_ptr<signal_base_impl> impl;
+ };
+
+ // Implementation of base class for all signals. It handles the
+ // management of the underlying slot lists.
+ class BOOST_SIGNALS_DECL signal_base_impl {
+ public:
+ friend class call_notification;
+
+ typedef function2<bool, stored_group, stored_group> compare_type;
+
+ // Make sure that an exception does not cause the "clearing" flag to
+ // remain set
+ class temporarily_set_clearing {
+ public:
+ temporarily_set_clearing(signal_base_impl* b) : base(b)
+ {
+ base->flags.clearing = true;
+ }
+
+ ~temporarily_set_clearing()
+ {
+ base->flags.clearing = false;
+ }
+
+ private:
+ signal_base_impl* base;
+ };
+
+ friend class temporarily_set_clearing;
+
+ signal_base_impl(const compare_type&, const any&);
+ ~signal_base_impl();
+
+ // Disconnect all slots connected to this signal
+ void disconnect_all_slots();
+
+ // Are there any connected slots?
+ bool empty() const;
+
+ // The number of connected slots
+ std::size_t num_slots() const;
+
+ // Disconnect all slots in the given group
+ void disconnect(const stored_group&);
+
+ // We're being notified that a slot has disconnected
+ static void slot_disconnected(void* obj, void* data);
+
+ connection connect_slot(const any& slot,
+ const stored_group& name,
+ shared_ptr<slot_base::data_t> data,
+ connect_position at);
+
+ private:
+ // Remove all of the slots that have been marked "disconnected"
+ void remove_disconnected_slots() const;
+
+ public:
+ // Our call depth when invoking slots (> 1 when we have a loop)
+ mutable int call_depth;
+
+ struct {
+ // True if some slots have disconnected, but we were not able to
+ // remove them from the list of slots because there are valid
+ // iterators into the slot list
+ mutable bool delayed_disconnect:1;
+
+ // True if we are disconnecting all disconnected slots
+ bool clearing:1;
+ } flags;
+
+ // Slots
+ mutable named_slot_map slots_;
+ any combiner_;
+
+ // Types
+ typedef named_slot_map::iterator iterator;
+ };
+
+ class BOOST_SIGNALS_DECL signal_base : public noncopyable {
+ public:
+ typedef signal_base_impl::compare_type compare_type;
+
+ friend class call_notification;
+
+ signal_base(const compare_type& comp, const any& combiner);
+ ~signal_base();
+
+ public:
+ // Disconnect all slots connected to this signal
+ void disconnect_all_slots() { impl->disconnect_all_slots(); }
+
+ // Are there any connected slots?
+ bool empty() const { return impl->empty(); }
+
+ // How many slots are connected?
+ std::size_t num_slots() const { return impl->num_slots(); }
+
+ protected:
+ connection connect_slot(const any& slot,
+ const stored_group& name,
+ shared_ptr<slot_base::data_t> data,
+ connect_position at)
+ {
+ return impl->connect_slot(slot, name, data, at);
+ }
+
+ typedef named_slot_map::iterator iterator;
+
+ shared_ptr<signal_base_impl> impl;
+ };
+ } // end namespace detail
+ } // end namespace BOOST_SIGNALS_NAMESPACE
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNALS_SIGNAL_BASE_HEADER
diff --git a/3rdParty/Boost/boost/signals/detail/signals_common.hpp b/3rdParty/Boost/boost/signals/detail/signals_common.hpp
new file mode 100644
index 0000000..fe1a5a1
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/detail/signals_common.hpp
@@ -0,0 +1,162 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_COMMON_HEADER
+#define BOOST_SIGNALS_COMMON_HEADER
+
+#ifndef BOOST_SIGNALS_NAMESPACE
+# define BOOST_SIGNALS_NAMESPACE signals
+#endif
+
+#include <boost/type_traits/conversion_traits.hpp>
+#include <boost/ref.hpp>
+#include <boost/signals/detail/config.hpp>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+ namespace BOOST_SIGNALS_NAMESPACE {
+ namespace detail {
+ // The unusable class is a placeholder for unused function arguments
+ // It is also completely unusable except that it constructable from
+ // anything. This helps compilers without partial specialization
+ // handle slots returning void.
+ struct unusable {
+ unusable() {}
+ };
+
+ // Determine the result type of a slot call
+ template<typename R>
+ struct slot_result_type {
+ typedef R type;
+ };
+
+ template<>
+ struct slot_result_type<void> {
+ typedef unusable type;
+ };
+
+ // Determine if the given type T is a signal
+ class signal_base;
+
+ template<typename T>
+ struct is_signal {
+ BOOST_STATIC_CONSTANT(bool,
+ value = (is_convertible<T*, signal_base*>::value));
+ };
+
+ /*
+ * The IF implementation is temporary code. When a Boost metaprogramming
+ * library is introduced, Boost.Signals will use it instead.
+ */
+ namespace intimate {
+ struct SelectThen
+ {
+ template<typename Then, typename Else>
+ struct Result
+ {
+ typedef Then type;
+ };
+ };
+
+ struct SelectElse
+ {
+ template<typename Then, typename Else>
+ struct Result
+ {
+ typedef Else type;
+ };
+ };
+
+ template<bool Condition>
+ struct Selector
+ {
+ typedef SelectThen type;
+ };
+
+ template<>
+ struct Selector<false>
+ {
+ typedef SelectElse type;
+ };
+ } // end namespace intimate
+
+ template<bool Condition, typename Then, typename Else>
+ struct IF
+ {
+ typedef typename intimate::Selector<Condition>::type select;
+ typedef typename select::template Result<Then,Else>::type type;
+ };
+
+ // Determine if the incoming argument is a reference_wrapper
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template<typename T>
+ struct is_ref
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+
+ template<typename T>
+ struct is_ref<reference_wrapper<T> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+#else // no partial specialization
+ typedef char yes_type;
+ typedef double no_type;
+
+ no_type is_ref_tester(...);
+
+ template<typename T>
+ yes_type is_ref_tester(reference_wrapper<T>*);
+
+ template<typename T>
+ struct is_ref
+ {
+ static T* t;
+ BOOST_STATIC_CONSTANT(bool,
+ value = (sizeof(is_ref_tester(t)) == sizeof(yes_type)));
+ };
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ // A slot can be a signal, a reference to a function object, or a
+ // function object.
+ struct signal_tag {};
+ struct reference_tag {};
+ struct value_tag {};
+
+ // Classify the given slot as a signal, a reference-to-slot, or a
+ // standard slot
+ template<typename S>
+ class get_slot_tag {
+ typedef typename IF<(is_signal<S>::value),
+ signal_tag,
+ value_tag>::type signal_or_value;
+
+ public:
+ typedef typename IF<(is_ref<S>::value),
+ reference_tag,
+ signal_or_value>::type type;
+ };
+
+ // Forward declaration needed in lots of places
+ class signal_base_impl;
+ class bound_objects_visitor;
+ class slot_base;
+ } // end namespace detail
+ } // end namespace BOOST_SIGNALS_NAMESPACE
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNALS_COMMON_HEADER
diff --git a/3rdParty/Boost/boost/signals/detail/slot_call_iterator.hpp b/3rdParty/Boost/boost/signals/detail/slot_call_iterator.hpp
new file mode 100644
index 0000000..c6706be
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/detail/slot_call_iterator.hpp
@@ -0,0 +1,95 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SLOT_CALL_ITERATOR
+#define BOOST_SIGNALS_SLOT_CALL_ITERATOR
+
+#include <memory>
+#include <boost/iterator/iterator_facade.hpp>
+#include <boost/smart_ptr.hpp>
+#include <boost/signals/detail/config.hpp>
+#include <boost/signals/connection.hpp>
+#include <boost/optional.hpp>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+ namespace BOOST_SIGNALS_NAMESPACE {
+ namespace detail {
+
+ // Generates a slot call iterator. Essentially, this is an iterator that:
+ // - skips over disconnected slots in the underlying list
+ // - calls the connected slots when dereferenced
+ // - caches the result of calling the slots
+ template<typename Function, typename Iterator>
+ class slot_call_iterator
+ : public iterator_facade<slot_call_iterator<Function, Iterator>,
+ typename Function::result_type,
+ single_pass_traversal_tag,
+ typename Function::result_type const&>
+ {
+ typedef iterator_facade<slot_call_iterator<Function, Iterator>,
+ typename Function::result_type,
+ single_pass_traversal_tag,
+ typename Function::result_type const&>
+ inherited;
+
+ typedef typename Function::result_type result_type;
+
+ friend class iterator_core_access;
+
+ public:
+ slot_call_iterator(Iterator iter_in, Iterator end_in, Function f,
+ optional<result_type> &c)
+ : iter(iter_in), end(end_in), f(f), cache(&c)
+ {
+ iter = std::find_if(iter, end, is_callable());
+ }
+
+ typename inherited::reference
+ dereference() const
+ {
+ if (!cache->is_initialized()) {
+ cache->reset(f(*iter));
+ }
+
+ return cache->get();
+ }
+
+ void increment()
+ {
+ iter = std::find_if(++iter, end, is_callable());
+ cache->reset();
+ }
+
+ bool equal(const slot_call_iterator& other) const
+ {
+ iter = std::find_if(iter, end, is_callable());
+ other.iter = std::find_if(other.iter, other.end,
+ is_callable());
+ return iter == other.iter;
+ }
+
+ private:
+ mutable Iterator iter;
+ Iterator end;
+ Function f;
+ optional<result_type>* cache;
+ };
+ } // end namespace detail
+ } // end namespace BOOST_SIGNALS_NAMESPACE
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNALS_SLOT_CALL_ITERATOR
diff --git a/3rdParty/Boost/boost/signals/signal0.hpp b/3rdParty/Boost/boost/signals/signal0.hpp
new file mode 100644
index 0000000..6a6166c
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal0.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL0_HEADER
+#define BOOST_SIGNALS_SIGNAL0_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 0
+#define BOOST_SIGNALS_TEMPLATE_PARMS
+#define BOOST_SIGNALS_TEMPLATE_ARGS
+#define BOOST_SIGNALS_PARMS
+#define BOOST_SIGNALS_ARGS
+#define BOOST_SIGNALS_BOUND_ARGS
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS
+#define BOOST_SIGNALS_COPY_PARMS
+#define BOOST_SIGNALS_INIT_ARGS
+#define BOOST_SIGNALS_ARG_TYPES
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL0_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal1.hpp b/3rdParty/Boost/boost/signals/signal1.hpp
new file mode 100644
index 0000000..8363494
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal1.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL1_HEADER
+#define BOOST_SIGNALS_SIGNAL1_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 1
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1
+#define BOOST_SIGNALS_PARMS T1 a1
+#define BOOST_SIGNALS_ARGS a1
+#define BOOST_SIGNALS_BOUND_ARGS args->a1
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL1_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal10.hpp b/3rdParty/Boost/boost/signals/signal10.hpp
new file mode 100644
index 0000000..0718549
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal10.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL10_HEADER
+#define BOOST_SIGNALS_SIGNAL10_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 10
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8, T9 a9, T10 a10
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4, a5, a6, a7, a8, a9, a10
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4, args->a5, args->a6, args->a7, args->a8, args->a9, args->a10
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;T5 a5;T6 a6;T7 a7;T8 a8;T9 a9;T10 a10;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4, T5 ia5, T6 ia6, T7 ia7, T8 ia8, T9 ia9, T10 ia10
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4), a5(ia5), a6(ia6), a7(ia7), a8(ia8), a9(ia9), a10(ia10)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type; typedef T9 arg10_type; typedef T10 arg11_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL10_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal2.hpp b/3rdParty/Boost/boost/signals/signal2.hpp
new file mode 100644
index 0000000..361014e
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal2.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL2_HEADER
+#define BOOST_SIGNALS_SIGNAL2_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 2
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2
+#define BOOST_SIGNALS_ARGS a1, a2
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL2_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal3.hpp b/3rdParty/Boost/boost/signals/signal3.hpp
new file mode 100644
index 0000000..542a56e
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal3.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL3_HEADER
+#define BOOST_SIGNALS_SIGNAL3_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 3
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3
+#define BOOST_SIGNALS_ARGS a1, a2, a3
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL3_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal4.hpp b/3rdParty/Boost/boost/signals/signal4.hpp
new file mode 100644
index 0000000..695f70f
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal4.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL4_HEADER
+#define BOOST_SIGNALS_SIGNAL4_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 4
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL4_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal5.hpp b/3rdParty/Boost/boost/signals/signal5.hpp
new file mode 100644
index 0000000..ba2f3c2
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal5.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL5_HEADER
+#define BOOST_SIGNALS_SIGNAL5_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 5
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4, typename T5
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4, T5
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4, a5
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4, args->a5
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;T5 a5;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4, T5 ia5
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4), a5(ia5)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL5_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal6.hpp b/3rdParty/Boost/boost/signals/signal6.hpp
new file mode 100644
index 0000000..b46afce
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal6.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL6_HEADER
+#define BOOST_SIGNALS_SIGNAL6_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 6
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4, typename T5, typename T6
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4, T5, T6
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4, a5, a6
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4, args->a5, args->a6
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;T5 a5;T6 a6;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4, T5 ia5, T6 ia6
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4), a5(ia5), a6(ia6)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL6_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal7.hpp b/3rdParty/Boost/boost/signals/signal7.hpp
new file mode 100644
index 0000000..86f1142
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal7.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL7_HEADER
+#define BOOST_SIGNALS_SIGNAL7_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 7
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4, T5, T6, T7
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4, a5, a6, a7
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4, args->a5, args->a6, args->a7
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;T5 a5;T6 a6;T7 a7;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4, T5 ia5, T6 ia6, T7 ia7
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4), a5(ia5), a6(ia6), a7(ia7)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL7_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal8.hpp b/3rdParty/Boost/boost/signals/signal8.hpp
new file mode 100644
index 0000000..e2b86ce
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal8.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL8_HEADER
+#define BOOST_SIGNALS_SIGNAL8_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 8
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4, T5, T6, T7, T8
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4, a5, a6, a7, a8
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4, args->a5, args->a6, args->a7, args->a8
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;T5 a5;T6 a6;T7 a7;T8 a8;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4, T5 ia5, T6 ia6, T7 ia7, T8 ia8
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4), a5(ia5), a6(ia6), a7(ia7), a8(ia8)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL8_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal9.hpp b/3rdParty/Boost/boost/signals/signal9.hpp
new file mode 100644
index 0000000..bb6a57a
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal9.hpp
@@ -0,0 +1,37 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SIGNAL9_HEADER
+#define BOOST_SIGNALS_SIGNAL9_HEADER
+
+#define BOOST_SIGNALS_NUM_ARGS 9
+#define BOOST_SIGNALS_TEMPLATE_PARMS typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9
+#define BOOST_SIGNALS_TEMPLATE_ARGS T1, T2, T3, T4, T5, T6, T7, T8, T9
+#define BOOST_SIGNALS_PARMS T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7, T8 a8, T9 a9
+#define BOOST_SIGNALS_ARGS a1, a2, a3, a4, a5, a6, a7, a8, a9
+#define BOOST_SIGNALS_BOUND_ARGS args->a1, args->a2, args->a3, args->a4, args->a5, args->a6, args->a7, args->a8, args->a9
+#define BOOST_SIGNALS_ARGS_AS_MEMBERS T1 a1;T2 a2;T3 a3;T4 a4;T5 a5;T6 a6;T7 a7;T8 a8;T9 a9;
+#define BOOST_SIGNALS_COPY_PARMS T1 ia1, T2 ia2, T3 ia3, T4 ia4, T5 ia5, T6 ia6, T7 ia7, T8 ia8, T9 ia9
+#define BOOST_SIGNALS_INIT_ARGS :a1(ia1), a2(ia2), a3(ia3), a4(ia4), a5(ia5), a6(ia6), a7(ia7), a8(ia8), a9(ia9)
+#define BOOST_SIGNALS_ARG_TYPES typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type; typedef T9 arg10_type;
+
+#include <boost/signals/signal_template.hpp>
+
+#undef BOOST_SIGNALS_ARG_TYPES
+#undef BOOST_SIGNALS_INIT_ARGS
+#undef BOOST_SIGNALS_COPY_PARMS
+#undef BOOST_SIGNALS_ARGS_AS_MEMBERS
+#undef BOOST_SIGNALS_BOUND_ARGS
+#undef BOOST_SIGNALS_ARGS
+#undef BOOST_SIGNALS_PARMS
+#undef BOOST_SIGNALS_TEMPLATE_ARGS
+#undef BOOST_SIGNALS_TEMPLATE_PARMS
+#undef BOOST_SIGNALS_NUM_ARGS
+
+#endif // BOOST_SIGNALS_SIGNAL9_HEADER
diff --git a/3rdParty/Boost/boost/signals/signal_template.hpp b/3rdParty/Boost/boost/signals/signal_template.hpp
new file mode 100644
index 0000000..a8420b6
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/signal_template.hpp
@@ -0,0 +1,410 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+// This file intentionally does not have include guards, because it is meant
+// to be included multiple times (one for each signalN class). The
+// BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED macro merely serves to
+// suppress reinclusion of the files that this header depends on.
+
+#ifndef BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED
+#define BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED
+# include <boost/config.hpp>
+# include <boost/signals/connection.hpp>
+# include <boost/utility.hpp>
+# include <boost/ref.hpp>
+# include <boost/signals/slot.hpp>
+# include <boost/last_value.hpp>
+# include <boost/signals/detail/signal_base.hpp>
+# include <boost/signals/detail/slot_call_iterator.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/type_traits/is_convertible.hpp>
+# include <cassert>
+# include <functional>
+# include <memory>
+#endif // !BOOST_SIGNALS_SIGNAL_TEMPLATE_HEADER_INCLUDED
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+// Include the appropriate functionN header
+#define BOOST_SIGNAL_FUNCTION_N_HEADER BOOST_JOIN(<boost/function/function,BOOST_SIGNALS_NUM_ARGS.hpp>)
+#include BOOST_SIGNAL_FUNCTION_N_HEADER
+
+// Determine if a comma should follow a listing of the arguments/parameters
+#if BOOST_SIGNALS_NUM_ARGS == 0
+# define BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+#else
+# define BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS ,
+#endif // BOOST_SIGNALS_NUM_ARGS > 0
+
+// Define class names used
+#define BOOST_SIGNALS_SIGNAL BOOST_JOIN(signal,BOOST_SIGNALS_NUM_ARGS)
+#define BOOST_SIGNALS_FUNCTION BOOST_JOIN(function,BOOST_SIGNALS_NUM_ARGS)
+#define BOOST_SIGNALS_ARGS_STRUCT BOOST_JOIN(args,BOOST_SIGNALS_NUM_ARGS)
+#define BOOST_SIGNALS_CALL_BOUND BOOST_JOIN(call_bound,BOOST_SIGNALS_NUM_ARGS)
+
+// Define commonly-used instantiations
+#define BOOST_SIGNALS_ARGS_STRUCT_INST \
+ BOOST_SIGNALS_NAMESPACE::detail::BOOST_SIGNALS_ARGS_STRUCT<BOOST_SIGNALS_TEMPLATE_ARGS>
+
+namespace boost {
+ namespace BOOST_SIGNALS_NAMESPACE {
+ namespace detail {
+ // Holds the arguments for a bound slot call in a single place
+ template<BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename Dummy = int>
+ struct BOOST_SIGNALS_ARGS_STRUCT {
+ BOOST_SIGNALS_ARGS_STRUCT(BOOST_SIGNALS_COPY_PARMS)
+ BOOST_SIGNALS_INIT_ARGS
+ {
+ }
+
+ BOOST_SIGNALS_ARGS_AS_MEMBERS
+ };
+
+ // Function object that calls the function object given to it, passing
+ // the bound arguments along to that underlying function object
+ template<typename R>
+ struct BOOST_SIGNALS_CALL_BOUND {
+ template<BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename F>
+ struct caller {
+ typedef BOOST_SIGNALS_ARGS_STRUCT<BOOST_SIGNALS_TEMPLATE_ARGS>*
+ args_type;
+
+ args_type args;
+
+ typedef R result_type;
+
+ caller() {}
+ caller(args_type a) : args(a) {}
+
+ template<typename Pair>
+ R operator()(const Pair& slot) const
+ {
+ F* target = const_cast<F*>(unsafe_any_cast<F>(&slot.second));
+ return (*target)(BOOST_SIGNALS_BOUND_ARGS);
+ }
+ };
+ };
+
+ template<>
+ struct BOOST_SIGNALS_CALL_BOUND<void> {
+ template<BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename F>
+ struct caller {
+ typedef BOOST_SIGNALS_ARGS_STRUCT<BOOST_SIGNALS_TEMPLATE_ARGS>*
+ args_type;
+
+ args_type args;
+
+ typedef unusable result_type;
+
+ caller(args_type a) : args(a) {}
+
+ template<typename Pair>
+ unusable operator()(const Pair& slot) const
+ {
+ F* target = const_cast<F*>(unsafe_any_cast<F>(&slot.second));
+ (*target)(BOOST_SIGNALS_BOUND_ARGS);
+ return unusable();
+ }
+ };
+ };
+ } // namespace detail
+ } // namespace BOOST_SIGNALS_NAMESPACE
+
+ // The actual signalN class
+ template<
+ typename R,
+ BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename Combiner = last_value<R>,
+ typename Group = int,
+ typename GroupCompare = std::less<Group>,
+ typename SlotFunction = BOOST_SIGNALS_FUNCTION<
+ R BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ BOOST_SIGNALS_TEMPLATE_ARGS>
+ >
+ class BOOST_SIGNALS_SIGNAL :
+ public BOOST_SIGNALS_NAMESPACE::detail::signal_base, // management of slot list
+ public BOOST_SIGNALS_NAMESPACE::trackable // signals are trackable
+ {
+ public:
+ // The slot function type
+ typedef SlotFunction slot_function_type;
+
+ // Result type of a slot
+ typedef typename BOOST_SIGNALS_NAMESPACE::detail::slot_result_type<R>::type
+ slot_result_type;
+
+ // Argument types
+ BOOST_SIGNALS_ARG_TYPES
+
+#if BOOST_SIGNALS_NUM_ARGS == 1
+ typedef T1 argument_type;
+#elif BOOST_SIGNALS_NUM_ARGS == 2
+ typedef T1 first_argument_type;
+ typedef T2 second_argument_type;
+#endif
+
+ private:
+ // The real slot name comparison object type
+ typedef BOOST_SIGNALS_NAMESPACE::detail::group_bridge_compare<GroupCompare, Group>
+ real_group_compare_type;
+
+ // The function object passed to the slot call iterator that will call
+ // the underlying slot function with its arguments bound
+ typedef BOOST_SIGNALS_NAMESPACE::detail::BOOST_SIGNALS_CALL_BOUND<R>
+ outer_bound_slot_caller;
+ typedef typename outer_bound_slot_caller::template
+ caller<BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ slot_function_type>
+ call_bound_slot;
+
+ public:
+ // Combiner's result type
+ typedef typename Combiner::result_type result_type;
+
+ // Combiner type
+ typedef Combiner combiner_type;
+
+ // Slot type
+ typedef slot<slot_function_type> slot_type;
+
+ // Slot name type and comparison
+ typedef Group group_type;
+ typedef GroupCompare group_compare_type;
+
+ typedef BOOST_SIGNALS_NAMESPACE::detail::slot_call_iterator<
+ call_bound_slot, iterator> slot_call_iterator;
+
+ explicit
+ BOOST_SIGNALS_SIGNAL(const Combiner& c = Combiner(),
+ const GroupCompare& comp = GroupCompare()) :
+ BOOST_SIGNALS_NAMESPACE::detail::signal_base(real_group_compare_type(comp),
+ c)
+ {
+ }
+
+ // Connect a slot to this signal
+ BOOST_SIGNALS_NAMESPACE::connection
+ connect(const slot_type&,
+ BOOST_SIGNALS_NAMESPACE::connect_position at
+ = BOOST_SIGNALS_NAMESPACE::at_back);
+
+
+ BOOST_SIGNALS_NAMESPACE::connection
+ connect(const group_type&, const slot_type&,
+ BOOST_SIGNALS_NAMESPACE::connect_position at
+ = BOOST_SIGNALS_NAMESPACE::at_back);
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+ // MSVC 6.0 and 7.0 don't handle the is_convertible test well
+ void disconnect(const group_type& group)
+ {
+ impl->disconnect(group);
+ }
+#else
+ template<typename T>
+ void disconnect(const T& t)
+ {
+ typedef mpl::bool_<(is_convertible<T, group_type>::value)> is_group;
+ this->do_disconnect(t, is_group());
+ }
+
+ private:
+ // Disconnect a named slot
+ void do_disconnect(const group_type& group, mpl::bool_<true>)
+ {
+ impl->disconnect(group);
+ }
+
+ template<typename Function>
+ void do_disconnect(const Function& f, mpl::bool_<false>)
+ {
+ // Notify the slot handling code that we are iterating through the slots
+ BOOST_SIGNALS_NAMESPACE::detail::call_notification notification(this->impl);
+
+ for (iterator i = impl->slots_.begin(); i != impl->slots_.end(); ++i) {
+ slot_function_type& s = *unsafe_any_cast<slot_function_type>(&i->second);
+ if (s == f) i->first.disconnect();
+ }
+ }
+#endif
+
+ public:
+
+ // Emit the signal
+ result_type operator()(BOOST_SIGNALS_PARMS);
+ result_type operator()(BOOST_SIGNALS_PARMS) const;
+
+ Combiner& combiner()
+ { return *unsafe_any_cast<Combiner>(&impl->combiner_); }
+
+ const Combiner& combiner() const
+ { return *unsafe_any_cast<const Combiner>(&impl->combiner_); }
+ };
+
+ template<
+ typename R,
+ BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction
+ >
+ BOOST_SIGNALS_NAMESPACE::connection
+ BOOST_SIGNALS_SIGNAL<
+ R, BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ Combiner, Group, GroupCompare, SlotFunction
+ >::connect(const slot_type& in_slot,
+ BOOST_SIGNALS_NAMESPACE::connect_position at)
+ {
+ using boost::BOOST_SIGNALS_NAMESPACE::detail::stored_group;
+
+ // If the slot has been disconnected, just return a disconnected
+ // connection
+ if (!in_slot.is_active()) {
+ return BOOST_SIGNALS_NAMESPACE::connection();
+ }
+
+ return impl->connect_slot(in_slot.get_slot_function(), stored_group(),
+ in_slot.get_data(), at);
+ }
+
+ template<
+ typename R,
+ BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction
+ >
+ BOOST_SIGNALS_NAMESPACE::connection
+ BOOST_SIGNALS_SIGNAL<
+ R, BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ Combiner, Group, GroupCompare, SlotFunction
+ >::connect(const group_type& group,
+ const slot_type& in_slot,
+ BOOST_SIGNALS_NAMESPACE::connect_position at)
+ {
+ // If the slot has been disconnected, just return a disconnected
+ // connection
+ if (!in_slot.is_active()) {
+ return BOOST_SIGNALS_NAMESPACE::connection();
+ }
+
+ return impl->connect_slot(in_slot.get_slot_function(), group,
+ in_slot.get_data(), at);
+ }
+
+ template<
+ typename R,
+ BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction
+ >
+ typename BOOST_SIGNALS_SIGNAL<
+ R, BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ Combiner, Group, GroupCompare, SlotFunction>::result_type
+ BOOST_SIGNALS_SIGNAL<
+ R, BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ Combiner, Group, GroupCompare, SlotFunction
+ >::operator()(BOOST_SIGNALS_PARMS)
+ {
+ // Notify the slot handling code that we are making a call
+ BOOST_SIGNALS_NAMESPACE::detail::call_notification notification(this->impl);
+
+ // Construct a function object that will call the underlying slots
+ // with the given arguments.
+#if BOOST_SIGNALS_NUM_ARGS == 0
+ BOOST_SIGNALS_ARGS_STRUCT_INST args;
+#else
+ BOOST_SIGNALS_ARGS_STRUCT_INST args(BOOST_SIGNALS_ARGS);
+#endif // BOOST_SIGNALS_NUM_ARGS > 0
+ call_bound_slot f(&args);
+
+ typedef typename call_bound_slot::result_type result_type;
+ optional<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),
+ slot_call_iterator(notification.impl->slots_.end(),
+ impl->slots_.end(), f, cache));
+ }
+
+ template<
+ typename R,
+ BOOST_SIGNALS_TEMPLATE_PARMS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ typename Combiner,
+ typename Group,
+ typename GroupCompare,
+ typename SlotFunction
+ >
+ typename BOOST_SIGNALS_SIGNAL<
+ R, BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ Combiner, Group, GroupCompare, SlotFunction>::result_type
+ BOOST_SIGNALS_SIGNAL<
+ R, BOOST_SIGNALS_TEMPLATE_ARGS
+ BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+ Combiner, Group, GroupCompare, SlotFunction
+ >::operator()(BOOST_SIGNALS_PARMS) const
+ {
+ // Notify the slot handling code that we are making a call
+ BOOST_SIGNALS_NAMESPACE::detail::call_notification notification(this->impl);
+
+ // Construct a function object that will call the underlying slots
+ // with the given arguments.
+#if BOOST_SIGNALS_NUM_ARGS == 0
+ BOOST_SIGNALS_ARGS_STRUCT_INST args;
+#else
+ BOOST_SIGNALS_ARGS_STRUCT_INST args(BOOST_SIGNALS_ARGS);
+#endif // BOOST_SIGNALS_NUM_ARGS > 0
+
+ call_bound_slot f(&args);
+
+ typedef typename call_bound_slot::result_type result_type;
+ optional<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),
+ slot_call_iterator(notification.impl->slots_.end(),
+ impl->slots_.end(), f, cache));
+ }
+} // namespace boost
+
+#undef BOOST_SIGNAL_FUNCTION_N_HEADER
+#undef BOOST_SIGNALS_ARGS_STRUCT_INST
+#undef BOOST_SIGNALS_CALL_BOUND
+#undef BOOST_SIGNALS_ARGS_STRUCT
+#undef BOOST_SIGNALS_FUNCTION
+#undef BOOST_SIGNALS_SIGNAL
+#undef BOOST_SIGNALS_COMMA_IF_NONZERO_ARGS
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
diff --git a/3rdParty/Boost/boost/signals/slot.hpp b/3rdParty/Boost/boost/signals/slot.hpp
new file mode 100644
index 0000000..bbf1848
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/slot.hpp
@@ -0,0 +1,157 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_SLOT_HEADER
+#define BOOST_SIGNALS_SLOT_HEADER
+
+#include <boost/signals/detail/signals_common.hpp>
+#include <boost/signals/connection.hpp>
+#include <boost/signals/trackable.hpp>
+#include <boost/visit_each.hpp>
+#include <boost/shared_ptr.hpp>
+#include <cassert>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+ namespace BOOST_SIGNALS_NAMESPACE {
+ namespace detail {
+ class BOOST_SIGNALS_DECL slot_base {
+ // We would have to enumerate all of the signalN classes here as
+ // friends to make this private (as it otherwise should be). We can't
+ // name all of them because we don't know how many there are.
+ public:
+ struct data_t {
+ std::vector<const trackable*> bound_objects;
+ connection watch_bound_objects;
+ };
+ shared_ptr<data_t> get_data() const { return data; }
+
+ // Get the set of bound objects
+ std::vector<const trackable*>& get_bound_objects() const
+ { return data->bound_objects; }
+
+ // Determine if this slot is still "active", i.e., all of the bound
+ // objects still exist
+ bool is_active() const
+ { return data->watch_bound_objects.connected(); }
+
+ protected:
+ // Create a connection for this slot
+ void create_connection();
+
+ shared_ptr<data_t> data;
+
+ private:
+ static void bound_object_destructed(void*, void*) {}
+ };
+ } // end namespace detail
+
+ // Get the slot so that it can be copied
+ template<typename F>
+ reference_wrapper<const F>
+ get_invocable_slot(const F& f, BOOST_SIGNALS_NAMESPACE::detail::signal_tag)
+ { return reference_wrapper<const F>(f); }
+
+ template<typename F>
+ const F&
+ get_invocable_slot(const F& f, BOOST_SIGNALS_NAMESPACE::detail::reference_tag)
+ { return f; }
+
+ template<typename F>
+ const F&
+ get_invocable_slot(const F& f, BOOST_SIGNALS_NAMESPACE::detail::value_tag)
+ { return f; }
+
+ // Get the slot so that it can be inspected for trackable objects
+ template<typename F>
+ const F&
+ get_inspectable_slot(const F& f, BOOST_SIGNALS_NAMESPACE::detail::signal_tag)
+ { return f; }
+
+ template<typename F>
+ const F&
+ get_inspectable_slot(const reference_wrapper<F>& f, BOOST_SIGNALS_NAMESPACE::detail::reference_tag)
+ { return f.get(); }
+
+ template<typename F>
+ const F&
+ get_inspectable_slot(const F& f, BOOST_SIGNALS_NAMESPACE::detail::value_tag)
+ { return f; }
+
+ // Determines the type of the slot - is it a signal, a reference to a
+ // slot or just a normal slot.
+ template<typename F>
+ typename BOOST_SIGNALS_NAMESPACE::detail::get_slot_tag<F>::type
+ tag_type(const F&)
+ {
+ typedef typename BOOST_SIGNALS_NAMESPACE::detail::get_slot_tag<F>::type
+ the_tag_type;
+ the_tag_type tag = the_tag_type();
+ return tag;
+ }
+
+ } // end namespace BOOST_SIGNALS_NAMESPACE
+
+ template<typename SlotFunction>
+ class slot : public BOOST_SIGNALS_NAMESPACE::detail::slot_base {
+ typedef BOOST_SIGNALS_NAMESPACE::detail::slot_base inherited;
+ typedef typename inherited::data_t data_t;
+
+ public:
+ template<typename F>
+ slot(const F& f) : slot_function(BOOST_SIGNALS_NAMESPACE::get_invocable_slot(f, BOOST_SIGNALS_NAMESPACE::tag_type(f)))
+ {
+ this->data.reset(new data_t);
+
+ // Visit each of the bound objects and store them for later use
+ // An exception thrown here will allow the basic_connection to be
+ // destroyed when this goes out of scope, and no other connections
+ // have been made.
+ BOOST_SIGNALS_NAMESPACE::detail::bound_objects_visitor
+ do_bind(this->data->bound_objects);
+ visit_each(do_bind,
+ BOOST_SIGNALS_NAMESPACE::get_inspectable_slot
+ (f, BOOST_SIGNALS_NAMESPACE::tag_type(f)));
+ create_connection();
+ }
+
+#ifdef __BORLANDC__
+ template<typename F>
+ slot(F* f) : slot_function(f)
+ {
+ this->data.reset(new data_t);
+ create_connection();
+ }
+#endif // __BORLANDC__
+
+ // We would have to enumerate all of the signalN classes here as friends
+ // to make this private (as it otherwise should be). We can't name all of
+ // them because we don't know how many there are.
+ public:
+ // Get the slot function to call the actual slot
+ const SlotFunction& get_slot_function() const { return slot_function; }
+
+ void release() const { data->watch_bound_objects.set_controlling(false); }
+
+ private:
+ slot(); // no default constructor
+ slot& operator=(const slot&); // no assignment operator
+
+ SlotFunction slot_function;
+ };
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNALS_SLOT_HEADER
diff --git a/3rdParty/Boost/boost/signals/trackable.hpp b/3rdParty/Boost/boost/signals/trackable.hpp
new file mode 100644
index 0000000..047236c
--- /dev/null
+++ b/3rdParty/Boost/boost/signals/trackable.hpp
@@ -0,0 +1,173 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-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)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_SIGNALS_TRACKABLE_HPP
+#define BOOST_SIGNALS_TRACKABLE_HPP
+
+#include <boost/type_traits.hpp>
+#include <boost/signals/connection.hpp>
+#include <boost/ref.hpp>
+#include <boost/utility/addressof.hpp>
+#include <list>
+#include <vector>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+namespace boost {
+
+namespace BOOST_SIGNALS_NAMESPACE {
+ // Base class for "trackable" objects that can be tracked when they are
+ // bound in slot target functions. When a trackable object is destroyed,
+ // the signal/slot connections are disconnected automatically.
+ class BOOST_SIGNALS_DECL trackable {
+ private:
+ static void signal_disconnected(void* obj, void* data);
+
+ friend class detail::signal_base_impl;
+ friend class detail::slot_base;
+ void signal_connected(connection, BOOST_SIGNALS_NAMESPACE::detail::bound_object&) const;
+
+ protected:
+ trackable() : connected_signals(), dying(false) {}
+ trackable(const trackable&) : connected_signals(), dying(false) {}
+ ~trackable();
+
+ trackable& operator=(const trackable&)
+ {
+ dying = true;
+ connected_signals.clear();
+ dying = false;
+ return *this;
+ }
+
+ private:
+ typedef std::list<connection> connection_list;
+ typedef connection_list::iterator connection_iterator;
+
+ // List of connections that this object is part of
+ mutable connection_list connected_signals;
+
+ // True when the object is being destroyed
+ mutable bool dying;
+ };
+
+ namespace detail {
+ template<bool Cond> struct truth {};
+
+ // A visitor that adds each trackable object to a vector
+ class bound_objects_visitor {
+ public:
+ bound_objects_visitor(std::vector<const trackable*>& v) :
+ bound_objects(v)
+ {
+ }
+
+ template<typename T>
+ void operator()(const T& t) const
+ {
+ decode(t, 0);
+ }
+
+ private:
+ // decode() decides between a reference wrapper and anything else
+ template<typename T>
+ void decode(const reference_wrapper<T>& t, int) const
+ {
+ add_if_trackable(t.get_pointer());
+ }
+
+ template<typename T>
+ void decode(const T& t, long) const
+ {
+ typedef truth<(is_pointer<T>::value)> is_a_pointer;
+ maybe_get_pointer(t, is_a_pointer());
+ }
+
+ // maybe_get_pointer() decides between a pointer and a non-pointer
+ template<typename T>
+ void maybe_get_pointer(const T& t, truth<true>) const
+ {
+ add_if_trackable(t);
+ }
+
+ template<typename T>
+ void maybe_get_pointer(const T& t, truth<false>) const
+ {
+ // Take the address of this object, because the object itself may be
+ // trackable
+ add_if_trackable(boost::addressof(t));
+ }
+
+ // add_if_trackable() adds trackable objects to the list of bound objects
+ inline void add_if_trackable(const trackable* b) const
+ {
+ if (b) {
+ bound_objects.push_back(b);
+ }
+ }
+
+ inline void add_if_trackable(const void*) const { }
+
+ template<typename R>
+ inline void add_if_trackable(R (*)()) const { }
+
+ template<typename R, typename T1>
+ inline void add_if_trackable(R (*)(T1)) const { }
+
+ template<typename R, typename T1, typename T2>
+ inline void add_if_trackable(R (*)(T1, T2)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3>
+ inline void add_if_trackable(R (*)(T1, T2, T3)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4>
+ inline void add_if_trackable(R (*)(T1, T2, T3, T4)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5>
+ inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6>
+ inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7>
+ inline void add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8>
+ inline void
+ add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7, T8)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9>
+ inline void
+ add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)) const { }
+
+ template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9,
+ typename T10>
+ inline void
+ add_if_trackable(R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)) const { }
+
+ std::vector<const trackable*>& bound_objects;
+ };
+ } // end namespace detail
+} // end namespace BOOST_SIGNALS_NAMESPACE
+
+} // end namespace boost
+
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_SIGNALS_TRACKABLE_HPP
diff --git a/3rdParty/Boost/boost/smart_ptr.hpp b/3rdParty/Boost/boost/smart_ptr.hpp
new file mode 100644
index 0000000..98e0894
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr.hpp
@@ -0,0 +1,25 @@
+//
+// smart_ptr.hpp
+//
+// For convenience, this header includes the rest of the smart
+// pointer library headers.
+//
+// Copyright (c) 2003 Peter Dimov Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/smart_ptr/smart_ptr.htm
+//
+
+#include <boost/config.hpp>
+
+#include <boost/scoped_ptr.hpp>
+#include <boost/scoped_array.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/shared_array.hpp>
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+# include <boost/weak_ptr.hpp>
+# include <boost/intrusive_ptr.hpp>
+# include <boost/enable_shared_from_this.hpp>
+#endif
diff --git a/3rdParty/Boost/boost/smart_ptr/bad_weak_ptr.hpp b/3rdParty/Boost/boost/smart_ptr/bad_weak_ptr.hpp
new file mode 100644
index 0000000..3e0a1b7
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/bad_weak_ptr.hpp
@@ -0,0 +1,59 @@
+#ifndef BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
+#define BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/smart_ptr/bad_weak_ptr.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <exception>
+
+#ifdef __BORLANDC__
+# pragma warn -8026 // Functions with excep. spec. are not expanded inline
+#endif
+
+namespace boost
+{
+
+// The standard library that comes with Borland C++ 5.5.1, 5.6.4
+// defines std::exception and its members as having C calling
+// convention (-pc). When the definition of bad_weak_ptr
+// is compiled with -ps, the compiler issues an error.
+// Hence, the temporary #pragma option -pc below.
+
+#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
+# pragma option push -pc
+#endif
+
+class bad_weak_ptr: public std::exception
+{
+public:
+
+ virtual char const * what() const throw()
+ {
+ return "tr1::bad_weak_ptr";
+ }
+};
+
+#if defined(__BORLANDC__) && __BORLANDC__ <= 0x564
+# pragma option pop
+#endif
+
+} // namespace boost
+
+#ifdef __BORLANDC__
+# pragma warn .8026 // Functions with excep. spec. are not expanded inline
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_BAD_WEAK_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/atomic_count.hpp b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count.hpp
new file mode 100644
index 0000000..cc44ac2
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count.hpp
@@ -0,0 +1,119 @@
+#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/atomic_count.hpp - thread/SMP safe reference counter
+//
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// typedef <implementation-defined> boost::detail::atomic_count;
+//
+// atomic_count a(n);
+//
+// (n is convertible to long)
+//
+// Effects: Constructs an atomic_count with an initial value of n
+//
+// a;
+//
+// Returns: (long) the current value of a
+//
+// ++a;
+//
+// Effects: Atomically increments the value of a
+// Returns: (long) the new value of a
+//
+// --a;
+//
+// Effects: Atomically decrements the value of a
+// Returns: (long) the new value of a
+//
+// Important note: when --a returns zero, it must act as a
+// read memory barrier (RMB); i.e. the calling thread must
+// have a synchronized view of the memory
+//
+// On Intel IA-32 (x86) memory is always synchronized, so this
+// is not a problem.
+//
+// On many architectures the atomic instructions already act as
+// a memory barrier.
+//
+// This property is necessary for proper reference counting, since
+// a thread can update the contents of a shared object, then
+// release its reference, and another thread may immediately
+// release the last reference causing object destruction.
+//
+// The destructor needs to have a synchronized view of the
+// object to perform proper cleanup.
+//
+// Original example by Alexander Terekhov:
+//
+// Given:
+//
+// - a mutable shared object OBJ;
+// - two threads THREAD1 and THREAD2 each holding
+// a private smart_ptr object pointing to that OBJ.
+//
+// t1: THREAD1 updates OBJ (thread-safe via some synchronization)
+// and a few cycles later (after "unlock") destroys smart_ptr;
+//
+// t2: THREAD2 destroys smart_ptr WITHOUT doing any synchronization
+// with respect to shared mutable object OBJ; OBJ destructors
+// are called driven by smart_ptr interface...
+//
+
+#include <boost/config.hpp>
+#include <boost/smart_ptr/detail/sp_has_sync.hpp>
+
+#ifndef BOOST_HAS_THREADS
+
+namespace boost
+{
+
+namespace detail
+{
+
+typedef long atomic_count;
+
+}
+
+}
+
+#elif defined(BOOST_AC_USE_PTHREADS)
+# include <boost/smart_ptr/detail/atomic_count_pthreads.hpp>
+
+#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
+# include <boost/smart_ptr/detail/atomic_count_gcc_x86.hpp>
+
+#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# include <boost/smart_ptr/detail/atomic_count_win32.hpp>
+
+#elif defined( BOOST_SP_HAS_SYNC )
+# include <boost/smart_ptr/detail/atomic_count_sync.hpp>
+
+#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
+# include <boost/smart_ptr/detail/atomic_count_gcc.hpp>
+
+#elif defined(BOOST_HAS_PTHREADS)
+
+# define BOOST_AC_USE_PTHREADS
+# include <boost/smart_ptr/detail/atomic_count_pthreads.hpp>
+
+#else
+
+// Use #define BOOST_DISABLE_THREADS to avoid the error
+#error Unrecognized threading platform
+
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc.hpp b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc.hpp
new file mode 100644
index 0000000..54807e9
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc.hpp
@@ -0,0 +1,72 @@
+#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
+
+//
+// boost/detail/atomic_count_gcc.hpp
+//
+// atomic_count for GNU libstdc++ v3
+//
+// http://gcc.gnu.org/onlinedocs/porting/Thread-safety.html
+//
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org>
+// Copyright 2003-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#if __GNUC__ * 100 + __GNUC_MINOR__ >= 402
+# include <ext/atomicity.h>
+#else
+# include <bits/atomicity.h>
+#endif
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if defined(__GLIBCXX__) // g++ 3.4+
+
+using __gnu_cxx::__atomic_add;
+using __gnu_cxx::__exchange_and_add;
+
+#endif
+
+class atomic_count
+{
+public:
+
+ explicit atomic_count( long v ) : value_( v ) {}
+
+ long operator++()
+ {
+ return __exchange_and_add( &value_, +1 ) + 1;
+ }
+
+ long operator--()
+ {
+ return __exchange_and_add( &value_, -1 ) - 1;
+ }
+
+ operator long() const
+ {
+ return __exchange_and_add( &value_, 0 );
+ }
+
+private:
+
+ atomic_count(atomic_count const &);
+ atomic_count & operator=(atomic_count const &);
+
+ mutable _Atomic_word value_;
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp
new file mode 100644
index 0000000..5c44d7c
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp
@@ -0,0 +1,77 @@
+#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
+
+//
+// boost/detail/atomic_count_gcc_x86.hpp
+//
+// atomic_count for g++ on 486+/AMD64
+//
+// Copyright 2007 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+namespace boost
+{
+
+namespace detail
+{
+
+class atomic_count
+{
+public:
+
+ explicit atomic_count( long v ) : value_( static_cast< int >( v ) ) {}
+
+ long operator++()
+ {
+ return atomic_exchange_and_add( &value_, +1 ) + 1;
+ }
+
+ long operator--()
+ {
+ return atomic_exchange_and_add( &value_, -1 ) - 1;
+ }
+
+ operator long() const
+ {
+ return atomic_exchange_and_add( &value_, 0 );
+ }
+
+private:
+
+ atomic_count(atomic_count const &);
+ atomic_count & operator=(atomic_count const &);
+
+ mutable int value_;
+
+private:
+
+ static int atomic_exchange_and_add( int * pw, int dv )
+ {
+ // int r = *pw;
+ // *pw += dv;
+ // return r;
+
+ int r;
+
+ __asm__ __volatile__
+ (
+ "lock\n\t"
+ "xadd %1, %0":
+ "+m"( *pw ), "=r"( r ): // outputs (%0, %1)
+ "1"( dv ): // inputs (%2 == %1)
+ "memory", "cc" // clobbers
+ );
+
+ return r;
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_GCC_X86_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_pthreads.hpp b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_pthreads.hpp
new file mode 100644
index 0000000..05f7867
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_pthreads.hpp
@@ -0,0 +1,96 @@
+#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
+
+//
+// boost/detail/atomic_count_pthreads.hpp
+//
+// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <pthread.h>
+
+//
+// The generic pthread_mutex-based implementation sometimes leads to
+// inefficiencies. Example: a class with two atomic_count members
+// can get away with a single mutex.
+//
+// Users can detect this situation by checking BOOST_AC_USE_PTHREADS.
+//
+
+namespace boost
+{
+
+namespace detail
+{
+
+class atomic_count
+{
+private:
+
+ class scoped_lock
+ {
+ public:
+
+ scoped_lock(pthread_mutex_t & m): m_(m)
+ {
+ pthread_mutex_lock(&m_);
+ }
+
+ ~scoped_lock()
+ {
+ pthread_mutex_unlock(&m_);
+ }
+
+ private:
+
+ pthread_mutex_t & m_;
+ };
+
+public:
+
+ explicit atomic_count(long v): value_(v)
+ {
+ pthread_mutex_init(&mutex_, 0);
+ }
+
+ ~atomic_count()
+ {
+ pthread_mutex_destroy(&mutex_);
+ }
+
+ long operator++()
+ {
+ scoped_lock lock(mutex_);
+ return ++value_;
+ }
+
+ long operator--()
+ {
+ scoped_lock lock(mutex_);
+ return --value_;
+ }
+
+ operator long() const
+ {
+ scoped_lock lock(mutex_);
+ return value_;
+ }
+
+private:
+
+ atomic_count(atomic_count const &);
+ atomic_count & operator=(atomic_count const &);
+
+ mutable pthread_mutex_t mutex_;
+ long value_;
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_PTHREADS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_sync.hpp b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_sync.hpp
new file mode 100644
index 0000000..b6359b5
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_sync.hpp
@@ -0,0 +1,61 @@
+#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
+
+//
+// boost/detail/atomic_count_sync.hpp
+//
+// atomic_count for g++ 4.1+
+//
+// http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html
+//
+// Copyright 2007 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
+# include <ia64intrin.h>
+#endif
+
+namespace boost
+{
+
+namespace detail
+{
+
+class atomic_count
+{
+public:
+
+ explicit atomic_count( long v ) : value_( v ) {}
+
+ long operator++()
+ {
+ return __sync_add_and_fetch( &value_, 1 );
+ }
+
+ long operator--()
+ {
+ return __sync_add_and_fetch( &value_, -1 );
+ }
+
+ operator long() const
+ {
+ return __sync_fetch_and_add( &value_, 0 );
+ }
+
+private:
+
+ atomic_count(atomic_count const &);
+ atomic_count & operator=(atomic_count const &);
+
+ mutable long value_;
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_SYNC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_win32.hpp b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_win32.hpp
new file mode 100644
index 0000000..60a0569
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/atomic_count_win32.hpp
@@ -0,0 +1,63 @@
+#ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/atomic_count_win32.hpp
+//
+// Copyright (c) 2001-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/detail/interlocked.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class atomic_count
+{
+public:
+
+ explicit atomic_count( long v ): value_( v )
+ {
+ }
+
+ long operator++()
+ {
+ return BOOST_INTERLOCKED_INCREMENT( &value_ );
+ }
+
+ long operator--()
+ {
+ return BOOST_INTERLOCKED_DECREMENT( &value_ );
+ }
+
+ operator long() const
+ {
+ return static_cast<long const volatile &>( value_ );
+ }
+
+private:
+
+ atomic_count( atomic_count const & );
+ atomic_count & operator=( atomic_count const & );
+
+ long value_;
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_ATOMIC_COUNT_WIN32_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/lightweight_mutex.hpp b/3rdParty/Boost/boost/smart_ptr/detail/lightweight_mutex.hpp
new file mode 100644
index 0000000..d46b193
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/lightweight_mutex.hpp
@@ -0,0 +1,42 @@
+#ifndef BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/lightweight_mutex.hpp - lightweight mutex
+//
+// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// typedef <unspecified> boost::detail::lightweight_mutex;
+//
+// boost::detail::lightweight_mutex is a header-only implementation of
+// a subset of the Mutex concept requirements:
+//
+// http://www.boost.org/doc/html/threads/concepts.html#threads.concepts.Mutex
+//
+// It maps to a CRITICAL_SECTION on Windows or a pthread_mutex on POSIX.
+//
+
+#include <boost/config.hpp>
+
+#if !defined(BOOST_HAS_THREADS)
+# include <boost/smart_ptr/detail/lwm_nop.hpp>
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/smart_ptr/detail/lwm_pthreads.hpp>
+#elif defined(BOOST_HAS_WINTHREADS) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# include <boost/smart_ptr/detail/lwm_win32_cs.hpp>
+#else
+// Use #define BOOST_DISABLE_THREADS to avoid the error
+# error Unrecognized threading platform
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/lwm_nop.hpp b/3rdParty/Boost/boost/smart_ptr/detail/lwm_nop.hpp
new file mode 100644
index 0000000..521a88e
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/lwm_nop.hpp
@@ -0,0 +1,37 @@
+#ifndef BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/lwm_nop.hpp
+//
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+namespace boost
+{
+
+namespace detail
+{
+
+class lightweight_mutex
+{
+public:
+
+ typedef lightweight_mutex scoped_lock;
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_NOP_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/lwm_pthreads.hpp b/3rdParty/Boost/boost/smart_ptr/detail/lwm_pthreads.hpp
new file mode 100644
index 0000000..fc20dbb
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/lwm_pthreads.hpp
@@ -0,0 +1,86 @@
+#ifndef BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/lwm_pthreads.hpp
+//
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <pthread.h>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class lightweight_mutex
+{
+private:
+
+ pthread_mutex_t m_;
+
+ lightweight_mutex(lightweight_mutex const &);
+ lightweight_mutex & operator=(lightweight_mutex const &);
+
+public:
+
+ lightweight_mutex()
+ {
+
+// HPUX 10.20 / DCE has a nonstandard pthread_mutex_init
+
+#if defined(__hpux) && defined(_DECTHREADS_)
+ pthread_mutex_init(&m_, pthread_mutexattr_default);
+#else
+ pthread_mutex_init(&m_, 0);
+#endif
+ }
+
+ ~lightweight_mutex()
+ {
+ pthread_mutex_destroy(&m_);
+ }
+
+ class scoped_lock;
+ friend class scoped_lock;
+
+ class scoped_lock
+ {
+ private:
+
+ pthread_mutex_t & m_;
+
+ scoped_lock(scoped_lock const &);
+ scoped_lock & operator=(scoped_lock const &);
+
+ public:
+
+ scoped_lock(lightweight_mutex & m): m_(m.m_)
+ {
+ pthread_mutex_lock(&m_);
+ }
+
+ ~scoped_lock()
+ {
+ pthread_mutex_unlock(&m_);
+ }
+ };
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_PTHREADS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/lwm_win32_cs.hpp b/3rdParty/Boost/boost/smart_ptr/detail/lwm_win32_cs.hpp
new file mode 100644
index 0000000..00477e4
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/lwm_win32_cs.hpp
@@ -0,0 +1,108 @@
+#ifndef BOOST_SMART_PTR_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/lwm_win32_cs.hpp
+//
+// Copyright (c) 2002, 2003 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifdef BOOST_USE_WINDOWS_H
+# include <windows.h>
+#endif
+
+namespace boost
+{
+
+namespace detail
+{
+
+#ifndef BOOST_USE_WINDOWS_H
+
+struct critical_section
+{
+ struct critical_section_debug * DebugInfo;
+ long LockCount;
+ long RecursionCount;
+ void * OwningThread;
+ void * LockSemaphore;
+#if defined(_WIN64)
+ unsigned __int64 SpinCount;
+#else
+ unsigned long SpinCount;
+#endif
+};
+
+extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(critical_section *);
+extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(critical_section *);
+extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(critical_section *);
+extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(critical_section *);
+
+#else
+
+typedef ::CRITICAL_SECTION critical_section;
+
+#endif // #ifndef BOOST_USE_WINDOWS_H
+
+class lightweight_mutex
+{
+private:
+
+ critical_section cs_;
+
+ lightweight_mutex(lightweight_mutex const &);
+ lightweight_mutex & operator=(lightweight_mutex const &);
+
+public:
+
+ lightweight_mutex()
+ {
+ InitializeCriticalSection(&cs_);
+ }
+
+ ~lightweight_mutex()
+ {
+ DeleteCriticalSection(&cs_);
+ }
+
+ class scoped_lock;
+ friend class scoped_lock;
+
+ class scoped_lock
+ {
+ private:
+
+ lightweight_mutex & m_;
+
+ scoped_lock(scoped_lock const &);
+ scoped_lock & operator=(scoped_lock const &);
+
+ public:
+
+ explicit scoped_lock(lightweight_mutex & m): m_(m)
+ {
+ EnterCriticalSection(&m_.cs_);
+ }
+
+ ~scoped_lock()
+ {
+ LeaveCriticalSection(&m_.cs_);
+ }
+ };
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_LWM_WIN32_CS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/operator_bool.hpp b/3rdParty/Boost/boost/smart_ptr/detail/operator_bool.hpp
new file mode 100644
index 0000000..842a05d
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/operator_bool.hpp
@@ -0,0 +1,56 @@
+// This header intentionally has no include guards.
+//
+// Copyright (c) 2001-2009 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#if ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570) ) || defined(__CINT__)
+
+ operator bool () const
+ {
+ return px != 0;
+ }
+
+#elif defined( _MANAGED )
+
+ static void unspecified_bool( this_type*** )
+ {
+ }
+
+ typedef void (*unspecified_bool_type)( this_type*** );
+
+ operator unspecified_bool_type() const // never throws
+ {
+ return px == 0? 0: unspecified_bool;
+ }
+
+#elif \
+ ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \
+ ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \
+ ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) )
+
+ typedef T * (this_type::*unspecified_bool_type)() const;
+
+ operator unspecified_bool_type() const // never throws
+ {
+ return px == 0? 0: &this_type::get;
+ }
+
+#else
+
+ typedef T * this_type::*unspecified_bool_type;
+
+ operator unspecified_bool_type() const // never throws
+ {
+ return px == 0? 0: &this_type::px;
+ }
+
+#endif
+
+ // operator! is redundant, but some compilers need it
+ bool operator! () const // never throws
+ {
+ return px == 0;
+ }
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/quick_allocator.hpp b/3rdParty/Boost/boost/smart_ptr/detail/quick_allocator.hpp
new file mode 100644
index 0000000..6d136f8
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/quick_allocator.hpp
@@ -0,0 +1,198 @@
+#ifndef BOOST_SMART_PTR_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/quick_allocator.hpp
+//
+// Copyright (c) 2003 David Abrahams
+// Copyright (c) 2003 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/config.hpp>
+
+#include <boost/smart_ptr/detail/lightweight_mutex.hpp>
+#include <boost/type_traits/type_with_alignment.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+
+#include <new> // ::operator new, ::operator delete
+#include <cstddef> // std::size_t
+
+namespace boost
+{
+
+namespace detail
+{
+
+template<unsigned size, unsigned align_> union freeblock
+{
+ typedef typename boost::type_with_alignment<align_>::type aligner_type;
+ aligner_type aligner;
+ char bytes[size];
+ freeblock * next;
+};
+
+template<unsigned size, unsigned align_> struct allocator_impl
+{
+ typedef freeblock<size, align_> block;
+
+ // It may seem odd to use such small pages.
+ //
+ // However, on a typical Windows implementation that uses
+ // the OS allocator, "normal size" pages interact with the
+ // "ordinary" operator new, slowing it down dramatically.
+ //
+ // 512 byte pages are handled by the small object allocator,
+ // and don't interfere with ::new.
+ //
+ // The other alternative is to use much bigger pages (1M.)
+ //
+ // It is surprisingly easy to hit pathological behavior by
+ // varying the page size. g++ 2.96 on Red Hat Linux 7.2,
+ // for example, passionately dislikes 496. 512 seems OK.
+
+#if defined(BOOST_QA_PAGE_SIZE)
+
+ enum { items_per_page = BOOST_QA_PAGE_SIZE / size };
+
+#else
+
+ enum { items_per_page = 512 / size }; // 1048560 / size
+
+#endif
+
+#ifdef BOOST_HAS_THREADS
+
+ static lightweight_mutex & mutex()
+ {
+ static lightweight_mutex m;
+ return m;
+ }
+
+ static lightweight_mutex * mutex_init;
+
+#endif
+
+ static block * free;
+ static block * page;
+ static unsigned last;
+
+ static inline void * alloc()
+ {
+#ifdef BOOST_HAS_THREADS
+ lightweight_mutex::scoped_lock lock( mutex() );
+#endif
+ if(block * x = free)
+ {
+ free = x->next;
+ return x;
+ }
+ else
+ {
+ if(last == items_per_page)
+ {
+ // "Listen to me carefully: there is no memory leak"
+ // -- Scott Meyers, Eff C++ 2nd Ed Item 10
+ page = ::new block[items_per_page];
+ last = 0;
+ }
+
+ return &page[last++];
+ }
+ }
+
+ static inline void * alloc(std::size_t n)
+ {
+ if(n != size) // class-specific new called for a derived object
+ {
+ return ::operator new(n);
+ }
+ else
+ {
+#ifdef BOOST_HAS_THREADS
+ lightweight_mutex::scoped_lock lock( mutex() );
+#endif
+ if(block * x = free)
+ {
+ free = x->next;
+ return x;
+ }
+ else
+ {
+ if(last == items_per_page)
+ {
+ page = ::new block[items_per_page];
+ last = 0;
+ }
+
+ return &page[last++];
+ }
+ }
+ }
+
+ static inline void dealloc(void * pv)
+ {
+ if(pv != 0) // 18.4.1.1/13
+ {
+#ifdef BOOST_HAS_THREADS
+ lightweight_mutex::scoped_lock lock( mutex() );
+#endif
+ block * pb = static_cast<block *>(pv);
+ pb->next = free;
+ free = pb;
+ }
+ }
+
+ static inline void dealloc(void * pv, std::size_t n)
+ {
+ if(n != size) // class-specific delete called for a derived object
+ {
+ ::operator delete(pv);
+ }
+ else if(pv != 0) // 18.4.1.1/13
+ {
+#ifdef BOOST_HAS_THREADS
+ lightweight_mutex::scoped_lock lock( mutex() );
+#endif
+ block * pb = static_cast<block *>(pv);
+ pb->next = free;
+ free = pb;
+ }
+ }
+};
+
+#ifdef BOOST_HAS_THREADS
+
+template<unsigned size, unsigned align_>
+ lightweight_mutex * allocator_impl<size, align_>::mutex_init = &allocator_impl<size, align_>::mutex();
+
+#endif
+
+template<unsigned size, unsigned align_>
+ freeblock<size, align_> * allocator_impl<size, align_>::free = 0;
+
+template<unsigned size, unsigned align_>
+ freeblock<size, align_> * allocator_impl<size, align_>::page = 0;
+
+template<unsigned size, unsigned align_>
+ unsigned allocator_impl<size, align_>::last = allocator_impl<size, align_>::items_per_page;
+
+template<class T>
+struct quick_allocator: public allocator_impl< sizeof(T), boost::alignment_of<T>::value >
+{
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_QUICK_ALLOCATOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/shared_array_nmt.hpp b/3rdParty/Boost/boost/smart_ptr/detail/shared_array_nmt.hpp
new file mode 100644
index 0000000..450c9bc
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/shared_array_nmt.hpp
@@ -0,0 +1,151 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SHARED_ARRAY_NMT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SHARED_ARRAY_NMT_HPP_INCLUDED
+
+//
+// detail/shared_array_nmt.hpp - shared_array.hpp without member templates
+//
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/shared_array.htm for documentation.
+//
+
+#include <boost/assert.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/smart_ptr/detail/atomic_count.hpp>
+
+#include <cstddef> // for std::ptrdiff_t
+#include <algorithm> // for std::swap
+#include <functional> // for std::less
+#include <new> // for std::bad_alloc
+
+namespace boost
+{
+
+template<class T> class shared_array
+{
+private:
+
+ typedef detail::atomic_count count_type;
+
+public:
+
+ typedef T element_type;
+
+ explicit shared_array(T * p = 0): px(p)
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try // prevent leak if new throws
+ {
+ pn = new count_type(1);
+ }
+ catch(...)
+ {
+ boost::checked_array_delete(p);
+ throw;
+ }
+
+#else
+
+ pn = new count_type(1);
+
+ if(pn == 0)
+ {
+ boost::checked_array_delete(p);
+ boost::throw_exception(std::bad_alloc());
+ }
+
+#endif
+ }
+
+ ~shared_array()
+ {
+ if(--*pn == 0)
+ {
+ boost::checked_array_delete(px);
+ delete pn;
+ }
+ }
+
+ shared_array(shared_array const & r) : px(r.px) // never throws
+ {
+ pn = r.pn;
+ ++*pn;
+ }
+
+ shared_array & operator=(shared_array const & r)
+ {
+ shared_array(r).swap(*this);
+ return *this;
+ }
+
+ void reset(T * p = 0)
+ {
+ BOOST_ASSERT(p == 0 || p != px);
+ shared_array(p).swap(*this);
+ }
+
+ T * get() const // never throws
+ {
+ return px;
+ }
+
+ T & operator[](std::ptrdiff_t i) const // never throws
+ {
+ BOOST_ASSERT(px != 0);
+ BOOST_ASSERT(i >= 0);
+ return px[i];
+ }
+
+ long use_count() const // never throws
+ {
+ return *pn;
+ }
+
+ bool unique() const // never throws
+ {
+ return *pn == 1;
+ }
+
+ void swap(shared_array<T> & other) // never throws
+ {
+ std::swap(px, other.px);
+ std::swap(pn, other.pn);
+ }
+
+private:
+
+ T * px; // contained pointer
+ count_type * pn; // ptr to reference counter
+
+}; // shared_array
+
+template<class T, class U> inline bool operator==(shared_array<T> const & a, shared_array<U> const & b)
+{
+ return a.get() == b.get();
+}
+
+template<class T, class U> inline bool operator!=(shared_array<T> const & a, shared_array<U> const & b)
+{
+ return a.get() != b.get();
+}
+
+template<class T> inline bool operator<(shared_array<T> const & a, shared_array<T> const & b)
+{
+ return std::less<T*>()(a.get(), b.get());
+}
+
+template<class T> void swap(shared_array<T> & a, shared_array<T> & b)
+{
+ a.swap(b);
+}
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SHARED_ARRAY_NMT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/shared_count.hpp b/3rdParty/Boost/boost/smart_ptr/detail/shared_count.hpp
new file mode 100644
index 0000000..b968bba
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/shared_count.hpp
@@ -0,0 +1,430 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/shared_count.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#ifdef __BORLANDC__
+# pragma warn -8027 // Functions containing try are not expanded inline
+#endif
+
+#include <boost/config.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/smart_ptr/bad_weak_ptr.hpp>
+#include <boost/smart_ptr/detail/sp_counted_base.hpp>
+#include <boost/smart_ptr/detail/sp_counted_impl.hpp>
+#include <boost/detail/workaround.hpp>
+// In order to avoid circular dependencies with Boost.TR1
+// we make sure that our include of <memory> doesn't try to
+// pull in the TR1 headers: that's why we use this header
+// rather than including <memory> directly:
+#include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
+#include <functional> // std::less
+#include <new> // std::bad_alloc
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+
+int const shared_count_id = 0x2C35F101;
+int const weak_count_id = 0x298C38A4;
+
+#endif
+
+struct sp_nothrow_tag {};
+
+class weak_count;
+
+class shared_count
+{
+private:
+
+ sp_counted_base * pi_;
+
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ int id_;
+#endif
+
+ friend class weak_count;
+
+public:
+
+ shared_count(): pi_(0) // nothrow
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+ }
+
+ template<class Y> explicit shared_count( Y * p ): pi_( 0 )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try
+ {
+ pi_ = new sp_counted_impl_p<Y>( p );
+ }
+ catch(...)
+ {
+ boost::checked_delete( p );
+ throw;
+ }
+
+#else
+
+ pi_ = new sp_counted_impl_p<Y>( p );
+
+ if( pi_ == 0 )
+ {
+ boost::checked_delete( p );
+ boost::throw_exception( std::bad_alloc() );
+ }
+
+#endif
+ }
+
+#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, <= 1200 )
+ template<class Y, class D> shared_count( Y * p, D d ): pi_(0)
+#else
+ template<class P, class D> shared_count( P p, D d ): pi_(0)
+#endif
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, <= 1200 )
+ typedef Y* P;
+#endif
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try
+ {
+ pi_ = new sp_counted_impl_pd<P, D>(p, d);
+ }
+ catch(...)
+ {
+ d(p); // delete p
+ throw;
+ }
+
+#else
+
+ pi_ = new sp_counted_impl_pd<P, D>(p, d);
+
+ if(pi_ == 0)
+ {
+ d(p); // delete p
+ boost::throw_exception(std::bad_alloc());
+ }
+
+#endif
+ }
+
+ template<class P, class D, class A> shared_count( P p, D d, A a ): pi_( 0 )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+ typedef sp_counted_impl_pda<P, D, A> impl_type;
+ typedef typename A::template rebind< impl_type >::other A2;
+
+ A2 a2( a );
+
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try
+ {
+ pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
+ new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
+ }
+ catch(...)
+ {
+ d( p );
+
+ if( pi_ != 0 )
+ {
+ a2.deallocate( static_cast< impl_type* >( pi_ ), 1 );
+ }
+
+ throw;
+ }
+
+#else
+
+ pi_ = a2.allocate( 1, static_cast< impl_type* >( 0 ) );
+
+ if( pi_ != 0 )
+ {
+ new( static_cast< void* >( pi_ ) ) impl_type( p, d, a );
+ }
+ else
+ {
+ d( p );
+ boost::throw_exception( std::bad_alloc() );
+ }
+
+#endif
+ }
+
+#ifndef BOOST_NO_AUTO_PTR
+
+ // auto_ptr<Y> is special cased to provide the strong guarantee
+
+ template<class Y>
+ explicit shared_count( std::auto_ptr<Y> & r ): pi_( new sp_counted_impl_p<Y>( r.get() ) )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+#ifdef BOOST_NO_EXCEPTIONS
+
+ if( pi_ == 0 )
+ {
+ boost::throw_exception(std::bad_alloc());
+ }
+
+#endif
+
+ r.release();
+ }
+
+#endif
+
+ ~shared_count() // nothrow
+ {
+ if( pi_ != 0 ) pi_->release();
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ id_ = 0;
+#endif
+ }
+
+ shared_count(shared_count const & r): pi_(r.pi_) // nothrow
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+ if( pi_ != 0 ) pi_->add_ref_copy();
+ }
+
+#if defined( BOOST_HAS_RVALUE_REFS )
+
+ shared_count(shared_count && r): pi_(r.pi_) // nothrow
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+ {
+ r.pi_ = 0;
+ }
+
+#endif
+
+ explicit shared_count(weak_count const & r); // throws bad_weak_ptr when r.use_count() == 0
+ shared_count( weak_count const & r, sp_nothrow_tag ); // constructs an empty *this when r.use_count() == 0
+
+ shared_count & operator= (shared_count const & r) // nothrow
+ {
+ sp_counted_base * tmp = r.pi_;
+
+ if( tmp != pi_ )
+ {
+ if( tmp != 0 ) tmp->add_ref_copy();
+ if( pi_ != 0 ) pi_->release();
+ pi_ = tmp;
+ }
+
+ return *this;
+ }
+
+ void swap(shared_count & r) // nothrow
+ {
+ sp_counted_base * tmp = r.pi_;
+ r.pi_ = pi_;
+ pi_ = tmp;
+ }
+
+ long use_count() const // nothrow
+ {
+ return pi_ != 0? pi_->use_count(): 0;
+ }
+
+ bool unique() const // nothrow
+ {
+ return use_count() == 1;
+ }
+
+ bool empty() const // nothrow
+ {
+ return pi_ == 0;
+ }
+
+ friend inline bool operator==(shared_count const & a, shared_count const & b)
+ {
+ return a.pi_ == b.pi_;
+ }
+
+ friend inline bool operator<(shared_count const & a, shared_count const & b)
+ {
+ return std::less<sp_counted_base *>()( a.pi_, b.pi_ );
+ }
+
+ void * get_deleter( sp_typeinfo const & ti ) const
+ {
+ return pi_? pi_->get_deleter( ti ): 0;
+ }
+};
+
+
+class weak_count
+{
+private:
+
+ sp_counted_base * pi_;
+
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ int id_;
+#endif
+
+ friend class shared_count;
+
+public:
+
+ weak_count(): pi_(0) // nothrow
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(weak_count_id)
+#endif
+ {
+ }
+
+ weak_count(shared_count const & r): pi_(r.pi_) // nothrow
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(weak_count_id)
+#endif
+ {
+ if(pi_ != 0) pi_->weak_add_ref();
+ }
+
+ weak_count(weak_count const & r): pi_(r.pi_) // nothrow
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(weak_count_id)
+#endif
+ {
+ if(pi_ != 0) pi_->weak_add_ref();
+ }
+
+ ~weak_count() // nothrow
+ {
+ if(pi_ != 0) pi_->weak_release();
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ id_ = 0;
+#endif
+ }
+
+ weak_count & operator= (shared_count const & r) // nothrow
+ {
+ sp_counted_base * tmp = r.pi_;
+
+ if( tmp != pi_ )
+ {
+ if(tmp != 0) tmp->weak_add_ref();
+ if(pi_ != 0) pi_->weak_release();
+ pi_ = tmp;
+ }
+
+ return *this;
+ }
+
+ weak_count & operator= (weak_count const & r) // nothrow
+ {
+ sp_counted_base * tmp = r.pi_;
+
+ if( tmp != pi_ )
+ {
+ if(tmp != 0) tmp->weak_add_ref();
+ if(pi_ != 0) pi_->weak_release();
+ pi_ = tmp;
+ }
+
+ return *this;
+ }
+
+ void swap(weak_count & r) // nothrow
+ {
+ sp_counted_base * tmp = r.pi_;
+ r.pi_ = pi_;
+ pi_ = tmp;
+ }
+
+ long use_count() const // nothrow
+ {
+ return pi_ != 0? pi_->use_count(): 0;
+ }
+
+ bool empty() const // nothrow
+ {
+ return pi_ == 0;
+ }
+
+ friend inline bool operator==(weak_count const & a, weak_count const & b)
+ {
+ return a.pi_ == b.pi_;
+ }
+
+ friend inline bool operator<(weak_count const & a, weak_count const & b)
+ {
+ return std::less<sp_counted_base *>()(a.pi_, b.pi_);
+ }
+};
+
+inline shared_count::shared_count( weak_count const & r ): pi_( r.pi_ )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+{
+ if( pi_ == 0 || !pi_->add_ref_lock() )
+ {
+ boost::throw_exception( boost::bad_weak_ptr() );
+ }
+}
+
+inline shared_count::shared_count( weak_count const & r, sp_nothrow_tag ): pi_( r.pi_ )
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ , id_(shared_count_id)
+#endif
+{
+ if( pi_ != 0 && !pi_->add_ref_lock() )
+ {
+ pi_ = 0;
+ }
+}
+
+} // namespace detail
+
+} // namespace boost
+
+#ifdef __BORLANDC__
+# pragma warn .8027 // Functions containing try are not expanded inline
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SHARED_COUNT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/shared_ptr_nmt.hpp b/3rdParty/Boost/boost/smart_ptr/detail/shared_ptr_nmt.hpp
new file mode 100644
index 0000000..afc1ec0
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/shared_ptr_nmt.hpp
@@ -0,0 +1,182 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED
+
+//
+// detail/shared_ptr_nmt.hpp - shared_ptr.hpp without member templates
+//
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
+//
+
+#include <boost/assert.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/smart_ptr/detail/atomic_count.hpp>
+
+#ifndef BOOST_NO_AUTO_PTR
+# include <memory> // for std::auto_ptr
+#endif
+
+#include <algorithm> // for std::swap
+#include <functional> // for std::less
+#include <new> // for std::bad_alloc
+
+namespace boost
+{
+
+template<class T> class shared_ptr
+{
+private:
+
+ typedef detail::atomic_count count_type;
+
+public:
+
+ typedef T element_type;
+ typedef T value_type;
+
+ explicit shared_ptr(T * p = 0): px(p)
+ {
+#ifndef BOOST_NO_EXCEPTIONS
+
+ try // prevent leak if new throws
+ {
+ pn = new count_type(1);
+ }
+ catch(...)
+ {
+ boost::checked_delete(p);
+ throw;
+ }
+
+#else
+
+ pn = new count_type(1);
+
+ if(pn == 0)
+ {
+ boost::checked_delete(p);
+ boost::throw_exception(std::bad_alloc());
+ }
+
+#endif
+ }
+
+ ~shared_ptr()
+ {
+ if(--*pn == 0)
+ {
+ boost::checked_delete(px);
+ delete pn;
+ }
+ }
+
+ shared_ptr(shared_ptr const & r): px(r.px) // never throws
+ {
+ pn = r.pn;
+ ++*pn;
+ }
+
+ shared_ptr & operator=(shared_ptr const & r)
+ {
+ shared_ptr(r).swap(*this);
+ return *this;
+ }
+
+#ifndef BOOST_NO_AUTO_PTR
+
+ explicit shared_ptr(std::auto_ptr<T> & r)
+ {
+ pn = new count_type(1); // may throw
+ px = r.release(); // fix: moved here to stop leak if new throws
+ }
+
+ shared_ptr & operator=(std::auto_ptr<T> & r)
+ {
+ shared_ptr(r).swap(*this);
+ return *this;
+ }
+
+#endif
+
+ void reset(T * p = 0)
+ {
+ BOOST_ASSERT(p == 0 || p != px);
+ shared_ptr(p).swap(*this);
+ }
+
+ T & operator*() const // never throws
+ {
+ BOOST_ASSERT(px != 0);
+ return *px;
+ }
+
+ T * operator->() const // never throws
+ {
+ BOOST_ASSERT(px != 0);
+ return px;
+ }
+
+ T * get() const // never throws
+ {
+ return px;
+ }
+
+ long use_count() const // never throws
+ {
+ return *pn;
+ }
+
+ bool unique() const // never throws
+ {
+ return *pn == 1;
+ }
+
+ void swap(shared_ptr<T> & other) // never throws
+ {
+ std::swap(px, other.px);
+ std::swap(pn, other.pn);
+ }
+
+private:
+
+ T * px; // contained pointer
+ count_type * pn; // ptr to reference counter
+};
+
+template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
+{
+ return a.get() == b.get();
+}
+
+template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b)
+{
+ return a.get() != b.get();
+}
+
+template<class T> inline bool operator<(shared_ptr<T> const & a, shared_ptr<T> const & b)
+{
+ return std::less<T*>()(a.get(), b.get());
+}
+
+template<class T> void swap(shared_ptr<T> & a, shared_ptr<T> & b)
+{
+ a.swap(b);
+}
+
+// get_pointer() enables boost::mem_fn to recognize shared_ptr
+
+template<class T> inline T * get_pointer(shared_ptr<T> const & p)
+{
+ return p.get();
+}
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SHARED_PTR_NMT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_convertible.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_convertible.hpp
new file mode 100644
index 0000000..7d9502d
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_convertible.hpp
@@ -0,0 +1,76 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// detail/sp_convertible.hpp
+//
+// Copyright 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/config.hpp>
+
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_NO_SFINAE )
+# define BOOST_SP_NO_SP_CONVERTIBLE
+#endif
+
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ < 303 )
+# define BOOST_SP_NO_SP_CONVERTIBLE
+#endif
+
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __BORLANDC__ ) && ( __BORLANDC__ <= 0x610 )
+# define BOOST_SP_NO_SP_CONVERTIBLE
+#endif
+
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+namespace boost
+{
+
+namespace detail
+{
+
+template< class Y, class T > struct sp_convertible
+{
+ typedef char (&yes) [1];
+ typedef char (&no) [2];
+
+ static yes f( T* );
+ static no f( ... );
+
+ enum _vt { value = sizeof( f( (Y*)0 ) ) == sizeof(yes) };
+};
+
+struct sp_empty
+{
+};
+
+template< bool > struct sp_enable_if_convertible_impl;
+
+template<> struct sp_enable_if_convertible_impl<true>
+{
+ typedef sp_empty type;
+};
+
+template<> struct sp_enable_if_convertible_impl<false>
+{
+};
+
+template< class Y, class T > struct sp_enable_if_convertible: public sp_enable_if_convertible_impl< sp_convertible< Y, T >::value >
+{
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_CONVERTIBLE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base.hpp
new file mode 100644
index 0000000..cab45cc
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base.hpp
@@ -0,0 +1,70 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base.hpp
+//
+// Copyright 2005, 2006 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/config.hpp>
+#include <boost/smart_ptr/detail/sp_has_sync.hpp>
+
+#if defined( BOOST_SP_DISABLE_THREADS )
+# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
+
+#elif defined( BOOST_SP_USE_SPINLOCK )
+# include <boost/smart_ptr/detail/sp_counted_base_spin.hpp>
+
+#elif defined( BOOST_SP_USE_PTHREADS )
+# include <boost/smart_ptr/detail/sp_counted_base_pt.hpp>
+
+#elif defined( BOOST_DISABLE_THREADS ) && !defined( BOOST_SP_ENABLE_THREADS ) && !defined( BOOST_DISABLE_WIN32 )
+# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
+
+#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp>
+
+#elif defined( __GNUC__ ) && defined( __ia64__ ) && !defined( __INTEL_COMPILER )
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp>
+
+#elif defined(__HP_aCC) && defined(__ia64)
+# include <boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp>
+
+#elif defined( __MWERKS__ ) && defined( __POWERPC__ )
+# include <boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp>
+
+#elif defined( __GNUC__ ) && ( defined( __powerpc__ ) || defined( __ppc__ ) || defined( __ppc ) )
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp>
+
+#elif defined( __GNUC__ ) && ( defined( __mips__ ) || defined( _mips ) )
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp>
+
+#elif defined( BOOST_SP_HAS_SYNC )
+# include <boost/smart_ptr/detail/sp_counted_base_sync.hpp>
+
+#elif defined(__GNUC__) && ( defined( __sparcv9 ) || ( defined( __sparcv8 ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 ) ) )
+# include <boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp>
+
+#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined(__CYGWIN__)
+# include <boost/smart_ptr/detail/sp_counted_base_w32.hpp>
+
+#elif !defined( BOOST_HAS_THREADS )
+# include <boost/smart_ptr/detail/sp_counted_base_nt.hpp>
+
+#else
+# include <boost/smart_ptr/detail/sp_counted_base_spin.hpp>
+
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp
new file mode 100644
index 0000000..dffd995
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp
@@ -0,0 +1,150 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
+
+//
+// detail/sp_counted_base_acc_ia64.hpp - aC++ on HP-UX IA64
+//
+// Copyright 2007 Baruch Zilber
+// Copyright 2007 Boris Gubenko
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <machine/sys/inline.h>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( int * pw )
+{
+ // ++*pw;
+
+ _Asm_fetchadd(_FASZ_W, _SEM_REL, pw, +1, _LDHINT_NONE);
+}
+
+inline int atomic_decrement( int * pw )
+{
+ // return --*pw;
+
+ int r = static_cast<int>(_Asm_fetchadd(_FASZ_W, _SEM_REL, pw, -1, _LDHINT_NONE));
+ if (1 == r)
+ {
+ _Asm_mf();
+ }
+
+ return r - 1;
+}
+
+inline int atomic_conditional_increment( int * pw )
+{
+ // if( *pw != 0 ) ++*pw;
+ // return *pw;
+
+ int v = *pw;
+
+ for (;;)
+ {
+ if (0 == v)
+ {
+ return 0;
+ }
+
+ _Asm_mov_to_ar(_AREG_CCV,
+ v,
+ (_UP_CALL_FENCE | _UP_SYS_FENCE | _DOWN_CALL_FENCE | _DOWN_SYS_FENCE));
+ int r = static_cast<int>(_Asm_cmpxchg(_SZ_W, _SEM_ACQ, pw, v + 1, _LDHINT_NONE));
+ if (r == v)
+ {
+ return r + 1;
+ }
+
+ v = r;
+ }
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<int const volatile &>( use_count_ ); // TODO use ld.acq here
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_ACC_IA64_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp
new file mode 100644
index 0000000..51ac56a
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp
@@ -0,0 +1,170 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_cw_ppc.hpp - CodeWarrior on PowerPC
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+// Thanks to Ben Hitchings for the #weak + (#shared != 0)
+// formulation
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( register long * pw )
+{
+ register int a;
+
+ asm
+ {
+loop:
+
+ lwarx a, 0, pw
+ addi a, a, 1
+ stwcx. a, 0, pw
+ bne- loop
+ }
+}
+
+inline long atomic_decrement( register long * pw )
+{
+ register int a;
+
+ asm
+ {
+ sync
+
+loop:
+
+ lwarx a, 0, pw
+ addi a, a, -1
+ stwcx. a, 0, pw
+ bne- loop
+
+ isync
+ }
+
+ return a;
+}
+
+inline long atomic_conditional_increment( register long * pw )
+{
+ register int a;
+
+ asm
+ {
+loop:
+
+ lwarx a, 0, pw
+ cmpwi a, 0
+ beq store
+
+ addi a, a, 1
+
+store:
+
+ stwcx. a, 0, pw
+ bne- loop
+ }
+
+ return a;
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ long use_count_; // #shared
+ long weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<long const volatile &>( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_CW_PPC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp
new file mode 100644
index 0000000..d122a49
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp
@@ -0,0 +1,157 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_IA64_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_IA64_HPP_INCLUDED
+
+//
+// detail/sp_counted_base_gcc_ia64.hpp - g++ on IA64
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2006 Peter Dimov
+// Copyright 2005 Ben Hutchings
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( int * pw )
+{
+ // ++*pw;
+
+ int tmp;
+
+ // No barrier is required here but fetchadd always has an acquire or
+ // release barrier associated with it. We choose release as it should be
+ // cheaper.
+ __asm__ ("fetchadd4.rel %0=%1,1" :
+ "=r"(tmp), "=m"(*pw) :
+ "m"( *pw ));
+}
+
+inline int atomic_decrement( int * pw )
+{
+ // return --*pw;
+
+ int rv;
+
+ __asm__ (" fetchadd4.rel %0=%1,-1 ;; \n"
+ " cmp.eq p7,p0=1,%0 ;; \n"
+ "(p7) ld4.acq %0=%1 " :
+ "=&r"(rv), "=m"(*pw) :
+ "m"( *pw ) :
+ "p7");
+
+ return rv;
+}
+
+inline int atomic_conditional_increment( int * pw )
+{
+ // if( *pw != 0 ) ++*pw;
+ // return *pw;
+
+ int rv, tmp, tmp2;
+
+ __asm__ ("0: ld4 %0=%3 ;; \n"
+ " cmp.eq p7,p0=0,%0 ;; \n"
+ "(p7) br.cond.spnt 1f \n"
+ " mov ar.ccv=%0 \n"
+ " add %1=1,%0 ;; \n"
+ " cmpxchg4.acq %2=%3,%1,ar.ccv ;; \n"
+ " cmp.ne p7,p0=%0,%2 ;; \n"
+ "(p7) br.cond.spnt 0b \n"
+ " mov %0=%1 ;; \n"
+ "1:" :
+ "=&r"(rv), "=&r"(tmp), "=&r"(tmp2), "=m"(*pw) :
+ "m"( *pw ) :
+ "ar.ccv", "p7");
+
+ return rv;
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<int const volatile &>( use_count_ ); // TODO use ld.acq here
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_IA64_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
new file mode 100644
index 0000000..0c69b0b
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp
@@ -0,0 +1,172 @@
+#ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
+#define BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_gcc_mips.hpp - g++ on MIPS
+//
+// Copyright (c) 2009, Spirent Communications, Inc.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( int * pw )
+{
+ // ++*pw;
+
+ int tmp;
+
+ __asm__ __volatile__
+ (
+ "0:\n\t"
+ "ll %0, %1\n\t"
+ "addiu %0, 1\n\t"
+ "sc %0, %1\n\t"
+ "beqz %0, 0b":
+ "=&r"( tmp ), "=m"( *pw ):
+ "m"( *pw )
+ );
+}
+
+inline int atomic_decrement( int * pw )
+{
+ // return --*pw;
+
+ int rv, tmp;
+
+ __asm__ __volatile__
+ (
+ "0:\n\t"
+ "ll %1, %2\n\t"
+ "addiu %0, %1, -1\n\t"
+ "sc %0, %2\n\t"
+ "beqz %0, 0b\n\t"
+ "addiu %0, %1, -1":
+ "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
+ "m"( *pw ):
+ "memory"
+ );
+
+ return rv;
+}
+
+inline int atomic_conditional_increment( int * pw )
+{
+ // if( *pw != 0 ) ++*pw;
+ // return *pw;
+
+ int rv, tmp;
+
+ __asm__ __volatile__
+ (
+ "0:\n\t"
+ "ll %0, %2\n\t"
+ "beqz %0, 1f\n\t"
+ "addiu %1, %0, 1\n\t"
+ "sc %1, %2\n\t"
+ "beqz %1, 0b\n\t"
+ "addiu %0, %0, 1\n\t"
+ "1:":
+ "=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
+ "m"( *pw ):
+ "memory"
+ );
+
+ return rv;
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<int const volatile &>( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_DETAIL_SP_COUNTED_BASE_GCC_MIPS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp
new file mode 100644
index 0000000..7f5c414
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp
@@ -0,0 +1,181 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_PPC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_PPC_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_gcc_ppc.hpp - g++ on PowerPC
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+// Thanks to Ben Hitchings for the #weak + (#shared != 0)
+// formulation
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void atomic_increment( int * pw )
+{
+ // ++*pw;
+
+ int tmp;
+
+ __asm__
+ (
+ "0:\n\t"
+ "lwarx %1, 0, %2\n\t"
+ "addi %1, %1, 1\n\t"
+ "stwcx. %1, 0, %2\n\t"
+ "bne- 0b":
+
+ "=m"( *pw ), "=&b"( tmp ):
+ "r"( pw ), "m"( *pw ):
+ "cc"
+ );
+}
+
+inline int atomic_decrement( int * pw )
+{
+ // return --*pw;
+
+ int rv;
+
+ __asm__ __volatile__
+ (
+ "sync\n\t"
+ "0:\n\t"
+ "lwarx %1, 0, %2\n\t"
+ "addi %1, %1, -1\n\t"
+ "stwcx. %1, 0, %2\n\t"
+ "bne- 0b\n\t"
+ "isync":
+
+ "=m"( *pw ), "=&b"( rv ):
+ "r"( pw ), "m"( *pw ):
+ "memory", "cc"
+ );
+
+ return rv;
+}
+
+inline int atomic_conditional_increment( int * pw )
+{
+ // if( *pw != 0 ) ++*pw;
+ // return *pw;
+
+ int rv;
+
+ __asm__
+ (
+ "0:\n\t"
+ "lwarx %1, 0, %2\n\t"
+ "cmpwi %1, 0\n\t"
+ "beq 1f\n\t"
+ "addi %1, %1, 1\n\t"
+ "1:\n\t"
+ "stwcx. %1, 0, %2\n\t"
+ "bne- 0b":
+
+ "=m"( *pw ), "=&b"( rv ):
+ "r"( pw ), "m"( *pw ):
+ "cc"
+ );
+
+ return rv;
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<int const volatile &>( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_PPC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp
new file mode 100644
index 0000000..8af6f0a
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp
@@ -0,0 +1,166 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_SPARC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_SPARC_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// detail/sp_counted_base_gcc_sparc.hpp - g++ on Sparc V8+
+//
+// Copyright (c) 2006 Piotr Wyderski
+// Copyright (c) 2006 Tomas Puverle
+// Copyright (c) 2006 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// Thanks to Michael van der Westhuizen
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <inttypes.h> // int32_t
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline int32_t compare_and_swap( int32_t * dest_, int32_t compare_, int32_t swap_ )
+{
+ __asm__ __volatile__( "cas %0, %2, %1"
+ : "+m" (*dest_), "+r" (swap_)
+ : "r" (compare_)
+ : "memory" );
+
+ return swap_;
+}
+
+inline int32_t atomic_fetch_and_add( int32_t * pw, int32_t dv )
+{
+ // long r = *pw;
+ // *pw += dv;
+ // return r;
+
+ for( ;; )
+ {
+ int32_t r = *pw;
+
+ if( __builtin_expect((compare_and_swap(pw, r, r + dv) == r), 1) )
+ {
+ return r;
+ }
+ }
+}
+
+inline void atomic_increment( int32_t * pw )
+{
+ atomic_fetch_and_add( pw, 1 );
+}
+
+inline int32_t atomic_decrement( int32_t * pw )
+{
+ return atomic_fetch_and_add( pw, -1 );
+}
+
+inline int32_t atomic_conditional_increment( int32_t * pw )
+{
+ // long r = *pw;
+ // if( r != 0 ) ++*pw;
+ // return r;
+
+ for( ;; )
+ {
+ int32_t r = *pw;
+
+ if( r == 0 )
+ {
+ return r;
+ }
+
+ if( __builtin_expect( ( compare_and_swap( pw, r, r + 1 ) == r ), 1 ) )
+ {
+ return r;
+ }
+ }
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int32_t use_count_; // #shared
+ int32_t weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 1 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 1 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return const_cast< int32_t const volatile & >( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_SPARC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp
new file mode 100644
index 0000000..4d7fa8d
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp
@@ -0,0 +1,173 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_X86_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_X86_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_gcc_x86.hpp - g++ on 486+ or AMD64
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+// Thanks to Ben Hitchings for the #weak + (#shared != 0)
+// formulation
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline int atomic_exchange_and_add( int * pw, int dv )
+{
+ // int r = *pw;
+ // *pw += dv;
+ // return r;
+
+ int r;
+
+ __asm__ __volatile__
+ (
+ "lock\n\t"
+ "xadd %1, %0":
+ "=m"( *pw ), "=r"( r ): // outputs (%0, %1)
+ "m"( *pw ), "1"( dv ): // inputs (%2, %3 == %1)
+ "memory", "cc" // clobbers
+ );
+
+ return r;
+}
+
+inline void atomic_increment( int * pw )
+{
+ //atomic_exchange_and_add( pw, 1 );
+
+ __asm__
+ (
+ "lock\n\t"
+ "incl %0":
+ "=m"( *pw ): // output (%0)
+ "m"( *pw ): // input (%1)
+ "cc" // clobbers
+ );
+}
+
+inline int atomic_conditional_increment( int * pw )
+{
+ // int rv = *pw;
+ // if( rv != 0 ) ++*pw;
+ // return rv;
+
+ int rv, tmp;
+
+ __asm__
+ (
+ "movl %0, %%eax\n\t"
+ "0:\n\t"
+ "test %%eax, %%eax\n\t"
+ "je 1f\n\t"
+ "movl %%eax, %2\n\t"
+ "incl %2\n\t"
+ "lock\n\t"
+ "cmpxchgl %2, %0\n\t"
+ "jne 0b\n\t"
+ "1:":
+ "=m"( *pw ), "=&a"( rv ), "=&r"( tmp ): // outputs (%0, %1, %2)
+ "m"( *pw ): // input (%3)
+ "cc" // clobbers
+ );
+
+ return rv;
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<int const volatile &>( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_GCC_X86_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp
new file mode 100644
index 0000000..dfd70e7
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_nt.hpp
@@ -0,0 +1,107 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_NT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_NT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_nt.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ long use_count_; // #shared
+ long weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ ++use_count_;
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ if( use_count_ == 0 ) return false;
+ ++use_count_;
+ return true;
+ }
+
+ void release() // nothrow
+ {
+ if( --use_count_ == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ ++weak_count_;
+ }
+
+ void weak_release() // nothrow
+ {
+ if( --weak_count_ == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return use_count_;
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_NT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp
new file mode 100644
index 0000000..3c56fec
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_pt.hpp
@@ -0,0 +1,135 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_PT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_PT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_pt.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <pthread.h>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ long use_count_; // #shared
+ long weak_count_; // #weak + (#shared != 0)
+
+ mutable pthread_mutex_t m_;
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+// HPUX 10.20 / DCE has a nonstandard pthread_mutex_init
+
+#if defined(__hpux) && defined(_DECTHREADS_)
+ pthread_mutex_init( &m_, pthread_mutexattr_default );
+#else
+ pthread_mutex_init( &m_, 0 );
+#endif
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ pthread_mutex_destroy( &m_ );
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ pthread_mutex_lock( &m_ );
+ ++use_count_;
+ pthread_mutex_unlock( &m_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ pthread_mutex_lock( &m_ );
+ bool r = use_count_ == 0? false: ( ++use_count_, true );
+ pthread_mutex_unlock( &m_ );
+ return r;
+ }
+
+ void release() // nothrow
+ {
+ pthread_mutex_lock( &m_ );
+ long new_use_count = --use_count_;
+ pthread_mutex_unlock( &m_ );
+
+ if( new_use_count == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ pthread_mutex_lock( &m_ );
+ ++weak_count_;
+ pthread_mutex_unlock( &m_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ pthread_mutex_lock( &m_ );
+ long new_weak_count = --weak_count_;
+ pthread_mutex_unlock( &m_ );
+
+ if( new_weak_count == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ pthread_mutex_lock( &m_ );
+ long r = use_count_;
+ pthread_mutex_unlock( &m_ );
+
+ return r;
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_PT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp
new file mode 100644
index 0000000..bbd11e6
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_spin.hpp
@@ -0,0 +1,131 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SPIN_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SPIN_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_spin.hpp - spinlock pool atomic emulation
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <boost/smart_ptr/detail/spinlock_pool.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline int atomic_exchange_and_add( int * pw, int dv )
+{
+ spinlock_pool<1>::scoped_lock lock( pw );
+
+ int r = *pw;
+ *pw += dv;
+ return r;
+}
+
+inline void atomic_increment( int * pw )
+{
+ spinlock_pool<1>::scoped_lock lock( pw );
+ ++*pw;
+}
+
+inline int atomic_conditional_increment( int * pw )
+{
+ spinlock_pool<1>::scoped_lock lock( pw );
+
+ int rv = *pw;
+ if( rv != 0 ) ++*pw;
+ return rv;
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ int use_count_; // #shared
+ int weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ spinlock_pool<1>::scoped_lock lock( &use_count_ );
+ return use_count_;
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SPIN_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp
new file mode 100644
index 0000000..41f654e
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_sync.hpp
@@ -0,0 +1,155 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+// detail/sp_counted_base_sync.hpp - g++ 4.1+ __sync intrinsics
+//
+// Copyright (c) 2007 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/detail/sp_typeinfo.hpp>
+#include <limits.h>
+
+#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
+# include <ia64intrin.h>
+#endif
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if INT_MAX >= 2147483647
+
+typedef int sp_int32_t;
+
+#else
+
+typedef long sp_int32_t;
+
+#endif
+
+inline void atomic_increment( sp_int32_t * pw )
+{
+ __sync_fetch_and_add( pw, 1 );
+}
+
+inline sp_int32_t atomic_decrement( sp_int32_t * pw )
+{
+ return __sync_fetch_and_add( pw, -1 );
+}
+
+inline sp_int32_t atomic_conditional_increment( sp_int32_t * pw )
+{
+ // long r = *pw;
+ // if( r != 0 ) ++*pw;
+ // return r;
+
+ sp_int32_t r = *pw;
+
+ for( ;; )
+ {
+ if( r == 0 )
+ {
+ return r;
+ }
+
+ sp_int32_t r2 = __sync_val_compare_and_swap( pw, r, r + 1 );
+
+ if( r2 == r )
+ {
+ return r;
+ }
+ else
+ {
+ r = r2;
+ }
+ }
+}
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ sp_int32_t use_count_; // #shared
+ sp_int32_t weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ atomic_increment( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ return atomic_conditional_increment( &use_count_ ) != 0;
+ }
+
+ void release() // nothrow
+ {
+ if( atomic_decrement( &use_count_ ) == 1 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ atomic_increment( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( atomic_decrement( &weak_count_ ) == 1 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return const_cast< sp_int32_t const volatile & >( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_SYNC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp
new file mode 100644
index 0000000..06aa456
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_base_w32.hpp
@@ -0,0 +1,130 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_base_w32.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+//
+// Lock-free algorithm by Alexander Terekhov
+//
+// Thanks to Ben Hitchings for the #weak + (#shared != 0)
+// formulation
+//
+
+#include <boost/detail/interlocked.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/detail/sp_typeinfo.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class sp_counted_base
+{
+private:
+
+ sp_counted_base( sp_counted_base const & );
+ sp_counted_base & operator= ( sp_counted_base const & );
+
+ long use_count_; // #shared
+ long weak_count_; // #weak + (#shared != 0)
+
+public:
+
+ sp_counted_base(): use_count_( 1 ), weak_count_( 1 )
+ {
+ }
+
+ virtual ~sp_counted_base() // nothrow
+ {
+ }
+
+ // dispose() is called when use_count_ drops to zero, to release
+ // the resources managed by *this.
+
+ virtual void dispose() = 0; // nothrow
+
+ // destroy() is called when weak_count_ drops to zero.
+
+ virtual void destroy() // nothrow
+ {
+ delete this;
+ }
+
+ virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
+
+ void add_ref_copy()
+ {
+ BOOST_INTERLOCKED_INCREMENT( &use_count_ );
+ }
+
+ bool add_ref_lock() // true on success
+ {
+ for( ;; )
+ {
+ long tmp = static_cast< long const volatile& >( use_count_ );
+ if( tmp == 0 ) return false;
+
+#if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, == 1200 )
+
+ // work around a code generation bug
+
+ long tmp2 = tmp + 1;
+ if( BOOST_INTERLOCKED_COMPARE_EXCHANGE( &use_count_, tmp2, tmp ) == tmp2 - 1 ) return true;
+
+#else
+
+ if( BOOST_INTERLOCKED_COMPARE_EXCHANGE( &use_count_, tmp + 1, tmp ) == tmp ) return true;
+
+#endif
+ }
+ }
+
+ void release() // nothrow
+ {
+ if( BOOST_INTERLOCKED_DECREMENT( &use_count_ ) == 0 )
+ {
+ dispose();
+ weak_release();
+ }
+ }
+
+ void weak_add_ref() // nothrow
+ {
+ BOOST_INTERLOCKED_INCREMENT( &weak_count_ );
+ }
+
+ void weak_release() // nothrow
+ {
+ if( BOOST_INTERLOCKED_DECREMENT( &weak_count_ ) == 0 )
+ {
+ destroy();
+ }
+ }
+
+ long use_count() const // nothrow
+ {
+ return static_cast<long const volatile &>( use_count_ );
+ }
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_BASE_W32_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_impl.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_impl.hpp
new file mode 100644
index 0000000..397421a
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_counted_impl.hpp
@@ -0,0 +1,231 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_IMPL_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_COUNTED_IMPL_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// detail/sp_counted_impl.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
+// Copyright 2004-2005 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_SP_USE_STD_ALLOCATOR) && defined(BOOST_SP_USE_QUICK_ALLOCATOR)
+# error BOOST_SP_USE_STD_ALLOCATOR and BOOST_SP_USE_QUICK_ALLOCATOR are incompatible.
+#endif
+
+#include <boost/checked_delete.hpp>
+#include <boost/smart_ptr/detail/sp_counted_base.hpp>
+
+#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
+#include <boost/smart_ptr/detail/quick_allocator.hpp>
+#endif
+
+#if defined(BOOST_SP_USE_STD_ALLOCATOR)
+#include <memory> // std::allocator
+#endif
+
+#include <cstddef> // std::size_t
+
+namespace boost
+{
+
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+
+void sp_scalar_constructor_hook( void * px, std::size_t size, void * pn );
+void sp_scalar_destructor_hook( void * px, std::size_t size, void * pn );
+
+#endif
+
+namespace detail
+{
+
+template<class X> class sp_counted_impl_p: public sp_counted_base
+{
+private:
+
+ X * px_;
+
+ sp_counted_impl_p( sp_counted_impl_p const & );
+ sp_counted_impl_p & operator= ( sp_counted_impl_p const & );
+
+ typedef sp_counted_impl_p<X> this_type;
+
+public:
+
+ explicit sp_counted_impl_p( X * px ): px_( px )
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_scalar_constructor_hook( px, sizeof(X), this );
+#endif
+ }
+
+ virtual void dispose() // nothrow
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_scalar_destructor_hook( px_, sizeof(X), this );
+#endif
+ boost::checked_delete( px_ );
+ }
+
+ virtual void * get_deleter( detail::sp_typeinfo const & )
+ {
+ return 0;
+ }
+
+#if defined(BOOST_SP_USE_STD_ALLOCATOR)
+
+ void * operator new( std::size_t )
+ {
+ return std::allocator<this_type>().allocate( 1, static_cast<this_type *>(0) );
+ }
+
+ void operator delete( void * p )
+ {
+ std::allocator<this_type>().deallocate( static_cast<this_type *>(p), 1 );
+ }
+
+#endif
+
+#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
+
+ void * operator new( std::size_t )
+ {
+ return quick_allocator<this_type>::alloc();
+ }
+
+ void operator delete( void * p )
+ {
+ quick_allocator<this_type>::dealloc( p );
+ }
+
+#endif
+};
+
+//
+// Borland's Codeguard trips up over the -Vx- option here:
+//
+#ifdef __CODEGUARD__
+# pragma option push -Vx-
+#endif
+
+template<class P, class D> class sp_counted_impl_pd: public sp_counted_base
+{
+private:
+
+ P ptr; // copy constructor must not throw
+ D del; // copy constructor must not throw
+
+ sp_counted_impl_pd( sp_counted_impl_pd const & );
+ sp_counted_impl_pd & operator= ( sp_counted_impl_pd const & );
+
+ typedef sp_counted_impl_pd<P, D> this_type;
+
+public:
+
+ // pre: d(p) must not throw
+
+ sp_counted_impl_pd( P p, D d ): ptr(p), del(d)
+ {
+ }
+
+ virtual void dispose() // nothrow
+ {
+ del( ptr );
+ }
+
+ virtual void * get_deleter( detail::sp_typeinfo const & ti )
+ {
+ return ti == BOOST_SP_TYPEID(D)? &reinterpret_cast<char&>( del ): 0;
+ }
+
+#if defined(BOOST_SP_USE_STD_ALLOCATOR)
+
+ void * operator new( std::size_t )
+ {
+ return std::allocator<this_type>().allocate( 1, static_cast<this_type *>(0) );
+ }
+
+ void operator delete( void * p )
+ {
+ std::allocator<this_type>().deallocate( static_cast<this_type *>(p), 1 );
+ }
+
+#endif
+
+#if defined(BOOST_SP_USE_QUICK_ALLOCATOR)
+
+ void * operator new( std::size_t )
+ {
+ return quick_allocator<this_type>::alloc();
+ }
+
+ void operator delete( void * p )
+ {
+ quick_allocator<this_type>::dealloc( p );
+ }
+
+#endif
+};
+
+template<class P, class D, class A> class sp_counted_impl_pda: public sp_counted_base
+{
+private:
+
+ P p_; // copy constructor must not throw
+ D d_; // copy constructor must not throw
+ A a_; // copy constructor must not throw
+
+ sp_counted_impl_pda( sp_counted_impl_pda const & );
+ sp_counted_impl_pda & operator= ( sp_counted_impl_pda const & );
+
+ typedef sp_counted_impl_pda<P, D, A> this_type;
+
+public:
+
+ // pre: d( p ) must not throw
+
+ sp_counted_impl_pda( P p, D d, A a ): p_( p ), d_( d ), a_( a )
+ {
+ }
+
+ virtual void dispose() // nothrow
+ {
+ d_( p_ );
+ }
+
+ virtual void destroy() // nothrow
+ {
+ typedef typename A::template rebind< this_type >::other A2;
+
+ A2 a2( a_ );
+
+ this->~this_type();
+ a2.deallocate( this, 1 );
+ }
+
+ virtual void * get_deleter( detail::sp_typeinfo const & ti )
+ {
+ return ti == BOOST_SP_TYPEID( D )? &reinterpret_cast<char&>( d_ ): 0;
+ }
+};
+
+#ifdef __CODEGUARD__
+# pragma option pop
+#endif
+
+} // namespace detail
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_COUNTED_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/sp_has_sync.hpp b/3rdParty/Boost/boost/smart_ptr/detail/sp_has_sync.hpp
new file mode 100644
index 0000000..cb0282d
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/sp_has_sync.hpp
@@ -0,0 +1,49 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/smart_ptr/detail/sp_has_sync.hpp
+//
+// Copyright (c) 2008, 2009 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// Defines the BOOST_SP_HAS_SYNC macro if the __sync_* intrinsics
+// are available.
+//
+
+#if defined(__GNUC__) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 401 )
+
+#define BOOST_SP_HAS_SYNC
+
+#if defined( __arm__ ) || defined( __armel__ )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
+#if defined( __hppa ) || defined( __hppa__ )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
+#if defined( __m68k__ )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
+#if defined( __sparc__ )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
+#if defined( __INTEL_COMPILER ) && !defined( __ia64__ )
+#undef BOOST_SP_HAS_SYNC
+#endif
+
+#endif // __GNUC__ * 100 + __GNUC_MINOR__ >= 401
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_HAS_SYNC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock.hpp
new file mode 100644
index 0000000..1640a38
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock.hpp
@@ -0,0 +1,53 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/spinlock.hpp
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// struct spinlock
+// {
+// void lock();
+// bool try_lock();
+// void unlock();
+//
+// class scoped_lock;
+// };
+//
+// #define BOOST_DETAIL_SPINLOCK_INIT <unspecified>
+//
+
+#include <boost/config.hpp>
+#include <boost/smart_ptr/detail/sp_has_sync.hpp>
+
+#if defined(__GNUC__) && defined( __arm__ ) && !defined( __thumb__ )
+# include <boost/smart_ptr/detail/spinlock_gcc_arm.hpp>
+
+#elif defined( BOOST_SP_HAS_SYNC )
+# include <boost/smart_ptr/detail/spinlock_sync.hpp>
+
+#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# include <boost/smart_ptr/detail/spinlock_w32.hpp>
+
+#elif defined(BOOST_HAS_PTHREADS)
+# include <boost/smart_ptr/detail/spinlock_pt.hpp>
+
+#elif !defined(BOOST_HAS_THREADS)
+# include <boost/smart_ptr/detail/spinlock_nt.hpp>
+
+#else
+# error Unrecognized threading platform
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp
new file mode 100644
index 0000000..ba6c511
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_gcc_arm.hpp
@@ -0,0 +1,85 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
+
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/smart_ptr/detail/yield_k.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class spinlock
+{
+public:
+
+ int v_;
+
+public:
+
+ bool try_lock()
+ {
+ int r;
+
+ __asm__ __volatile__(
+ "swp %0, %1, [%2]":
+ "=&r"( r ): // outputs
+ "r"( 1 ), "r"( &v_ ): // inputs
+ "memory", "cc" );
+
+ return r == 0;
+ }
+
+ void lock()
+ {
+ for( unsigned k = 0; !try_lock(); ++k )
+ {
+ boost::detail::yield( k );
+ }
+ }
+
+ void unlock()
+ {
+ __asm__ __volatile__( "" ::: "memory" );
+ *const_cast< int volatile* >( &v_ ) = 0;
+ }
+
+public:
+
+ class scoped_lock
+ {
+ private:
+
+ spinlock & sp_;
+
+ scoped_lock( scoped_lock const & );
+ scoped_lock & operator=( scoped_lock const & );
+
+ public:
+
+ explicit scoped_lock( spinlock & sp ): sp_( sp )
+ {
+ sp.lock();
+ }
+
+ ~scoped_lock()
+ {
+ sp_.unlock();
+ }
+ };
+};
+
+} // namespace detail
+} // namespace boost
+
+#define BOOST_DETAIL_SPINLOCK_INIT {0}
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_GCC_ARM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock_nt.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_nt.hpp
new file mode 100644
index 0000000..1f399d0
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_nt.hpp
@@ -0,0 +1,89 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_NT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_NT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/assert.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class spinlock
+{
+public:
+
+ bool locked_;
+
+public:
+
+ inline bool try_lock()
+ {
+ if( locked_ )
+ {
+ return false;
+ }
+ else
+ {
+ locked_ = true;
+ return true;
+ }
+ }
+
+ inline void lock()
+ {
+ BOOST_ASSERT( !locked_ );
+ locked_ = true;
+ }
+
+ inline void unlock()
+ {
+ BOOST_ASSERT( locked_ );
+ locked_ = false;
+ }
+
+public:
+
+ class scoped_lock
+ {
+ private:
+
+ spinlock & sp_;
+
+ scoped_lock( scoped_lock const & );
+ scoped_lock & operator=( scoped_lock const & );
+
+ public:
+
+ explicit scoped_lock( spinlock & sp ): sp_( sp )
+ {
+ sp.lock();
+ }
+
+ ~scoped_lock()
+ {
+ sp_.unlock();
+ }
+ };
+};
+
+} // namespace detail
+} // namespace boost
+
+#define BOOST_DETAIL_SPINLOCK_INIT { false }
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_NT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock_pool.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_pool.hpp
new file mode 100644
index 0000000..0e2e08a
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_pool.hpp
@@ -0,0 +1,87 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_POOL_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_POOL_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/detail/spinlock_pool.hpp
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// spinlock_pool<0> is reserved for atomic<>, when/if it arrives
+// spinlock_pool<1> is reserved for shared_ptr reference counts
+// spinlock_pool<2> is reserved for shared_ptr atomic access
+//
+
+#include <boost/config.hpp>
+#include <boost/smart_ptr/detail/spinlock.hpp>
+#include <cstddef>
+
+namespace boost
+{
+
+namespace detail
+{
+
+template< int I > class spinlock_pool
+{
+private:
+
+ static spinlock pool_[ 41 ];
+
+public:
+
+ static spinlock & spinlock_for( void const * pv )
+ {
+ std::size_t i = reinterpret_cast< std::size_t >( pv ) % 41;
+ return pool_[ i ];
+ }
+
+ class scoped_lock
+ {
+ private:
+
+ spinlock & sp_;
+
+ scoped_lock( scoped_lock const & );
+ scoped_lock & operator=( scoped_lock const & );
+
+ public:
+
+ explicit scoped_lock( void const * pv ): sp_( spinlock_for( pv ) )
+ {
+ sp_.lock();
+ }
+
+ ~scoped_lock()
+ {
+ sp_.unlock();
+ }
+ };
+};
+
+template< int I > spinlock spinlock_pool< I >::pool_[ 41 ] =
+{
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT, BOOST_DETAIL_SPINLOCK_INIT,
+ BOOST_DETAIL_SPINLOCK_INIT
+};
+
+} // namespace detail
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_POOL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock_pt.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_pt.hpp
new file mode 100644
index 0000000..f9cabfc
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_pt.hpp
@@ -0,0 +1,79 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_PT_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_PT_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <pthread.h>
+
+namespace boost
+{
+
+namespace detail
+{
+
+class spinlock
+{
+public:
+
+ pthread_mutex_t v_;
+
+public:
+
+ bool try_lock()
+ {
+ return pthread_mutex_trylock( &v_ ) == 0;
+ }
+
+ void lock()
+ {
+ pthread_mutex_lock( &v_ );
+ }
+
+ void unlock()
+ {
+ pthread_mutex_unlock( &v_ );
+ }
+
+public:
+
+ class scoped_lock
+ {
+ private:
+
+ spinlock & sp_;
+
+ scoped_lock( scoped_lock const & );
+ scoped_lock & operator=( scoped_lock const & );
+
+ public:
+
+ explicit scoped_lock( spinlock & sp ): sp_( sp )
+ {
+ sp.lock();
+ }
+
+ ~scoped_lock()
+ {
+ sp_.unlock();
+ }
+ };
+};
+
+} // namespace detail
+} // namespace boost
+
+#define BOOST_DETAIL_SPINLOCK_INIT { PTHREAD_MUTEX_INITIALIZER }
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_PT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock_sync.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_sync.hpp
new file mode 100644
index 0000000..a7145c5
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_sync.hpp
@@ -0,0 +1,87 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_SYNC_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_SYNC_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/smart_ptr/detail/yield_k.hpp>
+
+#if defined( __ia64__ ) && defined( __INTEL_COMPILER )
+# include <ia64intrin.h>
+#endif
+
+namespace boost
+{
+
+namespace detail
+{
+
+class spinlock
+{
+public:
+
+ int v_;
+
+public:
+
+ bool try_lock()
+ {
+ int r = __sync_lock_test_and_set( &v_, 1 );
+ return r == 0;
+ }
+
+ void lock()
+ {
+ for( unsigned k = 0; !try_lock(); ++k )
+ {
+ boost::detail::yield( k );
+ }
+ }
+
+ void unlock()
+ {
+ __sync_lock_release( &v_ );
+ }
+
+public:
+
+ class scoped_lock
+ {
+ private:
+
+ spinlock & sp_;
+
+ scoped_lock( scoped_lock const & );
+ scoped_lock & operator=( scoped_lock const & );
+
+ public:
+
+ explicit scoped_lock( spinlock & sp ): sp_( sp )
+ {
+ sp.lock();
+ }
+
+ ~scoped_lock()
+ {
+ sp_.unlock();
+ }
+ };
+};
+
+} // namespace detail
+} // namespace boost
+
+#define BOOST_DETAIL_SPINLOCK_INIT {0}
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_SYNC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/spinlock_w32.hpp b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_w32.hpp
new file mode 100644
index 0000000..fb97629
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/spinlock_w32.hpp
@@ -0,0 +1,113 @@
+#ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_W32_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_SPINLOCK_W32_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <boost/detail/interlocked.hpp>
+#include <boost/smart_ptr/detail/yield_k.hpp>
+
+// BOOST_COMPILER_FENCE
+
+#if defined(__INTEL_COMPILER)
+
+#define BOOST_COMPILER_FENCE __memory_barrier();
+
+#elif defined( _MSC_VER ) && _MSC_VER >= 1310
+
+extern "C" void _ReadWriteBarrier();
+#pragma intrinsic( _ReadWriteBarrier )
+
+#define BOOST_COMPILER_FENCE _ReadWriteBarrier();
+
+#elif defined(__GNUC__)
+
+#define BOOST_COMPILER_FENCE __asm__ __volatile__( "" : : : "memory" );
+
+#else
+
+#define BOOST_COMPILER_FENCE
+
+#endif
+
+//
+
+namespace boost
+{
+
+namespace detail
+{
+
+class spinlock
+{
+public:
+
+ long v_;
+
+public:
+
+ bool try_lock()
+ {
+ long r = BOOST_INTERLOCKED_EXCHANGE( &v_, 1 );
+
+ BOOST_COMPILER_FENCE
+
+ return r == 0;
+ }
+
+ void lock()
+ {
+ for( unsigned k = 0; !try_lock(); ++k )
+ {
+ boost::detail::yield( k );
+ }
+ }
+
+ void unlock()
+ {
+ BOOST_COMPILER_FENCE
+ *const_cast< long volatile* >( &v_ ) = 0;
+ }
+
+public:
+
+ class scoped_lock
+ {
+ private:
+
+ spinlock & sp_;
+
+ scoped_lock( scoped_lock const & );
+ scoped_lock & operator=( scoped_lock const & );
+
+ public:
+
+ explicit scoped_lock( spinlock & sp ): sp_( sp )
+ {
+ sp.lock();
+ }
+
+ ~scoped_lock()
+ {
+ sp_.unlock();
+ }
+ };
+};
+
+} // namespace detail
+} // namespace boost
+
+#define BOOST_DETAIL_SPINLOCK_INIT {0}
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_SPINLOCK_W32_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/detail/yield_k.hpp b/3rdParty/Boost/boost/smart_ptr/detail/yield_k.hpp
new file mode 100644
index 0000000..a956cc0
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/detail/yield_k.hpp
@@ -0,0 +1,149 @@
+#ifndef BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED
+#define BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// yield_k.hpp
+//
+// Copyright (c) 2008 Peter Dimov
+//
+// void yield( unsigned k );
+//
+// Typical use:
+//
+// for( unsigned k = 0; !try_lock(); ++k ) yield( k );
+//
+// Distributed under the 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/config.hpp>
+
+// BOOST_SMT_PAUSE
+
+#if defined(_MSC_VER) && _MSC_VER >= 1310 && ( defined(_M_IX86) || defined(_M_X64) )
+
+extern "C" void _mm_pause();
+#pragma intrinsic( _mm_pause )
+
+#define BOOST_SMT_PAUSE _mm_pause();
+
+#elif defined(__GNUC__) && ( defined(__i386__) || defined(__x86_64__) )
+
+#define BOOST_SMT_PAUSE __asm__ __volatile__( "rep; nop" : : : "memory" );
+
+#endif
+
+//
+
+#if defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ )
+
+#if defined( BOOST_USE_WINDOWS_H )
+# include <windows.h>
+#endif
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if !defined( BOOST_USE_WINDOWS_H )
+ extern "C" void __stdcall Sleep( unsigned ms );
+#endif
+
+inline void yield( unsigned k )
+{
+ if( k < 4 )
+ {
+ }
+#if defined( BOOST_SMT_PAUSE )
+ else if( k < 16 )
+ {
+ BOOST_SMT_PAUSE
+ }
+#endif
+ else if( k < 32 )
+ {
+ Sleep( 0 );
+ }
+ else
+ {
+ Sleep( 1 );
+ }
+}
+
+} // namespace detail
+
+} // namespace boost
+
+#elif defined( BOOST_HAS_PTHREADS )
+
+#include <sched.h>
+#include <time.h>
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void yield( unsigned k )
+{
+ if( k < 4 )
+ {
+ }
+#if defined( BOOST_SMT_PAUSE )
+ else if( k < 16 )
+ {
+ BOOST_SMT_PAUSE
+ }
+#endif
+ else if( k < 32 || k & 1 )
+ {
+ sched_yield();
+ }
+ else
+ {
+ // g++ -Wextra warns on {} or {0}
+ struct timespec rqtp = { 0, 0 };
+
+ // POSIX says that timespec has tv_sec and tv_nsec
+ // But it doesn't guarantee order or placement
+
+ rqtp.tv_sec = 0;
+ rqtp.tv_nsec = 1000;
+
+ nanosleep( &rqtp, 0 );
+ }
+}
+
+} // namespace detail
+
+} // namespace boost
+
+#else
+
+namespace boost
+{
+
+namespace detail
+{
+
+inline void yield( unsigned )
+{
+}
+
+} // namespace detail
+
+} // namespace boost
+
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_DETAIL_YIELD_K_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/enable_shared_from_this.hpp b/3rdParty/Boost/boost/smart_ptr/enable_shared_from_this.hpp
new file mode 100644
index 0000000..f7b1445
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/enable_shared_from_this.hpp
@@ -0,0 +1,79 @@
+#ifndef BOOST_SMART_PTR_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
+#define BOOST_SMART_PTR_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
+
+//
+// enable_shared_from_this.hpp
+//
+// Copyright 2002, 2009 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// http://www.boost.org/libs/smart_ptr/enable_shared_from_this.html
+//
+
+#include <boost/smart_ptr/weak_ptr.hpp>
+#include <boost/smart_ptr/shared_ptr.hpp>
+#include <boost/assert.hpp>
+#include <boost/config.hpp>
+
+namespace boost
+{
+
+template<class T> class enable_shared_from_this
+{
+protected:
+
+ enable_shared_from_this()
+ {
+ }
+
+ enable_shared_from_this(enable_shared_from_this const &)
+ {
+ }
+
+ enable_shared_from_this & operator=(enable_shared_from_this const &)
+ {
+ return *this;
+ }
+
+ ~enable_shared_from_this()
+ {
+ }
+
+public:
+
+ shared_ptr<T> shared_from_this()
+ {
+ shared_ptr<T> p( weak_this_ );
+ BOOST_ASSERT( p.get() == this );
+ return p;
+ }
+
+ shared_ptr<T const> shared_from_this() const
+ {
+ shared_ptr<T const> p( weak_this_ );
+ BOOST_ASSERT( p.get() == this );
+ return p;
+ }
+
+public: // actually private, but avoids compiler template friendship issues
+
+ // Note: invoked automatically by shared_ptr; do not call
+ template<class X, class Y> void _internal_accept_owner( shared_ptr<X> const * ppx, Y * py ) const
+ {
+ if( weak_this_.expired() )
+ {
+ weak_this_ = shared_ptr<T>( *ppx, py );
+ }
+ }
+
+private:
+
+ mutable weak_ptr<T> weak_this_;
+};
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/intrusive_ptr.hpp b/3rdParty/Boost/boost/smart_ptr/intrusive_ptr.hpp
new file mode 100644
index 0000000..d3bd02b
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/intrusive_ptr.hpp
@@ -0,0 +1,282 @@
+#ifndef BOOST_SMART_PTR_INTRUSIVE_PTR_HPP_INCLUDED
+#define BOOST_SMART_PTR_INTRUSIVE_PTR_HPP_INCLUDED
+
+//
+// intrusive_ptr.hpp
+//
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/intrusive_ptr.html for documentation.
+//
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
+# pragma warning(push)
+# pragma warning(disable:4284) // odd return type for operator->
+#endif
+
+#include <boost/assert.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/smart_ptr/detail/sp_convertible.hpp>
+
+#include <boost/config/no_tr1/functional.hpp> // for std::less
+
+#if !defined(BOOST_NO_IOSTREAM)
+#if !defined(BOOST_NO_IOSFWD)
+#include <iosfwd> // for std::basic_ostream
+#else
+#include <ostream>
+#endif
+#endif
+
+
+namespace boost
+{
+
+//
+// intrusive_ptr
+//
+// A smart pointer that uses intrusive reference counting.
+//
+// Relies on unqualified calls to
+//
+// void intrusive_ptr_add_ref(T * p);
+// void intrusive_ptr_release(T * p);
+//
+// (p != 0)
+//
+// The object is responsible for destroying itself.
+//
+
+template<class T> class intrusive_ptr
+{
+private:
+
+ typedef intrusive_ptr this_type;
+
+public:
+
+ typedef T element_type;
+
+ intrusive_ptr(): px( 0 )
+ {
+ }
+
+ intrusive_ptr( T * p, bool add_ref = true ): px( p )
+ {
+ if( px != 0 && add_ref ) intrusive_ptr_add_ref( px );
+ }
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+
+ template<class U>
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+ intrusive_ptr( intrusive_ptr<U> const & rhs, typename detail::sp_enable_if_convertible<U,T>::type = detail::sp_empty() )
+
+#else
+
+ intrusive_ptr( intrusive_ptr<U> const & rhs )
+
+#endif
+ : px( rhs.get() )
+ {
+ if( px != 0 ) intrusive_ptr_add_ref( px );
+ }
+
+#endif
+
+ intrusive_ptr(intrusive_ptr const & rhs): px( rhs.px )
+ {
+ if( px != 0 ) intrusive_ptr_add_ref( px );
+ }
+
+ ~intrusive_ptr()
+ {
+ if( px != 0 ) intrusive_ptr_release( px );
+ }
+
+#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+
+ template<class U> intrusive_ptr & operator=(intrusive_ptr<U> const & rhs)
+ {
+ this_type(rhs).swap(*this);
+ return *this;
+ }
+
+#endif
+
+ intrusive_ptr & operator=(intrusive_ptr const & rhs)
+ {
+ this_type(rhs).swap(*this);
+ return *this;
+ }
+
+ intrusive_ptr & operator=(T * rhs)
+ {
+ this_type(rhs).swap(*this);
+ return *this;
+ }
+
+ void reset()
+ {
+ this_type().swap( *this );
+ }
+
+ void reset( T * rhs )
+ {
+ this_type( rhs ).swap( *this );
+ }
+
+ T * get() const
+ {
+ return px;
+ }
+
+ T & operator*() const
+ {
+ BOOST_ASSERT( px != 0 );
+ return *px;
+ }
+
+ T * operator->() const
+ {
+ BOOST_ASSERT( px != 0 );
+ return px;
+ }
+
+// implicit conversion to "bool"
+#include <boost/smart_ptr/detail/operator_bool.hpp>
+
+ void swap(intrusive_ptr & rhs)
+ {
+ T * tmp = px;
+ px = rhs.px;
+ rhs.px = tmp;
+ }
+
+private:
+
+ T * px;
+};
+
+template<class T, class U> inline bool operator==(intrusive_ptr<T> const & a, intrusive_ptr<U> const & b)
+{
+ return a.get() == b.get();
+}
+
+template<class T, class U> inline bool operator!=(intrusive_ptr<T> const & a, intrusive_ptr<U> const & b)
+{
+ return a.get() != b.get();
+}
+
+template<class T, class U> inline bool operator==(intrusive_ptr<T> const & a, U * b)
+{
+ return a.get() == b;
+}
+
+template<class T, class U> inline bool operator!=(intrusive_ptr<T> const & a, U * b)
+{
+ return a.get() != b;
+}
+
+template<class T, class U> inline bool operator==(T * a, intrusive_ptr<U> const & b)
+{
+ return a == b.get();
+}
+
+template<class T, class U> inline bool operator!=(T * a, intrusive_ptr<U> const & b)
+{
+ return a != b.get();
+}
+
+#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
+
+// Resolve the ambiguity between our op!= and the one in rel_ops
+
+template<class T> inline bool operator!=(intrusive_ptr<T> const & a, intrusive_ptr<T> const & b)
+{
+ return a.get() != b.get();
+}
+
+#endif
+
+template<class T> inline bool operator<(intrusive_ptr<T> const & a, intrusive_ptr<T> const & b)
+{
+ return std::less<T *>()(a.get(), b.get());
+}
+
+template<class T> void swap(intrusive_ptr<T> & lhs, intrusive_ptr<T> & rhs)
+{
+ lhs.swap(rhs);
+}
+
+// mem_fn support
+
+template<class T> T * get_pointer(intrusive_ptr<T> const & p)
+{
+ return p.get();
+}
+
+template<class T, class U> intrusive_ptr<T> static_pointer_cast(intrusive_ptr<U> const & p)
+{
+ return static_cast<T *>(p.get());
+}
+
+template<class T, class U> intrusive_ptr<T> const_pointer_cast(intrusive_ptr<U> const & p)
+{
+ return const_cast<T *>(p.get());
+}
+
+template<class T, class U> intrusive_ptr<T> dynamic_pointer_cast(intrusive_ptr<U> const & p)
+{
+ return dynamic_cast<T *>(p.get());
+}
+
+// operator<<
+
+#if !defined(BOOST_NO_IOSTREAM)
+
+#if defined(BOOST_NO_TEMPLATED_IOSTREAMS) || ( defined(__GNUC__) && (__GNUC__ < 3) )
+
+template<class Y> std::ostream & operator<< (std::ostream & os, intrusive_ptr<Y> const & p)
+{
+ os << p.get();
+ return os;
+}
+
+#else
+
+// in STLport's no-iostreams mode no iostream symbols can be used
+#ifndef _STLP_NO_IOSTREAMS
+
+# if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300 && __SGI_STL_PORT)
+// MSVC6 has problems finding std::basic_ostream through the using declaration in namespace _STL
+using std::basic_ostream;
+template<class E, class T, class Y> basic_ostream<E, T> & operator<< (basic_ostream<E, T> & os, intrusive_ptr<Y> const & p)
+# else
+template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, intrusive_ptr<Y> const & p)
+# endif
+{
+ os << p.get();
+ return os;
+}
+
+#endif // _STLP_NO_IOSTREAMS
+
+#endif // __GNUC__ < 3
+
+#endif // !defined(BOOST_NO_IOSTREAM)
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_INTRUSIVE_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/scoped_array.hpp b/3rdParty/Boost/boost/smart_ptr/scoped_array.hpp
new file mode 100644
index 0000000..483460f
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/scoped_array.hpp
@@ -0,0 +1,107 @@
+#ifndef BOOST_SMART_PTR_SCOPED_ARRAY_HPP_INCLUDED
+#define BOOST_SMART_PTR_SCOPED_ARRAY_HPP_INCLUDED
+
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/smart_ptr/scoped_array.htm
+//
+
+#include <boost/assert.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/config.hpp> // in case ptrdiff_t not in std
+
+#include <boost/detail/workaround.hpp>
+
+#include <cstddef> // for std::ptrdiff_t
+
+namespace boost
+{
+
+// Debug hooks
+
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+
+void sp_array_constructor_hook(void * p);
+void sp_array_destructor_hook(void * p);
+
+#endif
+
+// scoped_array extends scoped_ptr to arrays. Deletion of the array pointed to
+// is guaranteed, either on destruction of the scoped_array or via an explicit
+// reset(). Use shared_array or std::vector if your needs are more complex.
+
+template<class T> class scoped_array // noncopyable
+{
+private:
+
+ T * px;
+
+ scoped_array(scoped_array const &);
+ scoped_array & operator=(scoped_array const &);
+
+ typedef scoped_array<T> this_type;
+
+ void operator==( scoped_array const& ) const;
+ void operator!=( scoped_array const& ) const;
+
+public:
+
+ typedef T element_type;
+
+ explicit scoped_array( T * p = 0 ) : px( p ) // never throws
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_array_constructor_hook( px );
+#endif
+ }
+
+ ~scoped_array() // never throws
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_array_destructor_hook( px );
+#endif
+ boost::checked_array_delete( px );
+ }
+
+ void reset(T * p = 0) // never throws
+ {
+ BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
+ this_type(p).swap(*this);
+ }
+
+ T & operator[](std::ptrdiff_t i) const // never throws
+ {
+ BOOST_ASSERT( px != 0 );
+ BOOST_ASSERT( i >= 0 );
+ return px[i];
+ }
+
+ T * get() const // never throws
+ {
+ return px;
+ }
+
+// implicit conversion to "bool"
+#include <boost/smart_ptr/detail/operator_bool.hpp>
+
+ void swap(scoped_array & b) // never throws
+ {
+ T * tmp = b.px;
+ b.px = px;
+ px = tmp;
+ }
+};
+
+template<class T> inline void swap(scoped_array<T> & a, scoped_array<T> & b) // never throws
+{
+ a.swap(b);
+}
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_SCOPED_ARRAY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/scoped_ptr.hpp b/3rdParty/Boost/boost/smart_ptr/scoped_ptr.hpp
new file mode 100644
index 0000000..df479e5
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/scoped_ptr.hpp
@@ -0,0 +1,131 @@
+#ifndef BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
+#define BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
+
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/smart_ptr/scoped_ptr.htm
+//
+
+#include <boost/assert.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifndef BOOST_NO_AUTO_PTR
+# include <memory> // for std::auto_ptr
+#endif
+
+namespace boost
+{
+
+// Debug hooks
+
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+
+void sp_scalar_constructor_hook(void * p);
+void sp_scalar_destructor_hook(void * p);
+
+#endif
+
+// scoped_ptr mimics a built-in pointer except that it guarantees deletion
+// of the object pointed to, either on destruction of the scoped_ptr or via
+// an explicit reset(). scoped_ptr is a simple solution for simple needs;
+// use shared_ptr or std::auto_ptr if your needs are more complex.
+
+template<class T> class scoped_ptr // noncopyable
+{
+private:
+
+ T * px;
+
+ scoped_ptr(scoped_ptr const &);
+ scoped_ptr & operator=(scoped_ptr const &);
+
+ typedef scoped_ptr<T> this_type;
+
+ void operator==( scoped_ptr const& ) const;
+ void operator!=( scoped_ptr const& ) const;
+
+public:
+
+ typedef T element_type;
+
+ explicit scoped_ptr( T * p = 0 ): px( p ) // never throws
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_scalar_constructor_hook( px );
+#endif
+ }
+
+#ifndef BOOST_NO_AUTO_PTR
+
+ explicit scoped_ptr( std::auto_ptr<T> p ): px( p.release() ) // never throws
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_scalar_constructor_hook( px );
+#endif
+ }
+
+#endif
+
+ ~scoped_ptr() // never throws
+ {
+#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
+ boost::sp_scalar_destructor_hook( px );
+#endif
+ boost::checked_delete( px );
+ }
+
+ void reset(T * p = 0) // never throws
+ {
+ BOOST_ASSERT( p == 0 || p != px ); // catch self-reset errors
+ this_type(p).swap(*this);
+ }
+
+ T & operator*() const // never throws
+ {
+ BOOST_ASSERT( px != 0 );
+ return *px;
+ }
+
+ T * operator->() const // never throws
+ {
+ BOOST_ASSERT( px != 0 );
+ return px;
+ }
+
+ T * get() const // never throws
+ {
+ return px;
+ }
+
+// implicit conversion to "bool"
+#include <boost/smart_ptr/detail/operator_bool.hpp>
+
+ void swap(scoped_ptr & b) // never throws
+ {
+ T * tmp = b.px;
+ b.px = px;
+ px = tmp;
+ }
+};
+
+template<class T> inline void swap(scoped_ptr<T> & a, scoped_ptr<T> & b) // never throws
+{
+ a.swap(b);
+}
+
+// get_pointer(p) is a generic way to say p.get()
+
+template<class T> inline T * get_pointer(scoped_ptr<T> const & p)
+{
+ return p.get();
+}
+
+} // namespace boost
+
+#endif // #ifndef BOOST_SMART_PTR_SCOPED_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/shared_array.hpp b/3rdParty/Boost/boost/smart_ptr/shared_array.hpp
new file mode 100644
index 0000000..1f50403
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/shared_array.hpp
@@ -0,0 +1,147 @@
+#ifndef BOOST_SMART_PTR_SHARED_ARRAY_HPP_INCLUDED
+#define BOOST_SMART_PTR_SHARED_ARRAY_HPP_INCLUDED
+
+//
+// shared_array.hpp
+//
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001, 2002 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/shared_array.htm for documentation.
+//
+
+#include <boost/config.hpp> // for broken compiler workarounds
+
+#if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+#include <boost/smart_ptr/detail/shared_array_nmt.hpp>
+#else
+
+#include <memory> // TR1 cyclic inclusion fix
+
+#include <boost/assert.hpp>
+#include <boost/checked_delete.hpp>
+
+#include <boost/smart_ptr/detail/shared_count.hpp>
+#include <boost/detail/workaround.hpp>
+
+#include <cstddef> // for std::ptrdiff_t
+#include <algorithm> // for std::swap
+#include <functional> // for std::less
+
+namespace boost
+{
+
+//
+// shared_array
+//
+// shared_array extends shared_ptr to arrays.
+// The array pointed to is deleted when the last shared_array pointing to it
+// is destroyed or reset.
+//
+
+template<class T> class shared_array
+{
+private:
+
+ // Borland 5.5.1 specific workarounds
+ typedef checked_array_deleter<T> deleter;
+ typedef shared_array<T> this_type;
+
+public:
+
+ typedef T element_type;
+
+ explicit shared_array(T * p = 0): px(p), pn(p, deleter())
+ {
+ }
+
+ //
+ // Requirements: D's copy constructor must not throw
+ //
+ // shared_array will release p by calling d(p)
+ //
+
+ template<class D> shared_array(T * p, D d): px(p), pn(p, d)
+ {
+ }
+
+// generated copy constructor, assignment, destructor are fine
+
+ void reset(T * p = 0)
+ {
+ BOOST_ASSERT(p == 0 || p != px);
+ this_type(p).swap(*this);
+ }
+
+ template <class D> void reset(T * p, D d)
+ {
+ this_type(p, d).swap(*this);
+ }
+
+ T & operator[] (std::ptrdiff_t i) const // never throws
+ {
+ BOOST_ASSERT(px != 0);
+ BOOST_ASSERT(i >= 0);
+ return px[i];
+ }
+
+ T * get() const // never throws
+ {
+ return px;
+ }
+
+// implicit conversion to "bool"
+#include <boost/smart_ptr/detail/operator_bool.hpp>
+
+ bool unique() const // never throws
+ {
+ return pn.unique();
+ }
+
+ long use_count() const // never throws
+ {
+ return pn.use_count();
+ }
+
+ void swap(shared_array<T> & other) // never throws
+ {
+ std::swap(px, other.px);
+ pn.swap(other.pn);
+ }
+
+private:
+
+ T * px; // contained pointer
+ detail::shared_count pn; // reference counter
+
+}; // shared_array
+
+template<class T> inline bool operator==(shared_array<T> const & a, shared_array<T> const & b) // never throws
+{
+ return a.get() == b.get();
+}
+
+template<class T> inline bool operator!=(shared_array<T> const & a, shared_array<T> const & b) // never throws
+{
+ return a.get() != b.get();
+}
+
+template<class T> inline bool operator<(shared_array<T> const & a, shared_array<T> const & b) // never throws
+{
+ return std::less<T*>()(a.get(), b.get());
+}
+
+template<class T> void swap(shared_array<T> & a, shared_array<T> & b) // never throws
+{
+ a.swap(b);
+}
+
+} // namespace boost
+
+#endif // #if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+
+#endif // #ifndef BOOST_SMART_PTR_SHARED_ARRAY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/shared_ptr.hpp b/3rdParty/Boost/boost/smart_ptr/shared_ptr.hpp
new file mode 100644
index 0000000..7f46c35
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/shared_ptr.hpp
@@ -0,0 +1,692 @@
+#ifndef BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
+#define BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
+
+//
+// shared_ptr.hpp
+//
+// (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
+// Copyright (c) 2001-2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/shared_ptr.htm for documentation.
+//
+
+#include <boost/config.hpp> // for broken compiler workarounds
+
+#if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+#include <boost/smart_ptr/detail/shared_ptr_nmt.hpp>
+#else
+
+// In order to avoid circular dependencies with Boost.TR1
+// we make sure that our include of <memory> doesn't try to
+// pull in the TR1 headers: that's why we use this header
+// rather than including <memory> directly:
+#include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
+
+#include <boost/assert.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/throw_exception.hpp>
+#include <boost/smart_ptr/detail/shared_count.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/smart_ptr/detail/sp_convertible.hpp>
+
+#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
+#include <boost/smart_ptr/detail/spinlock_pool.hpp>
+#include <boost/memory_order.hpp>
+#endif
+
+#include <algorithm> // for std::swap
+#include <functional> // for std::less
+#include <typeinfo> // for std::bad_cast
+
+#if !defined(BOOST_NO_IOSTREAM)
+#if !defined(BOOST_NO_IOSFWD)
+#include <iosfwd> // for std::basic_ostream
+#else
+#include <ostream>
+#endif
+#endif
+
+#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
+# pragma warning(push)
+# pragma warning(disable:4284) // odd return type for operator->
+#endif
+
+namespace boost
+{
+
+template<class T> class shared_ptr;
+template<class T> class weak_ptr;
+template<class T> class enable_shared_from_this;
+
+namespace detail
+{
+
+struct static_cast_tag {};
+struct const_cast_tag {};
+struct dynamic_cast_tag {};
+struct polymorphic_cast_tag {};
+
+template<class T> struct shared_ptr_traits
+{
+ typedef T & reference;
+};
+
+template<> struct shared_ptr_traits<void>
+{
+ typedef void reference;
+};
+
+#if !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
+
+template<> struct shared_ptr_traits<void const>
+{
+ typedef void reference;
+};
+
+template<> struct shared_ptr_traits<void volatile>
+{
+ typedef void reference;
+};
+
+template<> struct shared_ptr_traits<void const volatile>
+{
+ typedef void reference;
+};
+
+#endif
+
+// enable_shared_from_this support
+
+template< class X, class Y, class T > inline void sp_enable_shared_from_this( boost::shared_ptr<X> const * ppx, Y const * py, boost::enable_shared_from_this< T > const * pe )
+{
+ if( pe != 0 )
+ {
+ pe->_internal_accept_owner( ppx, const_cast< Y* >( py ) );
+ }
+}
+
+#ifdef _MANAGED
+
+// Avoid C4793, ... causes native code generation
+
+struct sp_any_pointer
+{
+ template<class T> sp_any_pointer( T* ) {}
+};
+
+inline void sp_enable_shared_from_this( sp_any_pointer, sp_any_pointer, sp_any_pointer )
+{
+}
+
+#else // _MANAGED
+
+inline void sp_enable_shared_from_this( ... )
+{
+}
+
+#endif // _MANAGED
+
+#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( BOOST_NO_AUTO_PTR )
+
+// rvalue auto_ptr support based on a technique by Dave Abrahams
+
+template< class T, class R > struct sp_enable_if_auto_ptr
+{
+};
+
+template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
+{
+ typedef R type;
+};
+
+#endif
+
+} // namespace detail
+
+
+//
+// shared_ptr
+//
+// An enhanced relative of scoped_ptr with reference counted copy semantics.
+// The object pointed to is deleted when the last shared_ptr pointing to it
+// is destroyed or reset.
+//
+
+template<class T> class shared_ptr
+{
+private:
+
+ // Borland 5.5.1 specific workaround
+ typedef shared_ptr<T> this_type;
+
+public:
+
+ typedef T element_type;
+ typedef T value_type;
+ typedef T * pointer;
+ typedef typename boost::detail::shared_ptr_traits<T>::reference reference;
+
+ shared_ptr(): px(0), pn() // never throws in 1.30+
+ {
+ }
+
+ template<class Y>
+ explicit shared_ptr( Y * p ): px( p ), pn( p ) // Y must be complete
+ {
+ boost::detail::sp_enable_shared_from_this( this, p, p );
+ }
+
+ //
+ // Requirements: D's copy constructor must not throw
+ //
+ // shared_ptr will release p by calling d(p)
+ //
+
+ template<class Y, class D> shared_ptr(Y * p, D d): px(p), pn(p, d)
+ {
+ boost::detail::sp_enable_shared_from_this( this, p, p );
+ }
+
+ // As above, but with allocator. A's copy constructor shall not throw.
+
+ template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )
+ {
+ boost::detail::sp_enable_shared_from_this( this, p, p );
+ }
+
+// generated copy constructor, destructor are fine
+
+ template<class Y>
+ explicit shared_ptr(weak_ptr<Y> const & r): pn(r.pn) // may throw
+ {
+ // it is now safe to copy r.px, as pn(r.pn) did not throw
+ px = r.px;
+ }
+
+ template<class Y>
+ shared_ptr( weak_ptr<Y> const & r, boost::detail::sp_nothrow_tag ): px( 0 ), pn( r.pn, boost::detail::sp_nothrow_tag() ) // never throws
+ {
+ if( !pn.empty() )
+ {
+ px = r.px;
+ }
+ }
+
+ template<class Y>
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+ shared_ptr( shared_ptr<Y> const & r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )
+
+#else
+
+ shared_ptr( shared_ptr<Y> const & r )
+
+#endif
+ : px( r.px ), pn( r.pn ) // never throws
+ {
+ }
+
+ // aliasing
+ template< class Y >
+ shared_ptr( shared_ptr<Y> const & r, T * p ): px( p ), pn( r.pn ) // never throws
+ {
+ }
+
+ template<class Y>
+ shared_ptr(shared_ptr<Y> const & r, boost::detail::static_cast_tag): px(static_cast<element_type *>(r.px)), pn(r.pn)
+ {
+ }
+
+ template<class Y>
+ shared_ptr(shared_ptr<Y> const & r, boost::detail::const_cast_tag): px(const_cast<element_type *>(r.px)), pn(r.pn)
+ {
+ }
+
+ template<class Y>
+ shared_ptr(shared_ptr<Y> const & r, boost::detail::dynamic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
+ {
+ if(px == 0) // need to allocate new counter -- the cast failed
+ {
+ pn = boost::detail::shared_count();
+ }
+ }
+
+ template<class Y>
+ shared_ptr(shared_ptr<Y> const & r, boost::detail::polymorphic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)
+ {
+ if(px == 0)
+ {
+ boost::throw_exception(std::bad_cast());
+ }
+ }
+
+#ifndef BOOST_NO_AUTO_PTR
+
+ template<class Y>
+ explicit shared_ptr(std::auto_ptr<Y> & r): px(r.get()), pn()
+ {
+ Y * tmp = r.get();
+ pn = boost::detail::shared_count(r);
+ boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
+ }
+
+#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+ template<class Ap>
+ explicit shared_ptr( Ap r, typename boost::detail::sp_enable_if_auto_ptr<Ap, int>::type = 0 ): px( r.get() ), pn()
+ {
+ typename Ap::element_type * tmp = r.get();
+ pn = boost::detail::shared_count( r );
+ boost::detail::sp_enable_shared_from_this( this, tmp, tmp );
+ }
+
+
+#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_NO_AUTO_PTR
+
+ // assignment
+
+ shared_ptr & operator=( shared_ptr const & r ) // never throws
+ {
+ this_type(r).swap(*this);
+ return *this;
+ }
+
+#if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1400)
+
+ template<class Y>
+ shared_ptr & operator=(shared_ptr<Y> const & r) // never throws
+ {
+ this_type(r).swap(*this);
+ return *this;
+ }
+
+#endif
+
+#ifndef BOOST_NO_AUTO_PTR
+
+ template<class Y>
+ shared_ptr & operator=( std::auto_ptr<Y> & r )
+ {
+ this_type(r).swap(*this);
+ return *this;
+ }
+
+#if !defined( BOOST_NO_SFINAE ) && !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
+
+ template<class Ap>
+ typename boost::detail::sp_enable_if_auto_ptr< Ap, shared_ptr & >::type operator=( Ap r )
+ {
+ this_type( r ).swap( *this );
+ return *this;
+ }
+
+
+#endif // BOOST_NO_SFINAE, BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_NO_AUTO_PTR
+
+// Move support
+
+#if defined( BOOST_HAS_RVALUE_REFS )
+
+ shared_ptr( shared_ptr && r ): px( r.px ), pn() // never throws
+ {
+ pn.swap( r.pn );
+ r.px = 0;
+ }
+
+ template<class Y>
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+ shared_ptr( shared_ptr<Y> && r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )
+
+#else
+
+ shared_ptr( shared_ptr<Y> && r )
+
+#endif
+ : px( r.px ), pn() // never throws
+ {
+ pn.swap( r.pn );
+ r.px = 0;
+ }
+
+ shared_ptr & operator=( shared_ptr && r ) // never throws
+ {
+ this_type( static_cast< shared_ptr && >( r ) ).swap( *this );
+ return *this;
+ }
+
+ template<class Y>
+ shared_ptr & operator=( shared_ptr<Y> && r ) // never throws
+ {
+ this_type( static_cast< shared_ptr<Y> && >( r ) ).swap( *this );
+ return *this;
+ }
+
+#endif
+
+ void reset() // never throws in 1.30+
+ {
+ this_type().swap(*this);
+ }
+
+ template<class Y> void reset(Y * p) // Y must be complete
+ {
+ BOOST_ASSERT(p == 0 || p != px); // catch self-reset errors
+ this_type(p).swap(*this);
+ }
+
+ template<class Y, class D> void reset( Y * p, D d )
+ {
+ this_type( p, d ).swap( *this );
+ }
+
+ template<class Y, class D, class A> void reset( Y * p, D d, A a )
+ {
+ this_type( p, d, a ).swap( *this );
+ }
+
+ template<class Y> void reset( shared_ptr<Y> const & r, T * p )
+ {
+ this_type( r, p ).swap( *this );
+ }
+
+ reference operator* () const // never throws
+ {
+ BOOST_ASSERT(px != 0);
+ return *px;
+ }
+
+ T * operator-> () const // never throws
+ {
+ BOOST_ASSERT(px != 0);
+ return px;
+ }
+
+ T * get() const // never throws
+ {
+ return px;
+ }
+
+// implicit conversion to "bool"
+#include <boost/smart_ptr/detail/operator_bool.hpp>
+
+ bool unique() const // never throws
+ {
+ return pn.unique();
+ }
+
+ long use_count() const // never throws
+ {
+ return pn.use_count();
+ }
+
+ void swap(shared_ptr<T> & other) // never throws
+ {
+ std::swap(px, other.px);
+ pn.swap(other.pn);
+ }
+
+ template<class Y> bool _internal_less(shared_ptr<Y> const & rhs) const
+ {
+ return pn < rhs.pn;
+ }
+
+ void * _internal_get_deleter( detail::sp_typeinfo const & ti ) const
+ {
+ return pn.get_deleter( ti );
+ }
+
+ bool _internal_equiv( shared_ptr const & r ) const
+ {
+ return px == r.px && pn == r.pn;
+ }
+
+// Tasteless as this may seem, making all members public allows member templates
+// to work in the absence of member template friends. (Matthew Langston)
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+
+private:
+
+ template<class Y> friend class shared_ptr;
+ template<class Y> friend class weak_ptr;
+
+
+#endif
+
+ T * px; // contained pointer
+ boost::detail::shared_count pn; // reference counter
+
+}; // shared_ptr
+
+template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b)
+{
+ return a.get() == b.get();
+}
+
+template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b)
+{
+ return a.get() != b.get();
+}
+
+#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
+
+// Resolve the ambiguity between our op!= and the one in rel_ops
+
+template<class T> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<T> const & b)
+{
+ return a.get() != b.get();
+}
+
+#endif
+
+template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b)
+{
+ return a._internal_less(b);
+}
+
+template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b)
+{
+ a.swap(b);
+}
+
+template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r)
+{
+ return shared_ptr<T>(r, boost::detail::static_cast_tag());
+}
+
+template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r)
+{
+ return shared_ptr<T>(r, boost::detail::const_cast_tag());
+}
+
+template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r)
+{
+ return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
+}
+
+// shared_*_cast names are deprecated. Use *_pointer_cast instead.
+
+template<class T, class U> shared_ptr<T> shared_static_cast(shared_ptr<U> const & r)
+{
+ return shared_ptr<T>(r, boost::detail::static_cast_tag());
+}
+
+template<class T, class U> shared_ptr<T> shared_dynamic_cast(shared_ptr<U> const & r)
+{
+ return shared_ptr<T>(r, boost::detail::dynamic_cast_tag());
+}
+
+template<class T, class U> shared_ptr<T> shared_polymorphic_cast(shared_ptr<U> const & r)
+{
+ return shared_ptr<T>(r, boost::detail::polymorphic_cast_tag());
+}
+
+template<class T, class U> shared_ptr<T> shared_polymorphic_downcast(shared_ptr<U> const & r)
+{
+ BOOST_ASSERT(dynamic_cast<T *>(r.get()) == r.get());
+ return shared_static_cast<T>(r);
+}
+
+// get_pointer() enables boost::mem_fn to recognize shared_ptr
+
+template<class T> inline T * get_pointer(shared_ptr<T> const & p)
+{
+ return p.get();
+}
+
+// operator<<
+
+#if !defined(BOOST_NO_IOSTREAM)
+
+#if defined(BOOST_NO_TEMPLATED_IOSTREAMS) || ( defined(__GNUC__) && (__GNUC__ < 3) )
+
+template<class Y> std::ostream & operator<< (std::ostream & os, shared_ptr<Y> const & p)
+{
+ os << p.get();
+ return os;
+}
+
+#else
+
+// in STLport's no-iostreams mode no iostream symbols can be used
+#ifndef _STLP_NO_IOSTREAMS
+
+# if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, < 1300 && __SGI_STL_PORT)
+// MSVC6 has problems finding std::basic_ostream through the using declaration in namespace _STL
+using std::basic_ostream;
+template<class E, class T, class Y> basic_ostream<E, T> & operator<< (basic_ostream<E, T> & os, shared_ptr<Y> const & p)
+# else
+template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, shared_ptr<Y> const & p)
+# endif
+{
+ os << p.get();
+ return os;
+}
+
+#endif // _STLP_NO_IOSTREAMS
+
+#endif // __GNUC__ < 3
+
+#endif // !defined(BOOST_NO_IOSTREAM)
+
+// get_deleter
+
+#if ( defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3) ) || \
+ ( defined(__EDG_VERSION__) && BOOST_WORKAROUND(__EDG_VERSION__, <= 238) ) || \
+ ( defined(__HP_aCC) && BOOST_WORKAROUND(__HP_aCC, <= 33500) )
+
+// g++ 2.9x doesn't allow static_cast<X const *>(void *)
+// apparently EDG 2.38 and HP aCC A.03.35 also don't accept it
+
+template<class D, class T> D * get_deleter(shared_ptr<T> const & p)
+{
+ void const * q = p._internal_get_deleter(BOOST_SP_TYPEID(D));
+ return const_cast<D *>(static_cast<D const *>(q));
+}
+
+#else
+
+template<class D, class T> D * get_deleter(shared_ptr<T> const & p)
+{
+ return static_cast<D *>(p._internal_get_deleter(BOOST_SP_TYPEID(D)));
+}
+
+#endif
+
+// atomic access
+
+#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
+
+template<class T> inline bool atomic_is_lock_free( shared_ptr<T> const * /*p*/ )
+{
+ return false;
+}
+
+template<class T> shared_ptr<T> atomic_load( shared_ptr<T> const * p )
+{
+ boost::detail::spinlock_pool<2>::scoped_lock lock( p );
+ return *p;
+}
+
+template<class T> inline shared_ptr<T> atomic_load_explicit( shared_ptr<T> const * p, memory_order /*mo*/ )
+{
+ return atomic_load( p );
+}
+
+template<class T> void atomic_store( shared_ptr<T> * p, shared_ptr<T> r )
+{
+ boost::detail::spinlock_pool<2>::scoped_lock lock( p );
+ p->swap( r );
+}
+
+template<class T> inline void atomic_store_explicit( shared_ptr<T> * p, shared_ptr<T> r, memory_order /*mo*/ )
+{
+ atomic_store( p, r ); // std::move( r )
+}
+
+template<class T> shared_ptr<T> atomic_exchange( shared_ptr<T> * p, shared_ptr<T> r )
+{
+ boost::detail::spinlock & sp = boost::detail::spinlock_pool<2>::spinlock_for( p );
+
+ sp.lock();
+ p->swap( r );
+ sp.unlock();
+
+ return r; // return std::move( r )
+}
+
+template<class T> shared_ptr<T> atomic_exchange_explicit( shared_ptr<T> * p, shared_ptr<T> r, memory_order /*mo*/ )
+{
+ return atomic_exchange( p, r ); // std::move( r )
+}
+
+template<class T> bool atomic_compare_exchange( shared_ptr<T> * p, shared_ptr<T> * v, shared_ptr<T> w )
+{
+ boost::detail::spinlock & sp = boost::detail::spinlock_pool<2>::spinlock_for( p );
+
+ sp.lock();
+
+ if( p->_internal_equiv( *v ) )
+ {
+ p->swap( w );
+
+ sp.unlock();
+
+ return true;
+ }
+ else
+ {
+ shared_ptr<T> tmp( *p );
+
+ sp.unlock();
+
+ tmp.swap( *v );
+ return false;
+ }
+}
+
+template<class T> inline bool atomic_compare_exchange_explicit( shared_ptr<T> * p, shared_ptr<T> * v, shared_ptr<T> w, memory_order /*success*/, memory_order /*failure*/ )
+{
+ return atomic_compare_exchange( p, v, w ); // std::move( w )
+}
+
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#endif // #if defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+
+#endif // #ifndef BOOST_SMART_PTR_SHARED_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/smart_ptr/weak_ptr.hpp b/3rdParty/Boost/boost/smart_ptr/weak_ptr.hpp
new file mode 100644
index 0000000..bf5296a
--- /dev/null
+++ b/3rdParty/Boost/boost/smart_ptr/weak_ptr.hpp
@@ -0,0 +1,182 @@
+#ifndef BOOST_SMART_PTR_WEAK_PTR_HPP_INCLUDED
+#define BOOST_SMART_PTR_WEAK_PTR_HPP_INCLUDED
+
+//
+// weak_ptr.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/smart_ptr/weak_ptr.htm for documentation.
+//
+
+#include <memory> // boost.TR1 include order fix
+#include <boost/smart_ptr/detail/shared_count.hpp>
+#include <boost/smart_ptr/shared_ptr.hpp>
+
+#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
+# pragma warning(push)
+# pragma warning(disable:4284) // odd return type for operator->
+#endif
+
+namespace boost
+{
+
+template<class T> class weak_ptr
+{
+private:
+
+ // Borland 5.5.1 specific workarounds
+ typedef weak_ptr<T> this_type;
+
+public:
+
+ typedef T element_type;
+
+ weak_ptr(): px(0), pn() // never throws in 1.30+
+ {
+ }
+
+// generated copy constructor, assignment, destructor are fine
+
+
+//
+// The "obvious" converting constructor implementation:
+//
+// template<class Y>
+// weak_ptr(weak_ptr<Y> const & r): px(r.px), pn(r.pn) // never throws
+// {
+// }
+//
+// has a serious problem.
+//
+// r.px may already have been invalidated. The px(r.px)
+// conversion may require access to *r.px (virtual inheritance).
+//
+// It is not possible to avoid spurious access violations since
+// in multithreaded programs r.px may be invalidated at any point.
+//
+
+ template<class Y>
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+ weak_ptr( weak_ptr<Y> const & r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )
+
+#else
+
+ weak_ptr( weak_ptr<Y> const & r )
+
+#endif
+ : pn(r.pn) // never throws
+ {
+ px = r.lock().get();
+ }
+
+ template<class Y>
+#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
+
+ weak_ptr( shared_ptr<Y> const & r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )
+
+#else
+
+ weak_ptr( shared_ptr<Y> const & r )
+
+#endif
+ : px( r.px ), pn( r.pn ) // never throws
+ {
+ }
+
+#if !defined(BOOST_MSVC) || (BOOST_MSVC >= 1300)
+
+ template<class Y>
+ weak_ptr & operator=(weak_ptr<Y> const & r) // never throws
+ {
+ px = r.lock().get();
+ pn = r.pn;
+ return *this;
+ }
+
+ template<class Y>
+ weak_ptr & operator=(shared_ptr<Y> const & r) // never throws
+ {
+ px = r.px;
+ pn = r.pn;
+ return *this;
+ }
+
+#endif
+
+ shared_ptr<T> lock() const // never throws
+ {
+ return shared_ptr<element_type>( *this, boost::detail::sp_nothrow_tag() );
+ }
+
+ long use_count() const // never throws
+ {
+ return pn.use_count();
+ }
+
+ bool expired() const // never throws
+ {
+ return pn.use_count() == 0;
+ }
+
+ void reset() // never throws in 1.30+
+ {
+ this_type().swap(*this);
+ }
+
+ void swap(this_type & other) // never throws
+ {
+ std::swap(px, other.px);
+ pn.swap(other.pn);
+ }
+
+ void _internal_assign(T * px2, boost::detail::shared_count const & pn2)
+ {
+ px = px2;
+ pn = pn2;
+ }
+
+ template<class Y> bool _internal_less(weak_ptr<Y> const & rhs) const
+ {
+ return pn < rhs.pn;
+ }
+
+// Tasteless as this may seem, making all members public allows member templates
+// to work in the absence of member template friends. (Matthew Langston)
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+
+private:
+
+ template<class Y> friend class weak_ptr;
+ template<class Y> friend class shared_ptr;
+
+#endif
+
+ T * px; // contained pointer
+ boost::detail::weak_count pn; // reference counter
+
+}; // weak_ptr
+
+template<class T, class U> inline bool operator<(weak_ptr<T> const & a, weak_ptr<U> const & b)
+{
+ return a._internal_less(b);
+}
+
+template<class T> void swap(weak_ptr<T> & a, weak_ptr<T> & b)
+{
+ a.swap(b);
+}
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#endif // #ifndef BOOST_SMART_PTR_WEAK_PTR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/static_assert.hpp b/3rdParty/Boost/boost/static_assert.hpp
new file mode 100644
index 0000000..5bded5e
--- /dev/null
+++ b/3rdParty/Boost/boost/static_assert.hpp
@@ -0,0 +1,132 @@
+// (C) Copyright John Maddock 2000.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/static_assert for documentation.
+
+/*
+ Revision history:
+ 02 August 2000
+ Initial version.
+*/
+
+#ifndef BOOST_STATIC_ASSERT_HPP
+#define BOOST_STATIC_ASSERT_HPP
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifdef __BORLANDC__
+//
+// workaround for buggy integral-constant expression support:
+#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS
+#endif
+
+#if defined(__GNUC__) && (__GNUC__ == 3) && ((__GNUC_MINOR__ == 3) || (__GNUC_MINOR__ == 4))
+// gcc 3.3 and 3.4 don't produce good error messages with the default version:
+# define BOOST_SA_GCC_WORKAROUND
+#endif
+
+//
+// If the compiler issues warnings about old C style casts,
+// then enable this:
+//
+#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
+# define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) == 0 ? false : true)
+#else
+# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
+#endif
+
+#ifdef BOOST_HAS_STATIC_ASSERT
+# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
+#else
+
+namespace boost{
+
+// HP aCC cannot deal with missing names for template value parameters
+template <bool x> struct STATIC_ASSERTION_FAILURE;
+
+template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
+
+// HP aCC cannot deal with missing names for template value parameters
+template<int x> struct static_assert_test{};
+
+}
+
+//
+// Implicit instantiation requires that all member declarations be
+// instantiated, but that the definitions are *not* instantiated.
+//
+// It's not particularly clear how this applies to enum's or typedefs;
+// both are described as declarations [7.1.3] and [7.2] in the standard,
+// however some compilers use "delayed evaluation" of one or more of
+// these when implicitly instantiating templates. We use typedef declarations
+// by default, but try defining BOOST_USE_ENUM_STATIC_ASSERT if the enum
+// version gets better results from your compiler...
+//
+// Implementation:
+// Both of these versions rely on sizeof(incomplete_type) generating an error
+// message containing the name of the incomplete type. We use
+// "STATIC_ASSERTION_FAILURE" as the type name here to generate
+// an eye catching error message. The result of the sizeof expression is either
+// used as an enum initialiser, or as a template argument depending which version
+// is in use...
+// Note that the argument to the assert is explicitly cast to bool using old-
+// style casts: too many compilers currently have problems with static_cast
+// when used inside integral constant expressions.
+//
+#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS)
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+// __LINE__ macro broken when -ZI is used see Q199057
+// fortunately MSVC ignores duplicate typedef's.
+#define BOOST_STATIC_ASSERT( B ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >)\
+ > boost_static_assert_typedef_
+#elif defined(BOOST_MSVC)
+#define BOOST_STATIC_ASSERT( B ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
+#elif defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND)
+// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error
+// instead of warning in case of failure
+# define BOOST_STATIC_ASSERT( B ) \
+ typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
+ [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
+#elif defined(__sgi)
+// special version for SGI MIPSpro compiler
+#define BOOST_STATIC_ASSERT( B ) \
+ BOOST_STATIC_CONSTANT(bool, \
+ BOOST_JOIN(boost_static_assert_test_, __LINE__) = ( B )); \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< \
+ BOOST_JOIN(boost_static_assert_test_, __LINE__) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
+#elif BOOST_WORKAROUND(__MWERKS__, <= 0x3003)
+// special version for CodeWarrior <= 8.x
+#define BOOST_STATIC_ASSERT( B ) \
+ BOOST_STATIC_CONSTANT(int, \
+ BOOST_JOIN(boost_static_assert_test_, __LINE__) = \
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
+#else
+// generic version
+#define BOOST_STATIC_ASSERT( B ) \
+ typedef ::boost::static_assert_test<\
+ sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
+ BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
+#endif
+
+#else
+// alternative enum based implementation:
+#define BOOST_STATIC_ASSERT( B ) \
+ enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
+ = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
+#endif
+#endif // ndef BOOST_HAS_STATIC_ASSERT
+
+#endif // BOOST_STATIC_ASSERT_HPP
+
+
diff --git a/3rdParty/Boost/boost/system/config.hpp b/3rdParty/Boost/boost/system/config.hpp
new file mode 100644
index 0000000..fa09099
--- /dev/null
+++ b/3rdParty/Boost/boost/system/config.hpp
@@ -0,0 +1,75 @@
+// boost/system/config.hpp -------------------------------------------------//
+
+// Copyright Beman Dawes 2003, 2006
+
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/system for documentation.
+
+#ifndef BOOST_SYSTEM_CONFIG_HPP
+#define BOOST_SYSTEM_CONFIG_HPP
+
+#include <boost/config.hpp>
+
+// BOOST_POSIX_API or BOOST_WINDOWS_API specify which API to use.
+// If not specified, a sensible default will be applied.
+
+# if defined( BOOST_WINDOWS_API ) && defined( BOOST_POSIX_API )
+# error both BOOST_WINDOWS_API and BOOST_POSIX_API are defined
+# elif !defined( BOOST_WINDOWS_API ) && !defined( BOOST_POSIX_API )
+# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
+# define BOOST_WINDOWS_API
+# else
+# define BOOST_POSIX_API
+# endif
+# endif
+
+// enable dynamic linking on Windows ---------------------------------------//
+
+//# if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)) && defined(__BORLANDC__) && defined(__WIN32__)
+//# error Dynamic linking Boost.System does not work for Borland; use static linking instead
+//# endif
+
+#ifdef BOOST_HAS_DECLSPEC // defined in config system
+// we need to import/export our code only if the user has specifically
+// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
+// libraries to be dynamically linked, or BOOST_SYSTEM_DYN_LINK
+// if they want just this one to be dynamically liked:
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)
+// export if this is our own source, otherwise import:
+#ifdef BOOST_SYSTEM_SOURCE
+# define BOOST_SYSTEM_DECL __declspec(dllexport)
+#else
+# define BOOST_SYSTEM_DECL __declspec(dllimport)
+#endif // BOOST_SYSTEM_SOURCE
+#endif // DYN_LINK
+#endif // BOOST_HAS_DECLSPEC
+//
+// if BOOST_SYSTEM_DECL isn't defined yet define it now:
+#ifndef BOOST_SYSTEM_DECL
+#define BOOST_SYSTEM_DECL
+#endif
+
+// enable automatic library variant selection ------------------------------//
+
+#if !defined(BOOST_SYSTEM_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_SYSTEM_NO_LIB)
+//
+// Set the name of our library, this will get undef'ed by auto_link.hpp
+// once it's done with it:
+//
+#define BOOST_LIB_NAME boost_system
+//
+// If we're importing code from a dll, then tell auto_link.hpp about it:
+//
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SYSTEM_DYN_LINK)
+# define BOOST_DYN_LINK
+#endif
+//
+// And include the header that does the work:
+//
+#include <boost/config/auto_link.hpp>
+#endif // auto-linking disabled
+
+#endif // BOOST_SYSTEM_CONFIG_HPP
+
diff --git a/3rdParty/Boost/boost/system/error_code.hpp b/3rdParty/Boost/boost/system/error_code.hpp
new file mode 100644
index 0000000..8f795d7
--- /dev/null
+++ b/3rdParty/Boost/boost/system/error_code.hpp
@@ -0,0 +1,501 @@
+// boost/system/error_code.hpp ---------------------------------------------//
+
+// Copyright Beman Dawes 2006, 2007
+// Copyright Christoper Kohlhoff 2007
+
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See library home page at http://www.boost.org/libs/system
+
+#ifndef BOOST_ERROR_CODE_HPP
+#define BOOST_ERROR_CODE_HPP
+
+#include <boost/system/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/assert.hpp>
+#include <boost/operators.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <ostream>
+#include <string>
+#include <stdexcept>
+#include <functional>
+
+// TODO: undef these macros if not already defined
+#include <boost/cerrno.hpp>
+
+#if !defined(BOOST_POSIX_API) && !defined(BOOST_WINDOWS_API)
+# error BOOST_POSIX_API or BOOST_WINDOWS_API must be defined
+#endif
+
+#include <boost/config/abi_prefix.hpp> // must be the last #include
+
+namespace boost
+{
+ namespace system
+ {
+
+ class error_code;
+ class error_condition;
+
+ // "Concept" helpers ---------------------------------------------------//
+
+ template< class T >
+ struct is_error_code_enum { static const bool value = false; };
+
+ template< class T >
+ struct is_error_condition_enum { static const bool value = false; };
+
+ // generic error_conditions --------------------------------------------//
+
+ namespace errc
+ {
+ enum errc_t
+ {
+ success = 0,
+ address_family_not_supported = EAFNOSUPPORT,
+ address_in_use = EADDRINUSE,
+ address_not_available = EADDRNOTAVAIL,
+ already_connected = EISCONN,
+ argument_list_too_long = E2BIG,
+ argument_out_of_domain = EDOM,
+ bad_address = EFAULT,
+ bad_file_descriptor = EBADF,
+ bad_message = EBADMSG,
+ broken_pipe = EPIPE,
+ connection_aborted = ECONNABORTED,
+ connection_already_in_progress = EALREADY,
+ connection_refused = ECONNREFUSED,
+ connection_reset = ECONNRESET,
+ cross_device_link = EXDEV,
+ destination_address_required = EDESTADDRREQ,
+ device_or_resource_busy = EBUSY,
+ directory_not_empty = ENOTEMPTY,
+ executable_format_error = ENOEXEC,
+ file_exists = EEXIST,
+ file_too_large = EFBIG,
+ filename_too_long = ENAMETOOLONG,
+ function_not_supported = ENOSYS,
+ host_unreachable = EHOSTUNREACH,
+ identifier_removed = EIDRM,
+ illegal_byte_sequence = EILSEQ,
+ inappropriate_io_control_operation = ENOTTY,
+ interrupted = EINTR,
+ invalid_argument = EINVAL,
+ invalid_seek = ESPIPE,
+ io_error = EIO,
+ is_a_directory = EISDIR,
+ message_size = EMSGSIZE,
+ network_down = ENETDOWN,
+ network_reset = ENETRESET,
+ network_unreachable = ENETUNREACH,
+ no_buffer_space = ENOBUFS,
+ no_child_process = ECHILD,
+ no_link = ENOLINK,
+ no_lock_available = ENOLCK,
+ no_message_available = ENODATA,
+ no_message = ENOMSG,
+ no_protocol_option = ENOPROTOOPT,
+ no_space_on_device = ENOSPC,
+ no_stream_resources = ENOSR,
+ no_such_device_or_address = ENXIO,
+ no_such_device = ENODEV,
+ no_such_file_or_directory = ENOENT,
+ no_such_process = ESRCH,
+ not_a_directory = ENOTDIR,
+ not_a_socket = ENOTSOCK,
+ not_a_stream = ENOSTR,
+ not_connected = ENOTCONN,
+ not_enough_memory = ENOMEM,
+ not_supported = ENOTSUP,
+ operation_canceled = ECANCELED,
+ operation_in_progress = EINPROGRESS,
+ operation_not_permitted = EPERM,
+ operation_not_supported = EOPNOTSUPP,
+ operation_would_block = EWOULDBLOCK,
+ owner_dead = EOWNERDEAD,
+ permission_denied = EACCES,
+ protocol_error = EPROTO,
+ protocol_not_supported = EPROTONOSUPPORT,
+ read_only_file_system = EROFS,
+ resource_deadlock_would_occur = EDEADLK,
+ resource_unavailable_try_again = EAGAIN,
+ result_out_of_range = ERANGE,
+ state_not_recoverable = ENOTRECOVERABLE,
+ stream_timeout = ETIME,
+ text_file_busy = ETXTBSY,
+ timed_out = ETIMEDOUT,
+ too_many_files_open_in_system = ENFILE,
+ too_many_files_open = EMFILE,
+ too_many_links = EMLINK,
+ too_many_synbolic_link_levels = ELOOP,
+ value_too_large = EOVERFLOW,
+ wrong_protocol_type = EPROTOTYPE
+ };
+
+ } // namespace errc
+
+# ifndef BOOST_SYSTEM_NO_DEPRECATED
+ namespace posix = errc;
+ namespace posix_error = errc;
+# endif
+
+ template<> struct is_error_condition_enum<errc::errc_t>
+ { static const bool value = true; };
+
+
+ // ----------------------------------------------------------------------//
+
+ // Operating system specific interfaces --------------------------------//
+
+
+ // The interface is divided into general and system-specific portions to
+ // meet these requirements:
+ //
+ // * Code calling an operating system API can create an error_code with
+ // a single category (system_category), even for POSIX-like operating
+ // systems that return some POSIX errno values and some native errno
+ // values. This code should not have to pay the cost of distinguishing
+ // between categories, since it is not yet known if that is needed.
+ //
+ // * Users wishing to write system-specific code should be given enums for
+ // at least the common error cases.
+ //
+ // * System specific code should fail at compile time if moved to another
+ // operating system.
+
+ // The system specific portions of the interface are located in headers
+ // with names reflecting the operating system. For example,
+ //
+ // <boost/system/cygwin_error.hpp>
+ // <boost/system/linux_error.hpp>
+ // <boost/system/windows_error.hpp>
+ //
+ // These headers are effectively empty for compiles on operating systems
+ // where they are not applicable.
+
+ // ----------------------------------------------------------------------//
+
+ // class error_category ------------------------------------------------//
+
+ class error_category : public noncopyable
+ {
+ public:
+ virtual ~error_category(){}
+ virtual inline const char * name() const; // see implementation note below
+ virtual inline std::string message( int ev ) const; // see implementation note below
+ virtual inline error_condition default_error_condition( int ev ) const;
+ virtual inline bool equivalent( int code, const error_condition & condition ) const;
+ virtual inline bool equivalent( const error_code & code, int condition ) const;
+
+ bool operator==(const error_category & rhs) const { return this == &rhs; }
+ bool operator!=(const error_category & rhs) const { return this != &rhs; }
+ bool operator<( const error_category & rhs ) const
+ {
+ return std::less<const error_category*>()( this, &rhs );
+ }
+ };
+
+ // predefined error categories -----------------------------------------//
+
+ BOOST_SYSTEM_DECL const error_category & get_system_category();
+ BOOST_SYSTEM_DECL const error_category & get_generic_category();
+
+ static const error_category & system_category = get_system_category();
+ static const error_category & generic_category = get_generic_category();
+
+# ifndef BOOST_SYSTEM_NO_DEPRECATED
+ // deprecated synonyms
+ inline const error_category & get_posix_category() { return get_generic_category(); }
+ static const error_category & posix_category = get_generic_category();
+ static const error_category & errno_ecat = get_generic_category();
+ static const error_category & native_ecat = get_system_category();
+# endif
+
+ // class error_condition -----------------------------------------------//
+
+ // error_conditions are portable, error_codes are system or library specific
+
+ class error_condition
+ {
+ public:
+
+ // constructors:
+ error_condition() : m_val(0), m_cat(&get_generic_category()) {}
+ error_condition( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
+
+ template <class ErrorConditionEnum>
+ error_condition(ErrorConditionEnum e,
+ typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum> >::type* = 0)
+ {
+ *this = make_error_condition(e);
+ }
+
+ // modifiers:
+
+ void assign( int val, const error_category & cat )
+ {
+ m_val = val;
+ m_cat = &cat;
+ }
+
+ template<typename ErrorConditionEnum>
+ typename boost::enable_if<is_error_condition_enum<ErrorConditionEnum>, error_condition>::type &
+ operator=( ErrorConditionEnum val )
+ {
+ *this = make_error_condition(val);
+ return *this;
+ }
+
+ void clear()
+ {
+ m_val = 0;
+ m_cat = &get_generic_category();
+ }
+
+ // observers:
+ int value() const { return m_val; }
+ const error_category & category() const { return *m_cat; }
+ std::string message() const { return m_cat->message(value()); }
+
+ typedef void (*unspecified_bool_type)();
+ static void unspecified_bool_true() {}
+
+ operator unspecified_bool_type() const // true if error
+ {
+ return m_val == 0 ? 0 : unspecified_bool_true;
+ }
+
+ bool operator!() const // true if no error
+ {
+ return m_val == 0;
+ }
+
+ // relationals:
+ // the more symmetrical non-member syntax allows enum
+ // conversions work for both rhs and lhs.
+ inline friend bool operator==( const error_condition & lhs,
+ const error_condition & rhs )
+ {
+ return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
+ }
+
+ inline friend bool operator<( const error_condition & lhs,
+ const error_condition & rhs )
+ // the more symmetrical non-member syntax allows enum
+ // conversions work for both rhs and lhs.
+ {
+ return lhs.m_cat < rhs.m_cat
+ || (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
+ }
+
+ private:
+ int m_val;
+ const error_category * m_cat;
+
+ };
+
+ // class error_code ----------------------------------------------------//
+
+ // We want error_code to be a value type that can be copied without slicing
+ // and without requiring heap allocation, but we also want it to have
+ // polymorphic behavior based on the error category. This is achieved by
+ // abstract base class error_category supplying the polymorphic behavior,
+ // and error_code containing a pointer to an object of a type derived
+ // from error_category.
+ class error_code
+ {
+ public:
+
+ // constructors:
+ error_code() : m_val(0), m_cat(&get_system_category()) {}
+ error_code( int val, const error_category & cat ) : m_val(val), m_cat(&cat) {}
+
+ template <class ErrorCodeEnum>
+ error_code(ErrorCodeEnum e,
+ typename boost::enable_if<is_error_code_enum<ErrorCodeEnum> >::type* = 0)
+ {
+ *this = make_error_code(e);
+ }
+
+ // modifiers:
+ void assign( int val, const error_category & cat )
+ {
+ m_val = val;
+ m_cat = &cat;
+ }
+
+ template<typename ErrorCodeEnum>
+ typename boost::enable_if<is_error_code_enum<ErrorCodeEnum>, error_code>::type &
+ operator=( ErrorCodeEnum val )
+ {
+ *this = make_error_code(val);
+ return *this;
+ }
+
+ void clear()
+ {
+ m_val = 0;
+ m_cat = &get_system_category();
+ }
+
+ // observers:
+ int value() const { return m_val; }
+ const error_category & category() const { return *m_cat; }
+ error_condition default_error_condition() const { return m_cat->default_error_condition(value()); }
+ std::string message() const { return m_cat->message(value()); }
+
+ typedef void (*unspecified_bool_type)();
+ static void unspecified_bool_true() {}
+
+ operator unspecified_bool_type() const // true if error
+ {
+ return m_val == 0 ? 0 : unspecified_bool_true;
+ }
+
+ bool operator!() const // true if no error
+ {
+ return m_val == 0;
+ }
+
+ // relationals:
+ inline friend bool operator==( const error_code & lhs,
+ const error_code & rhs )
+ // the more symmetrical non-member syntax allows enum
+ // conversions work for both rhs and lhs.
+ {
+ return lhs.m_cat == rhs.m_cat && lhs.m_val == rhs.m_val;
+ }
+
+ inline friend bool operator<( const error_code & lhs,
+ const error_code & rhs )
+ // the more symmetrical non-member syntax allows enum
+ // conversions work for both rhs and lhs.
+ {
+ return lhs.m_cat < rhs.m_cat
+ || (lhs.m_cat == rhs.m_cat && lhs.m_val < rhs.m_val);
+ }
+
+ private:
+ int m_val;
+ const error_category * m_cat;
+
+ };
+
+ // predefined error_code object used as "throw on error" tag
+ BOOST_SYSTEM_DECL extern error_code throws;
+
+ // non-member functions ------------------------------------------------//
+
+ inline bool operator!=( const error_code & lhs,
+ const error_code & rhs )
+ {
+ return !(lhs == rhs);
+ }
+
+ inline bool operator!=( const error_condition & lhs,
+ const error_condition & rhs )
+ {
+ return !(lhs == rhs);
+ }
+
+ inline bool operator==( const error_code & code,
+ const error_condition & condition )
+ {
+ return code.category().equivalent( code.value(), condition )
+ || condition.category().equivalent( code, condition.value() );
+ }
+
+ inline bool operator!=( const error_code & lhs,
+ const error_condition & rhs )
+ {
+ return !(lhs == rhs);
+ }
+
+ inline bool operator==( const error_condition & condition,
+ const error_code & code )
+ {
+ return condition.category().equivalent( code, condition.value() )
+ || code.category().equivalent( code.value(), condition );
+ }
+
+ inline bool operator!=( const error_condition & lhs,
+ const error_code & rhs )
+ {
+ return !(lhs == rhs);
+ }
+
+ // TODO: both of these may move elsewhere, but the LWG hasn't spoken yet.
+
+ template <class charT, class traits>
+ inline std::basic_ostream<charT,traits>&
+ operator<< (std::basic_ostream<charT,traits>& os, error_code ec)
+ {
+ os << ec.category().name() << ':' << ec.value();
+ return os;
+ }
+
+ inline std::size_t hash_value( const error_code & ec )
+ {
+ return static_cast<std::size_t>(ec.value())
+ + reinterpret_cast<std::size_t>(&ec.category());
+ }
+
+ // make_* functions for errc::errc_t -----------------------------//
+
+ namespace errc
+ {
+ // explicit conversion:
+ inline error_code make_error_code( errc_t e )
+ { return error_code( e, get_generic_category() ); }
+
+ // implicit conversion:
+ inline error_condition make_error_condition( errc_t e )
+ { return error_condition( e, get_generic_category() ); }
+ }
+
+ // error_category default implementation -------------------------------//
+
+ inline error_condition error_category::default_error_condition( int ev ) const
+ {
+ return error_condition( ev, *this );
+ }
+
+ inline bool error_category::equivalent( int code,
+ const error_condition & condition ) const
+ {
+ return default_error_condition( code ) == condition;
+ }
+
+ inline bool error_category::equivalent( const error_code & code,
+ int condition ) const
+ {
+ return *this == code.category() && code.value() == condition;
+ }
+
+ // error_category implementation note: VC++ 8.0 objects to name() and
+ // message() being pure virtual functions. Thus these implementations.
+ inline const char * error_category::name() const
+ {
+ return "error: should never be called";
+ }
+
+ inline std::string error_category::message( int ) const
+ {
+ static std::string s("error: should never be called");
+ return s;
+ }
+
+ } // namespace system
+} // namespace boost
+
+#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
+
+# ifdef BOOST_ERROR_CODE_HEADER_ONLY
+# include <boost/../libs/system/src/error_code.cpp>
+# endif
+
+#endif // BOOST_ERROR_CODE_HPP
+
+
diff --git a/3rdParty/Boost/boost/system/system_error.hpp b/3rdParty/Boost/boost/system/system_error.hpp
new file mode 100644
index 0000000..4091647
--- /dev/null
+++ b/3rdParty/Boost/boost/system/system_error.hpp
@@ -0,0 +1,81 @@
+// Boost system_error.hpp --------------------------------------------------//
+
+// Copyright Beman Dawes 2006
+
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_SYSTEM_ERROR_HPP
+#define BOOST_SYSTEM_ERROR_HPP
+
+#include <string>
+#include <stdexcept>
+#include <cassert>
+#include <boost/system/error_code.hpp>
+
+namespace boost
+{
+ namespace system
+ {
+ // class system_error --------------------------------------------------//
+
+ class system_error : public std::runtime_error
+ {
+ public:
+ system_error( error_code ec )
+ : std::runtime_error(""), m_error_code(ec) {}
+
+ system_error( error_code ec, const std::string & what_arg )
+ : std::runtime_error(what_arg), m_error_code(ec) {}
+
+ system_error( error_code ec, const char* what_arg )
+ : std::runtime_error(what_arg), m_error_code(ec) {}
+
+ system_error( int ev, const error_category & ecat )
+ : std::runtime_error(""), m_error_code(ev,ecat) {}
+
+ system_error( int ev, const error_category & ecat,
+ const std::string & what_arg )
+ : std::runtime_error(what_arg), m_error_code(ev,ecat) {}
+
+ system_error( int ev, const error_category & ecat,
+ const char * what_arg )
+ : std::runtime_error(what_arg), m_error_code(ev,ecat) {}
+
+ virtual ~system_error() throw() {}
+
+ const error_code & code() const throw() { return m_error_code; }
+ const char * what() const throw();
+
+ private:
+ error_code m_error_code;
+ mutable std::string m_what;
+ };
+
+ // implementation ------------------------------------------------------//
+
+ inline const char * system_error::what() const throw()
+ // see http://www.boost.org/more/error_handling.html for lazy build rationale
+ {
+ if ( m_what.empty() )
+ {
+ try
+ {
+ m_what = this->std::runtime_error::what();
+ if ( m_error_code )
+ {
+ if ( !m_what.empty() ) m_what += ": ";
+ m_what += m_error_code.message();
+ }
+ }
+ catch (...) { return std::runtime_error::what(); }
+ }
+ return m_what.c_str();
+ }
+
+ } // namespace system
+} // namespace boost
+
+#endif // BOOST_SYSTEM_ERROR_HPP
+
+
diff --git a/3rdParty/Boost/boost/thread.hpp b/3rdParty/Boost/boost/thread.hpp
new file mode 100644
index 0000000..f0a39c3
--- /dev/null
+++ b/3rdParty/Boost/boost/thread.hpp
@@ -0,0 +1,25 @@
+// Copyright (C) 2001-2003
+// William E. Kempf
+// (C) Copyright 2008 Anthony Williams
+//
+// Distributed under the 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 www.boost.org/libs/thread for documentation.
+
+#if !defined(BOOST_THREAD_WEK01082003_HPP)
+#define BOOST_THREAD_WEK01082003_HPP
+
+#include <boost/thread/thread.hpp>
+#include <boost/thread/condition_variable.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/once.hpp>
+#include <boost/thread/recursive_mutex.hpp>
+#include <boost/thread/tss.hpp>
+#include <boost/thread/thread_time.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/shared_mutex.hpp>
+#include <boost/thread/barrier.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/barrier.hpp b/3rdParty/Boost/boost/thread/barrier.hpp
new file mode 100644
index 0000000..546f5e9
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/barrier.hpp
@@ -0,0 +1,63 @@
+// Copyright (C) 2002-2003
+// David Moore, William E. Kempf
+// Copyright (C) 2007-8 Anthony Williams
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_BARRIER_JDM030602_HPP
+#define BOOST_BARRIER_JDM030602_HPP
+
+#include <boost/thread/detail/config.hpp>
+
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/condition_variable.hpp>
+#include <string>
+#include <stdexcept>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+
+ class barrier
+ {
+ public:
+ barrier(unsigned int count)
+ : m_threshold(count), m_count(count), m_generation(0)
+ {
+ if (count == 0)
+ throw std::invalid_argument("count cannot be zero.");
+ }
+
+ bool wait()
+ {
+ boost::mutex::scoped_lock lock(m_mutex);
+ unsigned int gen = m_generation;
+
+ if (--m_count == 0)
+ {
+ m_generation++;
+ m_count = m_threshold;
+ m_cond.notify_all();
+ return true;
+ }
+
+ while (gen == m_generation)
+ m_cond.wait(lock);
+ return false;
+ }
+
+ private:
+ mutex m_mutex;
+ condition_variable m_cond;
+ unsigned int m_threshold;
+ unsigned int m_count;
+ unsigned int m_generation;
+ };
+
+} // namespace boost
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/condition.hpp b/3rdParty/Boost/boost/thread/condition.hpp
new file mode 100644
index 0000000..35b879f
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/condition.hpp
@@ -0,0 +1,16 @@
+#ifndef BOOST_THREAD_CONDITION_HPP
+#define BOOST_THREAD_CONDITION_HPP
+// (C) Copyright 2007 Anthony Williams
+//
+// Distributed under the 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/thread/condition_variable.hpp>
+
+namespace boost
+{
+ typedef condition_variable_any condition;
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/condition_variable.hpp b/3rdParty/Boost/boost/thread/condition_variable.hpp
new file mode 100644
index 0000000..8f8e9f2
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/condition_variable.hpp
@@ -0,0 +1,21 @@
+#ifndef BOOST_THREAD_CONDITION_VARIABLE_HPP
+#define BOOST_THREAD_CONDITION_VARIABLE_HPP
+
+// condition_variable.hpp
+//
+// (C) Copyright 2007 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/condition_variable.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/condition_variable.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/detail/config.hpp b/3rdParty/Boost/boost/thread/detail/config.hpp
new file mode 100644
index 0000000..7661507
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/detail/config.hpp
@@ -0,0 +1,94 @@
+// Copyright (C) 2001-2003
+// William E. Kempf
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_THREAD_CONFIG_WEK01032003_HPP
+#define BOOST_THREAD_CONFIG_WEK01032003_HPP
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+# pragma warn -8008 // Condition always true/false
+# pragma warn -8080 // Identifier declared but never used
+# pragma warn -8057 // Parameter never used
+# pragma warn -8066 // Unreachable code
+#endif
+
+#include "platform.hpp"
+
+// compatibility with the rest of Boost's auto-linking code:
+#if defined(BOOST_THREAD_DYN_DLL) || defined(BOOST_ALL_DYN_LINK)
+# undef BOOST_THREAD_USE_LIB
+# define BOOST_THREAD_USE_DLL
+#endif
+
+#if defined(BOOST_THREAD_BUILD_DLL) //Build dll
+#elif defined(BOOST_THREAD_BUILD_LIB) //Build lib
+#elif defined(BOOST_THREAD_USE_DLL) //Use dll
+#elif defined(BOOST_THREAD_USE_LIB) //Use lib
+#else //Use default
+# if defined(BOOST_THREAD_PLATFORM_WIN32)
+# if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)
+ //For compilers supporting auto-tss cleanup
+ //with Boost.Threads lib, use Boost.Threads lib
+# define BOOST_THREAD_USE_LIB
+# else
+ //For compilers not yet supporting auto-tss cleanup
+ //with Boost.Threads lib, use Boost.Threads dll
+# define BOOST_THREAD_USE_DLL
+# endif
+# else
+# define BOOST_THREAD_USE_LIB
+# endif
+#endif
+
+#if defined(BOOST_HAS_DECLSPEC)
+# if defined(BOOST_THREAD_BUILD_DLL) //Build dll
+# define BOOST_THREAD_DECL __declspec(dllexport)
+# elif defined(BOOST_THREAD_USE_DLL) //Use dll
+# define BOOST_THREAD_DECL __declspec(dllimport)
+# else
+# define BOOST_THREAD_DECL
+# endif
+#else
+# define BOOST_THREAD_DECL
+#endif // BOOST_HAS_DECLSPEC
+
+//
+// Automatically link to the correct build variant where possible.
+//
+#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_THREAD_NO_LIB) && !defined(BOOST_THREAD_BUILD_DLL) && !defined(BOOST_THREAD_BUILD_LIB)
+//
+// Tell the autolink to link dynamically, this will get undef'ed by auto_link.hpp
+// once it's done with it:
+//
+#if defined(BOOST_THREAD_USE_DLL)
+# define BOOST_DYN_LINK
+#endif
+//
+// Set the name of our library, this will get undef'ed by auto_link.hpp
+// once it's done with it:
+//
+#if defined(BOOST_THREAD_LIB_NAME)
+# define BOOST_LIB_NAME BOOST_THREAD_LIB_NAME
+#else
+# define BOOST_LIB_NAME boost_thread
+#endif
+//
+// If we're importing code from a dll, then tell auto_link.hpp about it:
+//
+// And include the header that does the work:
+//
+#include <boost/config/auto_link.hpp>
+#endif // auto-linking disabled
+
+#endif // BOOST_THREAD_CONFIG_WEK1032003_HPP
+
+// Change Log:
+// 22 Jan 05 Roland Schwarz (speedsnail)
+// Usage of BOOST_HAS_DECLSPEC macro.
+// Default again is static lib usage.
+// BOOST_DYN_LINK only defined when autolink included.
diff --git a/3rdParty/Boost/boost/thread/detail/move.hpp b/3rdParty/Boost/boost/thread/detail/move.hpp
new file mode 100644
index 0000000..044ecda
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/detail/move.hpp
@@ -0,0 +1,60 @@
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007-8 Anthony Williams
+
+#ifndef BOOST_THREAD_MOVE_HPP
+#define BOOST_THREAD_MOVE_HPP
+
+#ifndef BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ template<typename T>
+ struct thread_move_t
+ {
+ T& t;
+ explicit thread_move_t(T& t_):
+ t(t_)
+ {}
+
+ T& operator*() const
+ {
+ return t;
+ }
+
+ T* operator->() const
+ {
+ return &t;
+ }
+ private:
+ void operator=(thread_move_t&);
+ };
+ }
+
+#ifndef BOOST_NO_SFINAE
+ template<typename T>
+ typename enable_if<boost::is_convertible<T&,detail::thread_move_t<T> >, T >::type move(T& t)
+ {
+ return T(detail::thread_move_t<T>(t));
+ }
+#endif
+
+ template<typename T>
+ detail::thread_move_t<T> move(detail::thread_move_t<T> t)
+ {
+ return t;
+ }
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/detail/platform.hpp b/3rdParty/Boost/boost/thread/detail/platform.hpp
new file mode 100644
index 0000000..4a37cf3
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/detail/platform.hpp
@@ -0,0 +1,71 @@
+// Copyright 2006 Roland Schwarz.
+// (C) Copyright 2007 Anthony Williams
+// Distributed under the 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 work is a reimplementation along the design and ideas
+// of William E. Kempf.
+
+#ifndef BOOST_THREAD_RS06040501_HPP
+#define BOOST_THREAD_RS06040501_HPP
+
+// fetch compiler and platform configuration
+#include <boost/config.hpp>
+
+// insist on threading support being available:
+#include <boost/config/requires_threads.hpp>
+
+// choose platform
+#if defined(linux) || defined(__linux) || defined(__linux__)
+# define BOOST_THREAD_LINUX
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+# define BOOST_THREAD_BSD
+#elif defined(sun) || defined(__sun)
+# define BOOST_THREAD_SOLARIS
+#elif defined(__sgi)
+# define BOOST_THREAD_IRIX
+#elif defined(__hpux)
+# define BOOST_THREAD_HPUX
+#elif defined(__CYGWIN__)
+# define BOOST_THREAD_CYGWIN
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define BOOST_THREAD_WIN32
+#elif defined(__BEOS__)
+# define BOOST_THREAD_BEOS
+#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
+# define BOOST_THREAD_MACOS
+#elif defined(__IBMCPP__) || defined(_AIX)
+# define BOOST_THREAD_AIX
+#elif defined(__amigaos__)
+# define BOOST_THREAD_AMIGAOS
+#elif defined(__QNXNTO__)
+# define BOOST_THREAD_QNXNTO
+#elif defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE)
+# if defined(BOOST_HAS_PTHREADS) && !defined(BOOST_THREAD_POSIX)
+# define BOOST_THREAD_POSIX
+# endif
+#endif
+
+// For every supported platform add a new entry into the dispatch table below.
+// BOOST_THREAD_POSIX is tested first, so on platforms where posix and native
+// threading is available, the user may choose, by defining BOOST_THREAD_POSIX
+// in her source. If a platform is known to support pthreads and no native
+// port of boost_thread is available just specify "pthread" in the
+// dispatcher table. If there is no entry for a platform but pthreads is
+// available on the platform, pthread is choosen as default. If nothing is
+// available the preprocessor will fail with a diagnostic message.
+
+#if defined(BOOST_THREAD_POSIX)
+# define BOOST_THREAD_PLATFORM_PTHREAD
+#else
+# if defined(BOOST_THREAD_WIN32)
+# define BOOST_THREAD_PLATFORM_WIN32
+# elif defined(BOOST_HAS_PTHREADS)
+# define BOOST_THREAD_PLATFORM_PTHREAD
+# else
+# error "Sorry, no boost threads are available for this platform."
+# endif
+#endif
+
+#endif // BOOST_THREAD_RS06040501_HPP
diff --git a/3rdParty/Boost/boost/thread/detail/thread.hpp b/3rdParty/Boost/boost/thread/detail/thread.hpp
new file mode 100644
index 0000000..fbb895d
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/detail/thread.hpp
@@ -0,0 +1,575 @@
+#ifndef BOOST_THREAD_THREAD_COMMON_HPP
+#define BOOST_THREAD_THREAD_COMMON_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007-8 Anthony Williams
+
+#include <boost/thread/exceptions.hpp>
+#include <ostream>
+#include <boost/thread/detail/move.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/xtime.hpp>
+#include <boost/thread/detail/thread_heap_alloc.hpp>
+#include <boost/utility.hpp>
+#include <boost/assert.hpp>
+#include <list>
+#include <algorithm>
+#include <boost/ref.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/bind.hpp>
+#include <stdlib.h>
+#include <memory>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4251)
+#endif
+
+namespace boost
+{
+ namespace detail
+ {
+ template<typename F>
+ class thread_data:
+ public detail::thread_data_base
+ {
+ public:
+#ifdef BOOST_HAS_RVALUE_REFS
+ thread_data(F&& f_):
+ f(static_cast<F&&>(f_))
+ {}
+#else
+ thread_data(F f_):
+ f(f_)
+ {}
+ thread_data(detail::thread_move_t<F> f_):
+ f(f_)
+ {}
+#endif
+ void run()
+ {
+ f();
+ }
+ private:
+ F f;
+
+ void operator=(thread_data&);
+ thread_data(thread_data&);
+ };
+
+ template<typename F>
+ class thread_data<boost::reference_wrapper<F> >:
+ public detail::thread_data_base
+ {
+ private:
+ F& f;
+
+ void operator=(thread_data&);
+ thread_data(thread_data&);
+ public:
+ thread_data(boost::reference_wrapper<F> f_):
+ f(f_)
+ {}
+
+ void run()
+ {
+ f();
+ }
+ };
+
+ template<typename F>
+ class thread_data<const boost::reference_wrapper<F> >:
+ public detail::thread_data_base
+ {
+ private:
+ F& f;
+ void operator=(thread_data&);
+ thread_data(thread_data&);
+ public:
+ thread_data(const boost::reference_wrapper<F> f_):
+ f(f_)
+ {}
+
+ void run()
+ {
+ f();
+ }
+ };
+ }
+
+ class BOOST_THREAD_DECL thread
+ {
+ private:
+ thread(thread&);
+ thread& operator=(thread&);
+
+ void release_handle();
+
+ mutable boost::mutex thread_info_mutex;
+ detail::thread_data_ptr thread_info;
+
+ void start_thread();
+
+ explicit thread(detail::thread_data_ptr data);
+
+ detail::thread_data_ptr get_thread_info() const;
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename F>
+ static inline detail::thread_data_ptr make_thread_info(F&& f)
+ {
+ return detail::thread_data_ptr(detail::heap_new<detail::thread_data<typename boost::remove_reference<F>::type> >(static_cast<F&&>(f)));
+ }
+ static inline detail::thread_data_ptr make_thread_info(void (*f)())
+ {
+ return detail::thread_data_ptr(detail::heap_new<detail::thread_data<void(*)()> >(f));
+ }
+#else
+ template<typename F>
+ static inline detail::thread_data_ptr make_thread_info(F f)
+ {
+ return detail::thread_data_ptr(detail::heap_new<detail::thread_data<F> >(f));
+ }
+ template<typename F>
+ static inline detail::thread_data_ptr make_thread_info(boost::detail::thread_move_t<F> f)
+ {
+ return detail::thread_data_ptr(detail::heap_new<detail::thread_data<F> >(f));
+ }
+
+ struct dummy;
+#endif
+ public:
+ thread();
+ ~thread();
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template <class F>
+ thread(F&& f):
+ thread_info(make_thread_info(static_cast<F&&>(f)))
+ {
+ start_thread();
+ }
+
+ thread(thread&& other)
+ {
+ thread_info.swap(other.thread_info);
+ }
+
+ thread& operator=(thread&& other)
+ {
+ thread_info=other.thread_info;
+ other.thread_info.reset();
+ return *this;
+ }
+
+ thread&& move()
+ {
+ return static_cast<thread&&>(*this);
+ }
+
+#else
+#ifdef BOOST_NO_SFINAE
+ template <class F>
+ explicit thread(F f):
+ thread_info(make_thread_info(f))
+ {
+ start_thread();
+ }
+#else
+ template <class F>
+ explicit thread(F f,typename disable_if<boost::is_convertible<F&,detail::thread_move_t<F> >, dummy* >::type=0):
+ thread_info(make_thread_info(f))
+ {
+ start_thread();
+ }
+#endif
+
+ template <class F>
+ explicit thread(detail::thread_move_t<F> f):
+ thread_info(make_thread_info(f))
+ {
+ start_thread();
+ }
+
+ thread(detail::thread_move_t<thread> x)
+ {
+ thread_info=x->thread_info;
+ x->thread_info.reset();
+ }
+
+ thread& operator=(detail::thread_move_t<thread> x)
+ {
+ thread new_thread(x);
+ swap(new_thread);
+ return *this;
+ }
+
+ operator detail::thread_move_t<thread>()
+ {
+ return move();
+ }
+
+ detail::thread_move_t<thread> move()
+ {
+ detail::thread_move_t<thread> x(*this);
+ return x;
+ }
+
+#endif
+
+ template <class F,class A1>
+ thread(F f,A1 a1):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1)))
+ {
+ start_thread();
+ }
+ template <class F,class A1,class A2>
+ thread(F f,A1 a1,A2 a2):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3>
+ thread(F f,A1 a1,A2 a2,A3 a3):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3,class A4>
+ thread(F f,A1 a1,A2 a2,A3 a3,A4 a4):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3,a4)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3,class A4,class A5>
+ thread(F f,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3,a4,a5)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3,class A4,class A5,class A6>
+ thread(F f,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3,a4,a5,a6)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3,class A4,class A5,class A6,class A7>
+ thread(F f,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3,a4,a5,a6,a7)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3,class A4,class A5,class A6,class A7,class A8>
+ thread(F f,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3,a4,a5,a6,a7,a8)))
+ {
+ start_thread();
+ }
+
+ template <class F,class A1,class A2,class A3,class A4,class A5,class A6,class A7,class A8,class A9>
+ thread(F f,A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9):
+ thread_info(make_thread_info(boost::bind(boost::type<void>(),f,a1,a2,a3,a4,a5,a6,a7,a8,a9)))
+ {
+ start_thread();
+ }
+
+ void swap(thread& x)
+ {
+ thread_info.swap(x.thread_info);
+ }
+
+ class id;
+ id get_id() const;
+
+
+ bool joinable() const;
+ void join();
+ bool timed_join(const system_time& wait_until);
+
+ template<typename TimeDuration>
+ inline bool timed_join(TimeDuration const& rel_time)
+ {
+ return timed_join(get_system_time()+rel_time);
+ }
+ void detach();
+
+ static unsigned hardware_concurrency();
+
+ typedef detail::thread_data_base::native_handle_type native_handle_type;
+ native_handle_type native_handle();
+
+ // backwards compatibility
+ bool operator==(const thread& other) const;
+ bool operator!=(const thread& other) const;
+
+ static inline void yield()
+ {
+ this_thread::yield();
+ }
+
+ static inline void sleep(const system_time& xt)
+ {
+ this_thread::sleep(xt);
+ }
+
+ // extensions
+ void interrupt();
+ bool interruption_requested() const;
+ };
+
+ inline void swap(thread& lhs,thread& rhs)
+ {
+ return lhs.swap(rhs);
+ }
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ inline thread&& move(thread&& t)
+ {
+ return t;
+ }
+#else
+ inline thread move(detail::thread_move_t<thread> t)
+ {
+ return thread(t);
+ }
+#endif
+
+ namespace this_thread
+ {
+ class BOOST_THREAD_DECL disable_interruption
+ {
+ disable_interruption(const disable_interruption&);
+ disable_interruption& operator=(const disable_interruption&);
+
+ bool interruption_was_enabled;
+ friend class restore_interruption;
+ public:
+ disable_interruption();
+ ~disable_interruption();
+ };
+
+ class BOOST_THREAD_DECL restore_interruption
+ {
+ restore_interruption(const restore_interruption&);
+ restore_interruption& operator=(const restore_interruption&);
+ public:
+ explicit restore_interruption(disable_interruption& d);
+ ~restore_interruption();
+ };
+
+ thread::id BOOST_THREAD_DECL get_id();
+
+ void BOOST_THREAD_DECL interruption_point();
+ bool BOOST_THREAD_DECL interruption_enabled();
+ bool BOOST_THREAD_DECL interruption_requested();
+
+ inline void sleep(xtime const& abs_time)
+ {
+ sleep(system_time(abs_time));
+ }
+ }
+
+ class thread::id
+ {
+ private:
+ detail::thread_data_ptr thread_data;
+
+ id(detail::thread_data_ptr thread_data_):
+ thread_data(thread_data_)
+ {}
+ friend class thread;
+ friend id this_thread::get_id();
+ public:
+ id():
+ thread_data()
+ {}
+
+ bool operator==(const id& y) const
+ {
+ return thread_data==y.thread_data;
+ }
+
+ bool operator!=(const id& y) const
+ {
+ return thread_data!=y.thread_data;
+ }
+
+ bool operator<(const id& y) const
+ {
+ return thread_data<y.thread_data;
+ }
+
+ bool operator>(const id& y) const
+ {
+ return y.thread_data<thread_data;
+ }
+
+ bool operator<=(const id& y) const
+ {
+ return !(y.thread_data<thread_data);
+ }
+
+ bool operator>=(const id& y) const
+ {
+ return !(thread_data<y.thread_data);
+ }
+
+ template<class charT, class traits>
+ friend std::basic_ostream<charT, traits>&
+ operator<<(std::basic_ostream<charT, traits>& os, const id& x)
+ {
+ if(x.thread_data)
+ {
+ return os<<x.thread_data;
+ }
+ else
+ {
+ return os<<"{Not-any-thread}";
+ }
+ }
+ };
+
+ inline bool thread::operator==(const thread& other) const
+ {
+ return get_id()==other.get_id();
+ }
+
+ inline bool thread::operator!=(const thread& other) const
+ {
+ return get_id()!=other.get_id();
+ }
+
+ namespace detail
+ {
+ struct thread_exit_function_base
+ {
+ virtual ~thread_exit_function_base()
+ {}
+ virtual void operator()() const=0;
+ };
+
+ template<typename F>
+ struct thread_exit_function:
+ thread_exit_function_base
+ {
+ F f;
+
+ thread_exit_function(F f_):
+ f(f_)
+ {}
+
+ void operator()() const
+ {
+ f();
+ }
+ };
+
+ void add_thread_exit_function(thread_exit_function_base*);
+ }
+
+ namespace this_thread
+ {
+ template<typename F>
+ void at_thread_exit(F f)
+ {
+ detail::thread_exit_function_base* const thread_exit_func=detail::heap_new<detail::thread_exit_function<F> >(f);
+ detail::add_thread_exit_function(thread_exit_func);
+ }
+ }
+
+ class thread_group:
+ private noncopyable
+ {
+ public:
+ ~thread_group()
+ {
+ for(std::list<thread*>::iterator it=threads.begin(),end=threads.end();
+ it!=end;
+ ++it)
+ {
+ delete *it;
+ }
+ }
+
+ template<typename F>
+ thread* create_thread(F threadfunc)
+ {
+ boost::lock_guard<mutex> guard(m);
+ std::auto_ptr<thread> new_thread(new thread(threadfunc));
+ threads.push_back(new_thread.get());
+ return new_thread.release();
+ }
+
+ void add_thread(thread* thrd)
+ {
+ if(thrd)
+ {
+ boost::lock_guard<mutex> guard(m);
+ threads.push_back(thrd);
+ }
+ }
+
+ void remove_thread(thread* thrd)
+ {
+ boost::lock_guard<mutex> guard(m);
+ std::list<thread*>::iterator const it=std::find(threads.begin(),threads.end(),thrd);
+ if(it!=threads.end())
+ {
+ threads.erase(it);
+ }
+ }
+
+ void join_all()
+ {
+ boost::lock_guard<mutex> guard(m);
+
+ for(std::list<thread*>::iterator it=threads.begin(),end=threads.end();
+ it!=end;
+ ++it)
+ {
+ (*it)->join();
+ }
+ }
+
+ void interrupt_all()
+ {
+ boost::lock_guard<mutex> guard(m);
+
+ for(std::list<thread*>::iterator it=threads.begin(),end=threads.end();
+ it!=end;
+ ++it)
+ {
+ (*it)->interrupt();
+ }
+ }
+
+ size_t size() const
+ {
+ boost::lock_guard<mutex> guard(m);
+ return threads.size();
+ }
+
+ private:
+ std::list<thread*> threads;
+ mutable mutex m;
+ };
+}
+
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/detail/thread_heap_alloc.hpp b/3rdParty/Boost/boost/thread/detail/thread_heap_alloc.hpp
new file mode 100644
index 0000000..2f9bfd5
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/detail/thread_heap_alloc.hpp
@@ -0,0 +1,23 @@
+#ifndef BOOST_THREAD_THREAD_HEAP_ALLOC_HPP
+#define BOOST_THREAD_THREAD_HEAP_ALLOC_HPP
+
+// thread_heap_alloc.hpp
+//
+// (C) Copyright 2008 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/thread_heap_alloc.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/thread_heap_alloc.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/detail/tss_hooks.hpp b/3rdParty/Boost/boost/thread/detail/tss_hooks.hpp
new file mode 100644
index 0000000..c496844
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/detail/tss_hooks.hpp
@@ -0,0 +1,82 @@
+// (C) Copyright Michael Glassford 2004.
+// 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)
+
+#if !defined(BOOST_TLS_HOOKS_HPP)
+#define BOOST_TLS_HOOKS_HPP
+
+#include <boost/thread/detail/config.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+#if defined(BOOST_HAS_WINTHREADS)
+
+ typedef void (__cdecl *thread_exit_handler)(void);
+
+ extern "C" BOOST_THREAD_DECL int at_thread_exit(
+ thread_exit_handler exit_handler
+ );
+ //Add a function to the list of functions that will
+ //be called when a thread is about to exit.
+ //Currently only implemented for Win32, but should
+ //later be implemented for all platforms.
+ //Used by Win32 implementation of Boost.Threads
+ //tss to perform cleanup.
+ //Like the C runtime library atexit() function,
+ //which it mimics, at_thread_exit() returns
+ //zero if successful and a nonzero
+ //value if an error occurs.
+
+#endif //defined(BOOST_HAS_WINTHREADS)
+
+#if defined(BOOST_HAS_WINTHREADS)
+
+ extern "C" BOOST_THREAD_DECL void on_process_enter(void);
+ //Function to be called when the exe or dll
+ //that uses Boost.Threads first starts
+ //or is first loaded.
+ //Should be called only before the first call to
+ //on_thread_enter().
+ //Called automatically by Boost.Threads when
+ //a method for doing so has been discovered.
+ //May be omitted; may be called multiple times.
+
+ extern "C" BOOST_THREAD_DECL void on_process_exit(void);
+ //Function to be called when the exe or dll
+ //that uses Boost.Threads first starts
+ //or is first loaded.
+ //Should be called only after the last call to
+ //on_exit_thread().
+ //Called automatically by Boost.Threads when
+ //a method for doing so has been discovered.
+ //Must not be omitted; may be called multiple times.
+
+ extern "C" BOOST_THREAD_DECL void on_thread_enter(void);
+ //Function to be called just after a thread starts
+ //in an exe or dll that uses Boost.Threads.
+ //Must be called in the context of the thread
+ //that is starting.
+ //Called automatically by Boost.Threads when
+ //a method for doing so has been discovered.
+ //May be omitted; may be called multiple times.
+
+ extern "C" BOOST_THREAD_DECL void __cdecl on_thread_exit(void);
+ //Function to be called just be fore a thread ends
+ //in an exe or dll that uses Boost.Threads.
+ //Must be called in the context of the thread
+ //that is ending.
+ //Called automatically by Boost.Threads when
+ //a method for doing so has been discovered.
+ //Must not be omitted; may be called multiple times.
+
+ extern "C" void tss_cleanup_implemented(void);
+ //Dummy function used both to detect whether tss cleanup
+ //cleanup has been implemented and to force
+ //it to be linked into the Boost.Threads library.
+
+#endif //defined(BOOST_HAS_WINTHREADS)
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif //!defined(BOOST_TLS_HOOKS_HPP)
diff --git a/3rdParty/Boost/boost/thread/exceptions.hpp b/3rdParty/Boost/boost/thread/exceptions.hpp
new file mode 100644
index 0000000..49e244f
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/exceptions.hpp
@@ -0,0 +1,114 @@
+// Copyright (C) 2001-2003
+// William E. Kempf
+// Copyright (C) 2007-8 Anthony Williams
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_THREAD_EXCEPTIONS_PDM070801_H
+#define BOOST_THREAD_EXCEPTIONS_PDM070801_H
+
+#include <boost/thread/detail/config.hpp>
+
+// pdm: Sorry, but this class is used all over the place & I end up
+// with recursive headers if I don't separate it
+// wek: Not sure why recursive headers would cause compilation problems
+// given the include guards, but regardless it makes sense to
+// seperate this out any way.
+
+#include <string>
+#include <stdexcept>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+
+ class BOOST_THREAD_DECL thread_interrupted
+ {};
+
+class BOOST_THREAD_DECL thread_exception : public std::exception
+{
+protected:
+ thread_exception();
+ thread_exception(int sys_err_code);
+
+public:
+ ~thread_exception() throw();
+
+ int native_error() const;
+
+private:
+ int m_sys_err;
+};
+
+ class condition_error:
+ public std::exception
+ {
+ public:
+ const char* what() const throw()
+ {
+ return "Condition error";
+ }
+ };
+
+
+class BOOST_THREAD_DECL lock_error : public thread_exception
+{
+public:
+ lock_error();
+ lock_error(int sys_err_code);
+ ~lock_error() throw();
+
+ virtual const char* what() const throw();
+};
+
+class BOOST_THREAD_DECL thread_resource_error : public thread_exception
+{
+public:
+ thread_resource_error();
+ thread_resource_error(int sys_err_code);
+ ~thread_resource_error() throw();
+
+ virtual const char* what() const throw();
+};
+
+class BOOST_THREAD_DECL unsupported_thread_option : public thread_exception
+{
+public:
+ unsupported_thread_option();
+ unsupported_thread_option(int sys_err_code);
+ ~unsupported_thread_option() throw();
+
+ virtual const char* what() const throw();
+};
+
+class BOOST_THREAD_DECL invalid_thread_argument : public thread_exception
+{
+public:
+ invalid_thread_argument();
+ invalid_thread_argument(int sys_err_code);
+ ~invalid_thread_argument() throw();
+
+ virtual const char* what() const throw();
+};
+
+class BOOST_THREAD_DECL thread_permission_error : public thread_exception
+{
+public:
+ thread_permission_error();
+ thread_permission_error(int sys_err_code);
+ ~thread_permission_error() throw();
+
+ virtual const char* what() const throw();
+};
+
+} // namespace boost
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif // BOOST_THREAD_CONFIG_PDM070801_H
+
+// Change log:
+// 3 Jan 03 WEKEMPF Modified for DLL implementation.
+
diff --git a/3rdParty/Boost/boost/thread/locks.hpp b/3rdParty/Boost/boost/thread/locks.hpp
new file mode 100644
index 0000000..abbfd75
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/locks.hpp
@@ -0,0 +1,1430 @@
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007 Anthony Williams
+#ifndef BOOST_THREAD_LOCKS_HPP
+#define BOOST_THREAD_LOCKS_HPP
+#include <boost/thread/detail/config.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/thread/detail/move.hpp>
+#include <algorithm>
+#include <iterator>
+#include <boost/thread/thread_time.hpp>
+#include <boost/detail/workaround.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ struct xtime;
+
+#if defined(BOOST_NO_SFINAE) || \
+ BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) || \
+ BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
+#define BOOST_THREAD_NO_AUTO_DETECT_MUTEX_TYPES
+#endif
+
+#ifndef BOOST_THREAD_NO_AUTO_DETECT_MUTEX_TYPES
+ namespace detail
+ {
+ template<typename T>
+ struct has_member_lock
+ {
+ typedef char true_type;
+ struct false_type
+ {
+ true_type dummy[2];
+ };
+
+ template<typename U>
+ static true_type has_member(U*,void (U::*dummy)()=&U::lock);
+ static false_type has_member(void*);
+
+ BOOST_STATIC_CONSTANT(bool, value=sizeof(has_member_lock<T>::has_member((T*)NULL))==sizeof(true_type));
+ };
+
+ template<typename T>
+ struct has_member_unlock
+ {
+ typedef char true_type;
+ struct false_type
+ {
+ true_type dummy[2];
+ };
+
+ template<typename U>
+ static true_type has_member(U*,void (U::*dummy)()=&U::unlock);
+ static false_type has_member(void*);
+
+ BOOST_STATIC_CONSTANT(bool, value=sizeof(has_member_unlock<T>::has_member((T*)NULL))==sizeof(true_type));
+ };
+
+ template<typename T>
+ struct has_member_try_lock
+ {
+ typedef char true_type;
+ struct false_type
+ {
+ true_type dummy[2];
+ };
+
+ template<typename U>
+ static true_type has_member(U*,bool (U::*dummy)()=&U::try_lock);
+ static false_type has_member(void*);
+
+ BOOST_STATIC_CONSTANT(bool, value=sizeof(has_member_try_lock<T>::has_member((T*)NULL))==sizeof(true_type));
+ };
+
+ }
+
+
+ template<typename T>
+ struct is_mutex_type
+ {
+ BOOST_STATIC_CONSTANT(bool, value = detail::has_member_lock<T>::value &&
+ detail::has_member_unlock<T>::value &&
+ detail::has_member_try_lock<T>::value);
+
+ };
+#else
+ template<typename T>
+ struct is_mutex_type
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+#endif
+
+ struct defer_lock_t
+ {};
+ struct try_to_lock_t
+ {};
+ struct adopt_lock_t
+ {};
+
+ const defer_lock_t defer_lock={};
+ const try_to_lock_t try_to_lock={};
+ const adopt_lock_t adopt_lock={};
+
+ template<typename Mutex>
+ class shared_lock;
+
+ template<typename Mutex>
+ class upgrade_lock;
+
+ template<typename Mutex>
+ class unique_lock;
+
+ namespace detail
+ {
+ template<typename Mutex>
+ class try_lock_wrapper;
+ }
+
+#ifdef BOOST_THREAD_NO_AUTO_DETECT_MUTEX_TYPES
+ template<typename T>
+ struct is_mutex_type<unique_lock<T> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ template<typename T>
+ struct is_mutex_type<shared_lock<T> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ template<typename T>
+ struct is_mutex_type<upgrade_lock<T> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ template<typename T>
+ struct is_mutex_type<detail::try_lock_wrapper<T> >
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+ class mutex;
+ class timed_mutex;
+ class recursive_mutex;
+ class recursive_timed_mutex;
+ class shared_mutex;
+
+ template<>
+ struct is_mutex_type<mutex>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+ template<>
+ struct is_mutex_type<timed_mutex>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+ template<>
+ struct is_mutex_type<recursive_mutex>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+ template<>
+ struct is_mutex_type<recursive_timed_mutex>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+ template<>
+ struct is_mutex_type<shared_mutex>
+ {
+ BOOST_STATIC_CONSTANT(bool, value = true);
+ };
+
+#endif
+
+ template<typename Mutex>
+ class lock_guard
+ {
+ private:
+ Mutex& m;
+
+ explicit lock_guard(lock_guard&);
+ lock_guard& operator=(lock_guard&);
+ public:
+ explicit lock_guard(Mutex& m_):
+ m(m_)
+ {
+ m.lock();
+ }
+ lock_guard(Mutex& m_,adopt_lock_t):
+ m(m_)
+ {}
+ ~lock_guard()
+ {
+ m.unlock();
+ }
+ };
+
+
+ template<typename Mutex>
+ class unique_lock
+ {
+ private:
+ Mutex* m;
+ bool is_locked;
+ unique_lock(unique_lock&);
+ explicit unique_lock(upgrade_lock<Mutex>&);
+ unique_lock& operator=(unique_lock&);
+ unique_lock& operator=(upgrade_lock<Mutex>& other);
+ public:
+ unique_lock():
+ m(0),is_locked(false)
+ {}
+
+ explicit unique_lock(Mutex& m_):
+ m(&m_),is_locked(false)
+ {
+ lock();
+ }
+ unique_lock(Mutex& m_,adopt_lock_t):
+ m(&m_),is_locked(true)
+ {}
+ unique_lock(Mutex& m_,defer_lock_t):
+ m(&m_),is_locked(false)
+ {}
+ unique_lock(Mutex& m_,try_to_lock_t):
+ m(&m_),is_locked(false)
+ {
+ try_lock();
+ }
+ template<typename TimeDuration>
+ unique_lock(Mutex& m_,TimeDuration const& target_time):
+ m(&m_),is_locked(false)
+ {
+ timed_lock(target_time);
+ }
+ unique_lock(Mutex& m_,system_time const& target_time):
+ m(&m_),is_locked(false)
+ {
+ timed_lock(target_time);
+ }
+#ifdef BOOST_HAS_RVALUE_REFS
+ unique_lock(unique_lock&& other):
+ m(other.m),is_locked(other.is_locked)
+ {
+ other.is_locked=false;
+ other.m=0;
+ }
+ explicit unique_lock(upgrade_lock<Mutex>&& other);
+
+ unique_lock<Mutex>&& move()
+ {
+ return static_cast<unique_lock<Mutex>&&>(*this);
+ }
+
+
+ unique_lock& operator=(unique_lock<Mutex>&& other)
+ {
+ unique_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+ unique_lock& operator=(upgrade_lock<Mutex>&& other)
+ {
+ unique_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+ void swap(unique_lock&& other)
+ {
+ std::swap(m,other.m);
+ std::swap(is_locked,other.is_locked);
+ }
+#else
+ unique_lock(detail::thread_move_t<unique_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ other->is_locked=false;
+ other->m=0;
+ }
+ unique_lock(detail::thread_move_t<upgrade_lock<Mutex> > other);
+
+ operator detail::thread_move_t<unique_lock<Mutex> >()
+ {
+ return move();
+ }
+
+ detail::thread_move_t<unique_lock<Mutex> > move()
+ {
+ return detail::thread_move_t<unique_lock<Mutex> >(*this);
+ }
+
+ unique_lock& operator=(detail::thread_move_t<unique_lock<Mutex> > other)
+ {
+ unique_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+ unique_lock& operator=(detail::thread_move_t<upgrade_lock<Mutex> > other)
+ {
+ unique_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+ void swap(unique_lock& other)
+ {
+ std::swap(m,other.m);
+ std::swap(is_locked,other.is_locked);
+ }
+ void swap(detail::thread_move_t<unique_lock<Mutex> > other)
+ {
+ std::swap(m,other->m);
+ std::swap(is_locked,other->is_locked);
+ }
+#endif
+
+ ~unique_lock()
+ {
+ if(owns_lock())
+ {
+ m->unlock();
+ }
+ }
+ void lock()
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ m->lock();
+ is_locked=true;
+ }
+ bool try_lock()
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ is_locked=m->try_lock();
+ return is_locked;
+ }
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const& relative_time)
+ {
+ is_locked=m->timed_lock(relative_time);
+ return is_locked;
+ }
+
+ bool timed_lock(::boost::system_time const& absolute_time)
+ {
+ is_locked=m->timed_lock(absolute_time);
+ return is_locked;
+ }
+ bool timed_lock(::boost::xtime const& absolute_time)
+ {
+ is_locked=m->timed_lock(absolute_time);
+ return is_locked;
+ }
+ void unlock()
+ {
+ if(!owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ m->unlock();
+ is_locked=false;
+ }
+
+ typedef void (unique_lock::*bool_type)();
+ operator bool_type() const
+ {
+ return is_locked?&unique_lock::lock:0;
+ }
+ bool operator!() const
+ {
+ return !owns_lock();
+ }
+ bool owns_lock() const
+ {
+ return is_locked;
+ }
+
+ Mutex* mutex() const
+ {
+ return m;
+ }
+
+ Mutex* release()
+ {
+ Mutex* const res=m;
+ m=0;
+ is_locked=false;
+ return res;
+ }
+
+ friend class shared_lock<Mutex>;
+ friend class upgrade_lock<Mutex>;
+ };
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename Mutex>
+ void swap(unique_lock<Mutex>&& lhs,unique_lock<Mutex>&& rhs)
+ {
+ lhs.swap(rhs);
+ }
+#else
+ template<typename Mutex>
+ void swap(unique_lock<Mutex>& lhs,unique_lock<Mutex>& rhs)
+ {
+ lhs.swap(rhs);
+ }
+#endif
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename Mutex>
+ inline unique_lock<Mutex>&& move(unique_lock<Mutex>&& ul)
+ {
+ return ul;
+ }
+#endif
+
+ template<typename Mutex>
+ class shared_lock
+ {
+ protected:
+ Mutex* m;
+ bool is_locked;
+ private:
+ explicit shared_lock(shared_lock&);
+ shared_lock& operator=(shared_lock&);
+ public:
+ shared_lock():
+ m(0),is_locked(false)
+ {}
+
+ explicit shared_lock(Mutex& m_):
+ m(&m_),is_locked(false)
+ {
+ lock();
+ }
+ shared_lock(Mutex& m_,adopt_lock_t):
+ m(&m_),is_locked(true)
+ {}
+ shared_lock(Mutex& m_,defer_lock_t):
+ m(&m_),is_locked(false)
+ {}
+ shared_lock(Mutex& m_,try_to_lock_t):
+ m(&m_),is_locked(false)
+ {
+ try_lock();
+ }
+ shared_lock(Mutex& m_,system_time const& target_time):
+ m(&m_),is_locked(false)
+ {
+ timed_lock(target_time);
+ }
+
+ shared_lock(detail::thread_move_t<shared_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ other->is_locked=false;
+ other->m=0;
+ }
+
+ shared_lock(detail::thread_move_t<unique_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ if(is_locked)
+ {
+ m->unlock_and_lock_shared();
+ }
+ other->is_locked=false;
+ other->m=0;
+ }
+
+ shared_lock(detail::thread_move_t<upgrade_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ if(is_locked)
+ {
+ m->unlock_upgrade_and_lock_shared();
+ }
+ other->is_locked=false;
+ other->m=0;
+ }
+
+ operator detail::thread_move_t<shared_lock<Mutex> >()
+ {
+ return move();
+ }
+
+ detail::thread_move_t<shared_lock<Mutex> > move()
+ {
+ return detail::thread_move_t<shared_lock<Mutex> >(*this);
+ }
+
+
+ shared_lock& operator=(detail::thread_move_t<shared_lock<Mutex> > other)
+ {
+ shared_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+ shared_lock& operator=(detail::thread_move_t<unique_lock<Mutex> > other)
+ {
+ shared_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+ shared_lock& operator=(detail::thread_move_t<upgrade_lock<Mutex> > other)
+ {
+ shared_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ void swap(shared_lock&& other)
+ {
+ std::swap(m,other.m);
+ std::swap(is_locked,other.is_locked);
+ }
+#else
+ void swap(shared_lock& other)
+ {
+ std::swap(m,other.m);
+ std::swap(is_locked,other.is_locked);
+ }
+ void swap(boost::detail::thread_move_t<shared_lock<Mutex> > other)
+ {
+ std::swap(m,other->m);
+ std::swap(is_locked,other->is_locked);
+ }
+#endif
+
+ Mutex* mutex() const
+ {
+ return m;
+ }
+
+ ~shared_lock()
+ {
+ if(owns_lock())
+ {
+ m->unlock_shared();
+ }
+ }
+ void lock()
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ m->lock_shared();
+ is_locked=true;
+ }
+ bool try_lock()
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ is_locked=m->try_lock_shared();
+ return is_locked;
+ }
+ bool timed_lock(boost::system_time const& target_time)
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ is_locked=m->timed_lock_shared(target_time);
+ return is_locked;
+ }
+ template<typename Duration>
+ bool timed_lock(Duration const& target_time)
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ is_locked=m->timed_lock_shared(target_time);
+ return is_locked;
+ }
+ void unlock()
+ {
+ if(!owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ m->unlock_shared();
+ is_locked=false;
+ }
+
+ typedef void (shared_lock<Mutex>::*bool_type)();
+ operator bool_type() const
+ {
+ return is_locked?&shared_lock::lock:0;
+ }
+ bool operator!() const
+ {
+ return !owns_lock();
+ }
+ bool owns_lock() const
+ {
+ return is_locked;
+ }
+
+ };
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename Mutex>
+ void swap(shared_lock<Mutex>&& lhs,shared_lock<Mutex>&& rhs)
+ {
+ lhs.swap(rhs);
+ }
+#else
+ template<typename Mutex>
+ void swap(shared_lock<Mutex>& lhs,shared_lock<Mutex>& rhs)
+ {
+ lhs.swap(rhs);
+ }
+#endif
+
+ template<typename Mutex>
+ class upgrade_lock
+ {
+ protected:
+ Mutex* m;
+ bool is_locked;
+ private:
+ explicit upgrade_lock(upgrade_lock&);
+ upgrade_lock& operator=(upgrade_lock&);
+ public:
+ upgrade_lock():
+ m(0),is_locked(false)
+ {}
+
+ explicit upgrade_lock(Mutex& m_):
+ m(&m_),is_locked(false)
+ {
+ lock();
+ }
+ upgrade_lock(Mutex& m_,adopt_lock_t):
+ m(&m_),is_locked(true)
+ {}
+ upgrade_lock(Mutex& m_,defer_lock_t):
+ m(&m_),is_locked(false)
+ {}
+ upgrade_lock(Mutex& m_,try_to_lock_t):
+ m(&m_),is_locked(false)
+ {
+ try_lock();
+ }
+ upgrade_lock(detail::thread_move_t<upgrade_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ other->is_locked=false;
+ other->m=0;
+ }
+
+ upgrade_lock(detail::thread_move_t<unique_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ if(is_locked)
+ {
+ m->unlock_and_lock_upgrade();
+ }
+ other->is_locked=false;
+ other->m=0;
+ }
+
+ operator detail::thread_move_t<upgrade_lock<Mutex> >()
+ {
+ return move();
+ }
+
+ detail::thread_move_t<upgrade_lock<Mutex> > move()
+ {
+ return detail::thread_move_t<upgrade_lock<Mutex> >(*this);
+ }
+
+
+ upgrade_lock& operator=(detail::thread_move_t<upgrade_lock<Mutex> > other)
+ {
+ upgrade_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+ upgrade_lock& operator=(detail::thread_move_t<unique_lock<Mutex> > other)
+ {
+ upgrade_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+
+ void swap(upgrade_lock& other)
+ {
+ std::swap(m,other.m);
+ std::swap(is_locked,other.is_locked);
+ }
+
+ ~upgrade_lock()
+ {
+ if(owns_lock())
+ {
+ m->unlock_upgrade();
+ }
+ }
+ void lock()
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ m->lock_upgrade();
+ is_locked=true;
+ }
+ bool try_lock()
+ {
+ if(owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ is_locked=m->try_lock_upgrade();
+ return is_locked;
+ }
+ void unlock()
+ {
+ if(!owns_lock())
+ {
+ throw boost::lock_error();
+ }
+ m->unlock_upgrade();
+ is_locked=false;
+ }
+
+ typedef void (upgrade_lock::*bool_type)();
+ operator bool_type() const
+ {
+ return is_locked?&upgrade_lock::lock:0;
+ }
+ bool operator!() const
+ {
+ return !owns_lock();
+ }
+ bool owns_lock() const
+ {
+ return is_locked;
+ }
+ friend class shared_lock<Mutex>;
+ friend class unique_lock<Mutex>;
+ };
+
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename Mutex>
+ unique_lock<Mutex>::unique_lock(upgrade_lock<Mutex>&& other):
+ m(other.m),is_locked(other.is_locked)
+ {
+ other.is_locked=false;
+ if(is_locked)
+ {
+ m.unlock_upgrade_and_lock();
+ }
+ }
+#else
+ template<typename Mutex>
+ unique_lock<Mutex>::unique_lock(detail::thread_move_t<upgrade_lock<Mutex> > other):
+ m(other->m),is_locked(other->is_locked)
+ {
+ other->is_locked=false;
+ if(is_locked)
+ {
+ m->unlock_upgrade_and_lock();
+ }
+ }
+#endif
+ template <class Mutex>
+ class upgrade_to_unique_lock
+ {
+ private:
+ upgrade_lock<Mutex>* source;
+ unique_lock<Mutex> exclusive;
+
+ explicit upgrade_to_unique_lock(upgrade_to_unique_lock&);
+ upgrade_to_unique_lock& operator=(upgrade_to_unique_lock&);
+ public:
+ explicit upgrade_to_unique_lock(upgrade_lock<Mutex>& m_):
+ source(&m_),exclusive(move(*source))
+ {}
+ ~upgrade_to_unique_lock()
+ {
+ if(source)
+ {
+ *source=move(exclusive);
+ }
+ }
+
+ upgrade_to_unique_lock(detail::thread_move_t<upgrade_to_unique_lock<Mutex> > other):
+ source(other->source),exclusive(move(other->exclusive))
+ {
+ other->source=0;
+ }
+
+ upgrade_to_unique_lock& operator=(detail::thread_move_t<upgrade_to_unique_lock<Mutex> > other)
+ {
+ upgrade_to_unique_lock temp(other);
+ swap(temp);
+ return *this;
+ }
+ void swap(upgrade_to_unique_lock& other)
+ {
+ std::swap(source,other.source);
+ exclusive.swap(other.exclusive);
+ }
+ typedef void (upgrade_to_unique_lock::*bool_type)(upgrade_to_unique_lock&);
+ operator bool_type() const
+ {
+ return exclusive.owns_lock()?&upgrade_to_unique_lock::swap:0;
+ }
+ bool operator!() const
+ {
+ return !owns_lock();
+ }
+ bool owns_lock() const
+ {
+ return exclusive.owns_lock();
+ }
+ };
+
+ namespace detail
+ {
+ template<typename Mutex>
+ class try_lock_wrapper:
+ private unique_lock<Mutex>
+ {
+ typedef unique_lock<Mutex> base;
+ public:
+ try_lock_wrapper()
+ {}
+
+ explicit try_lock_wrapper(Mutex& m):
+ base(m,try_to_lock)
+ {}
+
+ try_lock_wrapper(Mutex& m_,adopt_lock_t):
+ base(m_,adopt_lock)
+ {}
+ try_lock_wrapper(Mutex& m_,defer_lock_t):
+ base(m_,defer_lock)
+ {}
+ try_lock_wrapper(Mutex& m_,try_to_lock_t):
+ base(m_,try_to_lock)
+ {}
+ try_lock_wrapper(detail::thread_move_t<try_lock_wrapper<Mutex> > other):
+ base(detail::thread_move_t<base>(*other))
+ {}
+
+ operator detail::thread_move_t<try_lock_wrapper<Mutex> >()
+ {
+ return move();
+ }
+
+ detail::thread_move_t<try_lock_wrapper<Mutex> > move()
+ {
+ return detail::thread_move_t<try_lock_wrapper<Mutex> >(*this);
+ }
+
+ try_lock_wrapper& operator=(detail::thread_move_t<try_lock_wrapper<Mutex> > other)
+ {
+ try_lock_wrapper temp(other);
+ swap(temp);
+ return *this;
+ }
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ void swap(try_lock_wrapper&& other)
+ {
+ base::swap(other);
+ }
+#else
+ void swap(try_lock_wrapper& other)
+ {
+ base::swap(other);
+ }
+ void swap(detail::thread_move_t<try_lock_wrapper<Mutex> > other)
+ {
+ base::swap(*other);
+ }
+#endif
+
+ void lock()
+ {
+ base::lock();
+ }
+ bool try_lock()
+ {
+ return base::try_lock();
+ }
+ void unlock()
+ {
+ base::unlock();
+ }
+ bool owns_lock() const
+ {
+ return base::owns_lock();
+ }
+ Mutex* mutex() const
+ {
+ return base::mutex();
+ }
+ Mutex* release()
+ {
+ return base::release();
+ }
+ bool operator!() const
+ {
+ return !this->owns_lock();
+ }
+
+ typedef typename base::bool_type bool_type;
+ operator bool_type() const
+ {
+ return base::operator bool_type();
+ }
+ };
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename Mutex>
+ void swap(try_lock_wrapper<Mutex>&& lhs,try_lock_wrapper<Mutex>&& rhs)
+ {
+ lhs.swap(rhs);
+ }
+#else
+ template<typename Mutex>
+ void swap(try_lock_wrapper<Mutex>& lhs,try_lock_wrapper<Mutex>& rhs)
+ {
+ lhs.swap(rhs);
+ }
+#endif
+
+ template<typename MutexType1,typename MutexType2>
+ unsigned try_lock_internal(MutexType1& m1,MutexType2& m2)
+ {
+ boost::unique_lock<MutexType1> l1(m1,boost::try_to_lock);
+ if(!l1)
+ {
+ return 1;
+ }
+ if(!m2.try_lock())
+ {
+ return 2;
+ }
+ l1.release();
+ return 0;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3>
+ unsigned try_lock_internal(MutexType1& m1,MutexType2& m2,MutexType3& m3)
+ {
+ boost::unique_lock<MutexType1> l1(m1,boost::try_to_lock);
+ if(!l1)
+ {
+ return 1;
+ }
+ if(unsigned const failed_lock=try_lock_internal(m2,m3))
+ {
+ return failed_lock+1;
+ }
+ l1.release();
+ return 0;
+ }
+
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,
+ typename MutexType4>
+ unsigned try_lock_internal(MutexType1& m1,MutexType2& m2,MutexType3& m3,
+ MutexType4& m4)
+ {
+ boost::unique_lock<MutexType1> l1(m1,boost::try_to_lock);
+ if(!l1)
+ {
+ return 1;
+ }
+ if(unsigned const failed_lock=try_lock_internal(m2,m3,m4))
+ {
+ return failed_lock+1;
+ }
+ l1.release();
+ return 0;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,
+ typename MutexType4,typename MutexType5>
+ unsigned try_lock_internal(MutexType1& m1,MutexType2& m2,MutexType3& m3,
+ MutexType4& m4,MutexType5& m5)
+ {
+ boost::unique_lock<MutexType1> l1(m1,boost::try_to_lock);
+ if(!l1)
+ {
+ return 1;
+ }
+ if(unsigned const failed_lock=try_lock_internal(m2,m3,m4,m5))
+ {
+ return failed_lock+1;
+ }
+ l1.release();
+ return 0;
+ }
+
+
+ template<typename MutexType1,typename MutexType2>
+ unsigned lock_helper(MutexType1& m1,MutexType2& m2)
+ {
+ boost::unique_lock<MutexType1> l1(m1);
+ if(!m2.try_lock())
+ {
+ return 1;
+ }
+ l1.release();
+ return 0;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3>
+ unsigned lock_helper(MutexType1& m1,MutexType2& m2,MutexType3& m3)
+ {
+ boost::unique_lock<MutexType1> l1(m1);
+ if(unsigned const failed_lock=try_lock_internal(m2,m3))
+ {
+ return failed_lock;
+ }
+ l1.release();
+ return 0;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,
+ typename MutexType4>
+ unsigned lock_helper(MutexType1& m1,MutexType2& m2,MutexType3& m3,
+ MutexType4& m4)
+ {
+ boost::unique_lock<MutexType1> l1(m1);
+ if(unsigned const failed_lock=try_lock_internal(m2,m3,m4))
+ {
+ return failed_lock;
+ }
+ l1.release();
+ return 0;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,
+ typename MutexType4,typename MutexType5>
+ unsigned lock_helper(MutexType1& m1,MutexType2& m2,MutexType3& m3,
+ MutexType4& m4,MutexType5& m5)
+ {
+ boost::unique_lock<MutexType1> l1(m1);
+ if(unsigned const failed_lock=try_lock_internal(m2,m3,m4,m5))
+ {
+ return failed_lock;
+ }
+ l1.release();
+ return 0;
+ }
+ }
+
+ namespace detail
+ {
+ template<bool x>
+ struct is_mutex_type_wrapper
+ {};
+
+ template<typename MutexType1,typename MutexType2>
+ void lock_impl(MutexType1& m1,MutexType2& m2,is_mutex_type_wrapper<true>)
+ {
+ unsigned const lock_count=2;
+ unsigned lock_first=0;
+ while(true)
+ {
+ switch(lock_first)
+ {
+ case 0:
+ lock_first=detail::lock_helper(m1,m2);
+ if(!lock_first)
+ return;
+ break;
+ case 1:
+ lock_first=detail::lock_helper(m2,m1);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+1)%lock_count;
+ break;
+ }
+ }
+ }
+
+ template<typename Iterator>
+ void lock_impl(Iterator begin,Iterator end,is_mutex_type_wrapper<false>);
+ }
+
+
+ template<typename MutexType1,typename MutexType2>
+ void lock(MutexType1& m1,MutexType2& m2)
+ {
+ detail::lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ void lock(const MutexType1& m1,MutexType2& m2)
+ {
+ detail::lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ void lock(MutexType1& m1,const MutexType2& m2)
+ {
+ detail::lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ void lock(const MutexType1& m1,const MutexType2& m2)
+ {
+ detail::lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3>
+ void lock(MutexType1& m1,MutexType2& m2,MutexType3& m3)
+ {
+ unsigned const lock_count=3;
+ unsigned lock_first=0;
+ while(true)
+ {
+ switch(lock_first)
+ {
+ case 0:
+ lock_first=detail::lock_helper(m1,m2,m3);
+ if(!lock_first)
+ return;
+ break;
+ case 1:
+ lock_first=detail::lock_helper(m2,m3,m1);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+1)%lock_count;
+ break;
+ case 2:
+ lock_first=detail::lock_helper(m3,m1,m2);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+2)%lock_count;
+ break;
+ }
+ }
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,
+ typename MutexType4>
+ void lock(MutexType1& m1,MutexType2& m2,MutexType3& m3,
+ MutexType4& m4)
+ {
+ unsigned const lock_count=4;
+ unsigned lock_first=0;
+ while(true)
+ {
+ switch(lock_first)
+ {
+ case 0:
+ lock_first=detail::lock_helper(m1,m2,m3,m4);
+ if(!lock_first)
+ return;
+ break;
+ case 1:
+ lock_first=detail::lock_helper(m2,m3,m4,m1);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+1)%lock_count;
+ break;
+ case 2:
+ lock_first=detail::lock_helper(m3,m4,m1,m2);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+2)%lock_count;
+ break;
+ case 3:
+ lock_first=detail::lock_helper(m4,m1,m2,m3);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+3)%lock_count;
+ break;
+ }
+ }
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,
+ typename MutexType4,typename MutexType5>
+ void lock(MutexType1& m1,MutexType2& m2,MutexType3& m3,
+ MutexType4& m4,MutexType5& m5)
+ {
+ unsigned const lock_count=5;
+ unsigned lock_first=0;
+ while(true)
+ {
+ switch(lock_first)
+ {
+ case 0:
+ lock_first=detail::lock_helper(m1,m2,m3,m4,m5);
+ if(!lock_first)
+ return;
+ break;
+ case 1:
+ lock_first=detail::lock_helper(m2,m3,m4,m5,m1);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+1)%lock_count;
+ break;
+ case 2:
+ lock_first=detail::lock_helper(m3,m4,m5,m1,m2);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+2)%lock_count;
+ break;
+ case 3:
+ lock_first=detail::lock_helper(m4,m5,m1,m2,m3);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+3)%lock_count;
+ break;
+ case 4:
+ lock_first=detail::lock_helper(m5,m1,m2,m3,m4);
+ if(!lock_first)
+ return;
+ lock_first=(lock_first+4)%lock_count;
+ break;
+ }
+ }
+ }
+
+ namespace detail
+ {
+ template<typename Mutex,bool x=is_mutex_type<Mutex>::value>
+ struct try_lock_impl_return
+ {
+ typedef int type;
+ };
+
+ template<typename Iterator>
+ struct try_lock_impl_return<Iterator,false>
+ {
+ typedef Iterator type;
+ };
+
+ template<typename MutexType1,typename MutexType2>
+ int try_lock_impl(MutexType1& m1,MutexType2& m2,is_mutex_type_wrapper<true>)
+ {
+ return ((int)detail::try_lock_internal(m1,m2))-1;
+ }
+
+ template<typename Iterator>
+ Iterator try_lock_impl(Iterator begin,Iterator end,is_mutex_type_wrapper<false>);
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ typename detail::try_lock_impl_return<MutexType1>::type try_lock(MutexType1& m1,MutexType2& m2)
+ {
+ return detail::try_lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ typename detail::try_lock_impl_return<MutexType1>::type try_lock(const MutexType1& m1,MutexType2& m2)
+ {
+ return detail::try_lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ typename detail::try_lock_impl_return<MutexType1>::type try_lock(MutexType1& m1,const MutexType2& m2)
+ {
+ return detail::try_lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2>
+ typename detail::try_lock_impl_return<MutexType1>::type try_lock(const MutexType1& m1,const MutexType2& m2)
+ {
+ return detail::try_lock_impl(m1,m2,detail::is_mutex_type_wrapper<is_mutex_type<MutexType1>::value>());
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3>
+ int try_lock(MutexType1& m1,MutexType2& m2,MutexType3& m3)
+ {
+ return ((int)detail::try_lock_internal(m1,m2,m3))-1;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,typename MutexType4>
+ int try_lock(MutexType1& m1,MutexType2& m2,MutexType3& m3,MutexType4& m4)
+ {
+ return ((int)detail::try_lock_internal(m1,m2,m3,m4))-1;
+ }
+
+ template<typename MutexType1,typename MutexType2,typename MutexType3,typename MutexType4,typename MutexType5>
+ int try_lock(MutexType1& m1,MutexType2& m2,MutexType3& m3,MutexType4& m4,MutexType5& m5)
+ {
+ return ((int)detail::try_lock_internal(m1,m2,m3,m4,m5))-1;
+ }
+
+
+ namespace detail
+ {
+ template<typename Iterator>
+ struct range_lock_guard
+ {
+ Iterator begin;
+ Iterator end;
+
+ range_lock_guard(Iterator begin_,Iterator end_):
+ begin(begin_),end(end_)
+ {
+ lock(begin,end);
+ }
+
+ void release()
+ {
+ begin=end;
+ }
+
+ ~range_lock_guard()
+ {
+ for(;begin!=end;++begin)
+ {
+ begin->unlock();
+ }
+ }
+ };
+
+ template<typename Iterator>
+ Iterator try_lock_impl(Iterator begin,Iterator end,is_mutex_type_wrapper<false>)
+
+ {
+ if(begin==end)
+ {
+ return end;
+ }
+ typedef typename std::iterator_traits<Iterator>::value_type lock_type;
+ unique_lock<lock_type> guard(*begin,try_to_lock);
+
+ if(!guard.owns_lock())
+ {
+ return begin;
+ }
+ Iterator const failed=try_lock(++begin,end);
+ if(failed==end)
+ {
+ guard.release();
+ }
+
+ return failed;
+ }
+ }
+
+
+ namespace detail
+ {
+ template<typename Iterator>
+ void lock_impl(Iterator begin,Iterator end,is_mutex_type_wrapper<false>)
+ {
+ typedef typename std::iterator_traits<Iterator>::value_type lock_type;
+
+ if(begin==end)
+ {
+ return;
+ }
+ bool start_with_begin=true;
+ Iterator second=begin;
+ ++second;
+ Iterator next=second;
+
+ for(;;)
+ {
+ unique_lock<lock_type> begin_lock(*begin,defer_lock);
+ if(start_with_begin)
+ {
+ begin_lock.lock();
+ Iterator const failed_lock=try_lock(next,end);
+ if(failed_lock==end)
+ {
+ begin_lock.release();
+ return;
+ }
+ start_with_begin=false;
+ next=failed_lock;
+ }
+ else
+ {
+ detail::range_lock_guard<Iterator> guard(next,end);
+ if(begin_lock.try_lock())
+ {
+ Iterator const failed_lock=try_lock(second,next);
+ if(failed_lock==next)
+ {
+ begin_lock.release();
+ guard.release();
+ return;
+ }
+ start_with_begin=false;
+ next=failed_lock;
+ }
+ else
+ {
+ start_with_begin=true;
+ next=second;
+ }
+ }
+ }
+ }
+
+ }
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/mutex.hpp b/3rdParty/Boost/boost/thread/mutex.hpp
new file mode 100644
index 0000000..4669886
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/mutex.hpp
@@ -0,0 +1,21 @@
+#ifndef BOOST_THREAD_MUTEX_HPP
+#define BOOST_THREAD_MUTEX_HPP
+
+// mutex.hpp
+//
+// (C) Copyright 2007 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/mutex.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/mutex.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/once.hpp b/3rdParty/Boost/boost/thread/once.hpp
new file mode 100644
index 0000000..975304e
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/once.hpp
@@ -0,0 +1,33 @@
+#ifndef BOOST_THREAD_ONCE_HPP
+#define BOOST_THREAD_ONCE_HPP
+
+// once.hpp
+//
+// (C) Copyright 2006-7 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/once.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/once.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ inline void call_once(void (*func)(),once_flag& flag)
+ {
+ call_once(flag,func);
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/condition_variable.hpp b/3rdParty/Boost/boost/thread/pthread/condition_variable.hpp
new file mode 100644
index 0000000..8ec6ae7
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/condition_variable.hpp
@@ -0,0 +1,176 @@
+#ifndef BOOST_THREAD_CONDITION_VARIABLE_PTHREAD_HPP
+#define BOOST_THREAD_CONDITION_VARIABLE_PTHREAD_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007-8 Anthony Williams
+
+#include "timespec.hpp"
+#include "pthread_mutex_scoped_lock.hpp"
+#include "thread_data.hpp"
+#include "condition_variable_fwd.hpp"
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ inline void condition_variable::wait(unique_lock<mutex>& m)
+ {
+ detail::interruption_checker check_for_interruption(&cond);
+ BOOST_VERIFY(!pthread_cond_wait(&cond,m.mutex()->native_handle()));
+ }
+
+ inline bool condition_variable::timed_wait(unique_lock<mutex>& m,boost::system_time const& wait_until)
+ {
+ detail::interruption_checker check_for_interruption(&cond);
+ struct timespec const timeout=detail::get_timespec(wait_until);
+ int const cond_res=pthread_cond_timedwait(&cond,m.mutex()->native_handle(),&timeout);
+ if(cond_res==ETIMEDOUT)
+ {
+ return false;
+ }
+ BOOST_ASSERT(!cond_res);
+ return true;
+ }
+
+ inline void condition_variable::notify_one()
+ {
+ BOOST_VERIFY(!pthread_cond_signal(&cond));
+ }
+
+ inline void condition_variable::notify_all()
+ {
+ BOOST_VERIFY(!pthread_cond_broadcast(&cond));
+ }
+
+ class condition_variable_any
+ {
+ pthread_mutex_t internal_mutex;
+ pthread_cond_t cond;
+
+ condition_variable_any(condition_variable&);
+ condition_variable_any& operator=(condition_variable&);
+
+ public:
+ condition_variable_any()
+ {
+ int const res=pthread_mutex_init(&internal_mutex,NULL);
+ if(res)
+ {
+ throw thread_resource_error();
+ }
+ int const res2=pthread_cond_init(&cond,NULL);
+ if(res2)
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&internal_mutex));
+ throw thread_resource_error();
+ }
+ }
+ ~condition_variable_any()
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&internal_mutex));
+ BOOST_VERIFY(!pthread_cond_destroy(&cond));
+ }
+
+ template<typename lock_type>
+ void wait(lock_type& m)
+ {
+ int res=0;
+ {
+ detail::interruption_checker check_for_interruption(&cond);
+ {
+ boost::pthread::pthread_mutex_scoped_lock internal_lock(&internal_mutex);
+ m.unlock();
+ res=pthread_cond_wait(&cond,&internal_mutex);
+ }
+ m.lock();
+ }
+ if(res)
+ {
+ throw condition_error();
+ }
+ }
+
+ template<typename lock_type,typename predicate_type>
+ void wait(lock_type& m,predicate_type pred)
+ {
+ while(!pred()) wait(m);
+ }
+
+ template<typename lock_type>
+ bool timed_wait(lock_type& m,boost::system_time const& wait_until)
+ {
+ struct timespec const timeout=detail::get_timespec(wait_until);
+ int res=0;
+ {
+ detail::interruption_checker check_for_interruption(&cond);
+ {
+ boost::pthread::pthread_mutex_scoped_lock internal_lock(&internal_mutex);
+ m.unlock();
+ res=pthread_cond_timedwait(&cond,&internal_mutex,&timeout);
+ }
+ m.lock();
+ }
+ if(res==ETIMEDOUT)
+ {
+ return false;
+ }
+ if(res)
+ {
+ throw condition_error();
+ }
+ return true;
+ }
+ template<typename lock_type>
+ bool timed_wait(lock_type& m,xtime const& wait_until)
+ {
+ return timed_wait(m,system_time(wait_until));
+ }
+
+ template<typename lock_type,typename duration_type>
+ bool timed_wait(lock_type& m,duration_type const& wait_duration)
+ {
+ return timed_wait(m,get_system_time()+wait_duration);
+ }
+
+ template<typename lock_type,typename predicate_type>
+ bool timed_wait(lock_type& m,boost::system_time const& wait_until,predicate_type pred)
+ {
+ while (!pred())
+ {
+ if(!timed_wait(m, wait_until))
+ return pred();
+ }
+ return true;
+ }
+
+ template<typename lock_type,typename predicate_type>
+ bool timed_wait(lock_type& m,xtime const& wait_until,predicate_type pred)
+ {
+ return timed_wait(m,system_time(wait_until),pred);
+ }
+
+ template<typename lock_type,typename duration_type,typename predicate_type>
+ bool timed_wait(lock_type& m,duration_type const& wait_duration,predicate_type pred)
+ {
+ return timed_wait(m,get_system_time()+wait_duration,pred);
+ }
+
+ void notify_one()
+ {
+ boost::pthread::pthread_mutex_scoped_lock internal_lock(&internal_mutex);
+ BOOST_VERIFY(!pthread_cond_signal(&cond));
+ }
+
+ void notify_all()
+ {
+ boost::pthread::pthread_mutex_scoped_lock internal_lock(&internal_mutex);
+ BOOST_VERIFY(!pthread_cond_broadcast(&cond));
+ }
+ };
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/condition_variable_fwd.hpp b/3rdParty/Boost/boost/thread/pthread/condition_variable_fwd.hpp
new file mode 100644
index 0000000..4048cdf
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/condition_variable_fwd.hpp
@@ -0,0 +1,97 @@
+#ifndef BOOST_THREAD_PTHREAD_CONDITION_VARIABLE_FWD_HPP
+#define BOOST_THREAD_PTHREAD_CONDITION_VARIABLE_FWD_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007-8 Anthony Williams
+
+#include <boost/assert.hpp>
+#include <pthread.h>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/thread_time.hpp>
+#include <boost/thread/xtime.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class condition_variable
+ {
+ private:
+ pthread_cond_t cond;
+
+ condition_variable(condition_variable&);
+ condition_variable& operator=(condition_variable&);
+
+ public:
+ condition_variable()
+ {
+ int const res=pthread_cond_init(&cond,NULL);
+ if(res)
+ {
+ throw thread_resource_error();
+ }
+ }
+ ~condition_variable()
+ {
+ BOOST_VERIFY(!pthread_cond_destroy(&cond));
+ }
+
+ void wait(unique_lock<mutex>& m);
+
+ template<typename predicate_type>
+ void wait(unique_lock<mutex>& m,predicate_type pred)
+ {
+ while(!pred()) wait(m);
+ }
+
+ bool timed_wait(unique_lock<mutex>& m,boost::system_time const& wait_until);
+ bool timed_wait(unique_lock<mutex>& m,xtime const& wait_until)
+ {
+ return timed_wait(m,system_time(wait_until));
+ }
+
+ template<typename duration_type>
+ bool timed_wait(unique_lock<mutex>& m,duration_type const& wait_duration)
+ {
+ return timed_wait(m,get_system_time()+wait_duration);
+ }
+
+ template<typename predicate_type>
+ bool timed_wait(unique_lock<mutex>& m,boost::system_time const& wait_until,predicate_type pred)
+ {
+ while (!pred())
+ {
+ if(!timed_wait(m, wait_until))
+ return pred();
+ }
+ return true;
+ }
+
+ template<typename predicate_type>
+ bool timed_wait(unique_lock<mutex>& m,xtime const& wait_until,predicate_type pred)
+ {
+ return timed_wait(m,system_time(wait_until),pred);
+ }
+
+ template<typename duration_type,typename predicate_type>
+ bool timed_wait(unique_lock<mutex>& m,duration_type const& wait_duration,predicate_type pred)
+ {
+ return timed_wait(m,get_system_time()+wait_duration,pred);
+ }
+
+ typedef pthread_cond_t* native_handle_type;
+ native_handle_type native_handle()
+ {
+ return &cond;
+ }
+
+ void notify_one();
+ void notify_all();
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/mutex.hpp b/3rdParty/Boost/boost/thread/pthread/mutex.hpp
new file mode 100644
index 0000000..51d62ae
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/mutex.hpp
@@ -0,0 +1,210 @@
+#ifndef BOOST_THREAD_PTHREAD_MUTEX_HPP
+#define BOOST_THREAD_PTHREAD_MUTEX_HPP
+// (C) Copyright 2007-8 Anthony Williams
+// Distributed under the 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 <pthread.h>
+#include <boost/utility.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/thread_time.hpp>
+#include <boost/thread/xtime.hpp>
+#include <boost/assert.hpp>
+#include <errno.h>
+#include "timespec.hpp"
+#include "pthread_mutex_scoped_lock.hpp"
+
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+#define BOOST_PTHREAD_HAS_TIMEDLOCK
+#endif
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class mutex:
+ boost::noncopyable
+ {
+ private:
+ pthread_mutex_t m;
+ public:
+ mutex()
+ {
+ int const res=pthread_mutex_init(&m,NULL);
+ if(res)
+ {
+ throw thread_resource_error();
+ }
+ }
+ ~mutex()
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&m));
+ }
+
+ void lock()
+ {
+ BOOST_VERIFY(!pthread_mutex_lock(&m));
+ }
+
+ void unlock()
+ {
+ BOOST_VERIFY(!pthread_mutex_unlock(&m));
+ }
+
+ bool try_lock()
+ {
+ int const res=pthread_mutex_trylock(&m);
+ BOOST_ASSERT(!res || res==EBUSY);
+ return !res;
+ }
+
+ typedef pthread_mutex_t* native_handle_type;
+ native_handle_type native_handle()
+ {
+ return &m;
+ }
+
+ typedef unique_lock<mutex> scoped_lock;
+ typedef detail::try_lock_wrapper<mutex> scoped_try_lock;
+ };
+
+ typedef mutex try_mutex;
+
+ class timed_mutex:
+ boost::noncopyable
+ {
+ private:
+ pthread_mutex_t m;
+#ifndef BOOST_PTHREAD_HAS_TIMEDLOCK
+ pthread_cond_t cond;
+ bool is_locked;
+#endif
+ public:
+ timed_mutex()
+ {
+ int const res=pthread_mutex_init(&m,NULL);
+ if(res)
+ {
+ throw thread_resource_error();
+ }
+#ifndef BOOST_PTHREAD_HAS_TIMEDLOCK
+ int const res2=pthread_cond_init(&cond,NULL);
+ if(res2)
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&m));
+ throw thread_resource_error();
+ }
+ is_locked=false;
+#endif
+ }
+ ~timed_mutex()
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&m));
+#ifndef BOOST_PTHREAD_HAS_TIMEDLOCK
+ BOOST_VERIFY(!pthread_cond_destroy(&cond));
+#endif
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+ bool timed_lock(boost::xtime const & absolute_time)
+ {
+ return timed_lock(system_time(absolute_time));
+ }
+
+#ifdef BOOST_PTHREAD_HAS_TIMEDLOCK
+ void lock()
+ {
+ BOOST_VERIFY(!pthread_mutex_lock(&m));
+ }
+
+ void unlock()
+ {
+ BOOST_VERIFY(!pthread_mutex_unlock(&m));
+ }
+
+ bool try_lock()
+ {
+ int const res=pthread_mutex_trylock(&m);
+ BOOST_ASSERT(!res || res==EBUSY);
+ return !res;
+ }
+ bool timed_lock(system_time const & abs_time)
+ {
+ struct timespec const timeout=detail::get_timespec(abs_time);
+ int const res=pthread_mutex_timedlock(&m,&timeout);
+ BOOST_ASSERT(!res || res==ETIMEDOUT);
+ return !res;
+ }
+
+ typedef pthread_mutex_t* native_handle_type;
+ native_handle_type native_handle()
+ {
+ return &m;
+ }
+
+#else
+ void lock()
+ {
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ while(is_locked)
+ {
+ BOOST_VERIFY(!pthread_cond_wait(&cond,&m));
+ }
+ is_locked=true;
+ }
+
+ void unlock()
+ {
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ is_locked=false;
+ BOOST_VERIFY(!pthread_cond_signal(&cond));
+ }
+
+ bool try_lock()
+ {
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ if(is_locked)
+ {
+ return false;
+ }
+ is_locked=true;
+ return true;
+ }
+
+ bool timed_lock(system_time const & abs_time)
+ {
+ struct timespec const timeout=detail::get_timespec(abs_time);
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ while(is_locked)
+ {
+ int const cond_res=pthread_cond_timedwait(&cond,&m,&timeout);
+ if(cond_res==ETIMEDOUT)
+ {
+ return false;
+ }
+ BOOST_ASSERT(!cond_res);
+ }
+ is_locked=true;
+ return true;
+ }
+#endif
+
+ typedef unique_lock<timed_mutex> scoped_timed_lock;
+ typedef detail::try_lock_wrapper<timed_mutex> scoped_try_lock;
+ typedef scoped_timed_lock scoped_lock;
+ };
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/once.hpp b/3rdParty/Boost/boost/thread/pthread/once.hpp
new file mode 100644
index 0000000..f278a57
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/once.hpp
@@ -0,0 +1,90 @@
+#ifndef BOOST_THREAD_PTHREAD_ONCE_HPP
+#define BOOST_THREAD_PTHREAD_ONCE_HPP
+
+// once.hpp
+//
+// (C) Copyright 2007-8 Anthony Williams
+//
+// Distributed under the 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/thread/detail/config.hpp>
+
+#include <pthread.h>
+#include <boost/assert.hpp>
+#include "pthread_mutex_scoped_lock.hpp"
+#include <boost/thread/pthread/pthread_mutex_scoped_lock.hpp>
+#include <boost/cstdint.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+
+ struct once_flag
+ {
+ boost::uintmax_t epoch;
+ };
+
+ namespace detail
+ {
+ BOOST_THREAD_DECL boost::uintmax_t& get_once_per_thread_epoch();
+ BOOST_THREAD_DECL extern boost::uintmax_t once_global_epoch;
+ BOOST_THREAD_DECL extern pthread_mutex_t once_epoch_mutex;
+ BOOST_THREAD_DECL extern pthread_cond_t once_epoch_cv;
+ }
+
+#define BOOST_ONCE_INITIAL_FLAG_VALUE 0
+#define BOOST_ONCE_INIT {BOOST_ONCE_INITIAL_FLAG_VALUE}
+
+
+ // Based on Mike Burrows fast_pthread_once algorithm as described in
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2444.html
+ template<typename Function>
+ void call_once(once_flag& flag,Function f)
+ {
+ static boost::uintmax_t const uninitialized_flag=BOOST_ONCE_INITIAL_FLAG_VALUE;
+ static boost::uintmax_t const being_initialized=uninitialized_flag+1;
+ boost::uintmax_t const epoch=flag.epoch;
+ boost::uintmax_t& this_thread_epoch=detail::get_once_per_thread_epoch();
+
+ if(epoch<this_thread_epoch)
+ {
+ pthread::pthread_mutex_scoped_lock lk(&detail::once_epoch_mutex);
+
+ while(flag.epoch<=being_initialized)
+ {
+ if(flag.epoch==uninitialized_flag)
+ {
+ flag.epoch=being_initialized;
+ try
+ {
+ pthread::pthread_mutex_scoped_unlock relocker(&detail::once_epoch_mutex);
+ f();
+ }
+ catch(...)
+ {
+ flag.epoch=uninitialized_flag;
+ BOOST_VERIFY(!pthread_cond_broadcast(&detail::once_epoch_cv));
+ throw;
+ }
+ flag.epoch=--detail::once_global_epoch;
+ BOOST_VERIFY(!pthread_cond_broadcast(&detail::once_epoch_cv));
+ }
+ else
+ {
+ while(flag.epoch==being_initialized)
+ {
+ BOOST_VERIFY(!pthread_cond_wait(&detail::once_epoch_cv,&detail::once_epoch_mutex));
+ }
+ }
+ }
+ this_thread_epoch=detail::once_global_epoch;
+ }
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/pthread_mutex_scoped_lock.hpp b/3rdParty/Boost/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
new file mode 100644
index 0000000..2407f91
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/pthread_mutex_scoped_lock.hpp
@@ -0,0 +1,54 @@
+#ifndef BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
+#define BOOST_PTHREAD_MUTEX_SCOPED_LOCK_HPP
+// (C) Copyright 2007-8 Anthony Williams
+//
+// Distributed under the 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 <pthread.h>
+#include <boost/assert.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace pthread
+ {
+ class pthread_mutex_scoped_lock
+ {
+ pthread_mutex_t* m;
+ public:
+ explicit pthread_mutex_scoped_lock(pthread_mutex_t* m_):
+ m(m_)
+ {
+ BOOST_VERIFY(!pthread_mutex_lock(m));
+ }
+ ~pthread_mutex_scoped_lock()
+ {
+ BOOST_VERIFY(!pthread_mutex_unlock(m));
+ }
+
+ };
+
+ class pthread_mutex_scoped_unlock
+ {
+ pthread_mutex_t* m;
+ public:
+ explicit pthread_mutex_scoped_unlock(pthread_mutex_t* m_):
+ m(m_)
+ {
+ BOOST_VERIFY(!pthread_mutex_unlock(m));
+ }
+ ~pthread_mutex_scoped_unlock()
+ {
+ BOOST_VERIFY(!pthread_mutex_lock(m));
+ }
+
+ };
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/recursive_mutex.hpp b/3rdParty/Boost/boost/thread/pthread/recursive_mutex.hpp
new file mode 100644
index 0000000..f3f7bf1
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/recursive_mutex.hpp
@@ -0,0 +1,266 @@
+#ifndef BOOST_THREAD_PTHREAD_RECURSIVE_MUTEX_HPP
+#define BOOST_THREAD_PTHREAD_RECURSIVE_MUTEX_HPP
+// (C) Copyright 2007-8 Anthony Williams
+// Distributed under the 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 <pthread.h>
+#include <boost/utility.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/thread/locks.hpp>
+#include <boost/thread/thread_time.hpp>
+#include <boost/assert.hpp>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+#include <boost/date_time/posix_time/conversion.hpp>
+#include <errno.h>
+#include "timespec.hpp"
+#include "pthread_mutex_scoped_lock.hpp"
+
+#ifdef _POSIX_TIMEOUTS
+#if _POSIX_TIMEOUTS >= 0
+#define BOOST_PTHREAD_HAS_TIMEDLOCK
+#endif
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class recursive_mutex:
+ boost::noncopyable
+ {
+ private:
+ pthread_mutex_t m;
+ public:
+ recursive_mutex()
+ {
+ pthread_mutexattr_t attr;
+
+ int const init_attr_res=pthread_mutexattr_init(&attr);
+ if(init_attr_res)
+ {
+ throw thread_resource_error();
+ }
+ int const set_attr_res=pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+ if(set_attr_res)
+ {
+ throw thread_resource_error();
+ }
+
+ int const res=pthread_mutex_init(&m,&attr);
+ if(res)
+ {
+ throw thread_resource_error();
+ }
+ BOOST_VERIFY(!pthread_mutexattr_destroy(&attr));
+ }
+ ~recursive_mutex()
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&m));
+ }
+
+ void lock()
+ {
+ BOOST_VERIFY(!pthread_mutex_lock(&m));
+ }
+
+ void unlock()
+ {
+ BOOST_VERIFY(!pthread_mutex_unlock(&m));
+ }
+
+ bool try_lock()
+ {
+ int const res=pthread_mutex_trylock(&m);
+ BOOST_ASSERT(!res || res==EBUSY);
+ return !res;
+ }
+
+ typedef pthread_mutex_t* native_handle_type;
+ native_handle_type native_handle()
+ {
+ return &m;
+ }
+
+ typedef unique_lock<recursive_mutex> scoped_lock;
+ typedef detail::try_lock_wrapper<recursive_mutex> scoped_try_lock;
+ };
+
+ typedef recursive_mutex recursive_try_mutex;
+
+ class recursive_timed_mutex:
+ boost::noncopyable
+ {
+ private:
+ pthread_mutex_t m;
+#ifndef BOOST_PTHREAD_HAS_TIMEDLOCK
+ pthread_cond_t cond;
+ bool is_locked;
+ pthread_t owner;
+ unsigned count;
+#endif
+ public:
+ recursive_timed_mutex()
+ {
+#ifdef BOOST_PTHREAD_HAS_TIMEDLOCK
+ pthread_mutexattr_t attr;
+
+ int const init_attr_res=pthread_mutexattr_init(&attr);
+ if(init_attr_res)
+ {
+ throw thread_resource_error();
+ }
+ int const set_attr_res=pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
+ if(set_attr_res)
+ {
+ throw thread_resource_error();
+ }
+
+ int const res=pthread_mutex_init(&m,&attr);
+ if(res)
+ {
+ BOOST_VERIFY(!pthread_mutexattr_destroy(&attr));
+ throw thread_resource_error();
+ }
+ BOOST_VERIFY(!pthread_mutexattr_destroy(&attr));
+#else
+ int const res=pthread_mutex_init(&m,NULL);
+ if(res)
+ {
+ throw thread_resource_error();
+ }
+ int const res2=pthread_cond_init(&cond,NULL);
+ if(res2)
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&m));
+ throw thread_resource_error();
+ }
+ is_locked=false;
+ count=0;
+#endif
+ }
+ ~recursive_timed_mutex()
+ {
+ BOOST_VERIFY(!pthread_mutex_destroy(&m));
+#ifndef BOOST_PTHREAD_HAS_TIMEDLOCK
+ BOOST_VERIFY(!pthread_cond_destroy(&cond));
+#endif
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
+#ifdef BOOST_PTHREAD_HAS_TIMEDLOCK
+ void lock()
+ {
+ BOOST_VERIFY(!pthread_mutex_lock(&m));
+ }
+
+ void unlock()
+ {
+ BOOST_VERIFY(!pthread_mutex_unlock(&m));
+ }
+
+ bool try_lock()
+ {
+ int const res=pthread_mutex_trylock(&m);
+ BOOST_ASSERT(!res || res==EBUSY);
+ return !res;
+ }
+ bool timed_lock(system_time const & abs_time)
+ {
+ struct timespec const timeout=detail::get_timespec(abs_time);
+ int const res=pthread_mutex_timedlock(&m,&timeout);
+ BOOST_ASSERT(!res || res==ETIMEDOUT);
+ return !res;
+ }
+
+ typedef pthread_mutex_t* native_handle_type;
+ native_handle_type native_handle()
+ {
+ return &m;
+ }
+
+#else
+ void lock()
+ {
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ if(is_locked && pthread_equal(owner,pthread_self()))
+ {
+ ++count;
+ return;
+ }
+
+ while(is_locked)
+ {
+ BOOST_VERIFY(!pthread_cond_wait(&cond,&m));
+ }
+ is_locked=true;
+ ++count;
+ owner=pthread_self();
+ }
+
+ void unlock()
+ {
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ if(!--count)
+ {
+ is_locked=false;
+ }
+ BOOST_VERIFY(!pthread_cond_signal(&cond));
+ }
+
+ bool try_lock()
+ {
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ if(is_locked && !pthread_equal(owner,pthread_self()))
+ {
+ return false;
+ }
+ is_locked=true;
+ ++count;
+ owner=pthread_self();
+ return true;
+ }
+
+ bool timed_lock(system_time const & abs_time)
+ {
+ struct timespec const timeout=detail::get_timespec(abs_time);
+ boost::pthread::pthread_mutex_scoped_lock const local_lock(&m);
+ if(is_locked && pthread_equal(owner,pthread_self()))
+ {
+ ++count;
+ return true;
+ }
+ while(is_locked)
+ {
+ int const cond_res=pthread_cond_timedwait(&cond,&m,&timeout);
+ if(cond_res==ETIMEDOUT)
+ {
+ return false;
+ }
+ BOOST_ASSERT(!cond_res);
+ }
+ is_locked=true;
+ ++count;
+ owner=pthread_self();
+ return true;
+ }
+#endif
+
+ typedef unique_lock<recursive_timed_mutex> scoped_timed_lock;
+ typedef detail::try_lock_wrapper<recursive_timed_mutex> scoped_try_lock;
+ typedef scoped_timed_lock scoped_lock;
+ };
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/shared_mutex.hpp b/3rdParty/Boost/boost/thread/pthread/shared_mutex.hpp
new file mode 100644
index 0000000..3ce4e23
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/shared_mutex.hpp
@@ -0,0 +1,303 @@
+#ifndef BOOST_THREAD_PTHREAD_SHARED_MUTEX_HPP
+#define BOOST_THREAD_PTHREAD_SHARED_MUTEX_HPP
+
+// (C) Copyright 2006-8 Anthony Williams
+//
+// Distributed under the 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/assert.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/condition_variable.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class shared_mutex
+ {
+ private:
+ struct state_data
+ {
+ unsigned shared_count;
+ bool exclusive;
+ bool upgrade;
+ bool exclusive_waiting_blocked;
+ };
+
+
+
+ state_data state;
+ boost::mutex state_change;
+ boost::condition_variable shared_cond;
+ boost::condition_variable exclusive_cond;
+ boost::condition_variable upgrade_cond;
+
+ void release_waiters()
+ {
+ exclusive_cond.notify_one();
+ shared_cond.notify_all();
+ }
+
+
+ public:
+ shared_mutex()
+ {
+ state_data state_={0,0,0,0};
+ state=state_;
+ }
+
+ ~shared_mutex()
+ {
+ }
+
+ void lock_shared()
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+
+ while(state.exclusive || state.exclusive_waiting_blocked)
+ {
+ shared_cond.wait(lk);
+ }
+ ++state.shared_count;
+ }
+
+ bool try_lock_shared()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+
+ if(state.exclusive || state.exclusive_waiting_blocked)
+ {
+ return false;
+ }
+ else
+ {
+ ++state.shared_count;
+ return true;
+ }
+ }
+
+ bool timed_lock_shared(system_time const& timeout)
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+
+ while(state.exclusive || state.exclusive_waiting_blocked)
+ {
+ if(!shared_cond.timed_wait(lk,timeout))
+ {
+ return false;
+ }
+ }
+ ++state.shared_count;
+ return true;
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock_shared(TimeDuration const & relative_time)
+ {
+ return timed_lock_shared(get_system_time()+relative_time);
+ }
+
+ void unlock_shared()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ bool const last_reader=!--state.shared_count;
+
+ if(last_reader)
+ {
+ if(state.upgrade)
+ {
+ state.upgrade=false;
+ state.exclusive=true;
+ upgrade_cond.notify_one();
+ }
+ else
+ {
+ state.exclusive_waiting_blocked=false;
+ }
+ release_waiters();
+ }
+ }
+
+ void lock()
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+
+ while(state.shared_count || state.exclusive)
+ {
+ state.exclusive_waiting_blocked=true;
+ exclusive_cond.wait(lk);
+ }
+ state.exclusive=true;
+ }
+
+ bool timed_lock(system_time const& timeout)
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+
+ while(state.shared_count || state.exclusive)
+ {
+ state.exclusive_waiting_blocked=true;
+ if(!exclusive_cond.timed_wait(lk,timeout))
+ {
+ if(state.shared_count || state.exclusive)
+ {
+ state.exclusive_waiting_blocked=false;
+ exclusive_cond.notify_one();
+ return false;
+ }
+ break;
+ }
+ }
+ state.exclusive=true;
+ return true;
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
+ bool try_lock()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+
+ if(state.shared_count || state.exclusive)
+ {
+ return false;
+ }
+ else
+ {
+ state.exclusive=true;
+ return true;
+ }
+
+ }
+
+ void unlock()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ state.exclusive=false;
+ state.exclusive_waiting_blocked=false;
+ release_waiters();
+ }
+
+ void lock_upgrade()
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+ while(state.exclusive || state.exclusive_waiting_blocked || state.upgrade)
+ {
+ shared_cond.wait(lk);
+ }
+ ++state.shared_count;
+ state.upgrade=true;
+ }
+
+ bool timed_lock_upgrade(system_time const& timeout)
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+ while(state.exclusive || state.exclusive_waiting_blocked || state.upgrade)
+ {
+ if(!shared_cond.timed_wait(lk,timeout))
+ {
+ if(state.exclusive || state.exclusive_waiting_blocked || state.upgrade)
+ {
+ return false;
+ }
+ break;
+ }
+ }
+ ++state.shared_count;
+ state.upgrade=true;
+ return true;
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock_upgrade(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
+ bool try_lock_upgrade()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ if(state.exclusive || state.exclusive_waiting_blocked || state.upgrade)
+ {
+ return false;
+ }
+ else
+ {
+ ++state.shared_count;
+ state.upgrade=true;
+ return true;
+ }
+ }
+
+ void unlock_upgrade()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ state.upgrade=false;
+ bool const last_reader=!--state.shared_count;
+
+ if(last_reader)
+ {
+ state.exclusive_waiting_blocked=false;
+ release_waiters();
+ }
+ }
+
+ void unlock_upgrade_and_lock()
+ {
+ boost::this_thread::disable_interruption do_not_disturb;
+ boost::mutex::scoped_lock lk(state_change);
+ --state.shared_count;
+ while(state.shared_count)
+ {
+ upgrade_cond.wait(lk);
+ }
+ state.upgrade=false;
+ state.exclusive=true;
+ }
+
+ void unlock_and_lock_upgrade()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ state.exclusive=false;
+ state.upgrade=true;
+ ++state.shared_count;
+ state.exclusive_waiting_blocked=false;
+ release_waiters();
+ }
+
+ void unlock_and_lock_shared()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ state.exclusive=false;
+ ++state.shared_count;
+ state.exclusive_waiting_blocked=false;
+ release_waiters();
+ }
+
+ void unlock_upgrade_and_lock_shared()
+ {
+ boost::mutex::scoped_lock lk(state_change);
+ state.upgrade=false;
+ state.exclusive_waiting_blocked=false;
+ release_waiters();
+ }
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/thread_data.hpp b/3rdParty/Boost/boost/thread/pthread/thread_data.hpp
new file mode 100644
index 0000000..244035b
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/thread_data.hpp
@@ -0,0 +1,118 @@
+#ifndef BOOST_THREAD_PTHREAD_THREAD_DATA_HPP
+#define BOOST_THREAD_PTHREAD_THREAD_DATA_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007 Anthony Williams
+
+#include <boost/thread/detail/config.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/optional.hpp>
+#include <pthread.h>
+#include "condition_variable_fwd.hpp"
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class thread;
+
+ namespace detail
+ {
+ struct thread_exit_callback_node;
+ struct tss_data_node;
+
+ struct thread_data_base;
+ typedef boost::shared_ptr<thread_data_base> thread_data_ptr;
+
+ struct BOOST_THREAD_DECL thread_data_base:
+ enable_shared_from_this<thread_data_base>
+ {
+ thread_data_ptr self;
+ pthread_t thread_handle;
+ boost::mutex data_mutex;
+ boost::condition_variable done_condition;
+ boost::mutex sleep_mutex;
+ boost::condition_variable sleep_condition;
+ bool done;
+ bool join_started;
+ bool joined;
+ boost::detail::thread_exit_callback_node* thread_exit_callbacks;
+ boost::detail::tss_data_node* tss_data;
+ bool interrupt_enabled;
+ bool interrupt_requested;
+ pthread_cond_t* current_cond;
+
+ thread_data_base():
+ done(false),join_started(false),joined(false),
+ thread_exit_callbacks(0),tss_data(0),
+ interrupt_enabled(true),
+ interrupt_requested(false),
+ current_cond(0)
+ {}
+ virtual ~thread_data_base();
+
+ typedef pthread_t native_handle_type;
+
+ virtual void run()=0;
+ };
+
+ BOOST_THREAD_DECL thread_data_base* get_current_thread_data();
+
+ class interruption_checker
+ {
+ thread_data_base* const thread_info;
+
+ void check_for_interruption()
+ {
+ if(thread_info->interrupt_requested)
+ {
+ thread_info->interrupt_requested=false;
+ throw thread_interrupted();
+ }
+ }
+
+ void operator=(interruption_checker&);
+ public:
+ explicit interruption_checker(pthread_cond_t* cond):
+ thread_info(detail::get_current_thread_data())
+ {
+ if(thread_info && thread_info->interrupt_enabled)
+ {
+ lock_guard<mutex> guard(thread_info->data_mutex);
+ check_for_interruption();
+ thread_info->current_cond=cond;
+ }
+ }
+ ~interruption_checker()
+ {
+ if(thread_info && thread_info->interrupt_enabled)
+ {
+ lock_guard<mutex> guard(thread_info->data_mutex);
+ thread_info->current_cond=NULL;
+ check_for_interruption();
+ }
+ }
+ };
+ }
+
+ namespace this_thread
+ {
+ void BOOST_THREAD_DECL yield();
+
+ void BOOST_THREAD_DECL sleep(system_time const& abs_time);
+
+ template<typename TimeDuration>
+ inline void sleep(TimeDuration const& rel_time)
+ {
+ this_thread::sleep(get_system_time()+rel_time);
+ }
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/thread_heap_alloc.hpp b/3rdParty/Boost/boost/thread/pthread/thread_heap_alloc.hpp
new file mode 100644
index 0000000..7cc0aa0
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/thread_heap_alloc.hpp
@@ -0,0 +1,242 @@
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2008 Anthony Williams
+#ifndef THREAD_HEAP_ALLOC_PTHREAD_HPP
+#define THREAD_HEAP_ALLOC_PTHREAD_HPP
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ template<typename T>
+ inline T* heap_new()
+ {
+ return new T();
+ }
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename T,typename A1>
+ inline T* heap_new(A1&& a1)
+ {
+ return new T(static_cast<A1&&>(a1));
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1&& a1,A2&& a2)
+ {
+ return new T(static_cast<A1&&>(a1),static_cast<A2&&>(a2));
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1&& a1,A2&& a2,A3&& a3)
+ {
+ return new T(static_cast<A1&&>(a1),static_cast<A2&&>(a2),
+ static_cast<A3&&>(a3));
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1&& a1,A2&& a2,A3&& a3,A4&& a4)
+ {
+ return new T(static_cast<A1&&>(a1),static_cast<A2&&>(a2),
+ static_cast<A3&&>(a3),static_cast<A4&&>(a4));
+ }
+#else
+ template<typename T,typename A1>
+ inline T* heap_new_impl(A1 a1)
+ {
+ return new T(a1);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new_impl(A1 a1,A2 a2)
+ {
+ return new T(a1,a2);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new_impl(A1 a1,A2 a2,A3 a3)
+ {
+ return new T(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new_impl(A1 a1,A2 a2,A3 a3,A4 a4)
+ {
+ return new T(a1,a2,a3,a4);
+ }
+
+ template<typename T,typename A1>
+ inline T* heap_new(A1 const& a1)
+ {
+ return heap_new_impl<T,A1 const&>(a1);
+ }
+ template<typename T,typename A1>
+ inline T* heap_new(A1& a1)
+ {
+ return heap_new_impl<T,A1&>(a1);
+ }
+
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1 const& a1,A2 const& a2)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&>(a1,a2);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1& a1,A2 const& a2)
+ {
+ return heap_new_impl<T,A1&,A2 const&>(a1,a2);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1 const& a1,A2& a2)
+ {
+ return heap_new_impl<T,A1 const&,A2&>(a1,a2);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1& a1,A2& a2)
+ {
+ return heap_new_impl<T,A1&,A2&>(a1,a2);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3 const&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3 const&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3 const&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1&,A2&,A3 const&>(a1,a2,a3);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2 const& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1&,A2&,A3&>(a1,a2,a3);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3&,A4&>(a1,a2,a3,a4);
+ }
+
+#endif
+ template<typename T>
+ inline void heap_delete(T* data)
+ {
+ delete data;
+ }
+
+ template<typename T>
+ struct do_heap_delete
+ {
+ void operator()(T* data) const
+ {
+ detail::heap_delete(data);
+ }
+ };
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/pthread/timespec.hpp b/3rdParty/Boost/boost/thread/pthread/timespec.hpp
new file mode 100644
index 0000000..d7465c1
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/pthread/timespec.hpp
@@ -0,0 +1,36 @@
+#ifndef BOOST_THREAD_PTHREAD_TIMESPEC_HPP
+#define BOOST_THREAD_PTHREAD_TIMESPEC_HPP
+// (C) Copyright 2007-8 Anthony Williams
+//
+// Distributed under the 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/thread/thread_time.hpp>
+#include <boost/date_time/posix_time/conversion.hpp>
+#include <pthread.h>
+#ifndef _WIN32
+#include <unistd.h>
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ inline struct timespec get_timespec(boost::system_time const& abs_time)
+ {
+ struct timespec timeout={0,0};
+ boost::posix_time::time_duration const time_since_epoch=abs_time-boost::posix_time::from_time_t(0);
+
+ timeout.tv_sec=time_since_epoch.total_seconds();
+ timeout.tv_nsec=(long)(time_since_epoch.fractional_seconds()*(1000000000l/time_since_epoch.ticks_per_second()));
+ return timeout;
+ }
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/recursive_mutex.hpp b/3rdParty/Boost/boost/thread/recursive_mutex.hpp
new file mode 100644
index 0000000..d5f6116
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/recursive_mutex.hpp
@@ -0,0 +1,21 @@
+#ifndef BOOST_THREAD_RECURSIVE_MUTEX_HPP
+#define BOOST_THREAD_RECURSIVE_MUTEX_HPP
+
+// recursive_mutex.hpp
+//
+// (C) Copyright 2007 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/recursive_mutex.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/recursive_mutex.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/shared_mutex.hpp b/3rdParty/Boost/boost/thread/shared_mutex.hpp
new file mode 100644
index 0000000..51eda0d
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/shared_mutex.hpp
@@ -0,0 +1,21 @@
+#ifndef BOOST_THREAD_SHARED_MUTEX_HPP
+#define BOOST_THREAD_SHARED_MUTEX_HPP
+
+// shared_mutex.hpp
+//
+// (C) Copyright 2007 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/shared_mutex.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/shared_mutex.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/thread.hpp b/3rdParty/Boost/boost/thread/thread.hpp
new file mode 100644
index 0000000..6146132
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/thread.hpp
@@ -0,0 +1,25 @@
+#ifndef BOOST_THREAD_THREAD_HPP
+#define BOOST_THREAD_THREAD_HPP
+
+// thread.hpp
+//
+// (C) Copyright 2007-8 Anthony Williams
+//
+// Distributed under the 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/thread/detail/platform.hpp>
+
+#if defined(BOOST_THREAD_PLATFORM_WIN32)
+#include <boost/thread/win32/thread_data.hpp>
+#elif defined(BOOST_THREAD_PLATFORM_PTHREAD)
+#include <boost/thread/pthread/thread_data.hpp>
+#else
+#error "Boost threads unavailable on this platform"
+#endif
+
+#include <boost/thread/detail/thread.hpp>
+
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/thread_time.hpp b/3rdParty/Boost/boost/thread/thread_time.hpp
new file mode 100644
index 0000000..8b557d5
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/thread_time.hpp
@@ -0,0 +1,50 @@
+#ifndef BOOST_THREAD_TIME_HPP
+#define BOOST_THREAD_TIME_HPP
+// (C) Copyright 2007 Anthony Williams
+//
+// Distributed under the 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/date_time/microsec_time_clock.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ typedef boost::posix_time::ptime system_time;
+
+ inline system_time get_system_time()
+ {
+ return boost::date_time::microsec_clock<system_time>::universal_time();
+ }
+
+ namespace detail
+ {
+ inline system_time get_system_time_sentinel()
+ {
+ return system_time(boost::posix_time::pos_infin);
+ }
+
+ inline unsigned long get_milliseconds_until(system_time const& target_time)
+ {
+ if(target_time.is_pos_infinity())
+ {
+ return ~(unsigned long)0;
+ }
+ system_time const now=get_system_time();
+ if(target_time<=now)
+ {
+ return 0;
+ }
+ return static_cast<unsigned long>((target_time-now).total_milliseconds()+1);
+ }
+
+ }
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/tss.hpp b/3rdParty/Boost/boost/thread/tss.hpp
new file mode 100644
index 0000000..76380aa
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/tss.hpp
@@ -0,0 +1,111 @@
+#ifndef BOOST_THREAD_TSS_HPP
+#define BOOST_THREAD_TSS_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007-8 Anthony Williams
+
+#include <boost/thread/detail/config.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/thread/detail/thread_heap_alloc.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ struct tss_cleanup_function
+ {
+ virtual ~tss_cleanup_function()
+ {}
+
+ virtual void operator()(void* data)=0;
+ };
+
+ BOOST_THREAD_DECL void set_tss_data(void const* key,boost::shared_ptr<tss_cleanup_function> func,void* tss_data,bool cleanup_existing);
+ BOOST_THREAD_DECL void* get_tss_data(void const* key);
+ }
+
+ template <typename T>
+ class thread_specific_ptr
+ {
+ private:
+ thread_specific_ptr(thread_specific_ptr&);
+ thread_specific_ptr& operator=(thread_specific_ptr&);
+
+ struct delete_data:
+ detail::tss_cleanup_function
+ {
+ void operator()(void* data)
+ {
+ delete static_cast<T*>(data);
+ }
+ };
+
+ struct run_custom_cleanup_function:
+ detail::tss_cleanup_function
+ {
+ void (*cleanup_function)(T*);
+
+ explicit run_custom_cleanup_function(void (*cleanup_function_)(T*)):
+ cleanup_function(cleanup_function_)
+ {}
+
+ void operator()(void* data)
+ {
+ cleanup_function(static_cast<T*>(data));
+ }
+ };
+
+
+ boost::shared_ptr<detail::tss_cleanup_function> cleanup;
+
+ public:
+ thread_specific_ptr():
+ cleanup(detail::heap_new<delete_data>(),detail::do_heap_delete<delete_data>())
+ {}
+ explicit thread_specific_ptr(void (*func_)(T*))
+ {
+ if(func_)
+ {
+ cleanup.reset(detail::heap_new<run_custom_cleanup_function>(func_),detail::do_heap_delete<run_custom_cleanup_function>());
+ }
+ }
+ ~thread_specific_ptr()
+ {
+ reset();
+ }
+
+ T* get() const
+ {
+ return static_cast<T*>(detail::get_tss_data(this));
+ }
+ T* operator->() const
+ {
+ return get();
+ }
+ T& operator*() const
+ {
+ return *get();
+ }
+ T* release()
+ {
+ T* const temp=get();
+ detail::set_tss_data(this,boost::shared_ptr<detail::tss_cleanup_function>(),0,false);
+ return temp;
+ }
+ void reset(T* new_value=0)
+ {
+ T* const current_value=get();
+ if(current_value!=new_value)
+ {
+ detail::set_tss_data(this,cleanup,new_value,true);
+ }
+ }
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp b/3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp
new file mode 100644
index 0000000..05eb8d7
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/basic_recursive_mutex.hpp
@@ -0,0 +1,120 @@
+#ifndef BOOST_BASIC_RECURSIVE_MUTEX_WIN32_HPP
+#define BOOST_BASIC_RECURSIVE_MUTEX_WIN32_HPP
+
+// basic_recursive_mutex.hpp
+//
+// (C) Copyright 2006-8 Anthony Williams
+//
+// Distributed under the 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 "thread_primitives.hpp"
+#include "basic_timed_mutex.hpp"
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ template<typename underlying_mutex_type>
+ struct basic_recursive_mutex_impl
+ {
+ long recursion_count;
+ long locking_thread_id;
+ underlying_mutex_type mutex;
+
+ void initialize()
+ {
+ recursion_count=0;
+ locking_thread_id=0;
+ mutex.initialize();
+ }
+
+ void destroy()
+ {
+ mutex.destroy();
+ }
+
+ bool try_lock()
+ {
+ long const current_thread_id=win32::GetCurrentThreadId();
+ return try_recursive_lock(current_thread_id) || try_basic_lock(current_thread_id);
+ }
+
+ void lock()
+ {
+ long const current_thread_id=win32::GetCurrentThreadId();
+ if(!try_recursive_lock(current_thread_id))
+ {
+ mutex.lock();
+ BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,current_thread_id);
+ recursion_count=1;
+ }
+ }
+ bool timed_lock(::boost::system_time const& target)
+ {
+ long const current_thread_id=win32::GetCurrentThreadId();
+ return try_recursive_lock(current_thread_id) || try_timed_lock(current_thread_id,target);
+ }
+ template<typename Duration>
+ bool timed_lock(Duration const& timeout)
+ {
+ return timed_lock(get_system_time()+timeout);
+ }
+
+ void unlock()
+ {
+ if(!--recursion_count)
+ {
+ BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,0);
+ mutex.unlock();
+ }
+ }
+
+ private:
+ bool try_recursive_lock(long current_thread_id)
+ {
+ if(::boost::detail::interlocked_read_acquire(&locking_thread_id)==current_thread_id)
+ {
+ ++recursion_count;
+ return true;
+ }
+ return false;
+ }
+
+ bool try_basic_lock(long current_thread_id)
+ {
+ if(mutex.try_lock())
+ {
+ BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,current_thread_id);
+ recursion_count=1;
+ return true;
+ }
+ return false;
+ }
+
+ bool try_timed_lock(long current_thread_id,::boost::system_time const& target)
+ {
+ if(mutex.timed_lock(target))
+ {
+ BOOST_INTERLOCKED_EXCHANGE(&locking_thread_id,current_thread_id);
+ recursion_count=1;
+ return true;
+ }
+ return false;
+ }
+
+ };
+
+ typedef basic_recursive_mutex_impl<basic_timed_mutex> basic_recursive_mutex;
+ typedef basic_recursive_mutex_impl<basic_timed_mutex> basic_recursive_timed_mutex;
+ }
+}
+
+#define BOOST_BASIC_RECURSIVE_MUTEX_INITIALIZER {0}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/basic_timed_mutex.hpp b/3rdParty/Boost/boost/thread/win32/basic_timed_mutex.hpp
new file mode 100644
index 0000000..751bdbd
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/basic_timed_mutex.hpp
@@ -0,0 +1,178 @@
+#ifndef BOOST_BASIC_TIMED_MUTEX_WIN32_HPP
+#define BOOST_BASIC_TIMED_MUTEX_WIN32_HPP
+
+// basic_timed_mutex_win32.hpp
+//
+// (C) Copyright 2006-8 Anthony Williams
+//
+// Distributed under the 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/assert.hpp>
+#include "thread_primitives.hpp"
+#include "interlocked_read.hpp"
+#include <boost/thread/thread_time.hpp>
+#include <boost/thread/xtime.hpp>
+#include <boost/detail/interlocked.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ struct basic_timed_mutex
+ {
+ BOOST_STATIC_CONSTANT(unsigned char,lock_flag_bit=31);
+ BOOST_STATIC_CONSTANT(unsigned char,event_set_flag_bit=30);
+ BOOST_STATIC_CONSTANT(long,lock_flag_value=1<<lock_flag_bit);
+ BOOST_STATIC_CONSTANT(long,event_set_flag_value=1<<event_set_flag_bit);
+ long active_count;
+ void* event;
+
+ void initialize()
+ {
+ active_count=0;
+ event=0;
+ }
+
+ void destroy()
+ {
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4312)
+#endif
+ void* const old_event=BOOST_INTERLOCKED_EXCHANGE_POINTER(&event,0);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ if(old_event)
+ {
+ win32::CloseHandle(old_event);
+ }
+ }
+
+
+ bool try_lock()
+ {
+ return !win32::interlocked_bit_test_and_set(&active_count,lock_flag_bit);
+ }
+
+ void lock()
+ {
+ BOOST_VERIFY(timed_lock(::boost::detail::get_system_time_sentinel()));
+ }
+ bool timed_lock(::boost::system_time const& wait_until)
+ {
+ if(!win32::interlocked_bit_test_and_set(&active_count,lock_flag_bit))
+ {
+ return true;
+ }
+ long old_count=active_count;
+ for(;;)
+ {
+ long const new_count=(old_count&lock_flag_value)?(old_count+1):(old_count|lock_flag_value);
+ long const current=BOOST_INTERLOCKED_COMPARE_EXCHANGE(&active_count,new_count,old_count);
+ if(current==old_count)
+ {
+ break;
+ }
+ old_count=current;
+ }
+
+ if(old_count&lock_flag_value)
+ {
+ bool lock_acquired=false;
+ void* const sem=get_event();
+
+ do
+ {
+ if(win32::WaitForSingleObject(sem,::boost::detail::get_milliseconds_until(wait_until))!=0)
+ {
+ BOOST_INTERLOCKED_DECREMENT(&active_count);
+ return false;
+ }
+ old_count&=~lock_flag_value;
+ old_count|=event_set_flag_value;
+ for(;;)
+ {
+ long const new_count=((old_count&lock_flag_value)?old_count:((old_count-1)|lock_flag_value))&~event_set_flag_value;
+ long const current=BOOST_INTERLOCKED_COMPARE_EXCHANGE(&active_count,new_count,old_count);
+ if(current==old_count)
+ {
+ break;
+ }
+ old_count=current;
+ }
+ lock_acquired=!(old_count&lock_flag_value);
+ }
+ while(!lock_acquired);
+ }
+ return true;
+ }
+
+ template<typename Duration>
+ bool timed_lock(Duration const& timeout)
+ {
+ return timed_lock(get_system_time()+timeout);
+ }
+
+ bool timed_lock(boost::xtime const& timeout)
+ {
+ return timed_lock(system_time(timeout));
+ }
+
+ void unlock()
+ {
+ long const offset=lock_flag_value;
+ long const old_count=BOOST_INTERLOCKED_EXCHANGE_ADD(&active_count,lock_flag_value);
+ if(!(old_count&event_set_flag_value) && (old_count>offset))
+ {
+ if(!win32::interlocked_bit_test_and_set(&active_count,event_set_flag_bit))
+ {
+ win32::SetEvent(get_event());
+ }
+ }
+ }
+
+ private:
+ void* get_event()
+ {
+ void* current_event=::boost::detail::interlocked_read_acquire(&event);
+
+ if(!current_event)
+ {
+ void* const new_event=win32::create_anonymous_event(win32::auto_reset_event,win32::event_initially_reset);
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4311)
+#pragma warning(disable:4312)
+#endif
+ void* const old_event=BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&event,new_event,0);
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+ if(old_event!=0)
+ {
+ win32::CloseHandle(new_event);
+ return old_event;
+ }
+ else
+ {
+ return new_event;
+ }
+ }
+ return current_event;
+ }
+
+ };
+
+ }
+}
+
+#define BOOST_BASIC_TIMED_MUTEX_INITIALIZER {0}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/condition_variable.hpp b/3rdParty/Boost/boost/thread/win32/condition_variable.hpp
new file mode 100644
index 0000000..6e676b4
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/condition_variable.hpp
@@ -0,0 +1,418 @@
+#ifndef BOOST_THREAD_CONDITION_VARIABLE_WIN32_HPP
+#define BOOST_THREAD_CONDITION_VARIABLE_WIN32_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007-8 Anthony Williams
+
+#include <boost/thread/mutex.hpp>
+#include "thread_primitives.hpp"
+#include <limits.h>
+#include <boost/assert.hpp>
+#include <algorithm>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/thread_time.hpp>
+#include "interlocked_read.hpp"
+#include <boost/thread/xtime.hpp>
+#include <vector>
+#include <boost/intrusive_ptr.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ class basic_cv_list_entry;
+ void intrusive_ptr_add_ref(basic_cv_list_entry * p);
+ void intrusive_ptr_release(basic_cv_list_entry * p);
+
+ class basic_cv_list_entry
+ {
+ private:
+ detail::win32::handle_manager semaphore;
+ detail::win32::handle_manager wake_sem;
+ long waiters;
+ bool notified;
+ long references;
+
+ basic_cv_list_entry(basic_cv_list_entry&);
+ void operator=(basic_cv_list_entry&);
+
+ public:
+ explicit basic_cv_list_entry(detail::win32::handle_manager const& wake_sem_):
+ semaphore(detail::win32::create_anonymous_semaphore(0,LONG_MAX)),
+ wake_sem(wake_sem_.duplicate()),
+ waiters(1),notified(false),references(0)
+ {}
+
+ static bool no_waiters(boost::intrusive_ptr<basic_cv_list_entry> const& entry)
+ {
+ return !detail::interlocked_read_acquire(&entry->waiters);
+ }
+
+ void add_waiter()
+ {
+ BOOST_INTERLOCKED_INCREMENT(&waiters);
+ }
+
+ void remove_waiter()
+ {
+ BOOST_INTERLOCKED_DECREMENT(&waiters);
+ }
+
+ void release(unsigned count_to_release)
+ {
+ notified=true;
+ detail::win32::ReleaseSemaphore(semaphore,count_to_release,0);
+ }
+
+ void release_waiters()
+ {
+ release(detail::interlocked_read_acquire(&waiters));
+ }
+
+ bool is_notified() const
+ {
+ return notified;
+ }
+
+ bool wait(timeout wait_until)
+ {
+ return this_thread::interruptible_wait(semaphore,wait_until);
+ }
+
+ bool woken()
+ {
+ unsigned long const woken_result=detail::win32::WaitForSingleObject(wake_sem,0);
+ BOOST_ASSERT((woken_result==detail::win32::timeout) || (woken_result==0));
+ return woken_result==0;
+ }
+
+ friend void intrusive_ptr_add_ref(basic_cv_list_entry * p);
+ friend void intrusive_ptr_release(basic_cv_list_entry * p);
+ };
+
+ inline void intrusive_ptr_add_ref(basic_cv_list_entry * p)
+ {
+ BOOST_INTERLOCKED_INCREMENT(&p->references);
+ }
+
+ inline void intrusive_ptr_release(basic_cv_list_entry * p)
+ {
+ if(!BOOST_INTERLOCKED_DECREMENT(&p->references))
+ {
+ delete p;
+ }
+ }
+
+ class basic_condition_variable
+ {
+ boost::mutex internal_mutex;
+ long total_count;
+ unsigned active_generation_count;
+
+ typedef basic_cv_list_entry list_entry;
+
+ typedef boost::intrusive_ptr<list_entry> entry_ptr;
+ typedef std::vector<entry_ptr> generation_list;
+
+ generation_list generations;
+ detail::win32::handle_manager wake_sem;
+
+ void wake_waiters(long count_to_wake)
+ {
+ detail::interlocked_write_release(&total_count,total_count-count_to_wake);
+ detail::win32::ReleaseSemaphore(wake_sem,count_to_wake,0);
+ }
+
+ template<typename lock_type>
+ struct relocker
+ {
+ lock_type& lock;
+ bool unlocked;
+
+ relocker(lock_type& lock_):
+ lock(lock_),unlocked(false)
+ {}
+ void unlock()
+ {
+ lock.unlock();
+ unlocked=true;
+ }
+ ~relocker()
+ {
+ if(unlocked)
+ {
+ lock.lock();
+ }
+
+ }
+ private:
+ relocker(relocker&);
+ void operator=(relocker&);
+ };
+
+
+ entry_ptr get_wait_entry()
+ {
+ boost::lock_guard<boost::mutex> internal_lock(internal_mutex);
+
+ if(!wake_sem)
+ {
+ wake_sem=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
+ BOOST_ASSERT(wake_sem);
+ }
+
+ detail::interlocked_write_release(&total_count,total_count+1);
+ if(generations.empty() || generations.back()->is_notified())
+ {
+ entry_ptr new_entry(new list_entry(wake_sem));
+ generations.push_back(new_entry);
+ return new_entry;
+ }
+ else
+ {
+ generations.back()->add_waiter();
+ return generations.back();
+ }
+ }
+
+ struct entry_manager
+ {
+ entry_ptr const entry;
+
+ entry_manager(entry_ptr const& entry_):
+ entry(entry_)
+ {}
+
+ ~entry_manager()
+ {
+ entry->remove_waiter();
+ }
+
+ list_entry* operator->()
+ {
+ return entry.get();
+ }
+
+ private:
+ void operator=(entry_manager&);
+ entry_manager(entry_manager&);
+ };
+
+
+ protected:
+ template<typename lock_type>
+ bool do_wait(lock_type& lock,timeout wait_until)
+ {
+ relocker<lock_type> locker(lock);
+
+ entry_manager entry(get_wait_entry());
+
+ locker.unlock();
+
+ bool woken=false;
+ while(!woken)
+ {
+ if(!entry->wait(wait_until))
+ {
+ return false;
+ }
+
+ woken=entry->woken();
+ }
+ return woken;
+ }
+
+ template<typename lock_type,typename predicate_type>
+ bool do_wait(lock_type& m,timeout const& wait_until,predicate_type pred)
+ {
+ while (!pred())
+ {
+ if(!do_wait(m, wait_until))
+ return pred();
+ }
+ return true;
+ }
+
+ basic_condition_variable(const basic_condition_variable& other);
+ basic_condition_variable& operator=(const basic_condition_variable& other);
+
+ public:
+ basic_condition_variable():
+ total_count(0),active_generation_count(0),wake_sem(0)
+ {}
+
+ ~basic_condition_variable()
+ {}
+
+ void notify_one()
+ {
+ if(detail::interlocked_read_acquire(&total_count))
+ {
+ boost::lock_guard<boost::mutex> internal_lock(internal_mutex);
+ if(!total_count)
+ {
+ return;
+ }
+ wake_waiters(1);
+
+ for(generation_list::iterator it=generations.begin(),
+ end=generations.end();
+ it!=end;++it)
+ {
+ (*it)->release(1);
+ }
+ generations.erase(std::remove_if(generations.begin(),generations.end(),&basic_cv_list_entry::no_waiters),generations.end());
+ }
+ }
+
+ void notify_all()
+ {
+ if(detail::interlocked_read_acquire(&total_count))
+ {
+ boost::lock_guard<boost::mutex> internal_lock(internal_mutex);
+ if(!total_count)
+ {
+ return;
+ }
+ wake_waiters(total_count);
+ for(generation_list::iterator it=generations.begin(),
+ end=generations.end();
+ it!=end;++it)
+ {
+ (*it)->release_waiters();
+ }
+ generations.clear();
+ wake_sem=detail::win32::handle(0);
+ }
+ }
+
+ };
+ }
+
+ class condition_variable:
+ private detail::basic_condition_variable
+ {
+ private:
+ condition_variable(condition_variable&);
+ void operator=(condition_variable&);
+ public:
+ condition_variable()
+ {}
+
+ using detail::basic_condition_variable::notify_one;
+ using detail::basic_condition_variable::notify_all;
+
+ void wait(unique_lock<mutex>& m)
+ {
+ do_wait(m,detail::timeout::sentinel());
+ }
+
+ template<typename predicate_type>
+ void wait(unique_lock<mutex>& m,predicate_type pred)
+ {
+ while(!pred()) wait(m);
+ }
+
+
+ bool timed_wait(unique_lock<mutex>& m,boost::system_time const& wait_until)
+ {
+ return do_wait(m,wait_until);
+ }
+
+ bool timed_wait(unique_lock<mutex>& m,boost::xtime const& wait_until)
+ {
+ return do_wait(m,system_time(wait_until));
+ }
+ template<typename duration_type>
+ bool timed_wait(unique_lock<mutex>& m,duration_type const& wait_duration)
+ {
+ return do_wait(m,wait_duration.total_milliseconds());
+ }
+
+ template<typename predicate_type>
+ bool timed_wait(unique_lock<mutex>& m,boost::system_time const& wait_until,predicate_type pred)
+ {
+ return do_wait(m,wait_until,pred);
+ }
+ template<typename predicate_type>
+ bool timed_wait(unique_lock<mutex>& m,boost::xtime const& wait_until,predicate_type pred)
+ {
+ return do_wait(m,system_time(wait_until),pred);
+ }
+ template<typename duration_type,typename predicate_type>
+ bool timed_wait(unique_lock<mutex>& m,duration_type const& wait_duration,predicate_type pred)
+ {
+ return do_wait(m,wait_duration.total_milliseconds(),pred);
+ }
+ };
+
+ class condition_variable_any:
+ private detail::basic_condition_variable
+ {
+ private:
+ condition_variable_any(condition_variable_any&);
+ void operator=(condition_variable_any&);
+ public:
+ condition_variable_any()
+ {}
+
+ using detail::basic_condition_variable::notify_one;
+ using detail::basic_condition_variable::notify_all;
+
+ template<typename lock_type>
+ void wait(lock_type& m)
+ {
+ do_wait(m,detail::timeout::sentinel());
+ }
+
+ template<typename lock_type,typename predicate_type>
+ void wait(lock_type& m,predicate_type pred)
+ {
+ while(!pred()) wait(m);
+ }
+
+ template<typename lock_type>
+ bool timed_wait(lock_type& m,boost::system_time const& wait_until)
+ {
+ return do_wait(m,wait_until);
+ }
+
+ template<typename lock_type>
+ bool timed_wait(lock_type& m,boost::xtime const& wait_until)
+ {
+ return do_wait(m,system_time(wait_until));
+ }
+
+ template<typename lock_type,typename duration_type>
+ bool timed_wait(lock_type& m,duration_type const& wait_duration)
+ {
+ return do_wait(m,wait_duration.total_milliseconds());
+ }
+
+ template<typename lock_type,typename predicate_type>
+ bool timed_wait(lock_type& m,boost::system_time const& wait_until,predicate_type pred)
+ {
+ return do_wait(m,wait_until,pred);
+ }
+
+ template<typename lock_type,typename predicate_type>
+ bool timed_wait(lock_type& m,boost::xtime const& wait_until,predicate_type pred)
+ {
+ return do_wait(m,system_time(wait_until),pred);
+ }
+
+ template<typename lock_type,typename duration_type,typename predicate_type>
+ bool timed_wait(lock_type& m,duration_type const& wait_duration,predicate_type pred)
+ {
+ return do_wait(m,wait_duration.total_milliseconds(),pred);
+ }
+ };
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/interlocked_read.hpp b/3rdParty/Boost/boost/thread/win32/interlocked_read.hpp
new file mode 100644
index 0000000..133fb6f
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/interlocked_read.hpp
@@ -0,0 +1,80 @@
+#ifndef BOOST_THREAD_DETAIL_INTERLOCKED_READ_WIN32_HPP
+#define BOOST_THREAD_DETAIL_INTERLOCKED_READ_WIN32_HPP
+
+// interlocked_read_win32.hpp
+//
+// (C) Copyright 2005-8 Anthony Williams
+//
+// Distributed under the 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/detail/interlocked.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+#ifdef BOOST_MSVC
+
+extern "C" void _ReadWriteBarrier(void);
+#pragma intrinsic(_ReadWriteBarrier)
+
+namespace boost
+{
+ namespace detail
+ {
+ inline long interlocked_read_acquire(long volatile* x)
+ {
+ long const res=*x;
+ _ReadWriteBarrier();
+ return res;
+ }
+ inline void* interlocked_read_acquire(void* volatile* x)
+ {
+ void* const res=*x;
+ _ReadWriteBarrier();
+ return res;
+ }
+
+ inline void interlocked_write_release(long volatile* x,long value)
+ {
+ _ReadWriteBarrier();
+ *x=value;
+ }
+ inline void interlocked_write_release(void* volatile* x,void* value)
+ {
+ _ReadWriteBarrier();
+ *x=value;
+ }
+ }
+}
+
+#else
+
+namespace boost
+{
+ namespace detail
+ {
+ inline long interlocked_read_acquire(long volatile* x)
+ {
+ return BOOST_INTERLOCKED_COMPARE_EXCHANGE(x,0,0);
+ }
+ inline void* interlocked_read_acquire(void* volatile* x)
+ {
+ return BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(x,0,0);
+ }
+ inline void interlocked_write_release(long volatile* x,long value)
+ {
+ BOOST_INTERLOCKED_EXCHANGE(x,value);
+ }
+ inline void interlocked_write_release(void* volatile* x,void* value)
+ {
+ BOOST_INTERLOCKED_EXCHANGE_POINTER(x,value);
+ }
+ }
+}
+
+#endif
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/mutex.hpp b/3rdParty/Boost/boost/thread/win32/mutex.hpp
new file mode 100644
index 0000000..efe6241
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/mutex.hpp
@@ -0,0 +1,65 @@
+#ifndef BOOST_THREAD_WIN32_MUTEX_HPP
+#define BOOST_THREAD_WIN32_MUTEX_HPP
+// (C) Copyright 2005-7 Anthony Williams
+// Distributed under the 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 "basic_timed_mutex.hpp"
+#include <boost/utility.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/thread/locks.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ typedef ::boost::detail::basic_timed_mutex underlying_mutex;
+ }
+
+ class mutex:
+ boost::noncopyable,
+ public ::boost::detail::underlying_mutex
+ {
+ public:
+ mutex()
+ {
+ initialize();
+ }
+ ~mutex()
+ {
+ destroy();
+ }
+
+ typedef unique_lock<mutex> scoped_lock;
+ typedef detail::try_lock_wrapper<mutex> scoped_try_lock;
+ };
+
+ typedef mutex try_mutex;
+
+ class timed_mutex:
+ boost::noncopyable,
+ public ::boost::detail::basic_timed_mutex
+ {
+ public:
+ timed_mutex()
+ {
+ initialize();
+ }
+
+ ~timed_mutex()
+ {
+ destroy();
+ }
+
+ typedef unique_lock<timed_mutex> scoped_timed_lock;
+ typedef detail::try_lock_wrapper<timed_mutex> scoped_try_lock;
+ typedef scoped_timed_lock scoped_lock;
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/once.hpp b/3rdParty/Boost/boost/thread/win32/once.hpp
new file mode 100644
index 0000000..a6fcc94
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/once.hpp
@@ -0,0 +1,136 @@
+#ifndef BOOST_THREAD_WIN32_ONCE_HPP
+#define BOOST_THREAD_WIN32_ONCE_HPP
+
+// once.hpp
+//
+// (C) Copyright 2005-7 Anthony Williams
+// (C) Copyright 2005 John Maddock
+//
+// Distributed under the 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 <cstring>
+#include <cstddef>
+#include <boost/assert.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/detail/interlocked.hpp>
+#include <boost/thread/win32/thread_primitives.hpp>
+#include <boost/thread/win32/interlocked_read.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std
+{
+ using ::memcpy;
+ using ::ptrdiff_t;
+}
+#endif
+
+namespace boost
+{
+ typedef long once_flag;
+
+#define BOOST_ONCE_INIT 0
+
+ namespace detail
+ {
+ struct win32_mutex_scoped_lock
+ {
+ void* const mutex_handle;
+ explicit win32_mutex_scoped_lock(void* mutex_handle_):
+ mutex_handle(mutex_handle_)
+ {
+ BOOST_VERIFY(!win32::WaitForSingleObject(mutex_handle,win32::infinite));
+ }
+ ~win32_mutex_scoped_lock()
+ {
+ BOOST_VERIFY(win32::ReleaseMutex(mutex_handle)!=0);
+ }
+ private:
+ void operator=(win32_mutex_scoped_lock&);
+ };
+
+#ifdef BOOST_NO_ANSI_APIS
+ template <class I>
+ void int_to_string(I p, wchar_t* buf)
+ {
+ for(unsigned i=0; i < sizeof(I)*2; ++i,++buf)
+ {
+ *buf = L'A' + static_cast<wchar_t>((p >> (i*4)) & 0x0f);
+ }
+ *buf = 0;
+ }
+#else
+ template <class I>
+ void int_to_string(I p, char* buf)
+ {
+ for(unsigned i=0; i < sizeof(I)*2; ++i,++buf)
+ {
+ *buf = 'A' + static_cast<char>((p >> (i*4)) & 0x0f);
+ }
+ *buf = 0;
+ }
+#endif
+
+ // create a named mutex. It doesn't really matter what this name is
+ // as long as it is unique both to this process, and to the address of "flag":
+ inline void* create_once_mutex(void* flag_address)
+ {
+
+#ifdef BOOST_NO_ANSI_APIS
+ typedef wchar_t char_type;
+ static const char_type fixed_mutex_name[]=L"{C15730E2-145C-4c5e-B005-3BC753F42475}-once-flag";
+#else
+ typedef char char_type;
+ static const char_type fixed_mutex_name[]="{C15730E2-145C-4c5e-B005-3BC753F42475}-once-flag";
+#endif
+ unsigned const once_mutex_name_fixed_buffer_size=sizeof(fixed_mutex_name)/sizeof(char_type);
+ unsigned const once_mutex_name_fixed_length=once_mutex_name_fixed_buffer_size-1;
+ unsigned const once_mutex_name_length=once_mutex_name_fixed_buffer_size+sizeof(void*)*2+sizeof(unsigned long)*2;
+ char_type mutex_name[once_mutex_name_length];
+
+ std::memcpy(mutex_name,fixed_mutex_name,sizeof(fixed_mutex_name));
+
+ BOOST_STATIC_ASSERT(sizeof(void*) == sizeof(std::ptrdiff_t));
+ detail::int_to_string(reinterpret_cast<std::ptrdiff_t>(flag_address), mutex_name + once_mutex_name_fixed_length);
+ detail::int_to_string(win32::GetCurrentProcessId(), mutex_name + once_mutex_name_fixed_length + sizeof(void*)*2);
+
+#ifdef BOOST_NO_ANSI_APIS
+ return win32::CreateMutexW(0, 0, mutex_name);
+#else
+ return win32::CreateMutexA(0, 0, mutex_name);
+#endif
+ }
+
+
+ }
+
+
+ template<typename Function>
+ void call_once(once_flag& flag,Function f)
+ {
+ // Try for a quick win: if the procedure has already been called
+ // just skip through:
+ long const function_complete_flag_value=0xc15730e2;
+
+ if(::boost::detail::interlocked_read_acquire(&flag)!=function_complete_flag_value)
+ {
+ void* const mutex_handle(::boost::detail::create_once_mutex(&flag));
+ BOOST_ASSERT(mutex_handle);
+ detail::win32::handle_manager const closer(mutex_handle);
+ detail::win32_mutex_scoped_lock const lock(mutex_handle);
+
+ if(flag!=function_complete_flag_value)
+ {
+ f();
+ BOOST_INTERLOCKED_EXCHANGE(&flag,function_complete_flag_value);
+ }
+ }
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/recursive_mutex.hpp b/3rdParty/Boost/boost/thread/win32/recursive_mutex.hpp
new file mode 100644
index 0000000..2360a92
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/recursive_mutex.hpp
@@ -0,0 +1,64 @@
+#ifndef BOOST_RECURSIVE_MUTEX_WIN32_HPP
+#define BOOST_RECURSIVE_MUTEX_WIN32_HPP
+
+// recursive_mutex.hpp
+//
+// (C) Copyright 2006-7 Anthony Williams
+//
+// Distributed under the 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/utility.hpp>
+#include "basic_recursive_mutex.hpp"
+#include <boost/thread/exceptions.hpp>
+#include <boost/thread/locks.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class recursive_mutex:
+ boost::noncopyable,
+ public ::boost::detail::basic_recursive_mutex
+ {
+ public:
+ recursive_mutex()
+ {
+ ::boost::detail::basic_recursive_mutex::initialize();
+ }
+ ~recursive_mutex()
+ {
+ ::boost::detail::basic_recursive_mutex::destroy();
+ }
+
+ typedef unique_lock<recursive_mutex> scoped_lock;
+ typedef detail::try_lock_wrapper<recursive_mutex> scoped_try_lock;
+ };
+
+ typedef recursive_mutex recursive_try_mutex;
+
+ class recursive_timed_mutex:
+ boost::noncopyable,
+ public ::boost::detail::basic_recursive_timed_mutex
+ {
+ public:
+ recursive_timed_mutex()
+ {
+ ::boost::detail::basic_recursive_timed_mutex::initialize();
+ }
+ ~recursive_timed_mutex()
+ {
+ ::boost::detail::basic_recursive_timed_mutex::destroy();
+ }
+
+ typedef unique_lock<recursive_timed_mutex> scoped_timed_lock;
+ typedef detail::try_lock_wrapper<recursive_timed_mutex> scoped_try_lock;
+ typedef scoped_timed_lock scoped_lock;
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/shared_mutex.hpp b/3rdParty/Boost/boost/thread/win32/shared_mutex.hpp
new file mode 100644
index 0000000..58e8093
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/shared_mutex.hpp
@@ -0,0 +1,566 @@
+#ifndef BOOST_THREAD_WIN32_SHARED_MUTEX_HPP
+#define BOOST_THREAD_WIN32_SHARED_MUTEX_HPP
+
+// (C) Copyright 2006-8 Anthony Williams
+//
+// Distributed under the 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/assert.hpp>
+#include <boost/detail/interlocked.hpp>
+#include <boost/thread/win32/thread_primitives.hpp>
+#include <boost/static_assert.hpp>
+#include <limits.h>
+#include <boost/utility.hpp>
+#include <boost/thread/thread_time.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ class shared_mutex:
+ private boost::noncopyable
+ {
+ private:
+ struct state_data
+ {
+ unsigned shared_count:11,
+ shared_waiting:11,
+ exclusive:1,
+ upgrade:1,
+ exclusive_waiting:7,
+ exclusive_waiting_blocked:1;
+
+ friend bool operator==(state_data const& lhs,state_data const& rhs)
+ {
+ return *reinterpret_cast<unsigned const*>(&lhs)==*reinterpret_cast<unsigned const*>(&rhs);
+ }
+ };
+
+
+ template<typename T>
+ T interlocked_compare_exchange(T* target,T new_value,T comparand)
+ {
+ BOOST_STATIC_ASSERT(sizeof(T)==sizeof(long));
+ long const res=BOOST_INTERLOCKED_COMPARE_EXCHANGE(reinterpret_cast<long*>(target),
+ *reinterpret_cast<long*>(&new_value),
+ *reinterpret_cast<long*>(&comparand));
+ return *reinterpret_cast<T const*>(&res);
+ }
+
+ state_data state;
+ detail::win32::handle semaphores[2];
+ detail::win32::handle &unlock_sem;
+ detail::win32::handle &exclusive_sem;
+ detail::win32::handle upgrade_sem;
+
+ void release_waiters(state_data old_state)
+ {
+ if(old_state.exclusive_waiting)
+ {
+ BOOST_VERIFY(detail::win32::ReleaseSemaphore(exclusive_sem,1,0)!=0);
+ }
+
+ if(old_state.shared_waiting || old_state.exclusive_waiting)
+ {
+ BOOST_VERIFY(detail::win32::ReleaseSemaphore(unlock_sem,old_state.shared_waiting + (old_state.exclusive_waiting?1:0),0)!=0);
+ }
+ }
+
+
+ public:
+ shared_mutex():
+ unlock_sem(semaphores[0]),
+ exclusive_sem(semaphores[1])
+ {
+ unlock_sem=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
+ exclusive_sem=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
+ upgrade_sem=detail::win32::create_anonymous_semaphore(0,LONG_MAX);
+ state_data state_={0};
+ state=state_;
+ }
+
+ ~shared_mutex()
+ {
+ detail::win32::CloseHandle(upgrade_sem);
+ detail::win32::CloseHandle(unlock_sem);
+ detail::win32::CloseHandle(exclusive_sem);
+ }
+
+ bool try_lock_shared()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(!new_state.exclusive && !new_state.exclusive_waiting_blocked)
+ {
+ ++new_state.shared_count;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ return !(old_state.exclusive| old_state.exclusive_waiting_blocked);
+ }
+
+ void lock_shared()
+ {
+ BOOST_VERIFY(timed_lock_shared(::boost::detail::get_system_time_sentinel()));
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock_shared(TimeDuration const & relative_time)
+ {
+ return timed_lock_shared(get_system_time()+relative_time);
+ }
+
+ bool timed_lock_shared(boost::system_time const& wait_until)
+ {
+ for(;;)
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.exclusive || new_state.exclusive_waiting_blocked)
+ {
+ ++new_state.shared_waiting;
+ }
+ else
+ {
+ ++new_state.shared_count;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
+ {
+ return true;
+ }
+
+ unsigned long const res=detail::win32::WaitForSingleObject(unlock_sem,::boost::detail::get_milliseconds_until(wait_until));
+ if(res==detail::win32::timeout)
+ {
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.exclusive || new_state.exclusive_waiting_blocked)
+ {
+ if(new_state.shared_waiting)
+ {
+ --new_state.shared_waiting;
+ }
+ }
+ else
+ {
+ ++new_state.shared_count;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!(old_state.exclusive| old_state.exclusive_waiting_blocked))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ BOOST_ASSERT(res==0);
+ }
+ }
+
+ void unlock_shared()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ bool const last_reader=!--new_state.shared_count;
+
+ if(last_reader)
+ {
+ if(new_state.upgrade)
+ {
+ new_state.upgrade=false;
+ new_state.exclusive=true;
+ }
+ else
+ {
+ if(new_state.exclusive_waiting)
+ {
+ --new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=false;
+ }
+ new_state.shared_waiting=0;
+ }
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ if(last_reader)
+ {
+ if(old_state.upgrade)
+ {
+ BOOST_VERIFY(detail::win32::ReleaseSemaphore(upgrade_sem,1,0)!=0);
+ }
+ else
+ {
+ release_waiters(old_state);
+ }
+ }
+ break;
+ }
+ old_state=current_state;
+ }
+ }
+
+ void lock()
+ {
+ BOOST_VERIFY(timed_lock(::boost::detail::get_system_time_sentinel()));
+ }
+
+ template<typename TimeDuration>
+ bool timed_lock(TimeDuration const & relative_time)
+ {
+ return timed_lock(get_system_time()+relative_time);
+ }
+
+ bool try_lock()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.shared_count || new_state.exclusive)
+ {
+ return false;
+ }
+ else
+ {
+ new_state.exclusive=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ return true;
+ }
+
+
+ bool timed_lock(boost::system_time const& wait_until)
+ {
+ for(;;)
+ {
+ state_data old_state=state;
+
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.shared_count || new_state.exclusive)
+ {
+ ++new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=true;
+ }
+ else
+ {
+ new_state.exclusive=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!old_state.shared_count && !old_state.exclusive)
+ {
+ return true;
+ }
+ unsigned long const wait_res=detail::win32::WaitForMultipleObjects(2,semaphores,true,::boost::detail::get_milliseconds_until(wait_until));
+ if(wait_res==detail::win32::timeout)
+ {
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.shared_count || new_state.exclusive)
+ {
+ if(new_state.exclusive_waiting)
+ {
+ if(!--new_state.exclusive_waiting)
+ {
+ new_state.exclusive_waiting_blocked=false;
+ }
+ }
+ }
+ else
+ {
+ new_state.exclusive=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ if(!old_state.shared_count && !old_state.exclusive)
+ {
+ return true;
+ }
+ return false;
+ }
+ BOOST_ASSERT(wait_res<2);
+ }
+ }
+
+ void unlock()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ new_state.exclusive=false;
+ if(new_state.exclusive_waiting)
+ {
+ --new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=false;
+ }
+ new_state.shared_waiting=0;
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ release_waiters(old_state);
+ }
+
+ void lock_upgrade()
+ {
+ for(;;)
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.exclusive || new_state.exclusive_waiting_blocked || new_state.upgrade)
+ {
+ ++new_state.shared_waiting;
+ }
+ else
+ {
+ ++new_state.shared_count;
+ new_state.upgrade=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+
+ if(!(old_state.exclusive|| old_state.exclusive_waiting_blocked|| old_state.upgrade))
+ {
+ return;
+ }
+
+ BOOST_VERIFY(!detail::win32::WaitForSingleObject(unlock_sem,detail::win32::infinite));
+ }
+ }
+
+ bool try_lock_upgrade()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ if(new_state.exclusive || new_state.exclusive_waiting_blocked || new_state.upgrade)
+ {
+ return false;
+ }
+ else
+ {
+ ++new_state.shared_count;
+ new_state.upgrade=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ return true;
+ }
+
+ void unlock_upgrade()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ new_state.upgrade=false;
+ bool const last_reader=!--new_state.shared_count;
+
+ if(last_reader)
+ {
+ if(new_state.exclusive_waiting)
+ {
+ --new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=false;
+ }
+ new_state.shared_waiting=0;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ if(last_reader)
+ {
+ release_waiters(old_state);
+ }
+ break;
+ }
+ old_state=current_state;
+ }
+ }
+
+ void unlock_upgrade_and_lock()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ bool const last_reader=!--new_state.shared_count;
+
+ if(last_reader)
+ {
+ new_state.upgrade=false;
+ new_state.exclusive=true;
+ }
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ if(!last_reader)
+ {
+ BOOST_VERIFY(!detail::win32::WaitForSingleObject(upgrade_sem,detail::win32::infinite));
+ }
+ break;
+ }
+ old_state=current_state;
+ }
+ }
+
+ void unlock_and_lock_upgrade()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ new_state.exclusive=false;
+ new_state.upgrade=true;
+ ++new_state.shared_count;
+ if(new_state.exclusive_waiting)
+ {
+ --new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=false;
+ }
+ new_state.shared_waiting=0;
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ release_waiters(old_state);
+ }
+
+ void unlock_and_lock_shared()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ new_state.exclusive=false;
+ ++new_state.shared_count;
+ if(new_state.exclusive_waiting)
+ {
+ --new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=false;
+ }
+ new_state.shared_waiting=0;
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ release_waiters(old_state);
+ }
+
+ void unlock_upgrade_and_lock_shared()
+ {
+ state_data old_state=state;
+ for(;;)
+ {
+ state_data new_state=old_state;
+ new_state.upgrade=false;
+ if(new_state.exclusive_waiting)
+ {
+ --new_state.exclusive_waiting;
+ new_state.exclusive_waiting_blocked=false;
+ }
+ new_state.shared_waiting=0;
+
+ state_data const current_state=interlocked_compare_exchange(&state,new_state,old_state);
+ if(current_state==old_state)
+ {
+ break;
+ }
+ old_state=current_state;
+ }
+ release_waiters(old_state);
+ }
+
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/thread_data.hpp b/3rdParty/Boost/boost/thread/win32/thread_data.hpp
new file mode 100644
index 0000000..1a6a1e0
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/thread_data.hpp
@@ -0,0 +1,178 @@
+#ifndef BOOST_THREAD_PTHREAD_THREAD_DATA_HPP
+#define BOOST_THREAD_PTHREAD_THREAD_DATA_HPP
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2008 Anthony Williams
+
+#include <boost/thread/detail/config.hpp>
+#include <boost/intrusive_ptr.hpp>
+#include <boost/thread/thread_time.hpp>
+#include "thread_primitives.hpp"
+#include "thread_heap_alloc.hpp"
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ struct thread_exit_callback_node;
+ struct tss_data_node;
+
+ struct thread_data_base;
+ void intrusive_ptr_add_ref(thread_data_base * p);
+ void intrusive_ptr_release(thread_data_base * p);
+
+ struct thread_data_base
+ {
+ long count;
+ detail::win32::handle_manager thread_handle;
+ detail::win32::handle_manager interruption_handle;
+ boost::detail::thread_exit_callback_node* thread_exit_callbacks;
+ boost::detail::tss_data_node* tss_data;
+ bool interruption_enabled;
+ unsigned id;
+
+ thread_data_base():
+ count(0),thread_handle(detail::win32::invalid_handle_value),
+ interruption_handle(create_anonymous_event(detail::win32::manual_reset_event,detail::win32::event_initially_reset)),
+ thread_exit_callbacks(0),tss_data(0),
+ interruption_enabled(true),
+ id(0)
+ {}
+ virtual ~thread_data_base()
+ {}
+
+ friend void intrusive_ptr_add_ref(thread_data_base * p)
+ {
+ BOOST_INTERLOCKED_INCREMENT(&p->count);
+ }
+
+ friend void intrusive_ptr_release(thread_data_base * p)
+ {
+ if(!BOOST_INTERLOCKED_DECREMENT(&p->count))
+ {
+ detail::heap_delete(p);
+ }
+ }
+
+ void interrupt()
+ {
+ BOOST_VERIFY(detail::win32::SetEvent(interruption_handle)!=0);
+ }
+
+ typedef detail::win32::handle native_handle_type;
+
+ virtual void run()=0;
+ };
+
+ typedef boost::intrusive_ptr<detail::thread_data_base> thread_data_ptr;
+
+ struct timeout
+ {
+ unsigned long start;
+ uintmax_t milliseconds;
+ bool relative;
+ boost::system_time abs_time;
+
+ static unsigned long const max_non_infinite_wait=0xfffffffe;
+
+ timeout(uintmax_t milliseconds_):
+ start(win32::GetTickCount()),
+ milliseconds(milliseconds_),
+ relative(true),
+ abs_time(boost::get_system_time())
+ {}
+
+ timeout(boost::system_time const& abs_time_):
+ start(win32::GetTickCount()),
+ milliseconds(0),
+ relative(false),
+ abs_time(abs_time_)
+ {}
+
+ struct remaining_time
+ {
+ bool more;
+ unsigned long milliseconds;
+
+ remaining_time(uintmax_t remaining):
+ more(remaining>max_non_infinite_wait),
+ milliseconds(more?max_non_infinite_wait:(unsigned long)remaining)
+ {}
+ };
+
+ remaining_time remaining_milliseconds() const
+ {
+ if(is_sentinel())
+ {
+ return remaining_time(win32::infinite);
+ }
+ else if(relative)
+ {
+ unsigned long const now=win32::GetTickCount();
+ unsigned long const elapsed=now-start;
+ return remaining_time((elapsed<milliseconds)?(milliseconds-elapsed):0);
+ }
+ else
+ {
+ system_time const now=get_system_time();
+ if(abs_time<=now)
+ {
+ return remaining_time(0);
+ }
+ return remaining_time((abs_time-now).total_milliseconds()+1);
+ }
+ }
+
+ bool is_sentinel() const
+ {
+ return milliseconds==~uintmax_t(0);
+ }
+
+
+ static timeout sentinel()
+ {
+ return timeout(sentinel_type());
+ }
+ private:
+ struct sentinel_type
+ {};
+
+ explicit timeout(sentinel_type):
+ start(0),milliseconds(~uintmax_t(0)),relative(true)
+ {}
+ };
+ }
+
+ namespace this_thread
+ {
+ void BOOST_THREAD_DECL yield();
+
+ bool BOOST_THREAD_DECL interruptible_wait(detail::win32::handle handle_to_wait_for,detail::timeout target_time);
+ inline void interruptible_wait(unsigned long milliseconds)
+ {
+ interruptible_wait(detail::win32::invalid_handle_value,milliseconds);
+ }
+ inline void interruptible_wait(system_time const& abs_time)
+ {
+ interruptible_wait(detail::win32::invalid_handle_value,abs_time);
+ }
+
+ template<typename TimeDuration>
+ inline void sleep(TimeDuration const& rel_time)
+ {
+ interruptible_wait(static_cast<unsigned long>(rel_time.total_milliseconds()));
+ }
+ inline void sleep(system_time const& abs_time)
+ {
+ interruptible_wait(abs_time);
+ }
+ }
+
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/thread_heap_alloc.hpp b/3rdParty/Boost/boost/thread/win32/thread_heap_alloc.hpp
new file mode 100644
index 0000000..9f8186f
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/thread_heap_alloc.hpp
@@ -0,0 +1,397 @@
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright 2007 Anthony Williams
+#ifndef THREAD_HEAP_ALLOC_HPP
+#define THREAD_HEAP_ALLOC_HPP
+#include <new>
+#include "thread_primitives.hpp"
+#include <stdexcept>
+#include <boost/assert.hpp>
+
+#if defined( BOOST_USE_WINDOWS_H )
+# include <windows.h>
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+ using ::GetProcessHeap;
+ using ::HeapAlloc;
+ using ::HeapFree;
+ }
+ }
+}
+
+#else
+
+# ifdef HeapAlloc
+# undef HeapAlloc
+# endif
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+ extern "C"
+ {
+ __declspec(dllimport) handle __stdcall GetProcessHeap();
+ __declspec(dllimport) void* __stdcall HeapAlloc(handle,unsigned long,ulong_ptr);
+ __declspec(dllimport) int __stdcall HeapFree(handle,unsigned long,void*);
+ }
+ }
+ }
+}
+
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ 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)
+ {
+ throw std::bad_alloc();
+ }
+ return 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);
+ }
+
+ template<typename T>
+ inline T* heap_new()
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T();
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+
+#ifdef BOOST_HAS_RVALUE_REFS
+ template<typename T,typename A1>
+ inline T* heap_new(A1&& a1)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(static_cast<A1&&>(a1));
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1&& a1,A2&& a2)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(static_cast<A1&&>(a1),static_cast<A2&&>(a2));
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1&& a1,A2&& a2,A3&& a3)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(static_cast<A1&&>(a1),static_cast<A2&&>(a2),
+ static_cast<A3&&>(a3));
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1&& a1,A2&& a2,A3&& a3,A4&& a4)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(static_cast<A1&&>(a1),static_cast<A2&&>(a2),
+ static_cast<A3&&>(a3),static_cast<A4&&>(a4));
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+#else
+ template<typename T,typename A1>
+ inline T* heap_new_impl(A1 a1)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(a1);
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new_impl(A1 a1,A2 a2)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(a1,a2);
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new_impl(A1 a1,A2 a2,A3 a3)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(a1,a2,a3);
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new_impl(A1 a1,A2 a2,A3 a3,A4 a4)
+ {
+ void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
+ try
+ {
+ T* const data=new (heap_memory) T(a1,a2,a3,a4);
+ return data;
+ }
+ catch(...)
+ {
+ free_raw_heap_memory(heap_memory);
+ throw;
+ }
+ }
+
+
+ template<typename T,typename A1>
+ inline T* heap_new(A1 const& a1)
+ {
+ return heap_new_impl<T,A1 const&>(a1);
+ }
+ template<typename T,typename A1>
+ inline T* heap_new(A1& a1)
+ {
+ return heap_new_impl<T,A1&>(a1);
+ }
+
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1 const& a1,A2 const& a2)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&>(a1,a2);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1& a1,A2 const& a2)
+ {
+ return heap_new_impl<T,A1&,A2 const&>(a1,a2);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1 const& a1,A2& a2)
+ {
+ return heap_new_impl<T,A1 const&,A2&>(a1,a2);
+ }
+ template<typename T,typename A1,typename A2>
+ inline T* heap_new(A1& a1,A2& a2)
+ {
+ return heap_new_impl<T,A1&,A2&>(a1,a2);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3 const&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3 const&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3 const&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2& a2,A3 const& a3)
+ {
+ return heap_new_impl<T,A1&,A2&,A3 const&>(a1,a2,a3);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2 const& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1 const& a1,A2& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3&>(a1,a2,a3);
+ }
+ template<typename T,typename A1,typename A2,typename A3>
+ inline T* heap_new(A1& a1,A2& a2,A3& a3)
+ {
+ return heap_new_impl<T,A1&,A2&,A3&>(a1,a2,a3);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3 const& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3 const&,A4 const&>(a1,a2,a3,a4);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3& a3,A4 const& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3&,A4 const&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3 const& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3 const&,A4&>(a1,a2,a3,a4);
+ }
+
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2 const& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2 const&,A3&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2 const& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2 const&,A3&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1 const& a1,A2& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1 const&,A2&,A3&,A4&>(a1,a2,a3,a4);
+ }
+ template<typename T,typename A1,typename A2,typename A3,typename A4>
+ inline T* heap_new(A1& a1,A2& a2,A3& a3,A4& a4)
+ {
+ return heap_new_impl<T,A1&,A2&,A3&,A4&>(a1,a2,a3,a4);
+ }
+
+#endif
+ template<typename T>
+ inline void heap_delete(T* data)
+ {
+ data->~T();
+ free_raw_heap_memory(data);
+ }
+
+ template<typename T>
+ struct do_heap_delete
+ {
+ void operator()(T* data) const
+ {
+ detail::heap_delete(data);
+ }
+ };
+ }
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/win32/thread_primitives.hpp b/3rdParty/Boost/boost/thread/win32/thread_primitives.hpp
new file mode 100644
index 0000000..67a1bc3
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/win32/thread_primitives.hpp
@@ -0,0 +1,398 @@
+#ifndef BOOST_WIN32_THREAD_PRIMITIVES_HPP
+#define BOOST_WIN32_THREAD_PRIMITIVES_HPP
+
+// win32_thread_primitives.hpp
+//
+// (C) Copyright 2005-7 Anthony Williams
+// (C) Copyright 2007 David Deakins
+//
+// Distributed under the 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/config.hpp>
+#include <boost/assert.hpp>
+#include <boost/thread/exceptions.hpp>
+#include <boost/detail/interlocked.hpp>
+#include <algorithm>
+
+#if defined( BOOST_USE_WINDOWS_H )
+# include <windows.h>
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+ typedef ULONG_PTR ulong_ptr;
+ typedef HANDLE handle;
+ unsigned const infinite=INFINITE;
+ unsigned const timeout=WAIT_TIMEOUT;
+ handle const invalid_handle_value=INVALID_HANDLE_VALUE;
+
+# ifdef BOOST_NO_ANSI_APIS
+ using ::CreateMutexW;
+ using ::CreateEventW;
+ using ::CreateSemaphoreW;
+# else
+ using ::CreateMutexA;
+ using ::CreateEventA;
+ using ::CreateSemaphoreA;
+# endif
+ using ::CloseHandle;
+ using ::ReleaseMutex;
+ using ::ReleaseSemaphore;
+ using ::SetEvent;
+ using ::ResetEvent;
+ using ::WaitForMultipleObjects;
+ using ::WaitForSingleObject;
+ using ::GetCurrentProcessId;
+ using ::GetCurrentThreadId;
+ using ::GetCurrentThread;
+ using ::GetCurrentProcess;
+ using ::DuplicateHandle;
+ using ::SleepEx;
+ using ::Sleep;
+ using ::QueueUserAPC;
+ using ::GetTickCount;
+ }
+ }
+}
+#elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ )
+
+# ifdef UNDER_CE
+# ifndef WINAPI
+# ifndef _WIN32_WCE_EMULATION
+# define WINAPI __cdecl // Note this doesn't match the desktop definition
+# else
+# define WINAPI __stdcall
+# endif
+# endif
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+typedef int BOOL;
+typedef unsigned long DWORD;
+typedef void* HANDLE;
+
+# include <kfuncs.h>
+# ifdef __cplusplus
+}
+# endif
+# endif
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+
+# ifdef _WIN64
+ typedef unsigned __int64 ulong_ptr;
+# else
+ typedef unsigned long ulong_ptr;
+# endif
+ typedef void* handle;
+ unsigned const infinite=~0U;
+ unsigned const timeout=258U;
+ handle const invalid_handle_value=(handle)(-1);
+
+ extern "C"
+ {
+ struct _SECURITY_ATTRIBUTES;
+# ifdef BOOST_NO_ANSI_APIS
+ __declspec(dllimport) void* __stdcall CreateMutexW(_SECURITY_ATTRIBUTES*,int,wchar_t const*);
+ __declspec(dllimport) void* __stdcall CreateSemaphoreW(_SECURITY_ATTRIBUTES*,long,long,wchar_t const*);
+ __declspec(dllimport) void* __stdcall CreateEventW(_SECURITY_ATTRIBUTES*,int,int,wchar_t const*);
+# else
+ __declspec(dllimport) void* __stdcall CreateMutexA(_SECURITY_ATTRIBUTES*,int,char const*);
+ __declspec(dllimport) void* __stdcall CreateSemaphoreA(_SECURITY_ATTRIBUTES*,long,long,char const*);
+ __declspec(dllimport) void* __stdcall CreateEventA(_SECURITY_ATTRIBUTES*,int,int,char const*);
+# endif
+ __declspec(dllimport) int __stdcall CloseHandle(void*);
+ __declspec(dllimport) int __stdcall ReleaseMutex(void*);
+ __declspec(dllimport) unsigned long __stdcall WaitForSingleObject(void*,unsigned long);
+ __declspec(dllimport) unsigned long __stdcall WaitForMultipleObjects(unsigned long nCount,void* const * lpHandles,int bWaitAll,unsigned long dwMilliseconds);
+ __declspec(dllimport) int __stdcall ReleaseSemaphore(void*,long,long*);
+ __declspec(dllimport) int __stdcall DuplicateHandle(void*,void*,void*,void**,unsigned long,int,unsigned long);
+ __declspec(dllimport) unsigned long __stdcall SleepEx(unsigned long,int);
+ __declspec(dllimport) void __stdcall Sleep(unsigned long);
+ typedef void (__stdcall *queue_user_apc_callback_function)(ulong_ptr);
+ __declspec(dllimport) unsigned long __stdcall QueueUserAPC(queue_user_apc_callback_function,void*,ulong_ptr);
+
+ __declspec(dllimport) unsigned long __stdcall GetTickCount();
+
+# ifndef UNDER_CE
+ __declspec(dllimport) unsigned long __stdcall GetCurrentProcessId();
+ __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId();
+ __declspec(dllimport) void* __stdcall GetCurrentThread();
+ __declspec(dllimport) void* __stdcall GetCurrentProcess();
+ __declspec(dllimport) int __stdcall SetEvent(void*);
+ __declspec(dllimport) int __stdcall ResetEvent(void*);
+# else
+ using ::GetCurrentProcessId;
+ using ::GetCurrentThreadId;
+ using ::GetCurrentThread;
+ using ::GetCurrentProcess;
+ using ::SetEvent;
+ using ::ResetEvent;
+# endif
+ }
+ }
+ }
+}
+#else
+# error "Win32 functions not available"
+#endif
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+ enum event_type
+ {
+ auto_reset_event=false,
+ manual_reset_event=true
+ };
+
+ enum initial_event_state
+ {
+ event_initially_reset=false,
+ event_initially_set=true
+ };
+
+ inline handle create_anonymous_event(event_type type,initial_event_state state)
+ {
+#if !defined(BOOST_NO_ANSI_APIS)
+ handle const res=win32::CreateEventA(0,type,state,0);
+#else
+ handle const res=win32::CreateEventW(0,type,state,0);
+#endif
+ if(!res)
+ {
+ throw thread_resource_error();
+ }
+ return res;
+ }
+
+ inline handle create_anonymous_semaphore(long initial_count,long max_count)
+ {
+#if !defined(BOOST_NO_ANSI_APIS)
+ handle const res=CreateSemaphoreA(0,initial_count,max_count,0);
+#else
+ handle const res=CreateSemaphoreW(0,initial_count,max_count,0);
+#endif
+ if(!res)
+ {
+ throw thread_resource_error();
+ }
+ return res;
+ }
+
+ inline handle duplicate_handle(handle source)
+ {
+ handle const current_process=GetCurrentProcess();
+ long const same_access_flag=2;
+ handle new_handle=0;
+ bool const success=DuplicateHandle(current_process,source,current_process,&new_handle,0,false,same_access_flag)!=0;
+ if(!success)
+ {
+ throw thread_resource_error();
+ }
+ return new_handle;
+ }
+
+ inline void release_semaphore(handle semaphore,long count)
+ {
+ BOOST_VERIFY(ReleaseSemaphore(semaphore,count,0)!=0);
+ }
+
+ class handle_manager
+ {
+ private:
+ handle handle_to_manage;
+ handle_manager(handle_manager&);
+ handle_manager& operator=(handle_manager&);
+
+ void cleanup()
+ {
+ if(handle_to_manage && handle_to_manage!=invalid_handle_value)
+ {
+ BOOST_VERIFY(CloseHandle(handle_to_manage));
+ }
+ }
+
+ public:
+ explicit handle_manager(handle handle_to_manage_):
+ handle_to_manage(handle_to_manage_)
+ {}
+ handle_manager():
+ handle_to_manage(0)
+ {}
+
+ handle_manager& operator=(handle new_handle)
+ {
+ cleanup();
+ handle_to_manage=new_handle;
+ return *this;
+ }
+
+ operator handle() const
+ {
+ return handle_to_manage;
+ }
+
+ handle duplicate() const
+ {
+ return duplicate_handle(handle_to_manage);
+ }
+
+ void swap(handle_manager& other)
+ {
+ std::swap(handle_to_manage,other.handle_to_manage);
+ }
+
+ handle release()
+ {
+ handle const res=handle_to_manage;
+ handle_to_manage=0;
+ return res;
+ }
+
+ bool operator!() const
+ {
+ return !handle_to_manage;
+ }
+
+ ~handle_manager()
+ {
+ cleanup();
+ }
+ };
+
+ }
+ }
+}
+
+#if defined(BOOST_MSVC) && (_MSC_VER>=1400) && !defined(UNDER_CE)
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+#if _MSC_VER==1400
+ extern "C" unsigned char _interlockedbittestandset(long *a,long b);
+ extern "C" unsigned char _interlockedbittestandreset(long *a,long b);
+#else
+ extern "C" unsigned char _interlockedbittestandset(volatile long *a,long b);
+ extern "C" unsigned char _interlockedbittestandreset(volatile long *a,long b);
+#endif
+
+#pragma intrinsic(_interlockedbittestandset)
+#pragma intrinsic(_interlockedbittestandreset)
+
+ inline bool interlocked_bit_test_and_set(long* x,long bit)
+ {
+ return _interlockedbittestandset(x,bit)!=0;
+ }
+
+ inline bool interlocked_bit_test_and_reset(long* x,long bit)
+ {
+ return _interlockedbittestandreset(x,bit)!=0;
+ }
+
+ }
+ }
+}
+#define BOOST_THREAD_BTS_DEFINED
+#elif (defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)) && defined(_M_IX86)
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+ inline bool interlocked_bit_test_and_set(long* x,long bit)
+ {
+ __asm {
+ mov eax,bit;
+ mov edx,x;
+ lock bts [edx],eax;
+ setc al;
+ };
+ }
+
+ inline bool interlocked_bit_test_and_reset(long* x,long bit)
+ {
+ __asm {
+ mov eax,bit;
+ mov edx,x;
+ lock btr [edx],eax;
+ setc al;
+ };
+ }
+
+ }
+ }
+}
+#define BOOST_THREAD_BTS_DEFINED
+#endif
+
+#ifndef BOOST_THREAD_BTS_DEFINED
+
+namespace boost
+{
+ namespace detail
+ {
+ namespace win32
+ {
+ inline bool interlocked_bit_test_and_set(long* x,long bit)
+ {
+ long const value=1<<bit;
+ long old=*x;
+ do
+ {
+ long const current=BOOST_INTERLOCKED_COMPARE_EXCHANGE(x,old|value,old);
+ if(current==old)
+ {
+ break;
+ }
+ old=current;
+ }
+ while(true);
+ return (old&value)!=0;
+ }
+
+ inline bool interlocked_bit_test_and_reset(long* x,long bit)
+ {
+ long const value=1<<bit;
+ long old=*x;
+ do
+ {
+ long const current=BOOST_INTERLOCKED_COMPARE_EXCHANGE(x,old&~value,old);
+ if(current==old)
+ {
+ break;
+ }
+ old=current;
+ }
+ while(true);
+ return (old&value)!=0;
+ }
+ }
+ }
+}
+#endif
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/thread/xtime.hpp b/3rdParty/Boost/boost/thread/xtime.hpp
new file mode 100644
index 0000000..7cc6272
--- /dev/null
+++ b/3rdParty/Boost/boost/thread/xtime.hpp
@@ -0,0 +1,92 @@
+// Copyright (C) 2001-2003
+// William E. Kempf
+// Copyright (C) 2007-8 Anthony Williams
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_XTIME_WEK070601_HPP
+#define BOOST_XTIME_WEK070601_HPP
+
+#include <boost/thread/detail/config.hpp>
+
+#include <boost/cstdint.hpp>
+#include <boost/thread/thread_time.hpp>
+#include <boost/date_time/posix_time/conversion.hpp>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost {
+
+enum xtime_clock_types
+{
+ TIME_UTC=1
+// TIME_TAI,
+// TIME_MONOTONIC,
+// TIME_PROCESS,
+// TIME_THREAD,
+// TIME_LOCAL,
+// TIME_SYNC,
+// TIME_RESOLUTION
+};
+
+struct xtime
+{
+#if defined(BOOST_NO_INT64_T)
+ typedef int_fast32_t xtime_sec_t; //INT_FAST32_MIN <= sec <= INT_FAST32_MAX
+#else
+ typedef int_fast64_t xtime_sec_t; //INT_FAST64_MIN <= sec <= INT_FAST64_MAX
+#endif
+
+ typedef int_fast32_t xtime_nsec_t; //0 <= xtime.nsec < NANOSECONDS_PER_SECOND
+
+ xtime_sec_t sec;
+ xtime_nsec_t nsec;
+
+ operator system_time() const
+ {
+ return boost::posix_time::from_time_t(0)+
+ boost::posix_time::seconds(static_cast<long>(sec))+
+#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS
+ boost::posix_time::nanoseconds(nsec);
+#else
+ boost::posix_time::microseconds((nsec+500)/1000);
+#endif
+ }
+
+};
+
+inline xtime get_xtime(boost::system_time const& abs_time)
+{
+ xtime res;
+ boost::posix_time::time_duration const time_since_epoch=abs_time-boost::posix_time::from_time_t(0);
+
+ res.sec=static_cast<xtime::xtime_sec_t>(time_since_epoch.total_seconds());
+ res.nsec=static_cast<xtime::xtime_nsec_t>(time_since_epoch.fractional_seconds()*(1000000000/time_since_epoch.ticks_per_second()));
+ return res;
+}
+
+inline int xtime_get(struct xtime* xtp, int clock_type)
+{
+ if (clock_type == TIME_UTC)
+ {
+ *xtp=get_xtime(get_system_time());
+ return clock_type;
+ }
+ return 0;
+}
+
+
+inline int xtime_cmp(const xtime& xt1, const xtime& xt2)
+{
+ if (xt1.sec == xt2.sec)
+ return (int)(xt1.nsec - xt2.nsec);
+ else
+ return (xt1.sec > xt2.sec) ? 1 : -1;
+}
+
+} // namespace boost
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif //BOOST_XTIME_WEK070601_HPP
diff --git a/3rdParty/Boost/boost/throw_exception.hpp b/3rdParty/Boost/boost/throw_exception.hpp
new file mode 100644
index 0000000..da14339
--- /dev/null
+++ b/3rdParty/Boost/boost/throw_exception.hpp
@@ -0,0 +1,74 @@
+#ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
+#define BOOST_THROW_EXCEPTION_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//
+// boost/throw_exception.hpp
+//
+// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
+// Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// http://www.boost.org/libs/utility/throw_exception.html
+//
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <exception>
+
+#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x593) )
+# define BOOST_EXCEPTION_DISABLE
+#endif
+
+#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1310 )
+# define BOOST_EXCEPTION_DISABLE
+#endif
+
+#if !defined( BOOST_EXCEPTION_DISABLE )
+# include <boost/exception/exception.hpp>
+# include <boost/current_function.hpp>
+# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(::boost::enable_error_info(x) <<\
+ ::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
+ ::boost::throw_file(__FILE__) <<\
+ ::boost::throw_line((int)__LINE__))
+#else
+# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
+#endif
+
+namespace boost
+{
+
+#ifdef BOOST_NO_EXCEPTIONS
+
+void throw_exception( std::exception const & e ); // user defined
+
+#else
+
+inline void throw_exception_assert_compatibility( std::exception const & ) { }
+
+template<class E> inline void throw_exception( E const & e )
+{
+ //All boost exceptions are required to derive std::exception,
+ //to ensure compatibility with BOOST_NO_EXCEPTIONS.
+ throw_exception_assert_compatibility(e);
+
+#ifndef BOOST_EXCEPTION_DISABLE
+ throw enable_current_exception(enable_error_info(e));
+#else
+ throw e;
+#endif
+}
+
+#endif
+
+} // namespace boost
+
+#endif // #ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/token_functions.hpp b/3rdParty/Boost/boost/token_functions.hpp
new file mode 100644
index 0000000..ef7ba73
--- /dev/null
+++ b/3rdParty/Boost/boost/token_functions.hpp
@@ -0,0 +1,621 @@
+// Boost token_functions.hpp ------------------------------------------------//
+
+// Copyright John R. Bandela 2001.
+
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/tokenizer/ for documentation.
+
+// Revision History:
+// 01 Oct 2004 Joaquin M Lopez Munoz
+// Workaround for a problem with string::assign in msvc-stlport
+// 06 Apr 2004 John Bandela
+// Fixed a bug involving using char_delimiter with a true input iterator
+// 28 Nov 2003 Robert Zeh and John Bandela
+// Converted into "fast" functions that avoid using += when
+// the supplied iterator isn't an input_iterator; based on
+// some work done at Archelon and a version that was checked into
+// the boost CVS for a short period of time.
+// 20 Feb 2002 John Maddock
+// Removed using namespace std declarations and added
+// workaround for BOOST_NO_STDC_NAMESPACE (the library
+// can be safely mixed with regex).
+// 06 Feb 2002 Jeremy Siek
+// Added char_separator.
+// 02 Feb 2002 Jeremy Siek
+// Removed tabs and a little cleanup.
+
+
+#ifndef BOOST_TOKEN_FUNCTIONS_JRB120303_HPP_
+#define BOOST_TOKEN_FUNCTIONS_JRB120303_HPP_
+
+#include <vector>
+#include <stdexcept>
+#include <string>
+#include <cctype>
+#include <algorithm> // for find_if
+#include <boost/config.hpp>
+#include <boost/assert.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/mpl/if.hpp>
+
+//
+// the following must not be macros if we are to prefix them
+// with std:: (they shouldn't be macros anyway...)
+//
+#ifdef ispunct
+# undef ispunct
+#endif
+#ifdef isspace
+# undef isspace
+#endif
+//
+// fix namespace problems:
+//
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{
+ using ::ispunct;
+ using ::isspace;
+}
+#endif
+
+namespace boost{
+
+ //===========================================================================
+ // The escaped_list_separator class. Which is a model of TokenizerFunction
+ // An escaped list is a super-set of what is commonly known as a comma
+ // separated value (csv) list.It is separated into fields by a comma or
+ // other character. If the delimiting character is inside quotes, then it is
+ // counted as a regular character.To allow for embedded quotes in a field,
+ // there can be escape sequences using the \ much like C.
+ // The role of the comma, the quotation mark, and the escape
+ // character (backslash \), can be assigned to other characters.
+
+ struct escaped_list_error : public std::runtime_error{
+ escaped_list_error(const std::string& what_arg):std::runtime_error(what_arg) { }
+ };
+
+
+// The out of the box GCC 2.95 on cygwin does not have a char_traits class.
+// MSVC does not like the following typename
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ template <class Char,
+ class Traits = typename std::basic_string<Char>::traits_type >
+#else
+ template <class Char,
+ class Traits = std::basic_string<Char>::traits_type >
+#endif
+ class escaped_list_separator {
+
+ private:
+ typedef std::basic_string<Char,Traits> string_type;
+ struct char_eq {
+ Char e_;
+ char_eq(Char e):e_(e) { }
+ bool operator()(Char c) {
+ return Traits::eq(e_,c);
+ }
+ };
+ string_type escape_;
+ string_type c_;
+ string_type quote_;
+ bool last_;
+
+ bool is_escape(Char e) {
+ char_eq f(e);
+ return std::find_if(escape_.begin(),escape_.end(),f)!=escape_.end();
+ }
+ bool is_c(Char e) {
+ char_eq f(e);
+ return std::find_if(c_.begin(),c_.end(),f)!=c_.end();
+ }
+ bool is_quote(Char e) {
+ char_eq f(e);
+ return std::find_if(quote_.begin(),quote_.end(),f)!=quote_.end();
+ }
+ template <typename iterator, typename Token>
+ void do_escape(iterator& next,iterator end,Token& tok) {
+ if (++next == end)
+ throw escaped_list_error(std::string("cannot end with escape"));
+ if (Traits::eq(*next,'n')) {
+ tok+='\n';
+ return;
+ }
+ else if (is_quote(*next)) {
+ tok+=*next;
+ return;
+ }
+ else if (is_c(*next)) {
+ tok+=*next;
+ return;
+ }
+ else if (is_escape(*next)) {
+ tok+=*next;
+ return;
+ }
+ else
+ throw escaped_list_error(std::string("unknown escape sequence"));
+ }
+
+ public:
+
+ explicit escaped_list_separator(Char e = '\\',
+ Char c = ',',Char q = '\"')
+ : escape_(1,e), c_(1,c), quote_(1,q), last_(false) { }
+
+ escaped_list_separator(string_type e, string_type c, string_type q)
+ : escape_(e), c_(c), quote_(q), last_(false) { }
+
+ void reset() {last_=false;}
+
+ template <typename InputIterator, typename Token>
+ bool operator()(InputIterator& next,InputIterator end,Token& tok) {
+ bool bInQuote = false;
+ tok = Token();
+
+ if (next == end) {
+ if (last_) {
+ last_ = false;
+ return true;
+ }
+ else
+ return false;
+ }
+ last_ = false;
+ for (;next != end;++next) {
+ if (is_escape(*next)) {
+ do_escape(next,end,tok);
+ }
+ else if (is_c(*next)) {
+ if (!bInQuote) {
+ // If we are not in quote, then we are done
+ ++next;
+ // The last character was a c, that means there is
+ // 1 more blank field
+ last_ = true;
+ return true;
+ }
+ else tok+=*next;
+ }
+ else if (is_quote(*next)) {
+ bInQuote=!bInQuote;
+ }
+ else {
+ tok += *next;
+ }
+ }
+ return true;
+ }
+ };
+
+ //===========================================================================
+ // The classes here are used by offset_separator and char_separator to implement
+ // faster assigning of tokens using assign instead of +=
+
+ namespace tokenizer_detail {
+
+ // The assign_or_plus_equal struct contains functions that implement
+ // assign, +=, and clearing based on the iterator type. The
+ // generic case does nothing for plus_equal and clearing, while
+ // passing through the call for assign.
+ //
+ // When an input iterator is being used, the situation is reversed.
+ // The assign method does nothing, plus_equal invokes operator +=,
+ // and the clearing method sets the supplied token to the default
+ // token constructor's result.
+ //
+
+ template<class IteratorTag>
+ struct assign_or_plus_equal {
+ template<class Iterator, class Token>
+ static void assign(Iterator b, Iterator e, Token &t) {
+
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) &&\
+ BOOST_WORKAROUND(__SGI_STL_PORT, < 0x500) &&\
+ defined(_STLP_DEBUG) &&\
+ (defined(_STLP_USE_DYNAMIC_LIB) || defined(_DLL))
+ // Problem with string::assign for msvc-stlport in debug mode: the
+ // linker tries to import the templatized version of this memfun,
+ // which is obviously not exported.
+ // See http://www.stlport.com/dcforum/DCForumID6/1763.html for details.
+
+ t = Token();
+ while(b != e) t += *b++;
+#else
+ t.assign(b, e);
+#endif
+
+ }
+
+ template<class Token, class Value>
+ static void plus_equal(Token &, const Value &) {
+
+ }
+
+ // If we are doing an assign, there is no need for the
+ // the clear.
+ //
+ template<class Token>
+ static void clear(Token &) {
+
+ }
+ };
+
+ template <>
+ struct assign_or_plus_equal<std::input_iterator_tag> {
+ template<class Iterator, class Token>
+ static void assign(Iterator b, Iterator e, Token &t) {
+
+ }
+ template<class Token, class Value>
+ static void plus_equal(Token &t, const Value &v) {
+ t += v;
+ }
+ template<class Token>
+ static void clear(Token &t) {
+ t = Token();
+ }
+ };
+
+
+ template<class Iterator>
+ struct pointer_iterator_category{
+ typedef std::random_access_iterator_tag type;
+ };
+
+
+ template<class Iterator>
+ struct class_iterator_category{
+ typedef typename Iterator::iterator_category type;
+ };
+
+
+
+ // This portably gets the iterator_tag without partial template specialization
+ template<class Iterator>
+ struct get_iterator_category{
+ typedef typename mpl::if_<is_pointer<Iterator>,
+ pointer_iterator_category<Iterator>,
+ class_iterator_category<Iterator>
+ >::type cat;
+
+ typedef typename cat::type iterator_category;
+ };
+
+
+}
+
+
+ //===========================================================================
+ // The offset_separator class, which is a model of TokenizerFunction.
+ // Offset breaks a string into tokens based on a range of offsets
+
+ class offset_separator {
+ private:
+
+ std::vector<int> offsets_;
+ unsigned int current_offset_;
+ bool wrap_offsets_;
+ bool return_partial_last_;
+
+ public:
+ template <typename Iter>
+ offset_separator(Iter begin, Iter end, bool wrap_offsets = true,
+ bool return_partial_last = true)
+ : offsets_(begin,end), current_offset_(0),
+ wrap_offsets_(wrap_offsets),
+ return_partial_last_(return_partial_last) { }
+
+ offset_separator()
+ : offsets_(1,1), current_offset_(),
+ wrap_offsets_(true), return_partial_last_(true) { }
+
+ void reset() {
+ current_offset_ = 0;
+ }
+
+ template <typename InputIterator, typename Token>
+ bool operator()(InputIterator& next, InputIterator end, Token& tok)
+ {
+ typedef tokenizer_detail::assign_or_plus_equal<
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ typename
+#endif
+ tokenizer_detail::get_iterator_category<
+ InputIterator>::iterator_category> assigner;
+
+
+ BOOST_ASSERT(!offsets_.empty());
+
+ assigner::clear(tok);
+ InputIterator start(next);
+
+ if (next == end)
+ return false;
+
+ if (current_offset_ == offsets_.size())
+ {
+ if (wrap_offsets_)
+ current_offset_=0;
+ else
+ return false;
+ }
+
+ int c = offsets_[current_offset_];
+ int i = 0;
+ for (; i < c; ++i) {
+ if (next == end)break;
+ assigner::plus_equal(tok,*next++);
+ }
+ assigner::assign(start,next,tok);
+
+ if (!return_partial_last_)
+ if (i < (c-1) )
+ return false;
+
+ ++current_offset_;
+ return true;
+ }
+ };
+
+
+ //===========================================================================
+ // The char_separator class breaks a sequence of characters into
+ // tokens based on the character delimiters (very much like bad old
+ // strtok). A delimiter character can either be kept or dropped. A
+ // kept delimiter shows up as an output token, whereas a dropped
+ // delimiter does not.
+
+ // This class replaces the char_delimiters_separator class. The
+ // constructor for the char_delimiters_separator class was too
+ // confusing and needed to be deprecated. However, because of the
+ // default arguments to the constructor, adding the new constructor
+ // would cause ambiguity, so instead I deprecated the whole class.
+ // The implementation of the class was also simplified considerably.
+
+ enum empty_token_policy { drop_empty_tokens, keep_empty_tokens };
+
+ // The out of the box GCC 2.95 on cygwin does not have a char_traits class.
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ template <typename Char,
+ typename Traits = typename std::basic_string<Char>::traits_type >
+#else
+ template <typename Char,
+ typename Traits = std::basic_string<Char>::traits_type >
+#endif
+ class char_separator
+ {
+ typedef std::basic_string<Char,Traits> string_type;
+ public:
+ explicit
+ char_separator(const Char* dropped_delims,
+ const Char* kept_delims = 0,
+ empty_token_policy empty_tokens = drop_empty_tokens)
+ : m_dropped_delims(dropped_delims),
+ m_use_ispunct(false),
+ m_use_isspace(false),
+ m_empty_tokens(empty_tokens),
+ m_output_done(false)
+ {
+ // Borland workaround
+ if (kept_delims)
+ m_kept_delims = kept_delims;
+ }
+
+ // use ispunct() for kept delimiters and isspace for dropped.
+ explicit
+ char_separator()
+ : m_use_ispunct(true),
+ m_use_isspace(true),
+ m_empty_tokens(drop_empty_tokens) { }
+
+ void reset() { }
+
+ template <typename InputIterator, typename Token>
+ bool operator()(InputIterator& next, InputIterator end, Token& tok)
+ {
+ typedef tokenizer_detail::assign_or_plus_equal<
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ typename
+#endif
+ tokenizer_detail::get_iterator_category<
+ InputIterator>::iterator_category> assigner;
+
+ assigner::clear(tok);
+
+ // skip past all dropped_delims
+ if (m_empty_tokens == drop_empty_tokens)
+ for (; next != end && is_dropped(*next); ++next)
+ { }
+
+ InputIterator start(next);
+
+ if (m_empty_tokens == drop_empty_tokens) {
+
+ if (next == end)
+ return false;
+
+
+ // if we are on a kept_delims move past it and stop
+ if (is_kept(*next)) {
+ assigner::plus_equal(tok,*next);
+ ++next;
+ } else
+ // append all the non delim characters
+ for (; next != end && !is_dropped(*next) && !is_kept(*next); ++next)
+ assigner::plus_equal(tok,*next);
+ }
+ else { // m_empty_tokens == keep_empty_tokens
+
+ // Handle empty token at the end
+ if (next == end)
+ {
+ if (m_output_done == false)
+ {
+ m_output_done = true;
+ assigner::assign(start,next,tok);
+ return true;
+ }
+ else
+ return false;
+ }
+
+ if (is_kept(*next)) {
+ if (m_output_done == false)
+ m_output_done = true;
+ else {
+ assigner::plus_equal(tok,*next);
+ ++next;
+ m_output_done = false;
+ }
+ }
+ else if (m_output_done == false && is_dropped(*next)) {
+ m_output_done = true;
+ }
+ else {
+ if (is_dropped(*next))
+ start=++next;
+ for (; next != end && !is_dropped(*next) && !is_kept(*next); ++next)
+ assigner::plus_equal(tok,*next);
+ m_output_done = true;
+ }
+ }
+ assigner::assign(start,next,tok);
+ return true;
+ }
+
+ private:
+ string_type m_kept_delims;
+ string_type m_dropped_delims;
+ bool m_use_ispunct;
+ bool m_use_isspace;
+ empty_token_policy m_empty_tokens;
+ bool m_output_done;
+
+ bool is_kept(Char E) const
+ {
+ if (m_kept_delims.length())
+ return m_kept_delims.find(E) != string_type::npos;
+ else if (m_use_ispunct) {
+ return std::ispunct(E) != 0;
+ } else
+ return false;
+ }
+ bool is_dropped(Char E) const
+ {
+ if (m_dropped_delims.length())
+ return m_dropped_delims.find(E) != string_type::npos;
+ else if (m_use_isspace) {
+ return std::isspace(E) != 0;
+ } else
+ return false;
+ }
+ };
+
+ //===========================================================================
+ // The following class is DEPRECATED, use class char_separators instead.
+ //
+ // The char_delimiters_separator class, which is a model of
+ // TokenizerFunction. char_delimiters_separator breaks a string
+ // into tokens based on character delimiters. There are 2 types of
+ // delimiters. returnable delimiters can be returned as
+ // tokens. These are often punctuation. nonreturnable delimiters
+ // cannot be returned as tokens. These are often whitespace
+
+ // The out of the box GCC 2.95 on cygwin does not have a char_traits class.
+#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
+ template <class Char,
+ class Traits = typename std::basic_string<Char>::traits_type >
+#else
+ template <class Char,
+ class Traits = std::basic_string<Char>::traits_type >
+#endif
+ class char_delimiters_separator {
+ private:
+
+ typedef std::basic_string<Char,Traits> string_type;
+ string_type returnable_;
+ string_type nonreturnable_;
+ bool return_delims_;
+ bool no_ispunct_;
+ bool no_isspace_;
+
+ bool is_ret(Char E)const
+ {
+ if (returnable_.length())
+ return returnable_.find(E) != string_type::npos;
+ else{
+ if (no_ispunct_) {return false;}
+ else{
+ int r = std::ispunct(E);
+ return r != 0;
+ }
+ }
+ }
+ bool is_nonret(Char E)const
+ {
+ if (nonreturnable_.length())
+ return nonreturnable_.find(E) != string_type::npos;
+ else{
+ if (no_isspace_) {return false;}
+ else{
+ int r = std::isspace(E);
+ return r != 0;
+ }
+ }
+ }
+
+ public:
+ explicit char_delimiters_separator(bool return_delims = false,
+ const Char* returnable = 0,
+ const Char* nonreturnable = 0)
+ : returnable_(returnable ? returnable : string_type().c_str()),
+ nonreturnable_(nonreturnable ? nonreturnable:string_type().c_str()),
+ return_delims_(return_delims), no_ispunct_(returnable!=0),
+ no_isspace_(nonreturnable!=0) { }
+
+ void reset() { }
+
+ public:
+
+ template <typename InputIterator, typename Token>
+ bool operator()(InputIterator& next, InputIterator end,Token& tok) {
+ tok = Token();
+
+ // skip past all nonreturnable delims
+ // skip past the returnable only if we are not returning delims
+ for (;next!=end && ( is_nonret(*next) || (is_ret(*next)
+ && !return_delims_ ) );++next) { }
+
+ if (next == end) {
+ return false;
+ }
+
+ // if we are to return delims and we are one a returnable one
+ // move past it and stop
+ if (is_ret(*next) && return_delims_) {
+ tok+=*next;
+ ++next;
+ }
+ else
+ // append all the non delim characters
+ for (;next!=end && !is_nonret(*next) && !is_ret(*next);++next)
+ tok+=*next;
+
+
+ return true;
+ }
+ };
+
+
+} //namespace boost
+
+
+#endif
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/token_iterator.hpp b/3rdParty/Boost/boost/token_iterator.hpp
new file mode 100644
index 0000000..19b1db2
--- /dev/null
+++ b/3rdParty/Boost/boost/token_iterator.hpp
@@ -0,0 +1,128 @@
+// Boost token_iterator.hpp -------------------------------------------------//
+
+// Copyright John R. Bandela 2001
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/tokenizer for documentation.
+
+// Revision History:
+// 16 Jul 2003 John Bandela
+// Allowed conversions from convertible base iterators
+// 03 Jul 2003 John Bandela
+// Converted to new iterator adapter
+
+
+
+#ifndef BOOST_TOKENIZER_POLICY_JRB070303_HPP_
+#define BOOST_TOKENIZER_POLICY_JRB070303_HPP_
+
+#include<boost/assert.hpp>
+#include<boost/iterator/iterator_adaptor.hpp>
+#include<boost/iterator/detail/minimum_category.hpp>
+#include<boost/token_functions.hpp>
+#include<utility>
+
+namespace boost
+{
+ template <class TokenizerFunc, class Iterator, class Type>
+ class token_iterator
+ : public iterator_facade<
+ token_iterator<TokenizerFunc, Iterator, Type>
+ , Type
+ , typename detail::minimum_category<
+ forward_traversal_tag
+ , typename iterator_traversal<Iterator>::type
+ >::type
+ , const Type&
+ >
+ {
+
+ friend class iterator_core_access;
+
+ TokenizerFunc f_;
+ Iterator begin_;
+ Iterator end_;
+ bool valid_;
+ Type tok_;
+
+ void increment(){
+ BOOST_ASSERT(valid_);
+ valid_ = f_(begin_,end_,tok_);
+ }
+
+ const Type& dereference() const {
+ BOOST_ASSERT(valid_);
+ return tok_;
+ }
+ template<class Other>
+ bool equal(const Other& a) const{
+ return (a.valid_ && valid_)
+ ?( (a.begin_==begin_) && (a.end_ == end_) )
+ :(a.valid_==valid_);
+
+ }
+
+ void initialize(){
+ if(valid_) return;
+ f_.reset();
+ valid_ = (begin_ != end_)?
+ f_(begin_,end_,tok_):false;
+ }
+ public:
+ token_iterator():begin_(),end_(),valid_(false),tok_() { }
+
+ token_iterator(TokenizerFunc f, Iterator begin, Iterator e = Iterator())
+ : f_(f),begin_(begin),end_(e),valid_(false),tok_(){ initialize(); }
+
+ token_iterator(Iterator begin, Iterator e = Iterator())
+ : f_(),begin_(begin),end_(e),valid_(false),tok_() {initialize();}
+
+ template<class OtherIter>
+ token_iterator(
+ token_iterator<TokenizerFunc, OtherIter,Type> const& t
+ , typename enable_if_convertible<OtherIter, Iterator>::type* = 0)
+ : f_(t.tokenizer_function()),begin_(t.base())
+ ,end_(t.end()),valid_(!t.at_end()),tok_(t.current_token()) {}
+
+ Iterator base()const{return begin_;}
+
+ Iterator end()const{return end_;};
+
+ TokenizerFunc tokenizer_function()const{return f_;}
+
+ Type current_token()const{return tok_;}
+
+ bool at_end()const{return !valid_;}
+
+
+
+
+ };
+ template <
+ class TokenizerFunc = char_delimiters_separator<char>,
+ class Iterator = std::string::const_iterator,
+ class Type = std::string
+ >
+ class token_iterator_generator {
+
+ private:
+ public:
+ typedef token_iterator<TokenizerFunc,Iterator,Type> type;
+ };
+
+
+ // Type has to be first because it needs to be explicitly specified
+ // because there is no way the function can deduce it.
+ template<class Type, class Iterator, class TokenizerFunc>
+ typename token_iterator_generator<TokenizerFunc,Iterator,Type>::type
+ make_token_iterator(Iterator begin, Iterator end,const TokenizerFunc& fun){
+ typedef typename
+ token_iterator_generator<TokenizerFunc,Iterator,Type>::type ret_type;
+ return ret_type(fun,begin,end);
+ }
+
+} // namespace boost
+
+#endif
diff --git a/3rdParty/Boost/boost/tokenizer.hpp b/3rdParty/Boost/boost/tokenizer.hpp
new file mode 100644
index 0000000..081e5ba
--- /dev/null
+++ b/3rdParty/Boost/boost/tokenizer.hpp
@@ -0,0 +1,98 @@
+// Boost tokenizer.hpp -----------------------------------------------------//
+
+// (c) Copyright Jeremy Siek and John R. Bandela 2001.
+
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/tokenizer for documenation
+
+// Revision History:
+// 03 Jul 2003 John Bandela
+// Converted to new iterator adapter
+// 02 Feb 2002 Jeremy Siek
+// Removed tabs and a little cleanup.
+
+#ifndef BOOST_TOKENIZER_JRB070303_HPP_
+#define BOOST_TOKENIZER_JRB070303_HPP_
+
+#include <boost/token_iterator.hpp>
+
+namespace boost {
+
+
+ //===========================================================================
+ // A container-view of a tokenized "sequence"
+ template <
+ typename TokenizerFunc = char_delimiters_separator<char>,
+ typename Iterator = std::string::const_iterator,
+ typename Type = std::string
+ >
+ class tokenizer {
+ private:
+ typedef token_iterator_generator<TokenizerFunc,Iterator,Type> TGen;
+
+ // It seems that MSVC does not like the unqualified use of iterator,
+ // Thus we use iter internally when it is used unqualified and
+ // the users of this class will always qualify iterator.
+ typedef typename TGen::type iter;
+
+ public:
+
+ typedef iter iterator;
+ typedef iter const_iterator;
+ typedef Type value_type;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef value_type* pointer;
+ typedef const pointer const_pointer;
+ typedef void size_type;
+ typedef void difference_type;
+
+ tokenizer(Iterator first, Iterator last,
+ const TokenizerFunc& f = TokenizerFunc())
+ : first_(first), last_(last), f_(f) { }
+
+ template <typename Container>
+ tokenizer(const Container& c)
+ : first_(c.begin()), last_(c.end()), f_() { }
+
+ template <typename Container>
+ tokenizer(const Container& c,const TokenizerFunc& f)
+ : first_(c.begin()), last_(c.end()), f_(f) { }
+
+ void assign(Iterator first, Iterator last){
+ first_ = first;
+ last_ = last;
+ }
+
+ void assign(Iterator first, Iterator last, const TokenizerFunc& f){
+ assign(first,last);
+ f_ = f;
+ }
+
+ template <typename Container>
+ void assign(const Container& c){
+ assign(c.begin(),c.end());
+ }
+
+
+ template <typename Container>
+ void assign(const Container& c, const TokenizerFunc& f){
+ assign(c.begin(),c.end(),f);
+ }
+
+ iter begin() const { return iter(f_,first_,last_); }
+ iter end() const { return iter(f_,last_,last_); }
+
+ private:
+ Iterator first_;
+ Iterator last_;
+ TokenizerFunc f_;
+ };
+
+
+} // namespace boost
+
+#endif
diff --git a/3rdParty/Boost/boost/type.hpp b/3rdParty/Boost/boost/type.hpp
new file mode 100644
index 0000000..ab81c91
--- /dev/null
+++ b/3rdParty/Boost/boost/type.hpp
@@ -0,0 +1,18 @@
+// (C) Copyright David Abrahams 2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_DWA20010120_HPP
+# define BOOST_TYPE_DWA20010120_HPP
+
+namespace boost {
+
+ // Just a simple "type envelope". Useful in various contexts, mostly to work
+ // around some MSVC deficiencies.
+ template <class T>
+ struct type {};
+
+}
+
+#endif // BOOST_TYPE_DWA20010120_HPP
diff --git a/3rdParty/Boost/boost/type_traits.hpp b/3rdParty/Boost/boost/type_traits.hpp
new file mode 100644
index 0000000..0c313b8
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits.hpp
@@ -0,0 +1,89 @@
+// (C) Copyright John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// See boost/type_traits/*.hpp for full copyright notices.
+
+#ifndef BOOST_TYPE_TRAITS_HPP
+#define BOOST_TYPE_TRAITS_HPP
+
+#include "boost/type_traits/add_const.hpp"
+#include "boost/type_traits/add_cv.hpp"
+#include "boost/type_traits/add_pointer.hpp"
+#include "boost/type_traits/add_reference.hpp"
+#include "boost/type_traits/add_volatile.hpp"
+#include "boost/type_traits/alignment_of.hpp"
+#include "boost/type_traits/has_nothrow_assign.hpp"
+#include "boost/type_traits/has_nothrow_constructor.hpp"
+#include "boost/type_traits/has_nothrow_copy.hpp"
+#include "boost/type_traits/has_nothrow_destructor.hpp"
+#include "boost/type_traits/has_trivial_assign.hpp"
+#include "boost/type_traits/has_trivial_constructor.hpp"
+#include "boost/type_traits/has_trivial_copy.hpp"
+#include "boost/type_traits/has_trivial_destructor.hpp"
+#include "boost/type_traits/has_virtual_destructor.hpp"
+#include "boost/type_traits/is_signed.hpp"
+#include "boost/type_traits/is_unsigned.hpp"
+#include "boost/type_traits/is_abstract.hpp"
+#include "boost/type_traits/is_arithmetic.hpp"
+#include "boost/type_traits/is_array.hpp"
+#include "boost/type_traits/is_base_and_derived.hpp"
+#include "boost/type_traits/is_base_of.hpp"
+#include "boost/type_traits/is_class.hpp"
+#include "boost/type_traits/is_compound.hpp"
+#include "boost/type_traits/is_const.hpp"
+#include "boost/type_traits/is_convertible.hpp"
+#include "boost/type_traits/is_empty.hpp"
+#include "boost/type_traits/is_enum.hpp"
+#include "boost/type_traits/is_float.hpp"
+#include "boost/type_traits/is_floating_point.hpp"
+#include "boost/type_traits/is_function.hpp"
+#include "boost/type_traits/is_fundamental.hpp"
+#include "boost/type_traits/is_integral.hpp"
+#include "boost/type_traits/is_member_function_pointer.hpp"
+#include "boost/type_traits/is_member_object_pointer.hpp"
+#include "boost/type_traits/is_member_pointer.hpp"
+#include "boost/type_traits/is_object.hpp"
+#include "boost/type_traits/is_pod.hpp"
+#include "boost/type_traits/is_polymorphic.hpp"
+#include "boost/type_traits/is_pointer.hpp"
+#include "boost/type_traits/is_reference.hpp"
+#include "boost/type_traits/is_same.hpp"
+#include "boost/type_traits/is_scalar.hpp"
+#include "boost/type_traits/is_stateless.hpp"
+#include "boost/type_traits/is_union.hpp"
+#include "boost/type_traits/is_void.hpp"
+#include "boost/type_traits/is_volatile.hpp"
+#include "boost/type_traits/rank.hpp"
+#include "boost/type_traits/extent.hpp"
+#include "boost/type_traits/remove_bounds.hpp"
+#include "boost/type_traits/remove_extent.hpp"
+#include "boost/type_traits/remove_all_extents.hpp"
+#include "boost/type_traits/remove_const.hpp"
+#include "boost/type_traits/remove_cv.hpp"
+#include "boost/type_traits/remove_pointer.hpp"
+#include "boost/type_traits/remove_reference.hpp"
+#include "boost/type_traits/remove_volatile.hpp"
+#include "boost/type_traits/type_with_alignment.hpp"
+#include "boost/type_traits/function_traits.hpp"
+#include "boost/type_traits/aligned_storage.hpp"
+#include "boost/type_traits/floating_point_promotion.hpp"
+#if !(defined(__sgi) && defined(__EDG_VERSION__) && (__EDG_VERSION__ == 238))
+#include "boost/type_traits/integral_promotion.hpp"
+#include "boost/type_traits/promote.hpp"
+#endif
+#include <boost/type_traits/make_unsigned.hpp>
+#include <boost/type_traits/make_signed.hpp>
+#include <boost/type_traits/decay.hpp>
+#include <boost/type_traits/is_complex.hpp>
+
+#include "boost/type_traits/ice.hpp"
+
+#endif // BOOST_TYPE_TRAITS_HPP
+
+
+
+
diff --git a/3rdParty/Boost/boost/type_traits/add_const.hpp b/3rdParty/Boost/boost/type_traits/add_const.hpp
new file mode 100644
index 0000000..29f0bd9
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/add_const.hpp
@@ -0,0 +1,47 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_CONST_HPP_INCLUDED
+#define BOOST_TT_ADD_CONST_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+// * convert a type T to const type - add_const<T>
+// this is not required since the result is always
+// the same as "T const", but it does suppress warnings
+// from some compilers:
+
+#if defined(BOOST_MSVC)
+// This bogus warning will appear when add_const is applied to a
+// const volatile reference because we can't detect const volatile
+// references with MSVC6.
+# pragma warning(push)
+# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
+#endif
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_const,T,T const)
+
+#if defined(BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_const,T&,T&)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_CONST_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/add_cv.hpp b/3rdParty/Boost/boost/type_traits/add_cv.hpp
new file mode 100644
index 0000000..bfde76a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/add_cv.hpp
@@ -0,0 +1,48 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_ADD_CV_HPP_INCLUDED
+#define BOOST_TT_ADD_CV_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+// * convert a type T to a const volatile type - add_cv<T>
+// this is not required since the result is always
+// the same as "T const volatile", but it does suppress warnings
+// from some compilers:
+
+#if defined(BOOST_MSVC)
+// This bogus warning will appear when add_volatile is applied to a
+// const volatile reference because we can't detect const volatile
+// references with MSVC6.
+# pragma warning(push)
+# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
+#endif
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_cv,T,T const volatile)
+
+#if defined(BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_cv,T&,T&)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_CV_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/add_pointer.hpp b/3rdParty/Boost/boost/type_traits/add_pointer.hpp
new file mode 100644
index 0000000..3e0e481
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/add_pointer.hpp
@@ -0,0 +1,72 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_POINTER_HPP_INCLUDED
+#define BOOST_TT_ADD_POINTER_HPP_INCLUDED
+
+#include <boost/type_traits/remove_reference.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x5A0)
+//
+// For some reason this implementation stops Borlands compiler
+// from dropping cv-qualifiers, it still fails with references
+// to arrays for some reason though (shrug...) (JM 20021104)
+//
+template <typename T>
+struct add_pointer_impl
+{
+ typedef T* type;
+};
+template <typename T>
+struct add_pointer_impl<T&>
+{
+ typedef T* type;
+};
+template <typename T>
+struct add_pointer_impl<T&const>
+{
+ typedef T* type;
+};
+template <typename T>
+struct add_pointer_impl<T&volatile>
+{
+ typedef T* type;
+};
+template <typename T>
+struct add_pointer_impl<T&const volatile>
+{
+ typedef T* type;
+};
+
+#else
+
+template <typename T>
+struct add_pointer_impl
+{
+ typedef typename remove_reference<T>::type no_ref_type;
+ typedef no_ref_type* type;
+};
+
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_pointer,T,typename boost::detail::add_pointer_impl<T>::type)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/add_reference.hpp b/3rdParty/Boost/boost/type_traits/add_reference.hpp
new file mode 100644
index 0000000..7dfb4be
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/add_reference.hpp
@@ -0,0 +1,89 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
+#define BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
+
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/detail/workaround.hpp>
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+
+template <bool x>
+struct reference_adder
+{
+ template <typename T> struct result_
+ {
+ typedef T& type;
+ };
+};
+
+template <>
+struct reference_adder<true>
+{
+ template <typename T> struct result_
+ {
+ typedef T type;
+ };
+};
+
+template <typename T>
+struct add_reference_impl
+{
+ typedef typename reference_adder<
+ ::boost::is_reference<T>::value
+ >::template result_<T> result;
+
+ typedef typename result::type type;
+};
+
+#else
+
+template <typename T>
+struct add_reference_impl
+{
+ typedef T& type;
+};
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(typename T,add_reference,T&,T&)
+#endif
+
+#endif
+
+// these full specialisations are always required:
+BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void,void)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void const,void const)
+BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void volatile,void volatile)
+BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(add_reference,void const volatile,void const volatile)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_reference,T,typename boost::detail::add_reference_impl<T>::type)
+
+// agurt, 07/mar/03: workaround Borland's ill-formed sensitivity to an additional
+// level of indirection, here
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_reference,T&,T&)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/add_volatile.hpp b/3rdParty/Boost/boost/type_traits/add_volatile.hpp
new file mode 100644
index 0000000..491f1c2
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/add_volatile.hpp
@@ -0,0 +1,47 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
+#define BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+// * convert a type T to volatile type - add_volatile<T>
+// this is not required since the result is always
+// the same as "T volatile", but it does suppress warnings
+// from some compilers:
+
+#if defined(BOOST_MSVC)
+// This bogus warning will appear when add_volatile is applied to a
+// const volatile reference because we can't detect const volatile
+// references with MSVC6.
+# pragma warning(push)
+# pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
+#endif
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(add_volatile,T,T volatile)
+
+#if defined(BOOST_MSVC)
+# pragma warning(pop)
+#endif
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,add_volatile,T&,T&)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/aligned_storage.hpp b/3rdParty/Boost/boost/type_traits/aligned_storage.hpp
new file mode 100644
index 0000000..5420f26
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/aligned_storage.hpp
@@ -0,0 +1,13 @@
+
+// Copyright (C) John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
+# define BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
+# include <boost/aligned_storage.hpp>
+#endif // BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/alignment_of.hpp b/3rdParty/Boost/boost/type_traits/alignment_of.hpp
new file mode 100644
index 0000000..564d3bb
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/alignment_of.hpp
@@ -0,0 +1,128 @@
+
+// (C) Copyright John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
+#define BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <cstddef>
+
+#include <boost/type_traits/intrinsics.hpp>
+// should be the last #include
+#include <boost/type_traits/detail/size_t_trait_def.hpp>
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4121 4512) // alignment is sensitive to packing
+#endif
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+#pragma option push -Vx- -Ve-
+#endif
+
+namespace boost {
+
+template <typename T> struct alignment_of;
+
+// get the alignment of some arbitrary type:
+namespace detail {
+
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4324) // structure was padded due to __declspec(align())
+#endif
+template <typename T>
+struct alignment_of_hack
+{
+ char c;
+ T t;
+ alignment_of_hack();
+};
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
+template <unsigned A, unsigned S>
+struct alignment_logic
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = A < S ? A : S);
+};
+
+
+template< typename T >
+struct alignment_of_impl
+{
+#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1400)
+ //
+ // With MSVC both the native __alignof operator
+ // and our own logic gets things wrong from time to time :-(
+ // Using a combination of the two seems to make the most of a bad job:
+ //
+ BOOST_STATIC_CONSTANT(std::size_t, value =
+ (::boost::detail::alignment_logic<
+ sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T),
+ __alignof(T)
+ >::value));
+#elif !defined(BOOST_ALIGNMENT_OF)
+ BOOST_STATIC_CONSTANT(std::size_t, value =
+ (::boost::detail::alignment_logic<
+ sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T),
+ sizeof(T)
+ >::value));
+#else
+ //
+ // We put this here, rather than in the definition of
+ // alignment_of below, because MSVC's __alignof doesn't
+ // always work in that context for some unexplained reason.
+ // (See type_with_alignment tests for test cases).
+ //
+ BOOST_STATIC_CONSTANT(std::size_t, value = BOOST_ALIGNMENT_OF(T));
+#endif
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(alignment_of,T,::boost::detail::alignment_of_impl<T>::value)
+
+// references have to be treated specially, assume
+// that a reference is just a special pointer:
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <typename T>
+struct alignment_of<T&>
+ : alignment_of<T*>
+{
+};
+#endif
+#ifdef __BORLANDC__
+// long double gives an incorrect value of 10 (!)
+// unless we do this...
+struct long_double_wrapper{ long double ld; };
+template<> struct alignment_of<long double>
+ : public alignment_of<long_double_wrapper>{};
+#endif
+
+// void has to be treated specially:
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void,0)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void const,0)
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void volatile,0)
+BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(alignment_of,void const volatile,0)
+#endif
+
+} // namespace boost
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+#pragma option pop
+#endif
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#include <boost/type_traits/detail/size_t_trait_undef.hpp>
+
+#endif // BOOST_TT_ALIGNMENT_OF_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/arithmetic_traits.hpp b/3rdParty/Boost/boost/type_traits/arithmetic_traits.hpp
new file mode 100644
index 0000000..e4670e6
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/arithmetic_traits.hpp
@@ -0,0 +1,20 @@
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+//
+// defines traits classes for arithmetic types:
+// is_void, is_integral, is_float, is_arithmetic, is_fundamental.
+
+#ifndef BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
+#define BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
+
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_float.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_void.hpp>
+
+#endif // BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/broken_compiler_spec.hpp b/3rdParty/Boost/boost/type_traits/broken_compiler_spec.hpp
new file mode 100644
index 0000000..fb51769
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/broken_compiler_spec.hpp
@@ -0,0 +1,117 @@
+
+// Copyright 2001-2003 Aleksey Gurtovoy.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
+#define BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
+
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/config.hpp>
+
+// these are needed regardless of BOOST_TT_NO_BROKEN_COMPILER_SPEC
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+namespace boost { namespace detail {
+template< typename T > struct remove_const_impl { typedef T type; };
+template< typename T > struct remove_volatile_impl { typedef T type; };
+template< typename T > struct remove_pointer_impl { typedef T type; };
+template< typename T > struct remove_reference_impl { typedef T type; };
+typedef int invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces;
+}}
+#endif
+
+// agurt, 27/jun/03: disable the workaround if user defined
+// BOOST_TT_NO_BROKEN_COMPILER_SPEC
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ || defined(BOOST_TT_NO_BROKEN_COMPILER_SPEC)
+
+# define BOOST_TT_BROKEN_COMPILER_SPEC(T) /**/
+
+#else
+
+// same as BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1 macro, except that it
+// never gets #undef-ined
+# define BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(trait,spec,result) \
+template<> struct trait##_impl<spec> \
+{ \
+ typedef result type; \
+}; \
+/**/
+
+# define BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const,T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_const,T const volatile,T volatile) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T volatile,T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_volatile,T const volatile,T const) \
+ /**/
+
+# define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*,T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*const,T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*volatile,T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_pointer,T*const volatile,T) \
+ BOOST_TT_AUX_BROKEN_TYPE_TRAIT_SPEC1(remove_reference,T&,T) \
+ /**/
+
+# define BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const) \
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T volatile) \
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_1_SPEC(T const volatile) \
+ /**/
+
+# define BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_PTR_REF_RANK_2_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_CONST_VOLATILE_RANK1_SPEC(T) \
+ /**/
+
+# define BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T*) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const*) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T volatile*) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T const volatile*) \
+ /**/
+
+# define BOOST_TT_BROKEN_COMPILER_SPEC(T) \
+ namespace boost { namespace detail { \
+ typedef invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces \
+ please_invoke_BOOST_TT_BROKEN_COMPILER_SPEC_outside_all_namespaces; \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_1_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T*) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const*) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T volatile*) \
+ BOOST_TT_AUX_REMOVE_ALL_RANK_2_SPEC(T const volatile*) \
+ }} \
+ /**/
+
+# include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_BROKEN_COMPILER_SPEC(bool)
+BOOST_TT_BROKEN_COMPILER_SPEC(char)
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+BOOST_TT_BROKEN_COMPILER_SPEC(wchar_t)
+#endif
+BOOST_TT_BROKEN_COMPILER_SPEC(signed char)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned char)
+BOOST_TT_BROKEN_COMPILER_SPEC(signed short)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned short)
+BOOST_TT_BROKEN_COMPILER_SPEC(signed int)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned int)
+BOOST_TT_BROKEN_COMPILER_SPEC(signed long)
+BOOST_TT_BROKEN_COMPILER_SPEC(unsigned long)
+BOOST_TT_BROKEN_COMPILER_SPEC(float)
+BOOST_TT_BROKEN_COMPILER_SPEC(double)
+//BOOST_TT_BROKEN_COMPILER_SPEC(long double)
+
+// for backward compatibility
+#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(T) \
+ BOOST_TT_BROKEN_COMPILER_SPEC(T) \
+/**/
+
+#endif // BOOST_TT_BROKEN_COMPILER_SPEC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/composite_traits.hpp b/3rdParty/Boost/boost/type_traits/composite_traits.hpp
new file mode 100644
index 0000000..985a4c5
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/composite_traits.hpp
@@ -0,0 +1,29 @@
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+//
+// defines traits classes for composite types:
+// is_array, is_pointer, is_reference, is_member_pointer, is_enum, is_union.
+//
+
+#ifndef BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
+#define BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
+
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_member_pointer.hpp>
+#include <boost/type_traits/is_member_function_pointer.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/is_union.hpp>
+
+#endif // BOOST_TT_COMPOSITE_TRAITS_HPP_INCLUDED
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/type_traits/config.hpp b/3rdParty/Boost/boost/type_traits/config.hpp
new file mode 100644
index 0000000..94f1376
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/config.hpp
@@ -0,0 +1,76 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
+#define BOOST_TT_CONFIG_HPP_INCLUDED
+
+#ifndef BOOST_CONFIG_HPP
+#include <boost/config.hpp>
+#endif
+
+#include <boost/detail/workaround.hpp>
+
+//
+// whenever we have a conversion function with elipses
+// it needs to be declared __cdecl to suppress compiler
+// warnings from MS and Borland compilers (this *must*
+// appear before we include is_same.hpp below):
+#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
+# define BOOST_TT_DECL __cdecl
+#else
+# define BOOST_TT_DECL /**/
+#endif
+
+# if (BOOST_WORKAROUND(__MWERKS__, < 0x3000) \
+ || BOOST_WORKAROUND(BOOST_MSVC, <= 1301) \
+ || !defined(__EDG_VERSION__) && BOOST_WORKAROUND(__GNUC__, < 3) \
+ || BOOST_WORKAROUND(__IBMCPP__, < 600 ) \
+ || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0) \
+ || defined(__ghs) \
+ || BOOST_WORKAROUND(__HP_aCC, < 60700) \
+ || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890)) \
+ || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580))) \
+ && defined(BOOST_NO_IS_ABSTRACT)
+
+# define BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION 1
+
+#endif
+
+#ifndef BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION
+# define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION 1
+#endif
+
+//
+// Define BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+// when we can't test for function types with elipsis:
+//
+#if BOOST_WORKAROUND(__GNUC__, < 3)
+# define BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+#endif
+
+//
+// define BOOST_TT_TEST_MS_FUNC_SIGS
+// when we want to test __stdcall etc function types with is_function etc
+// (Note, does not work with Borland, even though it does support __stdcall etc):
+//
+#if defined(_MSC_EXTENSIONS) && !defined(__BORLANDC__)
+# define BOOST_TT_TEST_MS_FUNC_SIGS
+#endif
+
+//
+// define BOOST_TT_NO_CV_FUNC_TEST
+// if tests for cv-qualified member functions don't
+// work in is_member_function_pointer
+//
+#if BOOST_WORKAROUND(__MWERKS__, < 0x3000) || BOOST_WORKAROUND(__IBMCPP__, <= 600)
+# define BOOST_TT_NO_CV_FUNC_TEST
+#endif
+
+#endif // BOOST_TT_CONFIG_HPP_INCLUDED
+
+
diff --git a/3rdParty/Boost/boost/type_traits/conversion_traits.hpp b/3rdParty/Boost/boost/type_traits/conversion_traits.hpp
new file mode 100644
index 0000000..c8e5139
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/conversion_traits.hpp
@@ -0,0 +1,17 @@
+
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+//
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
+#define BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
+
+#include <boost/type_traits/is_convertible.hpp>
+
+#endif // BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/decay.hpp b/3rdParty/Boost/boost/type_traits/decay.hpp
new file mode 100644
index 0000000..c23a9b0
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/decay.hpp
@@ -0,0 +1,44 @@
+// (C) Copyright John Maddock & Thorsten Ottosen 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_DECAY_HPP_INCLUDED
+#define BOOST_TT_DECAY_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/remove_bounds.hpp>
+#include <boost/type_traits/add_pointer.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost
+{
+
+ template< class T >
+ struct decay
+ {
+ private:
+ typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type Ty;
+ public:
+ typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ is_array<Ty>,
+ mpl::identity<BOOST_DEDUCED_TYPENAME remove_bounds<Ty>::type*>,
+ BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ is_function<Ty>,
+ add_pointer<Ty>,
+ mpl::identity<Ty>
+ >
+ >::type type;
+ };
+
+} // namespace boost
+
+
+#endif // BOOST_TT_DECAY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/bool_trait_def.hpp b/3rdParty/Boost/boost/type_traits/detail/bool_trait_def.hpp
new file mode 100644
index 0000000..19bb18c
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/bool_trait_def.hpp
@@ -0,0 +1,173 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// $Source$
+// $Date: 2006-07-12 07:10:22 -0400 (Wed, 12 Jul 2006) $
+// $Revision: 34511 $
+
+#include <boost/type_traits/detail/template_arity_spec.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/config.hpp>
+
+//
+// Unfortunately some libraries have started using this header without
+// cleaning up afterwards: so we'd better undef the macros just in case
+// they've been defined already....
+//
+#ifdef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
+#undef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
+#undef BOOST_TT_AUX_BOOL_C_BASE
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
+#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
+#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
+#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1
+#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2
+#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1
+#endif
+
+#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x570)
+# define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ typedef ::boost::integral_constant<bool,C> type; \
+ enum { value = type::value }; \
+ /**/
+# define BOOST_TT_AUX_BOOL_C_BASE(C)
+
+#elif defined(BOOST_MSVC) && BOOST_MSVC < 1300
+
+# define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ typedef ::boost::integral_constant<bool,C> base_; \
+ using base_::value; \
+ /**/
+
+#endif
+
+#ifndef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
+# define BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) /**/
+#endif
+
+#ifndef BOOST_TT_AUX_BOOL_C_BASE
+# define BOOST_TT_AUX_BOOL_C_BASE(C) : ::boost::integral_constant<bool,C>
+#endif
+
+
+#define BOOST_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
+template< typename T > struct trait \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
+/**/
+
+
+#define BOOST_TT_AUX_BOOL_TRAIT_DEF2(trait,T1,T2,C) \
+template< typename T1, typename T2 > struct trait \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,trait,(T1,T2)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(2,trait) \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,C) \
+template<> struct trait< sp > \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(sp)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_SPEC2(trait,sp1,sp2,C) \
+template<> struct trait< sp1,sp2 > \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(trait,sp,C) \
+template<> struct trait##_impl< sp > \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = (C)); \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,sp1,sp2,C) \
+template<> struct trait##_impl< sp1,sp2 > \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = (C)); \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(param,trait,sp,C) \
+template< param > struct trait< sp > \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,sp,C) \
+template< param1, param2 > struct trait< sp > \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
+template< param > struct trait< sp1,sp2 > \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,trait,(sp1,sp2)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(param1,param2,trait,sp1,sp2,C) \
+template< param1, param2 > struct trait< sp1,sp2 > \
+ BOOST_TT_AUX_BOOL_C_BASE(C) \
+{ \
+ BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(param,trait,sp1,sp2,C) \
+template< param > struct trait##_impl< sp1,sp2 > \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = (C)); \
+}; \
+/**/
+
+#ifndef BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(trait,sp,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp const,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp volatile,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp const volatile,value) \
+ /**/
+#else
+# define BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(trait,sp,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_SPEC1(trait,sp,value) \
+ /**/
+#endif
diff --git a/3rdParty/Boost/boost/type_traits/detail/bool_trait_undef.hpp b/3rdParty/Boost/boost/type_traits/detail/bool_trait_undef.hpp
new file mode 100644
index 0000000..2259c64
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/bool_trait_undef.hpp
@@ -0,0 +1,27 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// $Source$
+// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Revision: 24874 $
+
+#undef BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL
+#undef BOOST_TT_AUX_BOOL_C_BASE
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF1
+#undef BOOST_TT_AUX_BOOL_TRAIT_DEF2
+#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC1
+#undef BOOST_TT_AUX_BOOL_TRAIT_SPEC2
+#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1
+#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2
+#undef BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1
+#undef BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1
diff --git a/3rdParty/Boost/boost/type_traits/detail/cv_traits_impl.hpp b/3rdParty/Boost/boost/type_traits/detail/cv_traits_impl.hpp
new file mode 100644
index 0000000..b3fa595
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/cv_traits_impl.hpp
@@ -0,0 +1,97 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
+#define BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// implementation helper:
+
+
+#if !(BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2))
+namespace boost {
+namespace detail {
+#else
+#include <boost/type_traits/detail/yes_no_type.hpp>
+namespace boost {
+namespace type_traits {
+namespace gcc8503 {
+#endif
+
+template <typename T> struct cv_traits_imp {};
+
+template <typename T>
+struct cv_traits_imp<T*>
+{
+ BOOST_STATIC_CONSTANT(bool, is_const = false);
+ BOOST_STATIC_CONSTANT(bool, is_volatile = false);
+ typedef T unqualified_type;
+};
+
+template <typename T>
+struct cv_traits_imp<const T*>
+{
+ BOOST_STATIC_CONSTANT(bool, is_const = true);
+ BOOST_STATIC_CONSTANT(bool, is_volatile = false);
+ typedef T unqualified_type;
+};
+
+template <typename T>
+struct cv_traits_imp<volatile T*>
+{
+ BOOST_STATIC_CONSTANT(bool, is_const = false);
+ BOOST_STATIC_CONSTANT(bool, is_volatile = true);
+ typedef T unqualified_type;
+};
+
+template <typename T>
+struct cv_traits_imp<const volatile T*>
+{
+ BOOST_STATIC_CONSTANT(bool, is_const = true);
+ BOOST_STATIC_CONSTANT(bool, is_volatile = true);
+ typedef T unqualified_type;
+};
+
+#if BOOST_WORKAROUND(__GNUC__,== 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 2)
+// We have to exclude function pointers
+// (see http://gcc.gnu.org/bugzilla/show_bug.cgi?8503)
+yes_type mini_funcptr_tester(...);
+no_type mini_funcptr_tester(const volatile void*);
+
+} // namespace gcc8503
+} // namespace type_traits
+
+namespace detail {
+
+// Use the implementation above for non function pointers
+template <typename T, unsigned Select
+ = (unsigned)sizeof(::boost::type_traits::gcc8503::mini_funcptr_tester((T)0)) >
+struct cv_traits_imp : ::boost::type_traits::gcc8503::cv_traits_imp<T> { };
+
+// Functions are never cv-qualified
+template <typename T> struct cv_traits_imp<T*,1>
+{
+ BOOST_STATIC_CONSTANT(bool, is_const = false);
+ BOOST_STATIC_CONSTANT(bool, is_volatile = false);
+ typedef T unqualified_type;
+};
+
+#endif
+
+} // namespace detail
+} // namespace boost
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_TT_DETAIL_CV_TRAITS_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/false_result.hpp b/3rdParty/Boost/boost/type_traits/detail/false_result.hpp
new file mode 100644
index 0000000..e65e8bc
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/false_result.hpp
@@ -0,0 +1,28 @@
+// Copyright David Abrahams 2002.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
+#define BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+namespace boost {
+namespace type_traits {
+
+// Utility class which always "returns" false
+struct false_result
+{
+ template <typename T> struct result_
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+}} // namespace boost::type_traits
+
+#endif // BOOST_TT_DETAIL_FALSE_RESULT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/ice_and.hpp b/3rdParty/Boost/boost/type_traits/detail/ice_and.hpp
new file mode 100644
index 0000000..8b461b9
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/ice_and.hpp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+//
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+namespace boost {
+namespace type_traits {
+
+template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true>
+struct ice_and;
+
+template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
+struct ice_and
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <>
+struct ice_and<true, true, true, true, true, true, true>
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_AND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/ice_eq.hpp b/3rdParty/Boost/boost/type_traits/detail/ice_eq.hpp
new file mode 100644
index 0000000..ea42a60
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/ice_eq.hpp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+namespace boost {
+namespace type_traits {
+
+template <int b1, int b2>
+struct ice_eq
+{
+ BOOST_STATIC_CONSTANT(bool, value = (b1 == b2));
+};
+
+template <int b1, int b2>
+struct ice_ne
+{
+ BOOST_STATIC_CONSTANT(bool, value = (b1 != b2));
+};
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+template <int b1, int b2> bool const ice_eq<b1,b2>::value;
+template <int b1, int b2> bool const ice_ne<b1,b2>::value;
+#endif
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_EQ_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/ice_not.hpp b/3rdParty/Boost/boost/type_traits/detail/ice_not.hpp
new file mode 100644
index 0000000..ee1dca0
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/ice_not.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+namespace boost {
+namespace type_traits {
+
+template <bool b>
+struct ice_not
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template <>
+struct ice_not<true>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_NOT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/ice_or.hpp b/3rdParty/Boost/boost/type_traits/detail/ice_or.hpp
new file mode 100644
index 0000000..f88d9f6
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/ice_or.hpp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
+#define BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+namespace boost {
+namespace type_traits {
+
+template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
+struct ice_or;
+
+template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
+struct ice_or
+{
+ BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template <>
+struct ice_or<false, false, false, false, false, false, false>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_ICE_OR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/is_function_ptr_helper.hpp b/3rdParty/Boost/boost/type_traits/detail/is_function_ptr_helper.hpp
new file mode 100644
index 0000000..605d0bc
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/is_function_ptr_helper.hpp
@@ -0,0 +1,220 @@
+
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
+//
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
+#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+#endif
+
+namespace boost {
+namespace type_traits {
+
+template <class R>
+struct is_function_ptr_helper
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// preprocessor-generated part, don't edit by hand!
+
+template <class R >
+struct is_function_ptr_helper<R (*)()> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R >
+struct is_function_ptr_helper<R (*)( ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0>
+struct is_function_ptr_helper<R (*)( T0)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0>
+struct is_function_ptr_helper<R (*)( T0 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1>
+struct is_function_ptr_helper<R (*)( T0 , T1)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1>
+struct is_function_ptr_helper<R (*)( T0 , T1 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_function_ptr_helper<R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#else
+
+#undef BOOST_STATIC_CONSTANT
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (0, 25, "boost/type_traits/detail/is_function_ptr_helper.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
+
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))> { BOOST_STATIC_CONSTANT(bool, value = true); };
+@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
+@#endif
+#undef BOOST_PP_COUNTER
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/type_traits/detail/is_function_ptr_tester.hpp b/3rdParty/Boost/boost/type_traits/detail/is_function_ptr_tester.hpp
new file mode 100644
index 0000000..c1a3c6a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/is_function_ptr_tester.hpp
@@ -0,0 +1,654 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
+#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
+
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/config.hpp>
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+#endif
+
+namespace boost {
+namespace type_traits {
+
+// Note it is acceptible to use ellipsis here, since the argument will
+// always be a pointer type of some sort (JM 2005/06/04):
+no_type BOOST_TT_DECL is_function_ptr_tester(...);
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// pre-processed code, don't edit, try GNU cpp with
+// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
+
+template <class R >
+yes_type is_function_ptr_tester(R (*)());
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R >
+yes_type is_function_ptr_tester(R (*)( ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R >
+yes_type is_function_ptr_tester(R (__stdcall*)());
+template <class R >
+yes_type is_function_ptr_tester(R (__stdcall*)( ...));
+#ifndef _MANAGED
+template <class R >
+yes_type is_function_ptr_tester(R (__fastcall*)());
+template <class R >
+yes_type is_function_ptr_tester(R (__fastcall*)( ...));
+#endif
+template <class R >
+yes_type is_function_ptr_tester(R (__cdecl*)());
+template <class R >
+yes_type is_function_ptr_tester(R (__cdecl*)( ...));
+#endif
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (*)( T0));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (*)( T0 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0));
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 ...));
+#ifndef _MANAGED
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0));
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 ...));
+#endif
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0));
+template <class R , class T0 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 ...));
+#endif
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1));
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1));
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 ...));
+#endif
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1));
+template <class R , class T0 , class T1 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2));
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2));
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2));
+template <class R , class T0 , class T1 , class T2 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3));
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3));
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3));
+template <class R , class T0 , class T1 , class T2 , class T3 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (__stdcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+#ifndef _MANAGED
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (__fastcall*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+#endif
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+template <class R , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_function_ptr_tester(R (__cdecl*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+#endif
+#else
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (0, 25, "boost/type_traits/detail/is_function_ptr_tester.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
+#undef __stdcall
+#undef __fastcall
+#undef __cdecl
+
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+@#endif
+@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+@#ifndef _MANAGED
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+@#endif
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (__cdecl*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_function_ptr_tester(R (__cdecl*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+@#endif
+
+#undef BOOST_PP_COUNTER
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp b/3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
new file mode 100644
index 0000000..4f75f14
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
@@ -0,0 +1,817 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
+#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+#endif
+
+namespace boost {
+namespace type_traits {
+
+template <typename T>
+struct is_mem_fun_pointer_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// pre-processed code, don't edit, try GNU cpp with
+// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
+
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)() > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)( ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)() const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)() volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)() const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)( ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)( ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T >
+struct is_mem_fun_pointer_impl<R (T::*)( ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+
+#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24>
+struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+#endif
+#endif
+
+#else
+
+#undef BOOST_STATIC_CONSTANT
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (0, 25, "boost/type_traits/detail/is_mem_fun_pointer_impl.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) > { BOOST_STATIC_CONSTANT(bool, value = true); };
+@#endif
+
+@#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
+struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile > { BOOST_STATIC_CONSTANT(bool, value = true); };
+@#endif
+@#endif
+
+#undef BOOST_PP_COUNTER
+#endif // BOOST_PP_IS_ITERATING
+
diff --git a/3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp b/3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
new file mode 100644
index 0000000..e6532d3
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
@@ -0,0 +1,2759 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
+#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
+
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/config.hpp>
+
+#if defined(BOOST_TT_PREPROCESSING_MODE)
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+#endif
+
+namespace boost {
+namespace type_traits {
+
+no_type BOOST_TT_DECL is_mem_fun_pointer_tester(...);
+
+#if !defined(BOOST_TT_PREPROCESSING_MODE)
+// pre-processed code, don't edit, try GNU cpp with
+// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)());
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)() const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...));
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)());
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)() const volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...));
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)());
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)() const volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...));
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( ...) const volatile);
+#endif
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)());
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)() const volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...));
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) volatile);
+
+template <class R, class T >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( ...) const volatile);
+#endif
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0) const volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0) const volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0) const volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...));
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) volatile);
+
+template <class R, class T , class T0 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1) const volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1) const volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1) const volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...));
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) volatile);
+
+template <class R, class T , class T0 , class T1 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile);
+#endif
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+
+#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+#endif
+#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+
+#ifndef _MANAGED
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+#endif
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...));
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile);
+
+template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24 >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile);
+#endif
+
+#else
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (3, (0, 25, "boost/type_traits/detail/is_mem_fun_pointer_tester.hpp"))
+#include BOOST_PP_ITERATE()
+
+#endif // BOOST_TT_PREPROCESSING_MODE
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
+#undef __stdcall
+#undef __fastcall
+#undef __cdecl
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
+
+@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
+@#endif
+@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS // Other calling conventions used by MS compatible compilers:
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
+
+@#ifndef _MANAGED
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
+@#endif
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
+
+template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
+yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
+@#endif
+
+#undef BOOST_PP_COUNTER
+#endif // BOOST_PP_IS_ITERATING
diff --git a/3rdParty/Boost/boost/type_traits/detail/size_t_trait_def.hpp b/3rdParty/Boost/boost/type_traits/detail/size_t_trait_def.hpp
new file mode 100644
index 0000000..472c6ac
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/size_t_trait_def.hpp
@@ -0,0 +1,58 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// $Source$
+// $Date: 2005-08-25 12:27:28 -0400 (Thu, 25 Aug 2005) $
+// $Revision: 30670 $
+
+#include <boost/type_traits/detail/template_arity_spec.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/size_t.hpp>
+
+#include <cstddef>
+
+#if !defined(BOOST_MSVC) || BOOST_MSVC >= 1300
+# define BOOST_TT_AUX_SIZE_T_BASE(C) ::boost::integral_constant<std::size_t,C>
+# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) /**/
+#else
+# define BOOST_TT_AUX_SIZE_T_BASE(C) ::boost::mpl::size_t<C>
+# define BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
+ typedef ::boost::mpl::size_t<C> base_; \
+ using base_::value; \
+ /**/
+#endif
+
+
+#define BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(trait,T,C) \
+template< typename T > struct trait \
+ : BOOST_TT_AUX_SIZE_T_BASE(C) \
+{ \
+ BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
+/**/
+
+#define BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1(trait,spec,C) \
+template<> struct trait<spec> \
+ : BOOST_TT_AUX_SIZE_T_BASE(C) \
+{ \
+ BOOST_TT_AUX_SIZE_T_TRAIT_VALUE_DECL(C) \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_SIZE_T_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,C) \
+template< param > struct trait<spec> \
+ : BOOST_TT_AUX_SIZE_T_BASE(C) \
+{ \
+}; \
+/**/
diff --git a/3rdParty/Boost/boost/type_traits/detail/size_t_trait_undef.hpp b/3rdParty/Boost/boost/type_traits/detail/size_t_trait_undef.hpp
new file mode 100644
index 0000000..06a176d
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/size_t_trait_undef.hpp
@@ -0,0 +1,16 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// $Source$
+// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Revision: 24874 $
+
+#undef BOOST_TT_AUX_SIZE_T_TRAIT_DEF1
+#undef BOOST_TT_AUX_SIZE_T_TRAIT_SPEC1
+#undef BOOST_TT_AUX_SIZE_T_TRAIT_PARTIAL_SPEC1_1
diff --git a/3rdParty/Boost/boost/type_traits/detail/template_arity_spec.hpp b/3rdParty/Boost/boost/type_traits/detail/template_arity_spec.hpp
new file mode 100644
index 0000000..fe9b422
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/template_arity_spec.hpp
@@ -0,0 +1,31 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/aux_/template_arity_fwd.hpp>
+#include <boost/mpl/aux_/preprocessor/params.hpp>
+#include <boost/mpl/aux_/config/lambda.hpp>
+#include <boost/mpl/aux_/config/overload_resolution.hpp>
+
+#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+ && defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
+# define BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(i, name) \
+namespace mpl { namespace aux { \
+template< BOOST_MPL_PP_PARAMS(i, typename T) > \
+struct template_arity< \
+ name< BOOST_MPL_PP_PARAMS(i, T) > \
+ > \
+ : int_<i> \
+{ \
+}; \
+}} \
+/**/
+#else
+# define BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
+#endif
diff --git a/3rdParty/Boost/boost/type_traits/detail/type_trait_def.hpp b/3rdParty/Boost/boost/type_traits/detail/type_trait_def.hpp
new file mode 100644
index 0000000..644c7ac
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/type_trait_def.hpp
@@ -0,0 +1,61 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// $Source$
+// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Revision: 24874 $
+
+#include <boost/type_traits/detail/template_arity_spec.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#define BOOST_TT_AUX_TYPE_TRAIT_DEF1(trait,T,result) \
+template< typename T > struct trait \
+{ \
+ typedef result type; \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
+}; \
+\
+BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(1,trait) \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_SPEC1(trait,spec,result) \
+template<> struct trait<spec> \
+{ \
+ typedef result type; \
+ BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(1,trait,(spec)) \
+}; \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1(trait,spec,result) \
+template<> struct trait##_impl<spec> \
+{ \
+ typedef result type; \
+}; \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(param,trait,spec,result) \
+template< param > struct trait<spec> \
+{ \
+ typedef result type; \
+}; \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(param1,param2,trait,spec,result) \
+template< param1, param2 > struct trait<spec> \
+{ \
+ typedef result; \
+}; \
+/**/
+
+#define BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1(param,trait,spec,result) \
+template< param > struct trait##_impl<spec> \
+{ \
+ typedef result type; \
+}; \
+/**/
diff --git a/3rdParty/Boost/boost/type_traits/detail/type_trait_undef.hpp b/3rdParty/Boost/boost/type_traits/detail/type_trait_undef.hpp
new file mode 100644
index 0000000..9403b9b
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/type_trait_undef.hpp
@@ -0,0 +1,19 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// $Source$
+// $Date: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $
+// $Revision: 24874 $
+
+#undef BOOST_TT_AUX_TYPE_TRAIT_DEF1
+#undef BOOST_TT_AUX_TYPE_TRAIT_SPEC1
+#undef BOOST_TT_AUX_TYPE_TRAIT_IMPL_SPEC1
+#undef BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1
+#undef BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2
+#undef BOOST_TT_AUX_TYPE_TRAIT_IMPL_PARTIAL_SPEC1_1
diff --git a/3rdParty/Boost/boost/type_traits/detail/wrap.hpp b/3rdParty/Boost/boost/type_traits/detail/wrap.hpp
new file mode 100644
index 0000000..d0a75d0
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/wrap.hpp
@@ -0,0 +1,18 @@
+// (C) Copyright David Abrahams 2002.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_DETAIL_WRAP_HPP_INCLUDED
+#define BOOST_TT_DETAIL_WRAP_HPP_INCLUDED
+
+namespace boost {
+namespace type_traits {
+
+template <class T> struct wrap {};
+
+}} // namespace boost::type_traits
+
+#endif // BOOST_TT_DETAIL_WRAP_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/detail/yes_no_type.hpp b/3rdParty/Boost/boost/type_traits/detail/yes_no_type.hpp
new file mode 100644
index 0000000..f583730
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/detail/yes_no_type.hpp
@@ -0,0 +1,26 @@
+
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+//
+// macros and helpers for working with integral-constant-expressions.
+
+#ifndef BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
+#define BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
+
+namespace boost {
+namespace type_traits {
+
+typedef char yes_type;
+struct no_type
+{
+ char padding[8];
+};
+
+} // namespace type_traits
+} // namespace boost
+
+#endif // BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/extent.hpp b/3rdParty/Boost/boost/type_traits/extent.hpp
new file mode 100644
index 0000000..27e8a67
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/extent.hpp
@@ -0,0 +1,145 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_EXTENT_HPP_INCLUDED
+#define BOOST_TT_EXTENT_HPP_INCLUDED
+
+// should be the last #include
+#include <boost/type_traits/detail/size_t_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+#if defined( __CODEGEARC__ )
+ // wrap the impl as main trait provides additional MPL lambda support
+ template < typename T, std::size_t N >
+ struct extent_imp {
+ static const std::size_t value = __array_extent(T, N);
+ };
+
+#else
+
+template <class T, std::size_t N>
+struct extent_imp
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
+};
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T const[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T volatile[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct extent_imp<T const volatile[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+
+template <class T, std::size_t R>
+struct extent_imp<T[R],0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = R);
+};
+
+template <class T, std::size_t R>
+struct extent_imp<T const[R], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = R);
+};
+
+template <class T, std::size_t R>
+struct extent_imp<T volatile[R], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = R);
+};
+
+template <class T, std::size_t R>
+struct extent_imp<T const volatile[R], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = R);
+};
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) && !defined(__MWERKS__)
+template <class T, std::size_t N>
+struct extent_imp<T[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+template <class T, std::size_t N>
+struct extent_imp<T const[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+template <class T, std::size_t N>
+struct extent_imp<T volatile[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+template <class T, std::size_t N>
+struct extent_imp<T const volatile[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::extent_imp<T, N-1>::value));
+};
+template <class T>
+struct extent_imp<T[], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
+};
+template <class T>
+struct extent_imp<T const[], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
+};
+template <class T>
+struct extent_imp<T volatile[], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
+};
+template <class T>
+struct extent_imp<T const volatile[], 0>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = 0);
+};
+#endif
+#endif
+
+#endif // non-CodeGear implementation
+} // ::boost::detail
+
+template <class T, std::size_t N = 0>
+struct extent
+ : public ::boost::integral_constant<std::size_t, ::boost::detail::extent_imp<T,N>::value>
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ typedef ::boost::integral_constant<std::size_t, ::boost::detail::extent_imp<T,N>::value> base_;
+ using base_::value;
+#endif
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,extent,(T))
+};
+
+} // namespace boost
+
+#include <boost/type_traits/detail/size_t_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/floating_point_promotion.hpp b/3rdParty/Boost/boost/type_traits/floating_point_promotion.hpp
new file mode 100644
index 0000000..8b6ae3a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/floating_point_promotion.hpp
@@ -0,0 +1,91 @@
+// Copyright 2005 Alexander Nasonov.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED
+#define FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_CV_SPECIALIZATIONS
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/multiplies.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/type_traits/is_same.hpp>
+#endif
+
+// Should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace type_traits { namespace detail {
+
+#ifndef BOOST_NO_CV_SPECIALIZATIONS
+
+template<class T>
+struct floating_point_promotion
+{
+ typedef T type;
+};
+
+template<>
+struct floating_point_promotion<float>
+{
+ typedef double type;
+};
+
+template<>
+struct floating_point_promotion<float const>
+{
+ typedef double const type;
+};
+
+template<>
+struct floating_point_promotion<float volatile>
+{
+ typedef double volatile type;
+};
+
+template<>
+struct floating_point_promotion<float const volatile>
+{
+ typedef double const volatile type;
+};
+
+#else
+
+template<class T>
+struct floating_point_promotion
+ : mpl::at<
+ mpl::vector< T, double, double const, double volatile,
+ double const volatile >
+ , mpl::plus<
+ is_same<T, float>
+ , mpl::multiplies< is_same<T, float const> , mpl::int_<2> >
+ , mpl::multiplies< is_same<T, float volatile> , mpl::int_<3> >
+ , mpl::multiplies< is_same<T, float const volatile>, mpl::int_<4> >
+ >
+ >
+{
+};
+
+#endif
+
+} }
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(
+ floating_point_promotion
+ , T
+ , BOOST_DEDUCED_TYPENAME
+ boost::type_traits::detail::floating_point_promotion<T>::type
+ )
+}
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // #ifndef FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/function_traits.hpp b/3rdParty/Boost/boost/type_traits/function_traits.hpp
new file mode 100644
index 0000000..bfc3f7e
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/function_traits.hpp
@@ -0,0 +1,236 @@
+
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
+#define BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/add_pointer.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace detail {
+
+template<typename Function> struct function_traits_helper;
+
+template<typename R>
+struct function_traits_helper<R (*)(void)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 0);
+ typedef R result_type;
+};
+
+template<typename R, typename T1>
+struct function_traits_helper<R (*)(T1)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 1);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T1 argument_type;
+};
+
+template<typename R, typename T1, typename T2>
+struct function_traits_helper<R (*)(T1, T2)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 2);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T1 first_argument_type;
+ typedef T2 second_argument_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3>
+struct function_traits_helper<R (*)(T1, T2, T3)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 3);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4>
+struct function_traits_helper<R (*)(T1, T2, T3, T4)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 4);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 5);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 6);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 7);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 8);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+ typedef T8 arg8_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 9);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+ typedef T8 arg8_type;
+ typedef T9 arg9_type;
+};
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9,
+ typename T10>
+struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = 10);
+ typedef R result_type;
+ typedef T1 arg1_type;
+ typedef T2 arg2_type;
+ typedef T3 arg3_type;
+ typedef T4 arg4_type;
+ typedef T5 arg5_type;
+ typedef T6 arg6_type;
+ typedef T7 arg7_type;
+ typedef T8 arg8_type;
+ typedef T9 arg9_type;
+ typedef T10 arg10_type;
+};
+
+} // end namespace detail
+
+template<typename Function>
+struct function_traits :
+ public detail::function_traits_helper<typename boost::add_pointer<Function>::type>
+{
+};
+
+#else
+
+namespace detail {
+
+template<unsigned N>
+struct type_of_size
+{
+ char elements[N];
+};
+
+template<typename R>
+type_of_size<1> function_arity_helper(R (*f)());
+
+template<typename R, typename T1>
+type_of_size<2> function_arity_helper(R (*f)(T1));
+
+template<typename R, typename T1, typename T2>
+type_of_size<3> function_arity_helper(R (*f)(T1, T2));
+
+template<typename R, typename T1, typename T2, typename T3>
+type_of_size<4> function_arity_helper(R (*f)(T1, T2, T3));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4>
+type_of_size<5> function_arity_helper(R (*f)(T1, T2, T3, T4));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5>
+type_of_size<6> function_arity_helper(R (*f)(T1, T2, T3, T4, T5));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6>
+type_of_size<7> function_arity_helper(R (*f)(T1, T2, T3, T4, T5, T6));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7>
+type_of_size<8> function_arity_helper(R (*f)(T1, T2, T3, T4, T5, T6, T7));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8>
+type_of_size<9> function_arity_helper(R (*f)(T1, T2, T3, T4, T5, T6, T7, T8));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9>
+type_of_size<10> function_arity_helper(R (*f)(T1, T2, T3, T4, T5, T6, T7, T8,
+ T9));
+
+template<typename R, typename T1, typename T2, typename T3, typename T4,
+ typename T5, typename T6, typename T7, typename T8, typename T9,
+ typename T10>
+type_of_size<11> function_arity_helper(R (*f)(T1, T2, T3, T4, T5, T6, T7, T8,
+ T9, T10));
+} // end namespace detail
+
+// Won't work with references
+template<typename Function>
+struct function_traits
+{
+ BOOST_STATIC_CONSTANT(unsigned, arity = (sizeof(detail::function_arity_helper((Function*)0))-1));
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+}
+
+#endif // BOOST_TT_FUNCTION_TRAITS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_nothrow_assign.hpp b/3rdParty/Boost/boost/type_traits/has_nothrow_assign.hpp
new file mode 100644
index 0000000..3cef735
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_nothrow_assign.hpp
@@ -0,0 +1,38 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_ASSIGN_HPP_INCLUDED
+
+#include <boost/type_traits/has_trivial_assign.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+template <class T>
+struct has_nothrow_assign_imp{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::has_trivial_assign<T>::value,
+ BOOST_HAS_NOTHROW_ASSIGN(T)
+ >::value));
+};
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_assign,T,::boost::detail::has_nothrow_assign_imp<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_NOTHROW_ASSIGN_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_nothrow_constructor.hpp b/3rdParty/Boost/boost/type_traits/has_nothrow_constructor.hpp
new file mode 100644
index 0000000..e807fd4
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_nothrow_constructor.hpp
@@ -0,0 +1,39 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
+
+#include <boost/type_traits/has_trivial_constructor.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+template <class T>
+struct has_nothrow_constructor_imp{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::has_trivial_constructor<T>::value,
+ BOOST_HAS_NOTHROW_CONSTRUCTOR(T)
+ >::value));
+};
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_constructor,T,::boost::detail::has_nothrow_constructor_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_default_constructor,T,::boost::detail::has_nothrow_constructor_imp<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_nothrow_copy.hpp b/3rdParty/Boost/boost/type_traits/has_nothrow_copy.hpp
new file mode 100644
index 0000000..c06b4a3
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_nothrow_copy.hpp
@@ -0,0 +1,39 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED
+
+#include <boost/type_traits/has_trivial_copy.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+template <class T>
+struct has_nothrow_copy_imp{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::has_trivial_copy<T>::value,
+ BOOST_HAS_NOTHROW_COPY(T)
+ >::value));
+};
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy,T,::boost::detail::has_nothrow_copy_imp<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_copy_constructor,T,::boost::detail::has_nothrow_copy_imp<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_nothrow_destructor.hpp b/3rdParty/Boost/boost/type_traits/has_nothrow_destructor.hpp
new file mode 100644
index 0000000..4f5882a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_nothrow_destructor.hpp
@@ -0,0 +1,25 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_NOTHROW_DESTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_NOTHROW_DESTRUCTOR_HPP_INCLUDED
+
+#include <boost/type_traits/has_trivial_destructor.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_nothrow_destructor,T,::boost::has_trivial_destructor<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_NOTHROW_DESTRUCTOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_trivial_assign.hpp b/3rdParty/Boost/boost/type_traits/has_trivial_assign.hpp
new file mode 100644
index 0000000..4179e8d
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_trivial_assign.hpp
@@ -0,0 +1,50 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_ASSIGN_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_ASSIGN_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_assign_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_or<
+ ::boost::is_pod<T>::value,
+ BOOST_HAS_TRIVIAL_ASSIGN(T)
+ >::value,
+ ::boost::type_traits::ice_not< ::boost::is_const<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+ >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_assign,T,::boost::detail::has_trivial_assign_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_TRIVIAL_ASSIGN_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_trivial_constructor.hpp b/3rdParty/Boost/boost/type_traits/has_trivial_constructor.hpp
new file mode 100644
index 0000000..f9ade5d
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_trivial_constructor.hpp
@@ -0,0 +1,43 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_ctor_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_pod<T>::value,
+ BOOST_HAS_TRIVIAL_CONSTRUCTOR(T)
+ >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_constructor,T,::boost::detail::has_trivial_ctor_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_default_constructor,T,::boost::detail::has_trivial_ctor_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_TRIVIAL_CONSTRUCTOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_trivial_copy.hpp b/3rdParty/Boost/boost/type_traits/has_trivial_copy.hpp
new file mode 100644
index 0000000..8c75361
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_trivial_copy.hpp
@@ -0,0 +1,49 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_copy_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_or<
+ ::boost::is_pod<T>::value,
+ BOOST_HAS_TRIVIAL_COPY(T)
+ >::value,
+ ::boost::type_traits::ice_not< ::boost::is_volatile<T>::value >::value
+ >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy,T,::boost::detail::has_trivial_copy_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_copy_constructor,T,::boost::detail::has_trivial_copy_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_TRIVIAL_COPY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_trivial_destructor.hpp b/3rdParty/Boost/boost/type_traits/has_trivial_destructor.hpp
new file mode 100644
index 0000000..f2a8ce6
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_trivial_destructor.hpp
@@ -0,0 +1,42 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct has_trivial_dtor_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_pod<T>::value,
+ BOOST_HAS_TRIVIAL_DESTRUCTOR(T)
+ >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_trivial_destructor,T,::boost::detail::has_trivial_dtor_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_HAS_TRIVIAL_DESTRUCTOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/has_virtual_destructor.hpp b/3rdParty/Boost/boost/type_traits/has_virtual_destructor.hpp
new file mode 100644
index 0000000..8f99ff4
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/has_virtual_destructor.hpp
@@ -0,0 +1,25 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_HAS_VIRTUAL_DESTRUCTOR_HPP_INCLUDED
+#define BOOST_TT_HAS_VIRTUAL_DESTRUCTOR_HPP_INCLUDED
+
+#include <boost/type_traits/intrinsics.hpp>
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(has_virtual_destructor,T,BOOST_HAS_VIRTUAL_DESTRUCTOR(T))
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/ice.hpp b/3rdParty/Boost/boost/type_traits/ice.hpp
new file mode 100644
index 0000000..134bc4b
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/ice.hpp
@@ -0,0 +1,20 @@
+
+// (C) Copyright John Maddock and Steve Cleary 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+//
+// macros and helpers for working with integral-constant-expressions.
+
+#ifndef BOOST_TT_ICE_HPP_INCLUDED
+#define BOOST_TT_ICE_HPP_INCLUDED
+
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/type_traits/detail/ice_eq.hpp>
+
+#endif // BOOST_TT_ICE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/integral_constant.hpp b/3rdParty/Boost/boost/type_traits/integral_constant.hpp
new file mode 100644
index 0000000..4ed1bb0
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/integral_constant.hpp
@@ -0,0 +1,53 @@
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
+#define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/integral_c.hpp>
+
+namespace boost{
+
+#if defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) || defined(__BORLANDC__)
+template <class T, int val>
+#else
+template <class T, T val>
+#endif
+struct integral_constant : public mpl::integral_c<T, val>
+{
+ typedef integral_constant<T,val> type;
+};
+
+template<> struct integral_constant<bool,true> : public mpl::true_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# pragma warning(push)
+# pragma warning(disable:4097)
+ typedef mpl::true_ base_;
+ using base_::value;
+# pragma warning(pop)
+#endif
+ typedef integral_constant<bool,true> type;
+};
+template<> struct integral_constant<bool,false> : public mpl::false_
+{
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# pragma warning(push)
+# pragma warning(disable:4097)
+ typedef mpl::false_ base_;
+ using base_::value;
+# pragma warning(pop)
+#endif
+ typedef integral_constant<bool,false> type;
+};
+
+typedef integral_constant<bool,true> true_type;
+typedef integral_constant<bool,false> false_type;
+
+}
+
+#endif
diff --git a/3rdParty/Boost/boost/type_traits/integral_promotion.hpp b/3rdParty/Boost/boost/type_traits/integral_promotion.hpp
new file mode 100644
index 0000000..a85e243
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/integral_promotion.hpp
@@ -0,0 +1,195 @@
+// Copyright 2005 Alexander Nasonov.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef FILE_boost_type_traits_integral_promotion_hpp_INCLUDED
+#define FILE_boost_type_traits_integral_promotion_hpp_INCLUDED
+
+#include <boost/config.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+
+// Should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace type_traits { namespace detail {
+
+// 4.5/2
+template <class T> struct need_promotion : boost::is_enum<T> {};
+
+// 4.5/1
+template<> struct need_promotion<char > : true_type {};
+template<> struct need_promotion<signed char > : true_type {};
+template<> struct need_promotion<unsigned char > : true_type {};
+template<> struct need_promotion<signed short int > : true_type {};
+template<> struct need_promotion<unsigned short int> : true_type {};
+
+
+// Specializations for non-standard types.
+// Type is promoted if it's smaller then int.
+
+#define BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(T) \
+ template<> struct need_promotion<T> \
+ : integral_constant<bool, (sizeof(T) < sizeof(int))> {};
+
+// Same set of integral types as in boost/type_traits/is_integral.hpp.
+// Please, keep in sync.
+#if (defined(BOOST_MSVC) && (BOOST_MSVC < 1300)) \
+ || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
+ || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER < 1300))
+// TODO: common macro for this #if. Or better yet, PP SEQ of non-standard types.
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(__int8 )
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(unsigned __int8 )
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(__int16 )
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(unsigned __int16)
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(__int32 )
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(unsigned __int32)
+#ifdef __BORLANDC__
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(unsigned __int64)
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE( __int64)
+#endif
+#endif
+
+#if defined(BOOST_HAS_LONG_LONG)
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(boost::ulong_long_type)
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(boost::long_long_type )
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE(unsigned __int64)
+BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE( __int64)
+#endif
+
+#undef BOOST_TT_AUX_PROMOTE_NONSTANDARD_TYPE
+
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+// 4.5/2
+template<> struct need_promotion<wchar_t> : true_type {};
+#endif
+
+// 4.5/3 (integral bit-field) is not supported.
+
+// 4.5/4
+template<> struct need_promotion<bool> : true_type {};
+
+
+// Get promoted type by index and cv qualifiers.
+
+template<int Index, int IsConst, int IsVolatile> struct promote_from_index;
+
+#define BOOST_TT_AUX_PROMOTE_FROM_INDEX(N,T) \
+ template<> struct promote_from_index<N,0,0> { typedef T type; }; \
+ template<> struct promote_from_index<N,0,1> { typedef T volatile type; }; \
+ template<> struct promote_from_index<N,1,0> { typedef T const type; }; \
+ template<> struct promote_from_index<N,1,1> { typedef T const volatile type; };
+
+
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(1, int )
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(2, unsigned int )
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(3, long )
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(4, unsigned long)
+
+
+// WARNING: integral promotions to non-standard types
+// long long and __int64 are not defined by the standard.
+// Additional specialisations and overloads shouldn't
+// introduce ambiguity, though.
+
+#if defined(BOOST_HAS_LONG_LONG)
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(5, boost::long_long_type )
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(6, boost::ulong_long_type)
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(7, __int64 )
+BOOST_TT_AUX_PROMOTE_FROM_INDEX(8, unsigned __int64)
+#endif
+
+#undef BOOST_TT_AUX_PROMOTE_FROM_INDEX
+
+
+// Define BOOST_TT_AUX_PROMOTED_INDEX_TESTER:
+#if !defined(BOOST_MSVC)
+
+template<int N>
+struct sized_type_for_promotion
+{
+ typedef char (&type)[N];
+};
+
+#define BOOST_TT_AUX_PROMOTED_INDEX_TESTER(I,T) \
+ sized_type_for_promotion<I>::type promoted_index_tester(T);
+
+#else
+
+#define BOOST_TT_AUX_PROMOTED_INDEX_TESTER(I,T) \
+ char (&promoted_index_tester(T))[I];
+
+#endif
+
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(1, int )
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(2, unsigned int )
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(3, long )
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(4, unsigned long)
+
+#if defined(BOOST_HAS_LONG_LONG)
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(5, boost::long_long_type )
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(6, boost::ulong_long_type)
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(7, __int64 )
+BOOST_TT_AUX_PROMOTED_INDEX_TESTER(8, unsigned __int64)
+#endif
+
+#undef BOOST_TT_AUX_PROMOTED_INDEX_TESTER
+
+
+// Get an index of promoted type for type T.
+// Precondition: need_promotion<T>
+template<class T>
+struct promoted_index
+{
+ static T testee; // undefined
+ BOOST_STATIC_CONSTANT(int, value = sizeof(promoted_index_tester(+testee)) );
+ // Unary plus promotes testee LOOK HERE ---> ^
+};
+
+template<class T>
+struct integral_promotion_impl
+{
+ typedef BOOST_DEDUCED_TYPENAME promote_from_index<
+ (boost::type_traits::detail::promoted_index<T>::value)
+ , (boost::is_const<T>::value)
+ , (boost::is_volatile<T>::value)
+ >::type type;
+};
+
+template<class T>
+struct integral_promotion
+ : boost::mpl::eval_if<
+ need_promotion<BOOST_DEDUCED_TYPENAME remove_cv<T>::type>
+ , integral_promotion_impl<T>
+ , boost::mpl::identity<T>
+ >
+{
+};
+
+} }
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(
+ integral_promotion
+ , T
+ , BOOST_DEDUCED_TYPENAME
+ boost::type_traits::detail::integral_promotion<T>::type
+ )
+}
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // #ifndef FILE_boost_type_traits_integral_promotion_hpp_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/intrinsics.hpp b/3rdParty/Boost/boost/type_traits/intrinsics.hpp
new file mode 100644
index 0000000..91ee88b
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/intrinsics.hpp
@@ -0,0 +1,240 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_INTRINSICS_HPP_INCLUDED
+#define BOOST_TT_INTRINSICS_HPP_INCLUDED
+
+#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
+#include <boost/type_traits/config.hpp>
+#endif
+
+//
+// Helper macros for builtin compiler support.
+// If your compiler has builtin support for any of the following
+// traits concepts, then redefine the appropriate macros to pick
+// up on the compiler support:
+//
+// (these should largely ignore cv-qualifiers)
+// BOOST_IS_UNION(T) should evaluate to true if T is a union type
+// BOOST_IS_POD(T) should evaluate to true if T is a POD type
+// BOOST_IS_EMPTY(T) should evaluate to true if T is an empty struct or union
+// BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
+// BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
+// BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
+// BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
+// BOOST_HAS_NOTHROW_CONSTRUCTOR(T) should evaluate to true if "T x;" can not throw
+// BOOST_HAS_NOTHROW_COPY(T) should evaluate to true if T(t) can not throw
+// BOOST_HAS_NOTHROW_ASSIGN(T) should evaluate to true if t = u can not throw
+// BOOST_HAS_VIRTUAL_DESTRUCTOR(T) should evaluate to true T has a virtual destructor
+//
+// The following can also be defined: when detected our implementation is greatly simplified.
+// Note that unlike the macros above these do not have default definitions, so we can use
+// #ifdef MACRONAME to detect when these are available.
+//
+// BOOST_IS_ABSTRACT(T) true if T is an abstract type
+// BOOST_IS_BASE_OF(T,U) true if T is a base class of U
+// BOOST_IS_CLASS(T) true if T is a class type
+// BOOST_IS_CONVERTIBLE(T,U) true if T is convertible to U
+// BOOST_IS_ENUM(T) true is T is an enum
+// BOOST_IS_POLYMORPHIC(T) true if T is a polymorphic type
+// BOOST_ALIGNMENT_OF(T) should evaluate to the alignment requirements of type T.
+
+#ifdef BOOST_HAS_SGI_TYPE_TRAITS
+ // Hook into SGI's __type_traits class, this will pick up user supplied
+ // specializations as well as SGI - compiler supplied specializations.
+# include <boost/type_traits/is_same.hpp>
+# ifdef __NetBSD__
+ // There are two different versions of type_traits.h on NetBSD on Spark
+ // use an implicit include via algorithm instead, to make sure we get
+ // the same version as the std lib:
+# include <algorithm>
+# else
+# include <type_traits.h>
+# endif
+# define BOOST_IS_POD(T) ::boost::is_same< typename ::__type_traits<T>::is_POD_type, ::__true_type>::value
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_default_constructor, ::__true_type>::value
+# define BOOST_HAS_TRIVIAL_COPY(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_copy_constructor, ::__true_type>::value
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_assignment_operator, ::__true_type>::value
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_destructor, ::__true_type>::value
+
+# ifdef __sgi
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+# endif
+#endif
+
+#if defined(__MSL_CPP__) && (__MSL_CPP__ >= 0x8000)
+ // Metrowerks compiler is acquiring intrinsic type traits support
+ // post version 8. We hook into the published interface to pick up
+ // user defined specializations as well as compiler intrinsics as
+ // and when they become available:
+# include <msl_utility>
+# define BOOST_IS_UNION(T) BOOST_STD_EXTENSION_NAMESPACE::is_union<T>::value
+# define BOOST_IS_POD(T) BOOST_STD_EXTENSION_NAMESPACE::is_POD<T>::value
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_default_ctor<T>::value
+# define BOOST_HAS_TRIVIAL_COPY(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_copy_ctor<T>::value
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_assignment<T>::value
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_dtor<T>::value
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+#if defined(BOOST_MSVC) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >=140050215)
+# include <boost/type_traits/is_same.hpp>
+
+# define BOOST_IS_UNION(T) __is_union(T)
+# define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
+# define BOOST_IS_EMPTY(T) __is_empty(T)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
+# define BOOST_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
+# define BOOST_HAS_NOTHROW_COPY(T) __has_nothrow_copy(T)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) __has_nothrow_assign(T)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
+
+# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
+# define BOOST_IS_CLASS(T) __is_class(T)
+// This one doesn't quite always do the right thing:
+// # define BOOST_IS_CONVERTIBLE(T,U) __is_convertible_to(T,U)
+# define BOOST_IS_ENUM(T) __is_enum(T)
+// This one doesn't quite always do the right thing:
+// # define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
+// This one fails if the default alignment has been changed with /Zp:
+// # define BOOST_ALIGNMENT_OF(T) __alignof(T)
+
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+#if defined(__DMC__) && (__DMC__ >= 0x848)
+// For Digital Mars C++, www.digitalmars.com
+# define BOOST_IS_UNION(T) (__typeinfo(T) & 0x400)
+# define BOOST_IS_POD(T) (__typeinfo(T) & 0x800)
+# define BOOST_IS_EMPTY(T) (__typeinfo(T) & 0x1000)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__typeinfo(T) & 0x10)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__typeinfo(T) & 0x20)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__typeinfo(T) & 0x40)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__typeinfo(T) & 0x8)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__typeinfo(T) & 0x80)
+# define BOOST_HAS_NOTHROW_COPY(T) (__typeinfo(T) & 0x100)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__typeinfo(T) & 0x200)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) (__typeinfo(T) & 0x4)
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__)))
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+
+# define BOOST_IS_UNION(T) __is_union(T)
+# define BOOST_IS_POD(T) __is_pod(T)
+# define BOOST_IS_EMPTY(T) __is_empty(T)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
+
+# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
+# define BOOST_IS_CLASS(T) __is_class(T)
+# define BOOST_IS_ENUM(T) __is_enum(T)
+# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
+# if !defined(unix) || defined(__LP64__)
+ // GCC sometimes lies about alignment requirements
+ // of type double on 32-bit unix platforms, use the
+ // old implementation instead in that case:
+# define BOOST_ALIGNMENT_OF(T) __alignof__(T)
+# endif
+
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+# if defined(__CODEGEARC__)
+# include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_volatile.hpp>
+# include <boost/type_traits/is_void.hpp>
+
+# define BOOST_IS_UNION(T) __is_union(T)
+# define BOOST_IS_POD(T) __is_pod(T)
+# define BOOST_IS_EMPTY(T) __is_empty(T)
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T) || is_void<T>::value)
+# define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value || is_void<T>::value)
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || is_void<T>::value)
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T) || is_void<T>::value)
+# define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value || is_void<T>::value)
+# define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value || is_void<T>::value)
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
+
+# define BOOST_IS_ABSTRACT(T) __is_abstract(T)
+# define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_void<T>::value && !is_void<U>::value)
+# define BOOST_IS_CLASS(T) __is_class(T)
+# define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible(T,U) || is_void<U>::value)
+# define BOOST_IS_ENUM(T) __is_enum(T)
+# define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
+# define BOOST_ALIGNMENT_OF(T) alignof(T)
+
+# define BOOST_HAS_TYPE_TRAITS_INTRINSICS
+#endif
+
+#ifndef BOOST_IS_UNION
+# define BOOST_IS_UNION(T) false
+#endif
+
+#ifndef BOOST_IS_POD
+# define BOOST_IS_POD(T) false
+#endif
+
+#ifndef BOOST_IS_EMPTY
+# define BOOST_IS_EMPTY(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_CONSTRUCTOR
+# define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_COPY
+# define BOOST_HAS_TRIVIAL_COPY(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_ASSIGN
+# define BOOST_HAS_TRIVIAL_ASSIGN(T) false
+#endif
+
+#ifndef BOOST_HAS_TRIVIAL_DESTRUCTOR
+# define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) false
+#endif
+
+#ifndef BOOST_HAS_NOTHROW_CONSTRUCTOR
+# define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) false
+#endif
+
+#ifndef BOOST_HAS_NOTHROW_COPY
+# define BOOST_HAS_NOTHROW_COPY(T) false
+#endif
+
+#ifndef BOOST_HAS_NOTHROW_ASSIGN
+# define BOOST_HAS_NOTHROW_ASSIGN(T) false
+#endif
+
+#ifndef BOOST_HAS_VIRTUAL_DESTRUCTOR
+# define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) false
+#endif
+
+#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
+
+
+
+
+
diff --git a/3rdParty/Boost/boost/type_traits/is_abstract.hpp b/3rdParty/Boost/boost/type_traits/is_abstract.hpp
new file mode 100644
index 0000000..a11718d
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_abstract.hpp
@@ -0,0 +1,153 @@
+#ifndef BOOST_TT_IS_ABSTRACT_CLASS_HPP
+#define BOOST_TT_IS_ABSTRACT_CLASS_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// is_abstract_class.hpp:
+//
+// (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
+// 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.
+//
+
+// Compile type discovery whether given type is abstract class or not.
+//
+// Requires DR 337 to be supported by compiler
+// (http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html#337).
+//
+//
+// Believed (Jan 2004) to work on:
+// - GCC 3.4
+// - VC++ 7.1
+// - compilers with new EDG frontend (Intel C++ 7, Comeau 4.3.2)
+//
+// Doesn't work on:
+// - VC++6, VC++7.0 and less
+// - GCC 3.3.X and less
+// - Borland C++ 6 and less
+//
+//
+// History:
+// - Originally written by Rani Sharoni, see
+// http://groups.google.com/groups?selm=df893da6.0207110613.75b2fe90%40posting.google.com
+// At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
+// - Adapted and added into Boost.Serialization library by Robert Ramey
+// (starting with submission #10).
+// - Jan 2004: GCC 3.4 fixed to suport DR337 (Giovanni Bajo).
+// - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
+// - Nov 2004: Christoph Ludwig found that the implementation did not work with
+// template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
+// and John Maddock.
+// - Dec 2004: Added new config macro BOOST_NO_IS_ABSTRACT which causes the template
+// to degrade gracefully, rather than trash the compiler (John Maddock).
+//
+
+#include <boost/type_traits/intrinsics.hpp>
+#ifndef BOOST_IS_ABSTRACT
+#include <boost/static_assert.hpp>
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#ifdef BOOST_NO_IS_ABSTRACT
+#include <boost/type_traits/is_polymorphic.hpp>
+#endif
+#endif
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+
+namespace boost {
+namespace detail{
+
+#ifdef BOOST_IS_ABSTRACT
+template <class T>
+struct is_abstract_imp
+{
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_ABSTRACT(T));
+};
+#elif !defined(BOOST_NO_IS_ABSTRACT)
+template<class T>
+struct is_abstract_imp2
+{
+ // Deduction fails if T is void, function type,
+ // reference type (14.8.2/2)or an abstract class type
+ // according to review status issue #337
+ //
+ template<class U>
+ static type_traits::no_type check_sig(U (*)[1]);
+ template<class U>
+ static type_traits::yes_type check_sig(...);
+ //
+ // T must be a complete type, further if T is a template then
+ // it must be instantiated in order for us to get the right answer:
+ //
+ BOOST_STATIC_ASSERT(sizeof(T) != 0);
+
+ // GCC2 won't even parse this template if we embed the computation
+ // of s1 in the computation of value.
+#ifdef __GNUC__
+ BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0)));
+#else
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(push)
+#pragma warning(disable:6334)
+#endif
+ BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(check_sig<T>(0)));
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(pop)
+#endif
+#endif
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ (s1 == sizeof(type_traits::yes_type)));
+};
+
+template <bool v>
+struct is_abstract_select
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_abstract_imp2<T> type;
+ };
+};
+template <>
+struct is_abstract_select<false>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <class T>
+struct is_abstract_imp
+{
+ typedef is_abstract_select< ::boost::is_class<T>::value> selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type type;
+
+ BOOST_STATIC_CONSTANT(bool, value = type::value);
+};
+
+#endif
+}
+
+#ifndef BOOST_NO_IS_ABSTRACT
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::boost::detail::is_abstract_imp<T>::value)
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::boost::detail::is_polymorphic_imp<T>::value)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif //BOOST_TT_IS_ABSTRACT_CLASS_HPP
diff --git a/3rdParty/Boost/boost/type_traits/is_arithmetic.hpp b/3rdParty/Boost/boost/type_traits/is_arithmetic.hpp
new file mode 100644
index 0000000..a1d8c46
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_arithmetic.hpp
@@ -0,0 +1,51 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
+#define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
+
+#if !defined( __CODEGEARC__ )
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_float.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/config.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if !defined(__CODEGEARC__)
+namespace detail {
+
+template< typename T >
+struct is_arithmetic_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_integral<T>::value,
+ ::boost::is_float<T>::value
+ >::value));
+};
+
+} // namespace detail
+#endif
+
+//* is a type T an arithmetic type described in the standard (3.9.1p8)
+#if defined(__CODEGEARC__)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,__is_arithmetic(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_arithmetic,T,::boost::detail::is_arithmetic_impl<T>::value)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_array.hpp b/3rdParty/Boost/boost/type_traits/is_array.hpp
new file mode 100644
index 0000000..e9e820a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_array.hpp
@@ -0,0 +1,91 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+// Some fixes for is_array are based on a newgroup posting by Jonathan Lundquist.
+
+
+#ifndef BOOST_TT_IS_ARRAY_HPP_INCLUDED
+#define BOOST_TT_IS_ARRAY_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/detail/wrap.hpp>
+#endif
+
+#include <cstddef>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,__is_array(T))
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,false)
+#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T[N],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const[N],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T volatile[N],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const volatile[N],true)
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T[],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T const[],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T volatile[],true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T const volatile[],true)
+#endif
+#endif
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+using ::boost::type_traits::wrap;
+
+template< typename T > T(* is_array_tester1(wrap<T>) )(wrap<T>);
+char BOOST_TT_DECL is_array_tester1(...);
+
+template< typename T> no_type is_array_tester2(T(*)(wrap<T>));
+yes_type BOOST_TT_DECL is_array_tester2(...);
+
+template< typename T >
+struct is_array_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(::boost::detail::is_array_tester2(
+ ::boost::detail::is_array_tester1(
+ ::boost::type_traits::wrap<T>()
+ )
+ )) == 1
+ );
+};
+
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_array,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_array,T,::boost::detail::is_array_impl<T>::value)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_ARRAY_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_base_and_derived.hpp b/3rdParty/Boost/boost/type_traits/is_base_and_derived.hpp
new file mode 100644
index 0000000..8367b76
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_base_and_derived.hpp
@@ -0,0 +1,251 @@
+
+// (C) Copyright Rani Sharoni 2003.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
+#define BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
+
+#include <boost/type_traits/intrinsics.hpp>
+#ifndef BOOST_IS_BASE_OF
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/config.hpp>
+#include <boost/static_assert.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+#ifndef BOOST_IS_BASE_OF
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581)) \
+ && !BOOST_WORKAROUND(__SUNPRO_CC , <= 0x540) \
+ && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \
+ && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+
+ // The EDG version number is a lower estimate.
+ // It is not currently known which EDG version
+ // exactly fixes the problem.
+
+/*************************************************************************
+
+This version detects ambiguous base classes and private base classes
+correctly, and was devised by Rani Sharoni.
+
+Explanation by Terje Slettebo and Rani Sharoni.
+
+Let's take the multiple base class below as an example, and the following
+will also show why there's not a problem with private or ambiguous base
+class:
+
+struct B {};
+struct B1 : B {};
+struct B2 : B {};
+struct D : private B1, private B2 {};
+
+is_base_and_derived<B, D>::value;
+
+First, some terminology:
+
+SC - Standard conversion
+UDC - User-defined conversion
+
+A user-defined conversion sequence consists of an SC, followed by an UDC,
+followed by another SC. Either SC may be the identity conversion.
+
+When passing the default-constructed Host object to the overloaded check_sig()
+functions (initialization 8.5/14/4/3), we have several viable implicit
+conversion sequences:
+
+For "static no_type check_sig(B const volatile *, int)" we have the conversion
+sequences:
+
+C -> C const (SC - Qualification Adjustment) -> B const volatile* (UDC)
+C -> D const volatile* (UDC) -> B1 const volatile* / B2 const volatile* ->
+ B const volatile* (SC - Conversion)
+
+For "static yes_type check_sig(D const volatile *, T)" we have the conversion
+sequence:
+
+C -> D const volatile* (UDC)
+
+According to 13.3.3.1/4, in context of user-defined conversion only the
+standard conversion sequence is considered when selecting the best viable
+function, so it only considers up to the user-defined conversion. For the
+first function this means choosing between C -> C const and C -> C, and it
+chooses the latter, because it's a proper subset (13.3.3.2/3/2) of the
+former. Therefore, we have:
+
+C -> D const volatile* (UDC) -> B1 const volatile* / B2 const volatile* ->
+ B const volatile* (SC - Conversion)
+C -> D const volatile* (UDC)
+
+Here, the principle of the "shortest subsequence" applies again, and it
+chooses C -> D const volatile*. This shows that it doesn't even need to
+consider the multiple paths to B, or accessibility, as that possibility is
+eliminated before it could possibly cause ambiguity or access violation.
+
+If D is not derived from B, it has to choose between C -> C const -> B const
+volatile* for the first function, and C -> D const volatile* for the second
+function, which are just as good (both requires a UDC, 13.3.3.2), had it not
+been for the fact that "static no_type check_sig(B const volatile *, int)" is
+not templated, which makes C -> C const -> B const volatile* the best choice
+(13.3.3/1/4), resulting in "no".
+
+Also, if Host::operator B const volatile* hadn't been const, the two
+conversion sequences for "static no_type check_sig(B const volatile *, int)", in
+the case where D is derived from B, would have been ambiguous.
+
+See also
+http://groups.google.com/groups?selm=df893da6.0301280859.522081f7%40posting.
+google.com and links therein.
+
+*************************************************************************/
+
+template <typename B, typename D>
+struct bd_helper
+{
+ //
+ // This VC7.1 specific workaround stops the compiler from generating
+ // an internal compiler error when compiling with /vmg (thanks to
+ // Aleksey Gurtovoy for figuring out the workaround).
+ //
+#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+ template <typename T>
+ static type_traits::yes_type check_sig(D const volatile *, T);
+ static type_traits::no_type check_sig(B const volatile *, int);
+#else
+ static type_traits::yes_type check_sig(D const volatile *, long);
+ static type_traits::no_type check_sig(B const volatile * const&, int);
+#endif
+};
+
+template<typename B, typename D>
+struct is_base_and_derived_impl2
+{
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(push)
+#pragma warning(disable:6334)
+#endif
+ //
+ // May silently do the wrong thing with incomplete types
+ // unless we trap them here:
+ //
+ BOOST_STATIC_ASSERT(sizeof(B) != 0);
+ BOOST_STATIC_ASSERT(sizeof(D) != 0);
+
+ struct Host
+ {
+#if !BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+ operator B const volatile *() const;
+#else
+ operator B const volatile * const&() const;
+#endif
+ operator D const volatile *();
+ };
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(bd_helper<B,D>::check_sig(Host(), 0)) == sizeof(type_traits::yes_type));
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(pop)
+#endif
+};
+
+#else
+
+//
+// broken version:
+//
+template<typename B, typename D>
+struct is_base_and_derived_impl2
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::is_convertible<D*,B*>::value));
+};
+
+#define BOOST_BROKEN_IS_BASE_AND_DERIVED
+
+#endif
+
+template <typename B, typename D>
+struct is_base_and_derived_impl3
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <bool ic1, bool ic2, bool iss>
+struct is_base_and_derived_select
+{
+ template <class T, class U>
+ struct rebind
+ {
+ typedef is_base_and_derived_impl3<T,U> type;
+ };
+};
+
+template <>
+struct is_base_and_derived_select<true,true,false>
+{
+ template <class T, class U>
+ struct rebind
+ {
+ typedef is_base_and_derived_impl2<T,U> type;
+ };
+};
+
+template <typename B, typename D>
+struct is_base_and_derived_impl
+{
+ typedef typename remove_cv<B>::type ncvB;
+ typedef typename remove_cv<D>::type ncvD;
+
+ typedef is_base_and_derived_select<
+ ::boost::is_class<B>::value,
+ ::boost::is_class<D>::value,
+ ::boost::is_same<B,D>::value> selector;
+ typedef typename selector::template rebind<ncvB,ncvD> binder;
+ typedef typename binder::type bound_type;
+
+ BOOST_STATIC_CONSTANT(bool, value = bound_type::value);
+};
+#else
+template <typename B, typename D>
+struct is_base_and_derived_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_BASE_OF(B,D));
+};
+#endif
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(
+ is_base_and_derived
+ , Base
+ , Derived
+ , (::boost::detail::is_base_and_derived_impl<Base,Derived>::value)
+ )
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base,Derived&,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_and_derived,Base&,Derived&,false)
+#endif
+
+#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename Base,is_base_and_derived,Base,Base,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_base_of.hpp b/3rdParty/Boost/boost/type_traits/is_base_of.hpp
new file mode 100644
index 0000000..bf46da3
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_base_of.hpp
@@ -0,0 +1,40 @@
+
+// (C) Copyright Rani Sharoni 2003-2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_BASE_OF_HPP_INCLUDED
+#define BOOST_TT_IS_BASE_OF_HPP_INCLUDED
+
+#include <boost/type_traits/is_base_and_derived.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(
+ is_base_of
+ , Base
+ , Derived
+ , (::boost::type_traits::ice_or<
+ (::boost::detail::is_base_and_derived_impl<Base,Derived>::value),
+ (::boost::is_same<Base,Derived>::value)>::value)
+ )
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base&,Derived,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base,Derived&,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base&,Derived&,false)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_BASE_AND_DERIVED_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_class.hpp b/3rdParty/Boost/boost/type_traits/is_class.hpp
new file mode 100644
index 0000000..1a2cd20
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_class.hpp
@@ -0,0 +1,140 @@
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000-2003.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_CLASS_HPP_INCLUDED
+#define BOOST_TT_IS_CLASS_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+#ifndef BOOST_IS_CLASS
+# include <boost/type_traits/is_union.hpp>
+# include <boost/type_traits/detail/ice_and.hpp>
+# include <boost/type_traits/detail/ice_not.hpp>
+
+#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+# include <boost/type_traits/detail/yes_no_type.hpp>
+#else
+# include <boost/type_traits/is_scalar.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_void.hpp>
+# include <boost/type_traits/is_function.hpp>
+#endif
+
+#endif // BOOST_IS_CLASS
+
+#ifdef __EDG_VERSION__
+# include <boost/type_traits/remove_cv.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+#ifndef BOOST_IS_CLASS
+#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+
+// This is actually the conforming implementation which works with
+// abstract classes. However, enough compilers have trouble with
+// it that most will use the one in
+// boost/type_traits/object_traits.hpp. This implementation
+// actually works with VC7.0, but other interactions seem to fail
+// when we use it.
+
+// is_class<> metafunction due to Paul Mensonides
+// (leavings@attbi.com). For more details:
+// http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
+#if defined(__GNUC__) && !defined(__EDG_VERSION__)
+
+template <class U> ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
+template <class U> ::boost::type_traits::no_type is_class_tester(...);
+
+template <typename T>
+struct is_class_impl
+{
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type),
+ ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value
+ >::value)
+ );
+};
+
+#else
+
+template <typename T>
+struct is_class_impl
+{
+ template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
+ template <class U> static ::boost::type_traits::no_type is_class_tester(...);
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type),
+ ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value
+ >::value)
+ );
+};
+
+#endif
+
+#else
+
+template <typename T>
+struct is_class_impl
+{
+# ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_function<T>::value >::value
+ >::value));
+# else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_union<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_scalar<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value
+ >::value));
+# endif
+};
+
+# endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+# else // BOOST_IS_CLASS
+template <typename T>
+struct is_class_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_CLASS(T));
+};
+# endif // BOOST_IS_CLASS
+
+} // namespace detail
+
+# ifdef __EDG_VERSION__
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+ is_class,T, boost::detail::is_class_impl<typename boost::remove_cv<T>::type>::value)
+# else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_class,T,::boost::detail::is_class_impl<T>::value)
+# endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_CLASS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_complex.hpp b/3rdParty/Boost/boost/type_traits/is_complex.hpp
new file mode 100644
index 0000000..9ccc333
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_complex.hpp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_COMPLEX_HPP
+#define BOOST_TT_IS_COMPLEX_HPP
+
+#include <boost/type_traits/is_convertible.hpp>
+#include <complex>
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+
+namespace boost {
+namespace detail{
+
+struct is_convertible_from_tester
+{
+ template <class T>
+ is_convertible_from_tester(const std::complex<T>&);
+};
+
+}
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_complex,T,(::boost::is_convertible<T, detail::is_convertible_from_tester>::value))
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif //BOOST_TT_IS_COMPLEX_HPP
diff --git a/3rdParty/Boost/boost/type_traits/is_compound.hpp b/3rdParty/Boost/boost/type_traits/is_compound.hpp
new file mode 100644
index 0000000..bbaaa42
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_compound.hpp
@@ -0,0 +1,46 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_COMPOUND_HPP_INCLUDED
+#define BOOST_TT_IS_COMPOUND_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if !defined( __CODEGEARC__ )
+namespace detail {
+
+template <typename T>
+struct is_compound_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_not<
+ ::boost::is_fundamental<T>::value
+ >::value));
+};
+
+} // namespace detail
+#endif // !defined( __CODEGEARC__ )
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,__is_compound(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_compound,T,::boost::detail::is_compound_impl<T>::value)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_COMPOUND_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_const.hpp b/3rdParty/Boost/boost/type_traits/is_const.hpp
new file mode 100644
index 0000000..e66d18a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_const.hpp
@@ -0,0 +1,146 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
+// is_member_pointer based on the Simulated Partial Specialization work
+// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
+// http://groups.yahoo.com/group/boost/message/5441
+// Some workarounds in here use ideas suggested from "Generic<Programming>:
+// Mappings between Types and Values"
+// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
+
+
+#ifndef BOOST_TT_IS_CONST_HPP_INCLUDED
+#define BOOST_TT_IS_CONST_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/detail/cv_traits_impl.hpp>
+# ifdef __GNUC__
+# include <boost/type_traits/is_reference.hpp>
+# endif
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
+# include <boost/type_traits/remove_bounds.hpp>
+# endif
+#else
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/detail/false_result.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,__is_const(T))
+
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+//* is a type T declared const - is_const<T>
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
+ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp<typename remove_bounds<T>::type*>::is_const)
+#else
+ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::cv_traits_imp<T*>::is_const)
+#endif
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T&,false)
+
+#if defined(BOOST_ILLEGAL_CV_REFERENCES)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& const,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T& const volatile,false)
+#endif
+
+#if defined(__GNUC__) && (__GNUC__ < 3)
+// special case for gcc where illegally cv-qualified reference types can be
+// generated in some corner cases:
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T const,!(::boost::is_reference<T>::value))
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_const,T volatile const,!(::boost::is_reference<T>::value))
+#endif
+
+#else
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+
+yes_type is_const_tester(const volatile void*);
+no_type is_const_tester(volatile void *);
+
+template <bool is_ref, bool array>
+struct is_const_helper
+ : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_const_helper<false,false>
+{
+ template <typename T> struct result_
+ {
+ static T* t;
+ BOOST_STATIC_CONSTANT(bool, value = (
+ sizeof(detail::yes_type) == sizeof(detail::is_const_tester(t))
+ ));
+ };
+};
+
+template <>
+struct is_const_helper<false,true>
+{
+ template <typename T> struct result_
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(bool, value = (
+ sizeof(detail::yes_type) == sizeof(detail::is_const_tester(&t))
+ ));
+ };
+};
+
+template <typename T>
+struct is_const_impl
+ : is_const_helper<
+ is_reference<T>::value
+ , is_array<T>::value
+ >::template result_<T>
+{
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void const,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_const,void const volatile,true)
+#endif
+
+} // namespace detail
+
+//* is a type T declared const - is_const<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_const,T,::boost::detail::is_const_impl<T>::value)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_CONST_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/is_convertible.hpp b/3rdParty/Boost/boost/type_traits/is_convertible.hpp
new file mode 100644
index 0000000..ce522a0
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_convertible.hpp
@@ -0,0 +1,430 @@
+
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
+// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
+//
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
+#define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
+
+#include <boost/type_traits/intrinsics.hpp>
+#ifndef BOOST_IS_CONVERTIBLE
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/is_array.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/ice.hpp>
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_void.hpp>
+#ifndef BOOST_NO_IS_ABSTRACT
+#include <boost/type_traits/is_abstract.hpp>
+#endif
+
+#if defined(__MWERKS__)
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#endif
+
+#endif // BOOST_IS_CONVERTIBLE
+
+// should be always the last #include directive
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_IS_CONVERTIBLE
+
+// is one type convertable to another?
+//
+// there are multiple versions of the is_convertible
+// template, almost every compiler seems to require its
+// own version.
+//
+// Thanks to Andrei Alexandrescu for the original version of the
+// conversion detection technique!
+//
+
+namespace detail {
+
+// MS specific version:
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+
+// This workaround is necessary to handle when From is void
+// which is normally taken care of by the partial specialization
+// of the is_convertible typename.
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+
+template< typename From >
+struct does_conversion_exist
+{
+ template< typename To > struct result_
+ {
+ static no_type BOOST_TT_DECL _m_check(...);
+ static yes_type BOOST_TT_DECL _m_check(To);
+ static From _m_from;
+ enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
+ };
+};
+
+template<>
+struct does_conversion_exist<void>
+{
+ template< typename To > struct result_
+ {
+ enum { value = ::boost::is_void<To>::value };
+ };
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl
+ : does_conversion_exist<From>::template result_<To>
+{
+};
+
+#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560)
+//
+// special version for Borland compilers
+// this version breaks when used for some
+// UDT conversions:
+//
+template <typename From, typename To>
+struct is_convertible_impl
+{
+#pragma option push -w-8074
+ // This workaround for Borland breaks the EDG C++ frontend,
+ // so we only use it for Borland.
+ template <typename T> struct checker
+ {
+ static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
+ static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
+ };
+
+ static From _m_from;
+ static bool const value = sizeof( checker<To>::_m_check(_m_from) )
+ == sizeof(::boost::type_traits::yes_type);
+#pragma option pop
+};
+
+#elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+// special version for gcc compiler + recent Borland versions
+// note that this does not pass UDT's through (...)
+
+struct any_conversion
+{
+ template <typename T> any_conversion(const volatile T&);
+ template <typename T> any_conversion(T&);
+};
+
+template <typename T> struct checker
+{
+ static boost::type_traits::no_type _m_check(any_conversion ...);
+ static boost::type_traits::yes_type _m_check(T, int);
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl
+{
+ static From _m_from;
+ static bool const value = sizeof( detail::checker<To>::_m_check(_m_from, 0) )
+ == sizeof(::boost::type_traits::yes_type);
+};
+
+#elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
+ || defined(__IBMCPP__) || defined(__HP_aCC)
+//
+// This is *almost* an ideal world implementation as it doesn't rely
+// on undefined behaviour by passing UDT's through (...).
+// Unfortunately it doesn't quite pass all the tests for most compilers (sigh...)
+// Enable this for your compiler if is_convertible_test.cpp will compile it...
+//
+// Note we do not enable this for VC7.1, because even though it passes all the
+// type_traits tests it is known to cause problems when instantiation occurs
+// deep within the instantiation tree :-(
+//
+struct any_conversion
+{
+ template <typename T> any_conversion(const volatile T&);
+ // we need this constructor to catch references to functions
+ // (which can not be cv-qualified):
+ template <typename T> any_conversion(T&);
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl
+{
+ static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
+ static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
+ static From _m_from;
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
+ );
+};
+
+#elif defined(__DMC__)
+
+struct any_conversion
+{
+ template <typename T> any_conversion(const volatile T&);
+ // we need this constructor to catch references to functions
+ // (which can not be cv-qualified):
+ template <typename T> any_conversion(T&);
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl
+{
+ // Using '...' doesn't always work on Digital Mars. This version seems to.
+ template <class T>
+ static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion, float, T);
+ static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
+ static From _m_from;
+
+ // Static constants sometime cause the conversion of _m_from to To to be
+ // called. This doesn't happen with an enum.
+ enum { value =
+ sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type)
+ };
+};
+
+#elif defined(__MWERKS__)
+//
+// CW works with the technique implemented above for EDG, except when From
+// is a function type (or a reference to such a type), in which case
+// any_conversion won't be accepted as a valid conversion. We detect this
+// exceptional situation and channel it through an alternative algorithm.
+//
+
+template <typename From, typename To,bool FromIsFunctionRef>
+struct is_convertible_basic_impl_aux;
+
+struct any_conversion
+{
+ template <typename T> any_conversion(const volatile T&);
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
+{
+ static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
+ static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
+ static From _m_from;
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
+ );
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
+{
+ static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
+ static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
+ static From _m_from;
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
+ );
+};
+
+template <typename From, typename To>
+struct is_convertible_basic_impl:
+ is_convertible_basic_impl_aux<
+ From,To,
+ ::boost::is_function<typename ::boost::remove_reference<From>::type>::value
+ >
+{};
+
+#else
+
+//
+// This version seems to work pretty well for a wide spectrum of compilers,
+// however it does rely on undefined behaviour by passing UDT's through (...).
+//
+template <typename From, typename To>
+struct is_convertible_basic_impl
+{
+ static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
+ static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
+ static From _m_from;
+#ifdef BOOST_MSVC
+#pragma warning(push)
+#pragma warning(disable:4244)
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(disable:6334)
+#endif
+#endif
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
+ );
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+};
+
+#endif // is_convertible_impl
+
+#if defined(__DMC__)
+// As before, a static constant sometimes causes errors on Digital Mars.
+template <typename From, typename To>
+struct is_convertible_impl
+{
+ typedef typename add_reference<From>::type ref_type;
+ enum { value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_or<
+ ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
+ ::boost::is_void<To>::value
+ >::value,
+ ::boost::type_traits::ice_not<
+ ::boost::is_array<To>::value
+ >::value
+ >::value) };
+};
+#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551
+template <typename From, typename To>
+struct is_convertible_impl
+{
+ typedef typename add_reference<From>::type ref_type;
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_or<
+ ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
+ ::boost::is_void<To>::value
+ >::value,
+ ::boost::type_traits::ice_not<
+ ::boost::is_array<To>::value
+ >::value
+ >::value)
+ );
+};
+#endif
+
+template <bool trivial1, bool trivial2, bool abstract_target>
+struct is_convertible_impl_select
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef is_convertible_impl<From, To> type;
+ };
+};
+
+template <>
+struct is_convertible_impl_select<true, true, false>
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef true_type type;
+ };
+};
+
+template <>
+struct is_convertible_impl_select<false, false, true>
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <>
+struct is_convertible_impl_select<true, false, true>
+{
+ template <class From, class To>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <typename From, typename To>
+struct is_convertible_impl_dispatch_base
+{
+#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
+ typedef is_convertible_impl_select<
+ ::boost::is_arithmetic<From>::value,
+ ::boost::is_arithmetic<To>::value,
+#ifndef BOOST_NO_IS_ABSTRACT
+ ::boost::is_abstract<To>::value
+#else
+ false
+#endif
+ > selector;
+#else
+ typedef is_convertible_impl_select<false, false, false> selector;
+#endif
+ typedef typename selector::template rebind<From, To> isc_binder;
+ typedef typename isc_binder::type type;
+};
+
+template <typename From, typename To>
+struct is_convertible_impl_dispatch
+ : public is_convertible_impl_dispatch_base<From, To>::type
+{};
+
+//
+// Now add the full and partial specialisations
+// for void types, these are common to all the
+// implementation above:
+//
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+# define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 volatile,value) \
+ BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const volatile,value) \
+ /**/
+
+# define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(trait,spec1,spec2,value) \
+ TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
+ TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const,spec2,value) \
+ TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 volatile,spec2,value) \
+ TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const volatile,spec2,value) \
+ /**/
+
+ TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(is_convertible,void,void,true)
+
+# undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2
+# undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1
+
+#else
+ BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(is_convertible,void,void,true)
+#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,true)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,true)
+#endif
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,(::boost::detail::is_convertible_impl_dispatch<From,To>::value))
+
+#else
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,BOOST_IS_CONVERTIBLE(From,To))
+
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_empty.hpp b/3rdParty/Boost/boost/type_traits/is_empty.hpp
new file mode 100644
index 0000000..c8eb791
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_empty.hpp
@@ -0,0 +1,211 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_EMPTY_HPP_INCLUDED
+#define BOOST_TT_IS_EMPTY_HPP_INCLUDED
+
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/remove_cv.hpp>
+# include <boost/type_traits/is_class.hpp>
+# include <boost/type_traits/add_reference.hpp>
+#else
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_pointer.hpp>
+# include <boost/type_traits/is_member_pointer.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/is_void.hpp>
+# include <boost/type_traits/detail/ice_and.hpp>
+# include <boost/type_traits/detail/ice_not.hpp>
+#endif
+
+// should be always the last #include directive
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <typename T>
+struct empty_helper_t1 : public T
+{
+ empty_helper_t1(); // hh compiler bug workaround
+ int i[256];
+private:
+ // suppress compiler warnings:
+ empty_helper_t1(const empty_helper_t1&);
+ empty_helper_t1& operator=(const empty_helper_t1&);
+};
+
+struct empty_helper_t2 { int i[256]; };
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+
+template <typename T, bool is_a_class = false>
+struct empty_helper
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <typename T>
+struct empty_helper<T, true>
+{
+ BOOST_STATIC_CONSTANT(
+ bool, value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2))
+ );
+};
+
+template <typename T>
+struct is_empty_impl
+{
+ typedef typename remove_cv<T>::type cvt;
+ BOOST_STATIC_CONSTANT(
+ bool, value = (
+ ::boost::type_traits::ice_or<
+ ::boost::detail::empty_helper<cvt,::boost::is_class<T>::value>::value
+ , BOOST_IS_EMPTY(cvt)
+ >::value
+ ));
+};
+
+#else // __BORLANDC__
+
+template <typename T, bool is_a_class, bool convertible_to_int>
+struct empty_helper
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <typename T>
+struct empty_helper<T, true, false>
+{
+ BOOST_STATIC_CONSTANT(bool, value = (
+ sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)
+ ));
+};
+
+template <typename T>
+struct is_empty_impl
+{
+ typedef typename remove_cv<T>::type cvt;
+ typedef typename add_reference<T>::type r_type;
+
+ BOOST_STATIC_CONSTANT(
+ bool, value = (
+ ::boost::type_traits::ice_or<
+ ::boost::detail::empty_helper<
+ cvt
+ , ::boost::is_class<T>::value
+ , ::boost::is_convertible< r_type,int>::value
+ >::value
+ , BOOST_IS_EMPTY(cvt)
+ >::value));
+};
+
+#endif // __BORLANDC__
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#ifdef BOOST_MSVC6_MEMBER_TEMPLATES
+
+template <typename T>
+struct empty_helper_t1 : public T
+{
+ empty_helper_t1();
+ int i[256];
+};
+
+struct empty_helper_t2 { int i[256]; };
+
+template <typename T>
+struct empty_helper_base
+{
+ enum { value = (sizeof(empty_helper_t1<T>) == sizeof(empty_helper_t2)) };
+};
+
+template <typename T>
+struct empty_helper_nonbase
+{
+ enum { value = false };
+};
+
+template <bool base>
+struct empty_helper_chooser
+{
+ template <typename T> struct result_
+ {
+ typedef empty_helper_nonbase<T> type;
+ };
+};
+
+template <>
+struct empty_helper_chooser<true>
+{
+ template <typename T> struct result_
+ {
+ typedef empty_helper_base<T> type;
+ };
+};
+
+template <typename T>
+struct is_empty_impl
+{
+ typedef ::boost::detail::empty_helper_chooser<
+ ::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_convertible<T,double>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_pointer<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_array<T>::value >::value,
+ ::boost::type_traits::ice_not< ::boost::is_void<T>::value >::value,
+ ::boost::type_traits::ice_not<
+ ::boost::is_convertible<T,void const volatile*>::value
+ >::value
+ >::value > chooser;
+
+ typedef typename chooser::template result_<T> result;
+ typedef typename result::type eh_type;
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<eh_type::value, BOOST_IS_EMPTY(T)>::value));
+};
+
+#else
+
+template <typename T> struct is_empty_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_EMPTY(T));
+};
+
+#endif // BOOST_MSVC6_MEMBER_TEMPLATES
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// these help when the compiler has no partial specialization support:
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_empty,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_empty,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_empty,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_empty,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_empty,T,::boost::detail::is_empty_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_EMPTY_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/is_enum.hpp b/3rdParty/Boost/boost/type_traits/is_enum.hpp
new file mode 100644
index 0000000..86fa66d
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_enum.hpp
@@ -0,0 +1,189 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_ENUM_HPP_INCLUDED
+#define BOOST_TT_IS_ENUM_HPP_INCLUDED
+
+#include <boost/type_traits/intrinsics.hpp>
+#ifndef BOOST_IS_ENUM
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/is_array.hpp>
+#ifdef __GNUC__
+#include <boost/type_traits/is_function.hpp>
+#endif
+#include <boost/type_traits/config.hpp>
+#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION)
+# include <boost/type_traits/is_class.hpp>
+# include <boost/type_traits/is_union.hpp>
+#endif
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_IS_ENUM
+#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551))
+
+namespace detail {
+
+#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION)
+
+template <typename T>
+struct is_class_or_union
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_class<T>::value
+ , ::boost::is_union<T>::value
+ >::value));
+};
+
+#else
+
+template <typename T>
+struct is_class_or_union
+{
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))// we simply can't detect it this way.
+ BOOST_STATIC_CONSTANT(bool, value = false);
+# else
+ template <class U> static ::boost::type_traits::yes_type is_class_or_union_tester(void(U::*)(void));
+
+# if BOOST_WORKAROUND(BOOST_MSVC, == 1300) \
+ || BOOST_WORKAROUND(__MWERKS__, <= 0x3000) // no SFINAE
+ static ::boost::type_traits::no_type is_class_or_union_tester(...);
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(is_class_or_union_tester(0)) == sizeof(::boost::type_traits::yes_type));
+# else
+ template <class U>
+ static ::boost::type_traits::no_type is_class_or_union_tester(...);
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(is_class_or_union_tester<T>(0)) == sizeof(::boost::type_traits::yes_type));
+# endif
+# endif
+};
+#endif
+
+struct int_convertible
+{
+ int_convertible(int);
+};
+
+// Don't evaluate convertibility to int_convertible unless the type
+// is non-arithmetic. This suppresses warnings with GCC.
+template <bool is_typename_arithmetic_or_reference = true>
+struct is_enum_helper
+{
+ template <typename T> struct type
+ {
+ BOOST_STATIC_CONSTANT(bool, value = false);
+ };
+};
+
+template <>
+struct is_enum_helper<false>
+{
+ template <typename T> struct type
+ : ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible>
+ {
+ };
+};
+
+template <typename T> struct is_enum_impl
+{
+ //typedef ::boost::add_reference<T> ar_t;
+ //typedef typename ar_t::type r_type;
+
+#if defined(__GNUC__)
+
+#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+
+ // We MUST check for is_class_or_union on conforming compilers in
+ // order to correctly deduce that noncopyable types are not enums
+ // (dwa 2002/04/15)...
+ BOOST_STATIC_CONSTANT(bool, selector =
+ (::boost::type_traits::ice_or<
+ ::boost::is_arithmetic<T>::value
+ , ::boost::is_reference<T>::value
+ , ::boost::is_function<T>::value
+ , is_class_or_union<T>::value
+ , is_array<T>::value
+ >::value));
+#else
+ // ...however, not checking is_class_or_union on non-conforming
+ // compilers prevents a dependency recursion.
+ BOOST_STATIC_CONSTANT(bool, selector =
+ (::boost::type_traits::ice_or<
+ ::boost::is_arithmetic<T>::value
+ , ::boost::is_reference<T>::value
+ , ::boost::is_function<T>::value
+ , is_array<T>::value
+ >::value));
+#endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
+
+#else // !defined(__GNUC__):
+
+ BOOST_STATIC_CONSTANT(bool, selector =
+ (::boost::type_traits::ice_or<
+ ::boost::is_arithmetic<T>::value
+ , ::boost::is_reference<T>::value
+ , is_class_or_union<T>::value
+ , is_array<T>::value
+ >::value));
+
+#endif
+
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+ typedef ::boost::detail::is_enum_helper<
+ ::boost::detail::is_enum_impl<T>::selector
+ > se_t;
+#else
+ typedef ::boost::detail::is_enum_helper<selector> se_t;
+#endif
+
+ typedef typename se_t::template type<T> helper;
+ BOOST_STATIC_CONSTANT(bool, value = helper::value);
+};
+
+// these help on compilers with no partial specialization support:
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,::boost::detail::is_enum_impl<T>::value)
+
+#else // __BORLANDC__
+//
+// buggy is_convertible prevents working
+// implementation of is_enum:
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,false)
+
+#endif
+
+#else // BOOST_IS_ENUM
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,BOOST_IS_ENUM(T))
+
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_ENUM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_float.hpp b/3rdParty/Boost/boost/type_traits/is_float.hpp
new file mode 100644
index 0000000..25d16f1
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_float.hpp
@@ -0,0 +1,27 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
+#define BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+//* is a type T a floating-point type described in the standard (3.9.1p8)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_float,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,float,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,double,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_float,long double,true)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_floating_point.hpp b/3rdParty/Boost/boost/type_traits/is_floating_point.hpp
new file mode 100644
index 0000000..2224453
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_floating_point.hpp
@@ -0,0 +1,27 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TYPE_TRAITS_IS_FLOATING_HPP_INCLUDED
+#define BOOST_TYPE_TRAITS_IS_FLOATING_HPP_INCLUDED
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+//* is a type T a floating-point type described in the standard (3.9.1p8)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_floating_point,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_floating_point,float,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_floating_point,double,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_floating_point,long double,true)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_function.hpp b/3rdParty/Boost/boost/type_traits/is_function.hpp
new file mode 100644
index 0000000..1fba1bd
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_function.hpp
@@ -0,0 +1,103 @@
+
+// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
+// Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
+//
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_FUNCTION_HPP_INCLUDED
+#define BOOST_TT_IS_FUNCTION_HPP_INCLUDED
+
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/detail/false_result.hpp>
+#include <boost/config.hpp>
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
+# include <boost/type_traits/detail/is_function_ptr_helper.hpp>
+#else
+# include <boost/type_traits/detail/is_function_ptr_tester.hpp>
+# include <boost/type_traits/detail/yes_no_type.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+// is a type a function?
+// Please note that this implementation is unnecessarily complex:
+// we could just use !is_convertible<T*, const volatile void*>::value,
+// except that some compilers erroneously allow conversions from
+// function pointers to void*.
+
+namespace boost {
+
+#if !defined( __CODEGEARC__ )
+
+namespace detail {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
+template<bool is_ref = true>
+struct is_function_chooser
+ : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_function_chooser<false>
+{
+ template< typename T > struct result_
+ : ::boost::type_traits::is_function_ptr_helper<T*>
+ {
+ };
+};
+
+template <typename T>
+struct is_function_impl
+ : is_function_chooser< ::boost::is_reference<T>::value >
+ ::BOOST_NESTED_TEMPLATE result_<T>
+{
+};
+
+#else
+
+template <typename T>
+struct is_function_impl
+{
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(push)
+#pragma warning(disable:6334)
+#endif
+ static T* t;
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t))
+ == sizeof(::boost::type_traits::yes_type)
+ );
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(pop)
+#endif
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+template <typename T>
+struct is_function_impl<T&> : public false_type
+{};
+#endif
+
+#endif
+
+} // namespace detail
+
+#endif // !defined( __CODEGEARC__ )
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,__is_function(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_function,T,::boost::detail::is_function_impl<T>::value)
+#endif
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_FUNCTION_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_fundamental.hpp b/3rdParty/Boost/boost/type_traits/is_fundamental.hpp
new file mode 100644
index 0000000..6aff7dd
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_fundamental.hpp
@@ -0,0 +1,45 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_FUNDAMENTAL_HPP_INCLUDED
+#define BOOST_TT_IS_FUNDAMENTAL_HPP_INCLUDED
+
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_fundamental_impl
+ : ::boost::type_traits::ice_or<
+ ::boost::is_arithmetic<T>::value
+ , ::boost::is_void<T>::value
+ >
+{
+};
+
+} // namespace detail
+
+//* is a type T a fundamental type described in the standard (3.9.1)
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,__is_fundamental(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_fundamental,T,::boost::detail::is_fundamental_impl<T>::value)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_FUNDAMENTAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_integral.hpp b/3rdParty/Boost/boost/type_traits/is_integral.hpp
new file mode 100644
index 0000000..99420a9
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_integral.hpp
@@ -0,0 +1,78 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
+#define BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
+// as an extention we include long long, as this is likely to be added to the
+// standard at a later date
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,__is_integral(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_integral,T,false)
+
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned char,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned short,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned int,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned long,true)
+
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed char,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed short,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed int,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,signed long,true)
+
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,bool,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,char,true)
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+// If the following line fails to compile and you're using the Intel
+// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,
+// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,wchar_t,true)
+#endif
+
+// Same set of integral types as in boost/type_traits/integral_promotion.hpp.
+// Please, keep in sync. -- Alexander Nasonov
+#if (defined(BOOST_MSVC) && (BOOST_MSVC < 1300)) \
+ || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
+ || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER < 1300))
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int8,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int8,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int16,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int16,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int32,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int32,true)
+#ifdef __BORLANDC__
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
+#endif
+#endif
+
+# if defined(BOOST_HAS_LONG_LONG)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral, ::boost::ulong_long_type,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral, ::boost::long_long_type,true)
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,unsigned __int64,true)
+BOOST_TT_AUX_BOOL_TRAIT_CV_SPEC1(is_integral,__int64,true)
+#endif
+
+#endif // non-CodeGear implementation
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_member_function_pointer.hpp b/3rdParty/Boost/boost/type_traits/is_member_function_pointer.hpp
new file mode 100644
index 0000000..3fff063
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_member_function_pointer.hpp
@@ -0,0 +1,136 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
+ //
+ // Note: we use the "workaround" version for MSVC because it works for
+ // __stdcall etc function types, where as the partial specialisation
+ // version does not do so.
+ //
+# include <boost/type_traits/detail/is_mem_fun_pointer_impl.hpp>
+# include <boost/type_traits/remove_cv.hpp>
+#else
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/detail/false_result.hpp>
+# include <boost/type_traits/detail/ice_or.hpp>
+# include <boost/type_traits/detail/is_mem_fun_pointer_tester.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_function_pointer,T,__is_member_function_pointer( T ))
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(
+ is_member_function_pointer
+ , T
+ , ::boost::type_traits::is_mem_fun_pointer_impl<typename remove_cv<T>::type>::value
+ )
+
+#else
+
+namespace detail {
+
+#ifndef __BORLANDC__
+
+template <bool>
+struct is_mem_fun_pointer_select
+ : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_mem_fun_pointer_select<false>
+{
+ template <typename T> struct result_
+ {
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(push)
+#pragma warning(disable:6334)
+#endif
+ static T* make_t;
+ typedef result_<T> self_type;
+
+ BOOST_STATIC_CONSTANT(
+ bool, value = (
+ 1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t))
+ ));
+#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000)
+#pragma warning(pop)
+#endif
+ };
+};
+
+template <typename T>
+struct is_member_function_pointer_impl
+ : is_mem_fun_pointer_select<
+ ::boost::type_traits::ice_or<
+ ::boost::is_reference<T>::value
+ , ::boost::is_array<T>::value
+ >::value
+ >::template result_<T>
+{
+};
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <typename T>
+struct is_member_function_pointer_impl<T&> : public false_type{};
+#endif
+
+#else // Borland C++
+
+template <typename T>
+struct is_member_function_pointer_impl
+{
+ static T* m_t;
+ BOOST_STATIC_CONSTANT(
+ bool, value =
+ (1 == sizeof(type_traits::is_mem_fun_pointer_tester(m_t))) );
+};
+
+template <typename T>
+struct is_member_function_pointer_impl<T&>
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#endif
+
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_function_pointer,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_function_pointer,T,::boost::detail::is_member_function_pointer_impl<T>::value)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_member_object_pointer.hpp b/3rdParty/Boost/boost/type_traits/is_member_object_pointer.hpp
new file mode 100644
index 0000000..66b76c9
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_member_object_pointer.hpp
@@ -0,0 +1,46 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_MEMBER_OBJECT_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_MEMBER_OBJECT_POINTER_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/is_member_pointer.hpp>
+#include <boost/type_traits/is_member_function_pointer.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail{
+
+template <typename T>
+struct is_member_object_pointer_impl
+{
+ BOOST_STATIC_CONSTANT(
+ bool, value = (::boost::type_traits::ice_and<
+ ::boost::is_member_pointer<T>::value,
+ ::boost::type_traits::ice_not<
+ ::boost::is_member_function_pointer<T>::value
+ >::value
+ >::value ));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_object_pointer,T,::boost::detail::is_member_object_pointer_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_member_pointer.hpp b/3rdParty/Boost/boost/type_traits/is_member_pointer.hpp
new file mode 100644
index 0000000..cdf3d6a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_member_pointer.hpp
@@ -0,0 +1,116 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
+// is_member_pointer based on the Simulated Partial Specialization work
+// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
+// http://groups.yahoo.com/group/boost/message/5441
+// Some workarounds in here use ideas suggested from "Generic<Programming>:
+// Mappings between Types and Values"
+// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
+
+
+#ifndef BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+# include <boost/type_traits/is_member_function_pointer.hpp>
+#else
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/detail/is_mem_fun_pointer_tester.hpp>
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/detail/false_result.hpp>
+# include <boost/type_traits/detail/ice_or.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,__is_member_pointer(T))
+#elif BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
+
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::is_member_function_pointer<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
+
+#if !BOOST_WORKAROUND(__MWERKS__,<=0x3003)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const,true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const volatile,true)
+#endif
+
+#else // no partial template specialization
+
+namespace detail {
+
+template <typename R, typename T>
+::boost::type_traits::yes_type BOOST_TT_DECL is_member_pointer_tester(R T::*const volatile*);
+::boost::type_traits::no_type BOOST_TT_DECL is_member_pointer_tester(...);
+
+template <bool>
+struct is_member_pointer_select
+ : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_member_pointer_select<false>
+{
+ template <typename T> struct result_
+ {
+ static T* make_t();
+ BOOST_STATIC_CONSTANT(
+ bool, value =
+ (::boost::type_traits::ice_or<
+ (1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(make_t()))),
+ (1 == sizeof(is_member_pointer_tester(make_t())))
+ >::value) );
+ };
+};
+
+template <typename T>
+struct is_member_pointer_impl
+ : is_member_pointer_select<
+ ::boost::type_traits::ice_or<
+ ::boost::is_reference<T>::value
+ , ::boost::is_array<T>::value
+ >::value
+ >::template result_<T>
+{
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_member_pointer,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::detail::is_member_pointer_impl<T>::value)
+
+#endif // __BORLANDC__
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_object.hpp b/3rdParty/Boost/boost/type_traits/is_object.hpp
new file mode 100644
index 0000000..3decbf8
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_object.hpp
@@ -0,0 +1,53 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_OBJECT_HPP_INCLUDED
+#define BOOST_TT_IS_OBJECT_HPP_INCLUDED
+
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_object_impl
+{
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_function<T>::value>::value
+ >::value));
+#else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::type_traits::ice_not< ::boost::is_reference<T>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_void<T>::value>::value
+ >::value));
+#endif
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_object,T,::boost::detail::is_object_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_OBJECT_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_pod.hpp b/3rdParty/Boost/boost/type_traits/is_pod.hpp
new file mode 100644
index 0000000..af2c3c4
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_pod.hpp
@@ -0,0 +1,135 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_POD_HPP_INCLUDED
+#define BOOST_TT_IS_POD_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/is_void.hpp>
+#include <boost/type_traits/is_scalar.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+
+#include <cstddef>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+// forward declaration, needed by 'is_pod_array_helper' template below
+template< typename T > struct is_POD;
+
+namespace detail {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template <typename T> struct is_pod_impl
+{
+ BOOST_STATIC_CONSTANT(
+ bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_scalar<T>::value,
+ ::boost::is_void<T>::value,
+ BOOST_IS_POD(T)
+ >::value));
+};
+
+#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+template <typename T, std::size_t sz>
+struct is_pod_impl<T[sz]>
+ : is_pod_impl<T>
+{
+};
+#endif
+
+#else
+
+template <bool is_array = false>
+struct is_pod_helper
+{
+ template <typename T> struct result_
+ {
+ BOOST_STATIC_CONSTANT(
+ bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_scalar<T>::value,
+ ::boost::is_void<T>::value,
+ BOOST_IS_POD(T)
+ >::value));
+ };
+};
+
+template <bool b>
+struct bool_to_yes_no_type
+{
+ typedef ::boost::type_traits::no_type type;
+};
+
+template <>
+struct bool_to_yes_no_type<true>
+{
+ typedef ::boost::type_traits::yes_type type;
+};
+
+template <typename ArrayType>
+struct is_pod_array_helper
+{
+ enum { is_pod = ::boost::is_POD<ArrayType>::value }; // MSVC workaround
+ typedef typename bool_to_yes_no_type<is_pod>::type type;
+ type instance() const;
+};
+
+template <typename T>
+is_pod_array_helper<T> is_POD_array(T*);
+
+template <>
+struct is_pod_helper<true>
+{
+ template <typename T> struct result_
+ {
+ static T& help();
+ BOOST_STATIC_CONSTANT(bool, value =
+ sizeof(is_POD_array(help()).instance()) == sizeof(::boost::type_traits::yes_type)
+ );
+ };
+};
+
+
+template <typename T> struct is_pod_impl
+{
+ BOOST_STATIC_CONSTANT(
+ bool, value = (
+ ::boost::detail::is_pod_helper<
+ ::boost::is_array<T>::value
+ >::template result_<T>::value
+ )
+ );
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// the following help compilers without partial specialization support:
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void,true)
+
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void const,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,void const volatile,true)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_POD,T,::boost::detail::is_pod_impl<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pod,T,::boost::detail::is_pod_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_POD_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_pointer.hpp b/3rdParty/Boost/boost/type_traits/is_pointer.hpp
new file mode 100644
index 0000000..f6ecf33
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_pointer.hpp
@@ -0,0 +1,162 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
+// is_member_pointer based on the Simulated Partial Specialization work
+// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
+// http://groups.yahoo.com/group/boost/message/5441
+// Some workarounds in here use ideas suggested from "Generic<Programming>:
+// Mappings between Types and Values"
+// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
+
+
+#ifndef BOOST_TT_IS_POINTER_HPP_INCLUDED
+#define BOOST_TT_IS_POINTER_HPP_INCLUDED
+
+#include <boost/type_traits/is_member_pointer.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/type_traits/config.hpp>
+#if !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/remove_cv.hpp>
+#endif
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/detail/is_function_ptr_tester.hpp>
+# include <boost/type_traits/detail/false_result.hpp>
+# include <boost/type_traits/detail/ice_or.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,__is_pointer(T))
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+namespace detail {
+
+template< typename T > struct is_pointer_helper
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+# define TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(helper,sp,result) \
+template< typename T > struct helper<sp> \
+{ \
+ BOOST_STATIC_CONSTANT(bool, value = result); \
+}; \
+/**/
+
+TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC(is_pointer_helper,T*,true)
+
+# undef TT_AUX_BOOL_TRAIT_HELPER_PARTIAL_SPEC
+
+template< typename T >
+struct is_pointer_impl
+{
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::detail::is_pointer_helper<T>::value
+ , ::boost::type_traits::ice_not<
+ ::boost::is_member_pointer<T>::value
+ >::value
+ >::value)
+ );
+#else
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::detail::is_pointer_helper<typename remove_cv<T>::type>::value
+ , ::boost::type_traits::ice_not<
+ ::boost::is_member_pointer<T>::value
+ >::value
+ >::value)
+ );
+#endif
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::boost::detail::is_pointer_impl<T>::value)
+
+#if defined(__BORLANDC__) && !defined(__COMO__) && (__BORLANDC__ < 0x600)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T&,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T& const,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T& volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_pointer,T& const volatile,false)
+#endif
+
+#else // no partial template specialization
+
+namespace detail {
+
+struct pointer_helper
+{
+ pointer_helper(const volatile void*);
+};
+
+yes_type BOOST_TT_DECL is_pointer_tester(pointer_helper);
+no_type BOOST_TT_DECL is_pointer_tester(...);
+
+template <bool>
+struct is_pointer_select
+ : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_pointer_select<false>
+{
+ template <typename T> struct result_
+ {
+ static T& make_t();
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ (1 == sizeof(is_pointer_tester(make_t()))),
+ (1 == sizeof(type_traits::is_function_ptr_tester(make_t())))
+ >::value));
+ };
+};
+
+template <typename T>
+struct is_pointer_impl
+ : is_pointer_select<
+ ::boost::type_traits::ice_or<
+ ::boost::is_reference<T>::value
+ , ::boost::is_array<T>::value
+ >::value
+ >::template result_<T>
+{
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pointer,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_pointer,T,::boost::detail::is_pointer_impl<T>::value)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_polymorphic.hpp b/3rdParty/Boost/boost/type_traits/is_polymorphic.hpp
new file mode 100644
index 0000000..8fcc69e
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_polymorphic.hpp
@@ -0,0 +1,114 @@
+// (C) Copyright John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_POLYMORPHIC_HPP
+#define BOOST_TT_IS_POLYMORPHIC_HPP
+
+#include <boost/type_traits/intrinsics.hpp>
+#ifndef BOOST_IS_POLYMORPHIC
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#endif
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+#include <boost/detail/workaround.hpp>
+
+namespace boost{
+
+#ifndef BOOST_IS_POLYMORPHIC
+
+namespace detail{
+
+template <class T>
+struct is_polymorphic_imp1
+{
+# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) // CWPro7 should return false always.
+ typedef char d1, (&d2)[2];
+# else
+ typedef typename remove_cv<T>::type ncvT;
+ struct d1 : public ncvT
+ {
+ d1();
+# if !defined(__GNUC__) // this raises warnings with some classes, and buys nothing with GCC
+ ~d1()throw();
+# endif
+ char padding[256];
+ private:
+ // keep some picky compilers happy:
+ d1(const d1&);
+ d1& operator=(const d1&);
+ };
+ struct d2 : public ncvT
+ {
+ d2();
+ virtual ~d2()throw();
+# if !defined(BOOST_MSVC) && !defined(__ICL)
+ // for some reason this messes up VC++ when T has virtual bases,
+ // probably likewise for compilers that use the same ABI:
+ struct unique{};
+ virtual void unique_name_to_boost5487629(unique*);
+# endif
+ char padding[256];
+ private:
+ // keep some picky compilers happy:
+ d2(const d2&);
+ d2& operator=(const d2&);
+ };
+# endif
+ BOOST_STATIC_CONSTANT(bool, value = (sizeof(d2) == sizeof(d1)));
+};
+
+template <class T>
+struct is_polymorphic_imp2
+{
+ BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+template <bool is_class>
+struct is_polymorphic_selector
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_polymorphic_imp2<T> type;
+ };
+};
+
+template <>
+struct is_polymorphic_selector<true>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_polymorphic_imp1<T> type;
+ };
+};
+
+template <class T>
+struct is_polymorphic_imp
+{
+ typedef is_polymorphic_selector< ::boost::is_class<T>::value> selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type imp_type;
+ BOOST_STATIC_CONSTANT(bool, value = imp_type::value);
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_polymorphic,T,::boost::detail::is_polymorphic_imp<T>::value)
+
+#else // BOOST_IS_POLYMORPHIC
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_polymorphic,T,BOOST_IS_POLYMORPHIC(T))
+
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif
diff --git a/3rdParty/Boost/boost/type_traits/is_reference.hpp b/3rdParty/Boost/boost/type_traits/is_reference.hpp
new file mode 100644
index 0000000..dcf84db
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_reference.hpp
@@ -0,0 +1,118 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
+// is_member_pointer based on the Simulated Partial Specialization work
+// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
+// http://groups.yahoo.com/group/boost/message/5441
+// Some workarounds in here use ideas suggested from "Generic<Programming>:
+// Mappings between Types and Values"
+// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
+
+
+#ifndef BOOST_TT_IS_REFERENCE_HPP_INCLUDED
+#define BOOST_TT_IS_REFERENCE_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/detail/wrap.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,__is_reference(T))
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T&,true)
+
+#if defined(BOOST_ILLEGAL_CV_REFERENCES)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const,true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T& const volatile,true)
+#endif
+
+#if defined(__GNUC__) && (__GNUC__ < 3)
+// these allow us to work around illegally cv-qualified reference
+// types.
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T const ,::boost::is_reference<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T volatile ,::boost::is_reference<T>::value)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_reference,T const volatile ,::boost::is_reference<T>::value)
+// However, the above specializations confuse gcc 2.96 unless we also
+// supply these specializations for array types
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,T[N],false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,const T[N],false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,volatile T[N],false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,unsigned long N,is_reference,const volatile T[N],false)
+#endif
+
+#else
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4181 4097)
+#endif
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+using ::boost::type_traits::wrap;
+
+template <class T> T&(* is_reference_helper1(wrap<T>) )(wrap<T>);
+char is_reference_helper1(...);
+
+template <class T> no_type is_reference_helper2(T&(*)(wrap<T>));
+yes_type is_reference_helper2(...);
+
+template <typename T>
+struct is_reference_impl
+{
+ BOOST_STATIC_CONSTANT(
+ bool, value = sizeof(
+ ::boost::detail::is_reference_helper2(
+ ::boost::detail::is_reference_helper1(::boost::type_traits::wrap<T>()))) == 1
+ );
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_reference,void const volatile,false)
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_reference,T,::boost::detail::is_reference_impl<T>::value)
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/is_same.hpp b/3rdParty/Boost/boost/type_traits/is_same.hpp
new file mode 100644
index 0000000..e0d1808
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_same.hpp
@@ -0,0 +1,103 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
+// is_member_pointer based on the Simulated Partial Specialization work
+// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
+// http://groups.yahoo.com/group/boost/message/5441
+// Some workarounds in here use ideas suggested from "Generic<Programming>:
+// Mappings between Types and Values"
+// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
+
+
+#ifndef BOOST_TT_IS_SAME_HPP_INCLUDED
+#define BOOST_TT_IS_SAME_HPP_INCLUDED
+
+#include <boost/type_traits/config.hpp>
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/type_traits/detail/yes_no_type.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#endif
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T,T,true)
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+// without this, Borland's compiler gives the wrong answer for
+// references to arrays:
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T&,T&,true)
+#endif
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+#ifdef BOOST_MSVC
+// the following VC6 specific implementation is *NOT* legal
+// C++, but has the advantage that it works for incomplete
+// types.
+
+template< typename T1 >
+struct is_same_part_1
+{
+ template<typename T2> struct part_2 { enum { value = false }; };
+ template<> struct part_2<T1> { enum { value = true }; };
+};
+
+template< typename T1, typename T2 >
+struct is_same_impl
+{
+ enum { value = detail::is_same_part_1<T1>::template part_2<T2>::value };
+};
+
+#else // generic "no-partial-specialization" version
+
+template <typename T>
+::boost::type_traits::yes_type
+BOOST_TT_DECL is_same_tester(T*, T*);
+
+::boost::type_traits::no_type
+BOOST_TT_DECL is_same_tester(...);
+
+template <typename T, typename U>
+struct is_same_impl
+{
+ static T t;
+ static U u;
+
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ (sizeof(type_traits::yes_type) == sizeof(detail::is_same_tester(&t,&u))),
+ (::boost::is_reference<T>::value == ::boost::is_reference<U>::value),
+ (sizeof(T) == sizeof(U))
+ >::value));
+};
+
+#endif // BOOST_MSVC
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,(::boost::detail::is_same_impl<T,U>::value))
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_SAME_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/is_scalar.hpp b/3rdParty/Boost/boost/type_traits/is_scalar.hpp
new file mode 100644
index 0000000..4af3def
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_scalar.hpp
@@ -0,0 +1,55 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_SCALAR_HPP_INCLUDED
+#define BOOST_TT_IS_SCALAR_HPP_INCLUDED
+
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_member_pointer.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_scalar_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_or<
+ ::boost::is_arithmetic<T>::value,
+ ::boost::is_enum<T>::value,
+ ::boost::is_pointer<T>::value,
+ ::boost::is_member_pointer<T>::value
+ >::value));
+};
+
+// these specializations are only really needed for compilers
+// without partial specialization support:
+template <> struct is_scalar_impl<void>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+template <> struct is_scalar_impl<void const>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
+template <> struct is_scalar_impl<void volatile>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
+template <> struct is_scalar_impl<void const volatile>{ BOOST_STATIC_CONSTANT(bool, value = false ); };
+#endif
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_scalar,T,::boost::detail::is_scalar_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_SCALAR_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_signed.hpp b/3rdParty/Boost/boost/type_traits/is_signed.hpp
new file mode 100644
index 0000000..73389a1
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_signed.hpp
@@ -0,0 +1,127 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_SIGNED_HPP_INCLUDED
+#define BOOST_TT_IS_SIGNED_HPP_INCLUDED
+
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if !defined( __CODEGEARC__ )
+
+namespace detail{
+
+#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238)
+
+template <class T>
+struct is_signed_helper
+{
+ typedef typename remove_cv<T>::type no_cv_t;
+ BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) < 0));
+};
+
+template <bool integral_type>
+struct is_signed_select_helper
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_signed_helper<T> type;
+ };
+};
+
+template <>
+struct is_signed_select_helper<false>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <class T>
+struct is_signed_imp
+{
+ typedef is_signed_select_helper<
+ ::boost::type_traits::ice_or<
+ ::boost::is_integral<T>::value,
+ ::boost::is_enum<T>::value>::value
+ > selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type type;
+#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+ BOOST_STATIC_CONSTANT(bool, value = is_signed_imp<T>::type::value);
+#else
+ BOOST_STATIC_CONSTANT(bool, value = type::value);
+#endif
+};
+
+#else
+
+template <class T> struct is_signed_imp : public false_type{};
+template <> struct is_signed_imp<signed char> : public true_type{};
+template <> struct is_signed_imp<const signed char> : public true_type{};
+template <> struct is_signed_imp<volatile signed char> : public true_type{};
+template <> struct is_signed_imp<const volatile signed char> : public true_type{};
+template <> struct is_signed_imp<short> : public true_type{};
+template <> struct is_signed_imp<const short> : public true_type{};
+template <> struct is_signed_imp<volatile short> : public true_type{};
+template <> struct is_signed_imp<const volatile short> : public true_type{};
+template <> struct is_signed_imp<int> : public true_type{};
+template <> struct is_signed_imp<const int> : public true_type{};
+template <> struct is_signed_imp<volatile int> : public true_type{};
+template <> struct is_signed_imp<const volatile int> : public true_type{};
+template <> struct is_signed_imp<long> : public true_type{};
+template <> struct is_signed_imp<const long> : public true_type{};
+template <> struct is_signed_imp<volatile long> : public true_type{};
+template <> struct is_signed_imp<const volatile long> : public true_type{};
+#ifdef BOOST_HAS_LONG_LONG
+template <> struct is_signed_imp<long long> : public true_type{};
+template <> struct is_signed_imp<const long long> : public true_type{};
+template <> struct is_signed_imp<volatile long long> : public true_type{};
+template <> struct is_signed_imp<const volatile long long> : public true_type{};
+#endif
+#if defined(CHAR_MIN) && (CHAR_MIN != 0)
+template <> struct is_signed_imp<char> : public true_type{};
+template <> struct is_signed_imp<const char> : public true_type{};
+template <> struct is_signed_imp<volatile char> : public true_type{};
+template <> struct is_signed_imp<const volatile char> : public true_type{};
+#endif
+#if defined(WCHAR_MIN) && (WCHAR_MIN != 0)
+template <> struct is_signed_imp<wchar_t> : public true_type{};
+template <> struct is_signed_imp<const wchar_t> : public true_type{};
+template <> struct is_signed_imp<volatile wchar_t> : public true_type{};
+template <> struct is_signed_imp<const volatile wchar_t> : public true_type{};
+#endif
+
+#endif
+
+}
+
+#endif // !defined( __CODEGEARC__ )
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_signed,T,__is_signed(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_signed,T,::boost::detail::is_signed_imp<T>::value)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_stateless.hpp b/3rdParty/Boost/boost/type_traits/is_stateless.hpp
new file mode 100644
index 0000000..d8d4063
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_stateless.hpp
@@ -0,0 +1,48 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_STATELESS_HPP_INCLUDED
+#define BOOST_TT_IS_STATELESS_HPP_INCLUDED
+
+#include <boost/type_traits/has_trivial_constructor.hpp>
+#include <boost/type_traits/has_trivial_copy.hpp>
+#include <boost/type_traits/has_trivial_destructor.hpp>
+#include <boost/type_traits/is_class.hpp>
+#include <boost/type_traits/is_empty.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <typename T>
+struct is_stateless_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value =
+ (::boost::type_traits::ice_and<
+ ::boost::has_trivial_constructor<T>::value,
+ ::boost::has_trivial_copy<T>::value,
+ ::boost::has_trivial_destructor<T>::value,
+ ::boost::is_class<T>::value,
+ ::boost::is_empty<T>::value
+ >::value));
+};
+
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_stateless,T,::boost::detail::is_stateless_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_STATELESS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_union.hpp b/3rdParty/Boost/boost/type_traits/is_union.hpp
new file mode 100644
index 0000000..25bddcc
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_union.hpp
@@ -0,0 +1,49 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_UNION_HPP_INCLUDED
+#define BOOST_TT_IS_UNION_HPP_INCLUDED
+
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/intrinsics.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+#ifndef __GNUC__
+template <typename T> struct is_union_impl
+{
+ typedef typename remove_cv<T>::type cvt;
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(cvt));
+};
+#else
+//
+// using remove_cv here generates a whole load of needless
+// warnings with gcc, since it doesn't do any good with gcc
+// in any case (at least at present), just remove it:
+//
+template <typename T> struct is_union_impl
+{
+ BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_UNION(T));
+};
+#endif
+} // namespace detail
+
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_union,T,::boost::detail::is_union_impl<T>::value)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_UNION_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_unsigned.hpp b/3rdParty/Boost/boost/type_traits/is_unsigned.hpp
new file mode 100644
index 0000000..4866486
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_unsigned.hpp
@@ -0,0 +1,123 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_IS_UNSIGNED_HPP_INCLUDED
+#define BOOST_TT_IS_UNSIGNED_HPP_INCLUDED
+
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if !defined( __CODEGEARC__ )
+
+namespace detail{
+
+#if !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238)
+
+template <class T>
+struct is_ununsigned_helper
+{
+ typedef typename remove_cv<T>::type no_cv_t;
+ BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) > 0));
+};
+
+template <bool integral_type>
+struct is_ununsigned_select_helper
+{
+ template <class T>
+ struct rebind
+ {
+ typedef is_ununsigned_helper<T> type;
+ };
+};
+
+template <>
+struct is_ununsigned_select_helper<false>
+{
+ template <class T>
+ struct rebind
+ {
+ typedef false_type type;
+ };
+};
+
+template <class T>
+struct is_unsigned_imp
+{
+ typedef is_ununsigned_select_helper<
+ ::boost::type_traits::ice_or<
+ ::boost::is_integral<T>::value,
+ ::boost::is_enum<T>::value>::value
+ > selector;
+ typedef typename selector::template rebind<T> binder;
+ typedef typename binder::type type;
+ BOOST_STATIC_CONSTANT(bool, value = type::value);
+};
+
+#else
+
+template <class T> struct is_unsigned_imp : public false_type{};
+template <> struct is_unsigned_imp<unsigned char> : public true_type{};
+template <> struct is_unsigned_imp<const unsigned char> : public true_type{};
+template <> struct is_unsigned_imp<volatile unsigned char> : public true_type{};
+template <> struct is_unsigned_imp<const volatile unsigned char> : public true_type{};
+template <> struct is_unsigned_imp<unsigned short> : public true_type{};
+template <> struct is_unsigned_imp<const unsigned short> : public true_type{};
+template <> struct is_unsigned_imp<volatile unsigned short> : public true_type{};
+template <> struct is_unsigned_imp<const volatile unsigned short> : public true_type{};
+template <> struct is_unsigned_imp<unsigned int> : public true_type{};
+template <> struct is_unsigned_imp<const unsigned int> : public true_type{};
+template <> struct is_unsigned_imp<volatile unsigned int> : public true_type{};
+template <> struct is_unsigned_imp<const volatile unsigned int> : public true_type{};
+template <> struct is_unsigned_imp<unsigned long> : public true_type{};
+template <> struct is_unsigned_imp<const unsigned long> : public true_type{};
+template <> struct is_unsigned_imp<volatile unsigned long> : public true_type{};
+template <> struct is_unsigned_imp<const volatile unsigned long> : public true_type{};
+#ifdef BOOST_HAS_LONG_LONG
+template <> struct is_unsigned_imp<unsigned long long> : public true_type{};
+template <> struct is_unsigned_imp<const unsigned long long> : public true_type{};
+template <> struct is_unsigned_imp<volatile unsigned long long> : public true_type{};
+template <> struct is_unsigned_imp<const volatile unsigned long long> : public true_type{};
+#endif
+#if defined(CHAR_MIN) && (CHAR_MIN == 0)
+template <> struct is_unsigned_imp<char> : public true_type{};
+template <> struct is_unsigned_imp<const char> : public true_type{};
+template <> struct is_unsigned_imp<volatile char> : public true_type{};
+template <> struct is_unsigned_imp<const volatile char> : public true_type{};
+#endif
+#if defined(WCHAR_MIN) && (WCHAR_MIN == 0)
+template <> struct is_unsigned_imp<wchar_t> : public true_type{};
+template <> struct is_unsigned_imp<const wchar_t> : public true_type{};
+template <> struct is_unsigned_imp<volatile wchar_t> : public true_type{};
+template <> struct is_unsigned_imp<const volatile wchar_t> : public true_type{};
+#endif
+
+#endif
+
+}
+
+#endif // !defined( __CODEGEARC__ )
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,__is_unsigned(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_unsigned,T,::boost::detail::is_unsigned_imp<T>::value)
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_void.hpp b/3rdParty/Boost/boost/type_traits/is_void.hpp
new file mode 100644
index 0000000..6f6fbff
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_void.hpp
@@ -0,0 +1,38 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_IS_VOID_HPP_INCLUDED
+#define BOOST_TT_IS_VOID_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+//* is a type T void - is_void<T>
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,__is_void(T))
+#else
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true)
+
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const,true)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void const volatile,true)
+#endif
+
+#endif // non-CodeGear implementation
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_VOID_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/is_volatile.hpp b/3rdParty/Boost/boost/type_traits/is_volatile.hpp
new file mode 100644
index 0000000..7ab253a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/is_volatile.hpp
@@ -0,0 +1,133 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes,
+// Howard Hinnant and John Maddock 2000.
+// (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
+
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+// Fixed is_pointer, is_reference, is_const, is_volatile, is_same,
+// is_member_pointer based on the Simulated Partial Specialization work
+// of Mat Marcus and Jesse Jones. See http://opensource.adobe.com or
+// http://groups.yahoo.com/group/boost/message/5441
+// Some workarounds in here use ideas suggested from "Generic<Programming>:
+// Mappings between Types and Values"
+// by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
+
+
+#ifndef BOOST_TT_IS_VOLATILE_HPP_INCLUDED
+#define BOOST_TT_IS_VOLATILE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# include <boost/type_traits/detail/cv_traits_impl.hpp>
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
+# include <boost/type_traits/remove_bounds.hpp>
+# endif
+#else
+# include <boost/type_traits/is_reference.hpp>
+# include <boost/type_traits/is_array.hpp>
+# include <boost/type_traits/detail/yes_no_type.hpp>
+# include <boost/type_traits/detail/false_result.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+namespace boost {
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,__is_volatile(T))
+#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+//* is a type T declared volatile - is_volatile<T>
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
+ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile)
+#else
+ BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::cv_traits_imp<T*>::is_volatile)
+#endif
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T&,false)
+
+#if defined(BOOST_ILLEGAL_CV_REFERENCES)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& const,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& volatile,false)
+BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_volatile,T& const volatile,false)
+#endif
+
+#else
+
+namespace detail {
+
+using ::boost::type_traits::yes_type;
+using ::boost::type_traits::no_type;
+
+yes_type is_volatile_tester(void const volatile*);
+no_type is_volatile_tester(void const*);
+
+template <bool is_ref, bool array>
+struct is_volatile_helper
+ : ::boost::type_traits::false_result
+{
+};
+
+template <>
+struct is_volatile_helper<false,false>
+{
+ template <typename T> struct result_
+ {
+ static T* t;
+ BOOST_STATIC_CONSTANT(bool, value = (
+ sizeof(detail::yes_type) == sizeof(detail::is_volatile_tester(t))
+ ));
+ };
+};
+
+template <>
+struct is_volatile_helper<false,true>
+{
+ template <typename T> struct result_
+ {
+ static T t;
+ BOOST_STATIC_CONSTANT(bool, value = (
+ sizeof(detail::yes_type) == sizeof(detail::is_volatile_tester(&t))
+ ));
+ };
+};
+
+template <typename T>
+struct is_volatile_impl
+ : is_volatile_helper<
+ is_reference<T>::value
+ , is_array<T>::value
+ >::template result_<T>
+{
+};
+
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void,false)
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void const,false)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void volatile,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_volatile,void const volatile,true)
+#endif
+
+} // namespace detail
+
+//* is a type T declared volatile - is_volatile<T>
+BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_volatile,T,::boost::detail::is_volatile_impl<T>::value)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_VOLATILE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/make_signed.hpp b/3rdParty/Boost/boost/type_traits/make_signed.hpp
new file mode 100644
index 0000000..51cfd95
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/make_signed.hpp
@@ -0,0 +1,137 @@
+
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_MAKE_SIGNED_HPP_INCLUDED
+#define BOOST_TT_MAKE_SIGNED_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/is_unsigned.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_volatile.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/static_assert.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <class T>
+struct make_signed_imp
+{
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value));
+#if !BOOST_WORKAROUND(BOOST_MSVC, <=1300)
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_not< ::boost::is_same<
+ typename remove_cv<T>::type, bool>::value>::value));
+#endif
+
+ typedef typename remove_cv<T>::type t_no_cv;
+ typedef typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_signed<T>::value,
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
+ T,
+ typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
+ ::value),
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned char>,
+ signed char,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned short>,
+ signed short,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned int>,
+ int,
+ typename mpl::if_<
+ is_same<t_no_cv, unsigned long>,
+ long,
+#if defined(BOOST_HAS_LONG_LONG)
+ boost::long_long_type
+#elif defined(BOOST_HAS_MS_INT64)
+ __int64
+#else
+ long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type,
+ // Not a regular integer type:
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned char),
+ signed char,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned short),
+ signed short,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned int),
+ int,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned long),
+ long,
+#if defined(BOOST_HAS_LONG_LONG)
+ boost::long_long_type
+#elif defined(BOOST_HAS_MS_INT64)
+ __int64
+#else
+ long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type base_integer_type;
+
+ // Add back any const qualifier:
+ typedef typename mpl::if_<
+ is_const<T>,
+ typename add_const<base_integer_type>::type,
+ base_integer_type
+ >::type const_base_integer_type;
+
+ // Add back any volatile qualifier:
+ typedef typename mpl::if_<
+ is_volatile<T>,
+ typename add_volatile<const_base_integer_type>::type,
+ const_base_integer_type
+ >::type type;
+};
+
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(make_signed,T,typename boost::detail::make_signed_imp<T>::type)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/make_unsigned.hpp b/3rdParty/Boost/boost/type_traits/make_unsigned.hpp
new file mode 100644
index 0000000..54f9f66
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/make_unsigned.hpp
@@ -0,0 +1,137 @@
+
+// (C) Copyright John Maddock 2007.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
+#define BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_signed.hpp>
+#include <boost/type_traits/is_unsigned.hpp>
+#include <boost/type_traits/is_enum.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_volatile.hpp>
+#include <boost/type_traits/detail/ice_or.hpp>
+#include <boost/type_traits/detail/ice_and.hpp>
+#include <boost/type_traits/detail/ice_not.hpp>
+#include <boost/static_assert.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template <class T>
+struct make_unsigned_imp
+{
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_or< ::boost::is_integral<T>::value, ::boost::is_enum<T>::value>::value));
+#if !BOOST_WORKAROUND(BOOST_MSVC, <=1300)
+ BOOST_STATIC_ASSERT(
+ (::boost::type_traits::ice_not< ::boost::is_same<
+ typename remove_cv<T>::type, bool>::value>::value));
+#endif
+
+ typedef typename remove_cv<T>::type t_no_cv;
+ typedef typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_unsigned<T>::value,
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value >::value),
+ T,
+ typename mpl::if_c<
+ (::boost::type_traits::ice_and<
+ ::boost::is_integral<T>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, char>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, wchar_t>::value>::value,
+ ::boost::type_traits::ice_not< ::boost::is_same<t_no_cv, bool>::value>::value>
+ ::value),
+ typename mpl::if_<
+ is_same<t_no_cv, signed char>,
+ unsigned char,
+ typename mpl::if_<
+ is_same<t_no_cv, short>,
+ unsigned short,
+ typename mpl::if_<
+ is_same<t_no_cv, int>,
+ unsigned int,
+ typename mpl::if_<
+ is_same<t_no_cv, long>,
+ unsigned long,
+#if defined(BOOST_HAS_LONG_LONG)
+ boost::ulong_long_type
+#elif defined(BOOST_HAS_MS_INT64)
+ unsigned __int64
+#else
+ unsigned long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type,
+ // Not a regular integer type:
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned char),
+ unsigned char,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned short),
+ unsigned short,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned int),
+ unsigned int,
+ typename mpl::if_c<
+ sizeof(t_no_cv) == sizeof(unsigned long),
+ unsigned long,
+#if defined(BOOST_HAS_LONG_LONG)
+ boost::ulong_long_type
+#elif defined(BOOST_HAS_MS_INT64)
+ unsigned __int64
+#else
+ unsigned long
+#endif
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type
+ >::type base_integer_type;
+
+ // Add back any const qualifier:
+ typedef typename mpl::if_<
+ is_const<T>,
+ typename add_const<base_integer_type>::type,
+ base_integer_type
+ >::type const_base_integer_type;
+
+ // Add back any volatile qualifier:
+ typedef typename mpl::if_<
+ is_volatile<T>,
+ typename add_volatile<const_base_integer_type>::type,
+ const_base_integer_type
+ >::type type;
+};
+
+
+} // namespace detail
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(make_unsigned,T,typename boost::detail::make_unsigned_imp<T>::type)
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_all_extents.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_all_extents.hpp
new file mode 100644
index 0000000..3517132
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_all_extents.hpp
@@ -0,0 +1,47 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_ALL_EXTENT_HOLT_2004_0827
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_ALL_EXTENT_HOLT_2004_0827
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_array.hpp>
+
+namespace boost {
+ template<typename T>
+ struct remove_all_extents;
+
+ namespace detail {
+ template<bool IsArray>
+ struct remove_all_extents_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ };
+ template<>
+ struct remove_all_extents_impl_typeof<true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U[]);
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type reduced_type;
+ typedef typename remove_all_extents<reduced_type>::type type;
+ };
+ };
+ } //namespace detail
+
+ template<typename T>
+ struct remove_all_extents {
+ typedef typename detail::remove_all_extents_impl_typeof<
+ boost::is_array<T>::value
+ >::template inner<T,remove_all_extents<T> >::type type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_all_extents,T)
+ };
+} //namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
+
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_bounds.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_bounds.hpp
new file mode 100644
index 0000000..12a9b05
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_bounds.hpp
@@ -0,0 +1,43 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_array.hpp>
+
+namespace boost {
+ namespace detail {
+ template<bool IsArray>
+ struct remove_bounds_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ };
+ template<>
+ struct remove_bounds_impl_typeof<true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U[]);
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ };
+ } //namespace detail
+
+ template<typename T>
+ struct remove_bounds {
+ typedef typename detail::remove_bounds_impl_typeof<
+ boost::is_array<T>::value
+ >::template inner<T,remove_bounds<T> >::type type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_bounds,T)
+ };
+} //namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
+
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_const.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_const.hpp
new file mode 100644
index 0000000..5395e80
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_const.hpp
@@ -0,0 +1,143 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_CONST_HOLT_2004_0828
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_CONST_HOLT_2004_0828
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_array.hpp>
+
+namespace boost {
+ namespace detail {
+ template<bool IsPointer,bool IsArray,bool IsConst,bool IsVolatile>
+ struct remove_const_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+ template<> //Const
+ struct remove_const_impl_typeof<false,false,true,false> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U const&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //CV
+ struct remove_const_impl_typeof<false,false,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U volatile,ID> test(U const volatile&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //Const Pointer
+ struct remove_const_impl_typeof<true,false,true,false> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(void(*)(U const[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //CV Pointer
+ struct remove_const_impl_typeof<true,false,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U volatile,ID> test(void(*)(U const volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //Const Array
+ struct remove_const_impl_typeof<false,true,true,false> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U[value],ID> test(void(*)(U const[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+
+ template<> //CV Array
+ struct remove_const_impl_typeof<false,true,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U volatile[value],ID> test(void(*)(U const volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+
+ } //namespace detail
+
+ template<typename T>
+ struct remove_const {
+ typedef detail::remove_const_impl_typeof<
+ boost::is_pointer<T>::value,
+ boost::is_array<T>::value,
+ boost::is_const<T>::value,
+ boost::is_volatile<T>::value
+ > remove_const_type;
+ typedef typename
+ remove_const_type::template inner<
+ typename remove_const_type::template transform_type<T>::type,
+ remove_const<T>
+ >::type
+ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_const,T)
+ };
+}//namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_CONST_HOLT_2004_0828
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_cv.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_cv.hpp
new file mode 100644
index 0000000..c7b0379
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_cv.hpp
@@ -0,0 +1,190 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_CV_HOLT_2004_0901
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_CV_HOLT_2004_0901
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_array.hpp>
+
+namespace boost {
+ namespace detail {
+ template<bool IsPointer,bool IsArray,bool IsConst,bool IsVolatile>
+ struct remove_cv_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+ template<> //Volatile
+ struct remove_cv_impl_typeof<false,false,false,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U volatile&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //Const
+ struct remove_cv_impl_typeof<false,false,true,false> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U const&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //CV
+ struct remove_cv_impl_typeof<false,false,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U const volatile&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //Volatile Pointer
+ struct remove_cv_impl_typeof<true,false,false,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(void(*)(U volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //Const Pointer
+ struct remove_cv_impl_typeof<true,false,true,false> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(void(*)(U const[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //CV Pointer
+ struct remove_cv_impl_typeof<true,false,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(void(*)(U const volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //Volatile Array
+ struct remove_cv_impl_typeof<false,true,false,true> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U[value],ID> test(void(*)(U volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+ template<> //Const Array
+ struct remove_cv_impl_typeof<false,true,true,false> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U[value],ID> test(void(*)(U const[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+
+ template<> //CV Array
+ struct remove_cv_impl_typeof<false,true,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U[value],ID> test(void(*)(U const volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+
+ } //namespace detail
+
+ template<typename T>
+ struct remove_cv {
+ typedef detail::remove_cv_impl_typeof<
+ boost::is_pointer<T>::value,
+ boost::is_array<T>::value,
+ boost::is_const<T>::value,
+ boost::is_volatile<T>::value
+ > remove_cv_type;
+ typedef typename
+ remove_cv_type::template inner<
+ typename remove_cv_type::template transform_type<T>::type,
+ remove_cv<T>
+ >::type
+ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_cv,T)
+ };
+}//namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_CV_HOLT_2004_0901
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_extent.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_extent.hpp
new file mode 100644
index 0000000..f87ec41
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_extent.hpp
@@ -0,0 +1,43 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_EXTENT_HOLT_2004_0827
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_EXTENT_HOLT_2004_0827
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_array.hpp>
+
+namespace boost {
+ namespace detail {
+ template<bool IsArray>
+ struct remove_extent_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ };
+ template<>
+ struct remove_extent_impl_typeof<true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U[]);
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ };
+ } //namespace detail
+
+ template<typename T>
+ struct remove_extent {
+ typedef typename detail::remove_extent_impl_typeof<
+ boost::is_array<T>::value
+ >::template inner<T,remove_extent<T> >::type type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_extent,T)
+ };
+} //namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_BOUNDS_HOLT_2004_0827
+
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_pointer.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_pointer.hpp
new file mode 100644
index 0000000..8b9b0d4
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_pointer.hpp
@@ -0,0 +1,42 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_POINTER_HOLT_2004_0827
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_POINTER_HOLT_2004_0827
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+
+namespace boost {
+ namespace detail {
+ template<int IsPointer>
+ struct remove_pointer_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ };
+ template<>
+ struct remove_pointer_impl_typeof<true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U*);
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( *((T*)NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ };
+ } //namespace detail
+
+ template<typename T>
+ struct remove_pointer {
+ typedef typename detail::remove_pointer_impl_typeof<
+ boost::is_pointer<T>::value
+ >::template inner<T,remove_pointer<T> >::type type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_pointer,T)
+ };
+} //namespace boost
+
+#endif //BOOST_TYPE_TRAITS_REMOVE_POINTER_HOLT_2004_0827
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_reference.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_reference.hpp
new file mode 100644
index 0000000..367d352
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_reference.hpp
@@ -0,0 +1,42 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_REFERENCE_HOLT_2004_0827
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_REFERENCE_HOLT_2004_0827
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_reference.hpp>
+
+namespace boost {
+ namespace detail {
+ template<bool IsReference>
+ struct remove_reference_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ };
+ template<>
+ struct remove_reference_impl_typeof<true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ };
+ } //namespace detail
+
+ template<typename T>
+ struct remove_reference {
+ typedef typename detail::remove_reference_impl_typeof<
+ boost::is_reference<T>::value
+ >::template inner<T,remove_reference<T> >::type type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_reference,T)
+ };
+} //namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_REFERENCE_HOLT_2004_0827
diff --git a/3rdParty/Boost/boost/type_traits/msvc/remove_volatile.hpp b/3rdParty/Boost/boost/type_traits/msvc/remove_volatile.hpp
new file mode 100644
index 0000000..3759f2a
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/remove_volatile.hpp
@@ -0,0 +1,143 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPE_TRAITS_MSVC_REMOVE_VOLATILE_HOLT_2004_0828
+#define BOOST_TYPE_TRAITS_MSVC_REMOVE_VOLATILE_HOLT_2004_0828
+
+#include <boost/type_traits/msvc/typeof.hpp>
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/is_pointer.hpp>
+#include <boost/type_traits/is_array.hpp>
+
+namespace boost {
+ namespace detail {
+ template<bool IsPointer,bool IsArray,bool IsConst,bool IsVolatile>
+ struct remove_volatile_impl_typeof {
+ template<typename T,typename ID>
+ struct inner {
+ typedef T type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+ template<> //Volatile
+ struct remove_volatile_impl_typeof<false,false,false,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(U volatile&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //CV
+ struct remove_volatile_impl_typeof<false,false,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U const,ID> test(U const volatile&(*)());
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (T(*)())(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T& type;
+ };
+ };
+ template<> //Volatile Pointer
+ struct remove_volatile_impl_typeof<true,false,false,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U,ID> test(void(*)(U volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //CV Pointer
+ struct remove_volatile_impl_typeof<true,false,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ template<typename U>
+ static msvc_register_type<U const,ID> test(void(*)(U const volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type[];
+ };
+ };
+ template<> //Volatile Array
+ struct remove_volatile_impl_typeof<false,true,false,true> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U[value],ID> test(void(*)(U volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+
+ template<> //CV Array
+ struct remove_volatile_impl_typeof<false,true,true,true> {
+ template<typename T,typename ID>
+ struct inner {
+ BOOST_STATIC_CONSTANT(unsigned,value=(sizeof(T)/sizeof((*((T*)NULL))[0])));
+
+ template<typename U>
+ static msvc_register_type<U const[value],ID> test(void(*)(U const volatile[]));
+ static msvc_register_type<T,ID> test(...);
+ BOOST_STATIC_CONSTANT(unsigned,register_test=sizeof(test( (void(*)(T))(NULL) ) ));
+ typedef typename msvc_extract_type<ID>::id2type::type type;
+ };
+ template<typename T>
+ struct transform_type {
+ typedef T type;
+ };
+ };
+
+ } //namespace detail
+
+ template<typename T>
+ struct remove_volatile {
+ typedef detail::remove_volatile_impl_typeof<
+ boost::is_pointer<T>::value,
+ boost::is_array<T>::value,
+ boost::is_const<T>::value,
+ boost::is_volatile<T>::value
+ > remove_volatile_type;
+ typedef typename
+ remove_volatile_type::template inner<
+ typename remove_volatile_type::template transform_type<T>::type,
+ remove_volatile<T>
+ >::type
+ type;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,remove_volatile,T)
+ };
+}//namespace boost
+
+#endif //BOOST_TYPE_TRAITS_MSVC_REMOVE_VOLATILE_HOLT_2004_0828
diff --git a/3rdParty/Boost/boost/type_traits/msvc/typeof.hpp b/3rdParty/Boost/boost/type_traits/msvc/typeof.hpp
new file mode 100644
index 0000000..ebb0e80
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/msvc/typeof.hpp
@@ -0,0 +1,50 @@
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
+#define BOOST_TYPETRAITS_MSVC_TYPEOF_HPP
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+namespace boost { namespace detail {
+# if BOOST_WORKAROUND(BOOST_MSVC,==1300)
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ template<>
+ struct id2type_impl<true> //VC7.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ };
+# else
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ struct id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ typedef msvc_extract_type<ID> base_type;
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
+ {
+ typedef T type;
+ };
+ };
+# endif
+}}
+
+#endif //BOOST_TYPETRAITS_MSVC_TYPEOF_IMPL_HPP
diff --git a/3rdParty/Boost/boost/type_traits/promote.hpp b/3rdParty/Boost/boost/type_traits/promote.hpp
new file mode 100644
index 0000000..14efad4
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/promote.hpp
@@ -0,0 +1,40 @@
+// Copyright 2005 Alexander Nasonov.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef FILE_boost_type_traits_promote_hpp_INCLUDED
+#define FILE_boost_type_traits_promote_hpp_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/type_traits/integral_promotion.hpp>
+#include <boost/type_traits/floating_point_promotion.hpp>
+
+// Should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+namespace detail {
+
+template<class T>
+struct promote_impl
+ : integral_promotion<
+ BOOST_DEDUCED_TYPENAME floating_point_promotion<T>::type
+ >
+{
+};
+
+}
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(
+ promote
+ , T
+ , BOOST_DEDUCED_TYPENAME boost::detail::promote_impl<T>::type
+ )
+}
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // #ifndef FILE_boost_type_traits_promote_hpp_INCLUDED
+
diff --git a/3rdParty/Boost/boost/type_traits/rank.hpp b/3rdParty/Boost/boost/type_traits/rank.hpp
new file mode 100644
index 0000000..77df41e
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/rank.hpp
@@ -0,0 +1,89 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_RANK_HPP_INCLUDED
+#define BOOST_TT_RANK_HPP_INCLUDED
+
+// should be the last #include
+#include <boost/type_traits/detail/size_t_trait_def.hpp>
+
+namespace boost {
+
+#if !defined( __CODEGEARC__ )
+
+namespace detail{
+
+template <class T, std::size_t N>
+struct rank_imp
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = N);
+};
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T const[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T volatile[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+
+template <class T, std::size_t R, std::size_t N>
+struct rank_imp<T const volatile[R], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+
+#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+template <class T, std::size_t N>
+struct rank_imp<T[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+template <class T, std::size_t N>
+struct rank_imp<T const[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+template <class T, std::size_t N>
+struct rank_imp<T volatile[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+template <class T, std::size_t N>
+struct rank_imp<T const volatile[], N>
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = (::boost::detail::rank_imp<T, N+1>::value));
+};
+#endif
+#endif
+}
+
+#endif // !defined( __CODEGEARC__ )
+
+#if defined( __CODEGEARC__ )
+BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(rank,T,__array_rank(T))
+#else
+BOOST_TT_AUX_SIZE_T_TRAIT_DEF1(rank,T,(::boost::detail::rank_imp<T,0>::value))
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/size_t_trait_undef.hpp>
+
+#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_all_extents.hpp b/3rdParty/Boost/boost/type_traits/remove_all_extents.hpp
new file mode 100644
index 0000000..64876e1
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_all_extents.hpp
@@ -0,0 +1,48 @@
+
+// (C) Copyright John Maddock 2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_ALL_EXTENTS_HPP_INCLUDED
+#define BOOST_TT_REMOVE_ALL_EXTENTS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <cstddef>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_all_extents.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+#if !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+namespace boost {
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_all_extents,T,T)
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T[N],typename boost::remove_all_extents<T>::type type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T const[N],typename boost::remove_all_extents<T const>::type type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T volatile[N],typename boost::remove_all_extents<T volatile>::type type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_all_extents,T const volatile[N],typename boost::remove_all_extents<T const volatile>::type type)
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T[],typename boost::remove_all_extents<T>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T const[],typename boost::remove_all_extents<T const>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T volatile[],typename boost::remove_all_extents<T volatile>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_all_extents,T const volatile[],typename boost::remove_all_extents<T const volatile>::type)
+#endif
+#endif
+
+} // namespace boost
+
+#endif
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_bounds.hpp b/3rdParty/Boost/boost/type_traits/remove_bounds.hpp
new file mode 100644
index 0000000..ce12978
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_bounds.hpp
@@ -0,0 +1,48 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
+#define BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <cstddef>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_bounds.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+#if !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+namespace boost {
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_bounds,T,T)
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T[N],T type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const volatile[N],T const volatile type)
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T[],T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const[],T const)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T volatile[],T volatile)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const volatile[],T const volatile)
+#endif
+#endif
+
+} // namespace boost
+
+#endif
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_const.hpp b/3rdParty/Boost/boost/type_traits/remove_const.hpp
new file mode 100644
index 0000000..7e18d88
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_const.hpp
@@ -0,0 +1,78 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_REMOVE_CONST_HPP_INCLUDED
+#define BOOST_TT_REMOVE_CONST_HPP_INCLUDED
+
+#include <boost/type_traits/is_volatile.hpp>
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#include <boost/type_traits/detail/cv_traits_impl.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#include <cstddef>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_const.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+template <typename T, bool is_vol>
+struct remove_const_helper
+{
+ typedef T type;
+};
+
+template <typename T>
+struct remove_const_helper<T, true>
+{
+ typedef T volatile type;
+};
+
+
+template <typename T>
+struct remove_const_impl
+{
+ typedef typename remove_const_helper<
+ typename cv_traits_imp<T*>::unqualified_type
+ , ::boost::is_volatile<T>::value
+ >::type type;
+};
+
+} // namespace detail
+
+// * convert a type T to non-const type - remove_const<T>
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename boost::detail::remove_const_impl<T>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_const,T&,T&)
+#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_const,T const volatile[N],T volatile type[N])
+#endif
+
+#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_const,T,typename boost::detail::remove_const_impl<T>::type)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_CONST_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_cv.hpp b/3rdParty/Boost/boost/type_traits/remove_cv.hpp
new file mode 100644
index 0000000..09f8ff1
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_cv.hpp
@@ -0,0 +1,61 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_REMOVE_CV_HPP_INCLUDED
+#define BOOST_TT_REMOVE_CV_HPP_INCLUDED
+
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#include <boost/type_traits/detail/cv_traits_impl.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#include <cstddef>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_cv.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+// convert a type T to a non-cv-qualified type - remove_cv<T>
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::cv_traits_imp<T*>::unqualified_type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_cv,T&,T&)
+#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T volatile[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_cv,T const volatile[N],T type[N])
+#endif
+
+#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+namespace detail {
+template <typename T>
+struct remove_cv_impl
+{
+ typedef typename remove_volatile_impl<
+ typename remove_const_impl<T>::type
+ >::type type;
+};
+}
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_cv,T,typename boost::detail::remove_cv_impl<T>::type)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_CV_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_extent.hpp b/3rdParty/Boost/boost/type_traits/remove_extent.hpp
new file mode 100644
index 0000000..b4c7d41
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_extent.hpp
@@ -0,0 +1,48 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-2005.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED
+#define BOOST_TT_REMOVE_EXTENT_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+#include <cstddef>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_extent.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+#if !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+namespace boost {
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_extent,T,T)
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T[N],T type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const[N],T const type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T volatile[N],T volatile type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_extent,T const volatile[N],T const volatile type)
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T[],T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T const[],T const)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T volatile[],T volatile)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_extent,T const volatile[],T const volatile)
+#endif
+#endif
+
+} // namespace boost
+
+#endif
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_pointer.hpp b/3rdParty/Boost/boost/type_traits/remove_pointer.hpp
new file mode 100644
index 0000000..5359992
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_pointer.hpp
@@ -0,0 +1,43 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
+#define BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
+
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_pointer.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T*,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* const,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* volatile,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_pointer,T* const volatile,T)
+
+#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_pointer,T,typename boost::detail::remove_pointer_impl<T>::type)
+
+#endif
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_POINTER_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_reference.hpp b/3rdParty/Boost/boost/type_traits/remove_reference.hpp
new file mode 100644
index 0000000..8fddc46
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_reference.hpp
@@ -0,0 +1,50 @@
+
+// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
+#define BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
+
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_reference.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T&,T)
+
+#if defined(BOOST_ILLEGAL_CV_REFERENCES)
+// these are illegal specialisations; cv-qualifies applied to
+// references have no effect according to [8.3.2p1],
+// C++ Builder requires them though as it treats cv-qualified
+// references as distinct types...
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& const,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& volatile,T)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_reference,T& const volatile,T)
+#endif
+
+#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_reference,T,typename boost::detail::remove_reference_impl<T>::type)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/remove_volatile.hpp b/3rdParty/Boost/boost/type_traits/remove_volatile.hpp
new file mode 100644
index 0000000..723ebe3
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/remove_volatile.hpp
@@ -0,0 +1,77 @@
+
+// (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
+// Hinnant & John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+
+#ifndef BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED
+#define BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED
+
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/broken_compiler_spec.hpp>
+#include <boost/type_traits/detail/cv_traits_impl.hpp>
+#include <boost/config.hpp>
+#include <boost/detail/workaround.hpp>
+
+#include <cstddef>
+
+#if BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+#include <boost/type_traits/msvc/remove_volatile.hpp>
+#endif
+
+// should be the last #include
+#include <boost/type_traits/detail/type_trait_def.hpp>
+
+namespace boost {
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace detail {
+
+template <typename T, bool is_const>
+struct remove_volatile_helper
+{
+ typedef T type;
+};
+
+template <typename T>
+struct remove_volatile_helper<T,true>
+{
+ typedef T const type;
+};
+
+template <typename T>
+struct remove_volatile_impl
+{
+ typedef typename remove_volatile_helper<
+ typename cv_traits_imp<T*>::unqualified_type
+ , ::boost::is_const<T>::value
+ >::type type;
+};
+
+} // namespace detail
+
+// * convert a type T to a non-volatile type - remove_volatile<T>
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_volatile,T,typename boost::detail::remove_volatile_impl<T>::type)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_volatile,T&,T&)
+#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_volatile,T volatile[N],T type[N])
+BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_volatile,T const volatile[N],T const type[N])
+#endif
+
+#elif !BOOST_WORKAROUND(BOOST_MSVC,<=1300)
+
+BOOST_TT_AUX_TYPE_TRAIT_DEF1(remove_volatile,T,typename boost::detail::remove_volatile_impl<T>::type)
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace boost
+
+#include <boost/type_traits/detail/type_trait_undef.hpp>
+
+#endif // BOOST_TT_REMOVE_VOLATILE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/type_traits/type_with_alignment.hpp b/3rdParty/Boost/boost/type_traits/type_with_alignment.hpp
new file mode 100644
index 0000000..d790ee1
--- /dev/null
+++ b/3rdParty/Boost/boost/type_traits/type_with_alignment.hpp
@@ -0,0 +1,393 @@
+// (C) Copyright John Maddock 2000.
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+//
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
+
+#ifndef BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
+#define BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/preprocessor/list/for_each_i.hpp>
+#include <boost/preprocessor/tuple/to_list.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/list/transform.hpp>
+#include <boost/preprocessor/list/append.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+#include <boost/type_traits/is_pod.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/config.hpp>
+
+// should be the last #include
+#include <boost/type_traits/detail/bool_trait_def.hpp>
+
+#include <cstddef>
+
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4121) // alignment is sensitive to packing
+#endif
+
+namespace boost {
+
+#ifndef __BORLANDC__
+
+namespace detail {
+
+class alignment_dummy;
+typedef void (*function_ptr)();
+typedef int (alignment_dummy::*member_ptr);
+typedef int (alignment_dummy::*member_function_ptr)();
+
+#ifdef BOOST_HAS_LONG_LONG
+#define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
+ 12, ( \
+ char, short, int, long, ::boost::long_long_type, float, double, long double \
+ , void*, function_ptr, member_ptr, member_function_ptr))
+#else
+#define BOOST_TT_ALIGNMENT_BASE_TYPES BOOST_PP_TUPLE_TO_LIST( \
+ 11, ( \
+ char, short, int, long, float, double, long double \
+ , void*, function_ptr, member_ptr, member_function_ptr))
+#endif
+
+#define BOOST_TT_HAS_ONE_T(D,Data,T) boost::detail::has_one_T< T >
+
+#define BOOST_TT_ALIGNMENT_STRUCT_TYPES \
+ BOOST_PP_LIST_TRANSFORM(BOOST_TT_HAS_ONE_T, \
+ X, \
+ BOOST_TT_ALIGNMENT_BASE_TYPES)
+
+#define BOOST_TT_ALIGNMENT_TYPES \
+ BOOST_PP_LIST_APPEND(BOOST_TT_ALIGNMENT_BASE_TYPES, \
+ BOOST_TT_ALIGNMENT_STRUCT_TYPES)
+
+//
+// lower_alignment_helper --
+//
+// This template gets instantiated a lot, so use partial
+// specialization when available to reduce the compiler burden.
+//
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template <bool found = true>
+struct lower_alignment_helper_impl
+{
+ template <std::size_t, class>
+ struct apply
+ {
+ typedef char type;
+ enum { value = true };
+ };
+};
+
+template <>
+struct lower_alignment_helper_impl<false>
+{
+ template <std::size_t target, class TestType>
+ struct apply
+ : mpl::if_c<(alignment_of<TestType>::value == target), TestType, char>
+ {
+ enum { value = (alignment_of<TestType>::value == target) };
+ };
+};
+
+template <bool found, std::size_t target, class TestType>
+struct lower_alignment_helper
+ : lower_alignment_helper_impl<found>::template apply<target,TestType>
+{
+};
+#else
+template <bool found, std::size_t target, class TestType>
+struct lower_alignment_helper
+{
+ typedef char type;
+ enum { value = true };
+};
+
+template <std::size_t target, class TestType>
+struct lower_alignment_helper<false,target,TestType>
+{
+ enum { value = (alignment_of<TestType>::value == target) };
+ typedef typename mpl::if_c<value, TestType, char>::type type;
+};
+#endif
+
+#define BOOST_TT_CHOOSE_MIN_ALIGNMENT(R,P,I,T) \
+ typename lower_alignment_helper< \
+ BOOST_PP_CAT(found,I),target,T \
+ >::type BOOST_PP_CAT(t,I); \
+ enum { \
+ BOOST_PP_CAT(found,BOOST_PP_INC(I)) \
+ = lower_alignment_helper<BOOST_PP_CAT(found,I),target,T >::value \
+ };
+
+#define BOOST_TT_CHOOSE_T(R,P,I,T) T BOOST_PP_CAT(t,I);
+
+template <typename T>
+struct has_one_T
+{
+ T data;
+};
+
+template <std::size_t target>
+union lower_alignment
+{
+ enum { found0 = false };
+
+ BOOST_PP_LIST_FOR_EACH_I(
+ BOOST_TT_CHOOSE_MIN_ALIGNMENT
+ , ignored
+ , BOOST_TT_ALIGNMENT_TYPES
+ )
+};
+
+union max_align
+{
+ BOOST_PP_LIST_FOR_EACH_I(
+ BOOST_TT_CHOOSE_T
+ , ignored
+ , BOOST_TT_ALIGNMENT_TYPES
+ )
+};
+
+#undef BOOST_TT_ALIGNMENT_BASE_TYPES
+#undef BOOST_TT_HAS_ONE_T
+#undef BOOST_TT_ALIGNMENT_STRUCT_TYPES
+#undef BOOST_TT_ALIGNMENT_TYPES
+#undef BOOST_TT_CHOOSE_MIN_ALIGNMENT
+#undef BOOST_TT_CHOOSE_T
+
+template<std::size_t TAlign, std::size_t Align>
+struct is_aligned
+{
+ BOOST_STATIC_CONSTANT(bool,
+ value = (TAlign >= Align) & (TAlign % Align == 0)
+ );
+};
+
+#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::max_align,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<1> ,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<2> ,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<4> ,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<8> ,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<10> ,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<16> ,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::detail::lower_alignment<32> ,true)
+#endif
+
+} // namespace detail
+
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+template<std::size_t Align>
+struct is_pod< ::boost::detail::lower_alignment<Align> >
+{
+ BOOST_STATIC_CONSTANT(std::size_t, value = true);
+};
+#endif
+
+// This alignment method originally due to Brian Parker, implemented by David
+// Abrahams, and then ported here by Doug Gregor.
+namespace detail{
+
+template <std::size_t Align>
+class type_with_alignment_imp
+{
+ typedef ::boost::detail::lower_alignment<Align> t1;
+ typedef typename mpl::if_c<
+ ::boost::detail::is_aligned< ::boost::alignment_of<t1>::value,Align >::value
+ , t1
+ , ::boost::detail::max_align
+ >::type align_t;
+
+ BOOST_STATIC_CONSTANT(std::size_t, found = alignment_of<align_t>::value);
+
+ BOOST_STATIC_ASSERT(found >= Align);
+ BOOST_STATIC_ASSERT(found % Align == 0);
+
+ public:
+ typedef align_t type;
+};
+
+}
+
+template <std::size_t Align>
+class type_with_alignment
+ : public ::boost::detail::type_with_alignment_imp<Align>
+{
+};
+
+#if defined(__GNUC__)
+namespace align {
+struct __attribute__((__aligned__(2))) a2 {};
+struct __attribute__((__aligned__(4))) a4 {};
+struct __attribute__((__aligned__(8))) a8 {};
+struct __attribute__((__aligned__(16))) a16 {};
+struct __attribute__((__aligned__(32))) a32 {};
+}
+
+template<> class type_with_alignment<1> { public: typedef char type; };
+template<> class type_with_alignment<2> { public: typedef align::a2 type; };
+template<> class type_with_alignment<4> { public: typedef align::a4 type; };
+template<> class type_with_alignment<8> { public: typedef align::a8 type; };
+template<> class type_with_alignment<16> { public: typedef align::a16 type; };
+template<> class type_with_alignment<32> { public: typedef align::a32 type; };
+
+namespace detail {
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a2,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a4,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a32,true)
+}
+#endif
+#if (defined(BOOST_MSVC) || (defined(BOOST_INTEL) && defined(_MSC_VER))) && _MSC_VER >= 1300
+//
+// MSVC supports types which have alignments greater than the normal
+// maximum: these are used for example in the types __m64 and __m128
+// to provide types with alignment requirements which match the SSE
+// registers. Therefore we extend type_with_alignment<> to support
+// such types, however, we have to be careful to use a builtin type
+// whenever possible otherwise we break previously working code:
+// see http://article.gmane.org/gmane.comp.lib.boost.devel/173011
+// for an example and test case. Thus types like a8 below will
+// be used *only* if the existing implementation can't provide a type
+// with suitable alignment. This does mean however, that type_with_alignment<>
+// may return a type which cannot be passed through a function call
+// by value (and neither can any type containing such a type like
+// Boost.Optional). However, this only happens when we have no choice
+// in the matter because no other "ordinary" type is available.
+//
+namespace align {
+struct __declspec(align(8)) a8 {
+ char m[8];
+ typedef a8 type;
+};
+struct __declspec(align(16)) a16 {
+ char m[16];
+ typedef a16 type;
+};
+struct __declspec(align(32)) a32 {
+ char m[32];
+ typedef a32 type;
+};
+struct __declspec(align(64)) a64
+{
+ char m[64];
+ typedef a64 type;
+};
+struct __declspec(align(128)) a128 {
+ char m[128];
+ typedef a128 type;
+};
+}
+
+template<> class type_with_alignment<8>
+{
+ typedef mpl::if_c<
+ ::boost::alignment_of<detail::max_align>::value < 8,
+ align::a8,
+ detail::type_with_alignment_imp<8> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<16>
+{
+ typedef mpl::if_c<
+ ::boost::alignment_of<detail::max_align>::value < 16,
+ align::a16,
+ detail::type_with_alignment_imp<16> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<32>
+{
+ typedef mpl::if_c<
+ ::boost::alignment_of<detail::max_align>::value < 32,
+ align::a32,
+ detail::type_with_alignment_imp<32> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<64> {
+ typedef mpl::if_c<
+ ::boost::alignment_of<detail::max_align>::value < 64,
+ align::a64,
+ detail::type_with_alignment_imp<64> >::type t1;
+public:
+ typedef t1::type type;
+};
+template<> class type_with_alignment<128> {
+ typedef mpl::if_c<
+ ::boost::alignment_of<detail::max_align>::value < 128,
+ align::a128,
+ detail::type_with_alignment_imp<128> >::type t1;
+public:
+ typedef t1::type type;
+};
+
+namespace detail {
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a32,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a64,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a128,true)
+}
+#endif
+
+#else
+
+//
+// Borland specific version, we have this for two reasons:
+// 1) The version above doesn't always compile (with the new test cases for example)
+// 2) Because of Borlands #pragma option we can create types with alignments that are
+// greater that the largest aligned builtin type.
+
+namespace align{
+#pragma option push -a16
+struct a2{ short s; };
+struct a4{ int s; };
+struct a8{ double s; };
+struct a16{ long double s; };
+#pragma option pop
+}
+
+namespace detail {
+
+typedef ::boost::align::a16 max_align;
+
+//#if ! BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a2,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a4,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a8,true)
+BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_pod,::boost::align::a16,true)
+//#endif
+}
+
+template <std::size_t N> struct type_with_alignment
+{
+ // We should never get to here, but if we do use the maximally
+ // aligned type:
+ // BOOST_STATIC_ASSERT(0);
+ typedef align::a16 type;
+};
+template <> struct type_with_alignment<1>{ typedef char type; };
+template <> struct type_with_alignment<2>{ typedef align::a2 type; };
+template <> struct type_with_alignment<4>{ typedef align::a4 type; };
+template <> struct type_with_alignment<8>{ typedef align::a8 type; };
+template <> struct type_with_alignment<16>{ typedef align::a16 type; };
+
+#endif
+
+} // namespace boost
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
+#include <boost/type_traits/detail/bool_trait_undef.hpp>
+
+#endif // BOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED
+
+
diff --git a/3rdParty/Boost/boost/typeof/dmc/typeof_impl.hpp b/3rdParty/Boost/boost/typeof/dmc/typeof_impl.hpp
new file mode 100644
index 0000000..2460622
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/dmc/typeof_impl.hpp
@@ -0,0 +1,100 @@
+// Copyright (C) 2007 Peder Holt
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+# define BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/mpl/int.hpp>
+
+namespace boost
+{
+ namespace type_of
+ {
+
+ template<int N> struct encode_counter : encode_counter<N - 1> {};
+ template<> struct encode_counter<0> {};
+
+ char (*encode_index(...))[1];
+
+# define BOOST_TYPEOF_INDEX(T) (sizeof(*boost::type_of::encode_index((boost::type_of::encode_counter<1000>*)0)))
+# define BOOST_TYPEOF_NEXT_INDEX(next) friend char (*encode_index(encode_counter<next>*))[next];
+
+
+ //Typeof code
+
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ struct id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ typedef msvc_extract_type<ID> base_type;
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature, also works for Digital Mars
+ {
+ typedef T type;
+ };
+ };
+
+
+ template<int ID>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<mpl::int_<ID> >::id2type id2type;
+ typedef typename id2type::type type;
+ };
+
+ //Tie it all together
+ template<typename T>
+ struct encode_type
+ {
+ //Get the next available compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
+ //Instantiate the template
+ typedef typename msvc_register_type<T,mpl::int_<value> >::id2type type;
+ //Set the next compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,next=value+1);
+ //Increment the compile time constant (only needed when extensions are not active
+ BOOST_TYPEOF_NEXT_INDEX(next);
+ };
+
+ template<class T>
+ struct sizer
+ {
+ typedef char(*type)[encode_type<T>::value];
+ };
+
+ template<typename T>
+ typename sizer<T>::type encode_start(T const&);
+
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+ };
+
+ }
+}
+
+#endif//BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/encode_decode.hpp b/3rdParty/Boost/boost/typeof/encode_decode.hpp
new file mode 100644
index 0000000..5a13fd5
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/encode_decode.hpp
@@ -0,0 +1,61 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// boostinspect:nounnamed
+
+#ifndef BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
+#define BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
+
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/next.hpp>
+
+#ifndef BOOST_TYPEOF_SUPPRESS_UNNAMED_NAMESPACE
+
+# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace { namespace boost_typeof {
+# define BOOST_TYPEOF_END_ENCODE_NS }}
+# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost_typeof
+
+#else
+
+# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace boost { namespace type_of {
+# define BOOST_TYPEOF_END_ENCODE_NS }}
+# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost::type_of
+
+# define BOOST_TYPEOF_TEXT "unnamed namespace is off"
+# include <boost/typeof/message.hpp>
+
+#endif
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+template<class V, class Type_Not_Registered_With_Typeof_System>
+struct encode_type_impl;
+
+template<class T, class Iter>
+struct decode_type_impl
+{
+ typedef int type; // MSVC ETI workaround
+};
+
+template<class T>
+struct decode_nested_template_helper_impl;
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+namespace boost { namespace type_of {
+
+ template<class V, class T>
+ struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl<V, T>
+ {};
+
+ template<class Iter>
+ struct decode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_type_impl<
+ typename Iter::type,
+ typename Iter::next
+ >
+ {};
+}}
+
+#endif//BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/encode_decode_params.hpp b/3rdParty/Boost/boost/typeof/encode_decode_params.hpp
new file mode 100644
index 0000000..640bfdc
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/encode_decode_params.hpp
@@ -0,0 +1,34 @@
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
+#define BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+// Assumes iter0 contains initial iterator
+
+#define BOOST_TYPEOF_DECODE_PARAM(z, n, text) \
+ typedef boost::type_of::decode_type<iter##n> decode##n; \
+ typedef typename decode##n::type p##n; \
+ typedef typename decode##n::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_DECODE_PARAMS(n)\
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_DECODE_PARAM, ~)
+
+// The P0, P1, ... PN are encoded and added to V
+
+#define BOOST_TYPEOF_ENCODE_PARAMS_BEGIN(z, n, text)\
+ typename boost::type_of::encode_type<
+
+#define BOOST_TYPEOF_ENCODE_PARAMS_END(z, n, text)\
+ , BOOST_PP_CAT(P, n)>::type
+
+#define BOOST_TYPEOF_ENCODE_PARAMS(n, ID) \
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_ENCODE_PARAMS_BEGIN, ~) \
+ typename boost::type_of::push_back<V, boost::mpl::size_t<ID> >::type \
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_ENCODE_PARAMS_END, ~)
+
+#endif//BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/int_encoding.hpp b/3rdParty/Boost/boost/typeof/int_encoding.hpp
new file mode 100644
index 0000000..482b7f6
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/int_encoding.hpp
@@ -0,0 +1,118 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
+#define BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/size_t.hpp>
+#include <boost/config.hpp>
+
+namespace boost { namespace type_of {
+
+ template<class T> struct get_unsigned
+ {
+ typedef T type;
+ };
+ template<> struct get_unsigned<signed char>
+ {
+ typedef unsigned char type;
+ };
+ template<> struct get_unsigned<char>
+ {
+ typedef unsigned char type;
+ };
+ template<> struct get_unsigned<short>
+ {
+ typedef unsigned short type;
+ };
+ template<> struct get_unsigned<int>
+ {
+ typedef unsigned int type;
+ };
+ template<> struct get_unsigned<long>
+ {
+ typedef unsigned long type;
+ };
+
+ //////////////////////////
+
+ template<std::size_t n, bool Overflow>
+ struct pack
+ {
+ BOOST_STATIC_CONSTANT(std::size_t , value=((n + 1) * 2 + (Overflow ? 1 : 0)));
+ };
+
+ template<std::size_t m>
+ struct unpack
+ {
+ BOOST_STATIC_CONSTANT(std::size_t, value = (m / 2) - 1);
+ BOOST_STATIC_CONSTANT(std::size_t, overflow = (m % 2 == 1));
+ };
+
+ ////////////////////////////////
+
+ template<class V, std::size_t n, bool overflow = (n >= 0x3fffffff)>
+ struct encode_size_t : push_back<
+ V,
+ boost::mpl::size_t<pack<n, false>::value>
+ >
+ {};
+
+ template<class V, std::size_t n>
+ struct encode_size_t<V, n, true> : push_back<typename push_back<
+ V,
+ boost::mpl::size_t<pack<n % 0x3ffffffe, true>::value> >::type,
+ boost::mpl::size_t<n / 0x3ffffffe>
+ >
+ {};
+
+ template<class V, class T, T n>
+ struct encode_integral : encode_size_t< V, (typename get_unsigned<T>::type)n,(((typename get_unsigned<T>::type)n)>=0x3fffffff) >
+ {};
+
+ template<class V, bool b>
+ struct encode_integral<V, bool, b> : encode_size_t< V, b?1:0, false>
+ {};
+ ///////////////////////////
+
+ template<std::size_t n, class Iter, bool overflow>
+ struct decode_size_t;
+
+ template<std::size_t n, class Iter>
+ struct decode_size_t<n, Iter, false>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t,value = n);
+ typedef Iter iter;
+ };
+
+ template<std::size_t n, class Iter>
+ struct decode_size_t<n, Iter, true>
+ {
+ BOOST_STATIC_CONSTANT(std::size_t,m = Iter::type::value);
+
+ BOOST_STATIC_CONSTANT(std::size_t,value = (std::size_t)m * 0x3ffffffe + n);
+ typedef typename Iter::next iter;
+ };
+
+ template<class T, class Iter>
+ struct decode_integral
+ {
+ typedef decode_integral<T,Iter> self_t;
+ BOOST_STATIC_CONSTANT(std::size_t,m = Iter::type::value);
+
+ BOOST_STATIC_CONSTANT(std::size_t,n = unpack<m>::value);
+
+ BOOST_STATIC_CONSTANT(std::size_t,overflow = unpack<m>::overflow);
+
+ typedef typename Iter::next nextpos;
+
+ static const T value = (T)(std::size_t)decode_size_t<n, nextpos, overflow>::value;
+
+ typedef typename decode_size_t<self_t::n, nextpos, self_t::overflow>::iter iter;
+ };
+
+}}//namespace
+
+#endif//BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/integral_template_param.hpp b/3rdParty/Boost/boost/typeof/integral_template_param.hpp
new file mode 100644
index 0000000..8543be7
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/integral_template_param.hpp
@@ -0,0 +1,80 @@
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
+#define BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
+
+#define BOOST_TYPEOF_unsigned (unsigned)
+#define BOOST_TYPEOF_signed (signed)
+
+#define char_BOOST_TYPEOF (char)
+#define short_BOOST_TYPEOF (short)
+#define int_BOOST_TYPEOF (int)
+#define long_BOOST_TYPEOF (long)
+
+#define BOOST_TYPEOF_char_BOOST_TYPEOF (char)
+#define BOOST_TYPEOF_short_BOOST_TYPEOF (short)
+#define BOOST_TYPEOF_int_BOOST_TYPEOF (int)
+#define BOOST_TYPEOF_long_BOOST_TYPEOF (long)
+#define BOOST_TYPEOF_bool_BOOST_TYPEOF (bool)
+#define BOOST_TYPEOF_unsigned_BOOST_TYPEOF (unsigned)
+#define BOOST_TYPEOF_size_t_BOOST_TYPEOF (size_t)
+
+#define BOOST_TYPEOF_MAKE_OBJ_char BOOST_TYPEOF_INTEGRAL_PARAM(char)
+#define BOOST_TYPEOF_MAKE_OBJ_short BOOST_TYPEOF_INTEGRAL_PARAM(short)
+#define BOOST_TYPEOF_MAKE_OBJ_int BOOST_TYPEOF_INTEGRAL_PARAM(int)
+#define BOOST_TYPEOF_MAKE_OBJ_long BOOST_TYPEOF_INTEGRAL_PARAM(long)
+#define BOOST_TYPEOF_MAKE_OBJ_bool BOOST_TYPEOF_INTEGRAL_PARAM(bool)
+#define BOOST_TYPEOF_MAKE_OBJ_unsigned BOOST_TYPEOF_INTEGRAL_PARAM(unsigned)
+#define BOOST_TYPEOF_MAKE_OBJ_size_t BOOST_TYPEOF_INTEGRAL_PARAM(size_t)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedchar BOOST_TYPEOF_INTEGRAL_PARAM(unsigned char)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedshort BOOST_TYPEOF_INTEGRAL_PARAM(unsigned short)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedint BOOST_TYPEOF_INTEGRAL_PARAM(unsigned int)
+#define BOOST_TYPEOF_MAKE_OBJ_unsignedlong BOOST_TYPEOF_INTEGRAL_PARAM(unsigned long)
+#define BOOST_TYPEOF_MAKE_OBJ_signedchar BOOST_TYPEOF_INTEGRAL_PARAM(signed char)
+#define BOOST_TYPEOF_MAKE_OBJ_signedshort BOOST_TYPEOF_INTEGRAL_PARAM(signed short)
+#define BOOST_TYPEOF_MAKE_OBJ_signedint BOOST_TYPEOF_INTEGRAL_PARAM(signed int)
+#define BOOST_TYPEOF_MAKE_OBJ_signedlong BOOST_TYPEOF_INTEGRAL_PARAM(signed long)
+#define BOOST_TYPEOF_MAKE_OBJ_integral(x) BOOST_TYPEOF_INTEGRAL_PARAM(x)
+
+#define BOOST_TYPEOF_INTEGRAL(X) integral(X) BOOST_TYPEOF_EAT
+#define BOOST_TYPEOF_EAT_BOOST_TYPEOF
+#define BOOST_TYPEOF_integral(X) (integral(X))
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM(Type)\
+ (INTEGRAL_PARAM)\
+ (Type)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)\
+ BOOST_PP_SEQ_ELEM(1, Param)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_EXPANDTYPE(Param)\
+ BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)
+
+// INTEGRAL_PARAM "virtual functions" implementation
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_ENCODE(This, n)\
+ typedef typename boost::type_of::encode_integral<\
+ BOOST_PP_CAT(V, n),\
+ BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This),\
+ BOOST_PP_CAT(P, n)\
+ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_DECODE(This, n)\
+ typedef boost::type_of::decode_integral<BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This), BOOST_PP_CAT(iter, n)> BOOST_PP_CAT(d, n);\
+ static const BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\
+ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_PLACEHOLDER(Param)\
+ (BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param))0
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_DECLARATION_TYPE(Param)\
+ BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_PLACEHOLDER_TYPES(Param, n)\
+ BOOST_PP_CAT(T,n)
+
+#define BOOST_TYPEOF_INTEGRAL_PARAM_ISTEMPLATE 0
+
+#endif//BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/message.hpp b/3rdParty/Boost/boost/typeof/message.hpp
new file mode 100644
index 0000000..1471ef3
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/message.hpp
@@ -0,0 +1,8 @@
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#if defined(_MSC_VER) && !defined BOOST_TYPEOF_SILENT
+# pragma message(BOOST_TYPEOF_TEXT)
+#endif
+#undef BOOST_TYPEOF_TEXT
diff --git a/3rdParty/Boost/boost/typeof/modifiers.hpp b/3rdParty/Boost/boost/typeof/modifiers.hpp
new file mode 100644
index 0000000..630d0dc
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/modifiers.hpp
@@ -0,0 +1,121 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
+#define BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
+
+#include <boost/typeof/encode_decode.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+// modifiers
+
+#define BOOST_TYPEOF_modifier_support(ID, Fun)\
+ template<class V, class T> struct encode_type_impl<V, Fun(T)>\
+ {\
+ typedef\
+ typename boost::type_of::encode_type<\
+ typename boost::type_of::push_back<\
+ V\
+ , boost::mpl::size_t<ID> >::type\
+ , T>::type\
+ type;\
+ };\
+ template<class Iter> struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ typedef boost::type_of::decode_type<Iter> d1;\
+ typedef Fun(typename d1::type) type;\
+ typedef typename d1::iter iter;\
+ }
+
+
+#define BOOST_TYPEOF_const_fun(T) const T
+#define BOOST_TYPEOF_volatile_fun(T) volatile T
+#define BOOST_TYPEOF_volatile_const_fun(T) volatile const T
+#define BOOST_TYPEOF_pointer_fun(T) T*
+#define BOOST_TYPEOF_reference_fun(T) T&
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+//Borland incorrectly handles T const, T const volatile and T volatile.
+//It drops the decoration no matter what, so we need to try to handle T* const etc. without loosing the top modifier.
+#define BOOST_TYPEOF_const_pointer_fun(T) T const *
+#define BOOST_TYPEOF_const_reference_fun(T) T const &
+#define BOOST_TYPEOF_volatile_pointer_fun(T) T volatile*
+#define BOOST_TYPEOF_volatile_reference_fun(T) T volatile&
+#define BOOST_TYPEOF_volatile_const_pointer_fun(T) T volatile const *
+#define BOOST_TYPEOF_volatile_const_reference_fun(T) T volatile const &
+#endif
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_reference_fun);
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_reference_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_reference_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_pointer_fun);
+BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_reference_fun);
+#endif
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+#undef BOOST_TYPEOF_modifier_support
+#undef BOOST_TYPEOF_const_fun
+#undef BOOST_TYPEOF_volatile_fun
+#undef BOOST_TYPEOF_volatile_const_fun
+#undef BOOST_TYPEOF_pointer_fun
+#undef BOOST_TYPEOF_reference_fun
+
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
+#undef BOOST_TYPEOF_const_pointer_fun
+#undef BOOST_TYPEOF_const_reference_fun
+#undef BOOST_TYPEOF_volatile_pointer_fun
+#undef BOOST_TYPEOF_volatile_reference_fun
+#undef BOOST_TYPEOF_volatile_const_pointer_fun
+#undef BOOST_TYPEOF_volatile_const_reference_fun
+#endif
+
+// arrays
+
+#define BOOST_TYPEOF_array_support(ID, Qualifier)\
+ template<class V, class T, int N>\
+ struct encode_type_impl<V, Qualifier() T[N]>\
+ {\
+ typedef\
+ typename boost::type_of::encode_type<\
+ typename boost::type_of::push_back<\
+ typename boost::type_of::push_back<\
+ V\
+ , boost::mpl::size_t<ID> >::type\
+ , boost::mpl::size_t<N> >::type\
+ , T>::type\
+ type;\
+ };\
+ template<class Iter>\
+ struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ enum{n = Iter::type::value};\
+ typedef boost::type_of::decode_type<typename Iter::next> d;\
+ typedef typename d::type Qualifier() type[n];\
+ typedef typename d::iter iter;\
+ }
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_EMPTY);
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(const));
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile));
+BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile const));
+BOOST_TYPEOF_END_ENCODE_NS
+
+#undef BOOST_TYPEOF_array_support
+
+#endif//BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/msvc/typeof_impl.hpp b/3rdParty/Boost/boost/typeof/msvc/typeof_impl.hpp
new file mode 100644
index 0000000..2f58c18
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/msvc/typeof_impl.hpp
@@ -0,0 +1,281 @@
+
+// Copyright (C) 2005 Igor Chesnokov, mailto:ichesnokov@gmail.com (VC 6.5,VC 7.1 + counter code)
+// Copyright (C) 2005-2007 Peder Holt (VC 7.0 + framework)
+// Copyright (C) 2006 Steven Watanabe (VC 8.0)
+
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+# define BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+# include <boost/mpl/int.hpp>
+# include <boost/type_traits/is_function.hpp>
+# include <boost/utility/enable_if.hpp>
+
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
+# include <typeinfo>
+# endif
+
+namespace boost
+{
+ namespace type_of
+ {
+
+ //Compile time constant code
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1300) && defined(_MSC_EXTENSIONS)
+ template<int N> struct the_counter;
+
+ template<typename T,int N = 5/*for similarity*/>
+ struct encode_counter
+ {
+ __if_exists(the_counter<N + 256>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 257>::count));
+ }
+ __if_not_exists(the_counter<N + 256>)
+ {
+ __if_exists(the_counter<N + 64>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 65>::count));
+ }
+ __if_not_exists(the_counter<N + 64>)
+ {
+ __if_exists(the_counter<N + 16>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 17>::count));
+ }
+ __if_not_exists(the_counter<N + 16>)
+ {
+ __if_exists(the_counter<N + 4>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 5>::count));
+ }
+ __if_not_exists(the_counter<N + 4>)
+ {
+ __if_exists(the_counter<N>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=(encode_counter<T,N + 1>::count));
+ }
+ __if_not_exists(the_counter<N>)
+ {
+ BOOST_STATIC_CONSTANT(unsigned,count=N);
+ typedef the_counter<N> type;
+ }
+ }
+ }
+ }
+ }
+ };
+
+# define BOOST_TYPEOF_INDEX(T) (encode_counter<T>::count)
+# define BOOST_TYPEOF_NEXT_INDEX(next)
+# else
+ template<int N> struct encode_counter : encode_counter<N - 1> {};
+ template<> struct encode_counter<0> {};
+
+ //Need to default to a larger value than 4, as due to MSVC's ETI errors. (sizeof(int)==4)
+ char (*encode_index(...))[5];
+
+# define BOOST_TYPEOF_INDEX(T) (sizeof(*boost::type_of::encode_index((boost::type_of::encode_counter<1005>*)0)))
+# define BOOST_TYPEOF_NEXT_INDEX(next) friend char (*encode_index(encode_counter<next>*))[next];
+# endif
+
+ //Typeof code
+
+# if BOOST_WORKAROUND(BOOST_MSVC,==1300)
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ template<>
+ struct id2type_impl<true> //VC7.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ };
+#elif BOOST_WORKAROUND(BOOST_MSVC,>=1400)
+ struct msvc_extract_type_default_param {};
+
+ template<typename ID, typename T = msvc_extract_type_default_param>
+ struct msvc_extract_type;
+
+ template<typename ID>
+ struct msvc_extract_type<ID, msvc_extract_type_default_param> {
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename ID, typename T>
+ struct msvc_extract_type : msvc_extract_type<ID,msvc_extract_type_default_param>
+ {
+ template<>
+ struct id2type_impl<true> //VC8.0 specific bugfeature
+ {
+ typedef T type;
+ };
+ template<bool>
+ struct id2type_impl;
+
+ typedef id2type_impl<true> id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID, T>
+ {
+ };
+# else
+ template<typename ID>
+ struct msvc_extract_type
+ {
+ struct id2type;
+ };
+
+ template<typename T, typename ID>
+ struct msvc_register_type : msvc_extract_type<ID>
+ {
+ typedef msvc_extract_type<ID> base_type;
+ struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
+ {
+ typedef T type;
+ };
+ };
+# endif
+# if 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;
+ typedef typename id2type::type wrapped_type;
+ typedef typename wrapped_type::type type;
+ };
+ //This class is used for registering the type T. encode_type<T> is mapped against typeid(encode_type<T>).
+ //msvc_typeid_wrapper<typeid(encode_type<T>)> will now have a type typedef that equals encode_type<T>.
+ template<typename T>
+ struct encode_type
+ {
+ typedef encode_type<T> input_type;
+ //Invoke registration of encode_type<T>. typeid(encode_type<T>) is now mapped to encode_type<T>. Do not use registered_type for anything.
+ //The reason for registering encode_type<T> rather than T, is that VC handles typeid(function reference) poorly. By adding another
+ //level of indirection, we solve this problem.
+ typedef typename msvc_register_type<input_type,msvc_typeid_wrapper<typeid(input_type)> >::id2type registered_type;
+ typedef T type;
+ };
+
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename encode_type<T>::input_type>::type encode_start(T const&);
+
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename encode_type<T>::input_type>::type encode_start(T&);
+
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&);
+
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<typeid(boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+struct name {\
+ enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type<name>(expr)))};\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+};
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+struct name {\
+ enum {_typeof_register_value=sizeof(typeid(boost::type_of::typeof_register_type<name>(expr)))};\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+};
+
+# else
+ template<int ID>
+ struct msvc_typeid_wrapper {
+ typedef typename msvc_extract_type<mpl::int_<ID> >::id2type id2type;
+ typedef typename id2type::type type;
+ };
+ //Workaround for ETI-bug for VC6 and VC7
+ template<>
+ struct msvc_typeid_wrapper<1> {
+ typedef msvc_typeid_wrapper<1> type;
+ };
+ //Workaround for ETI-bug for VC7.1
+ template<>
+ struct msvc_typeid_wrapper<4> {
+ typedef msvc_typeid_wrapper<4> type;
+ };
+
+ //Tie it all together
+ template<typename T>
+ struct encode_type
+ {
+ //Get the next available compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
+ //Instantiate the template
+ typedef typename msvc_register_type<T,mpl::int_<value> >::id2type type;
+ //Set the next compile time constants index
+ BOOST_STATIC_CONSTANT(unsigned,next=value+1);
+ //Increment the compile time constant (only needed when extensions are not active
+ BOOST_TYPEOF_NEXT_INDEX(next);
+ };
+
+ template<class T>
+ struct sizer
+ {
+ typedef char(*type)[encode_type<T>::value];
+ };
+# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
+ template<typename T> typename disable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T const&);
+
+ template<typename T> typename enable_if<
+ typename is_function<T>::type,
+ typename sizer<T>::type>::type encode_start(T&);
+# else
+ template<typename T>
+ typename sizer<T>::type encode_start(T const&);
+# endif
+ template<typename Organizer, typename T>
+ msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
+
+# define BOOST_TYPEOF(expr) \
+ boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(expr))>::type
+
+# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef typename id2type::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
+ typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
+ typedef id2type::type type;\
+ };
+
+#endif
+ }
+}
+
+#endif//BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/native.hpp b/3rdParty/Boost/boost/typeof/native.hpp
new file mode 100644
index 0000000..8197e28
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/native.hpp
@@ -0,0 +1,60 @@
+// Copyright (C) 2006 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_NATIVE_HPP_INCLUDED
+#define BOOST_TYPEOF_NATIVE_HPP_INCLUDED
+
+#ifndef MSVC_TYPEOF_HACK
+
+#ifdef BOOST_NO_SFINAE
+
+namespace boost { namespace type_of {
+
+ template<class T>
+ T& ensure_obj(const T&);
+
+}}
+
+#else
+
+#include <boost/type_traits/is_function.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace type_of {
+# ifdef BOOST_NO_SFINAE
+ template<class T>
+ T& ensure_obj(const T&);
+# else
+ template<typename T>
+ typename enable_if<is_function<T>, T&>::type
+ ensure_obj(T&);
+
+ template<typename T>
+ typename disable_if<is_function<T>, T&>::type
+ ensure_obj(const T&);
+# endif
+}}
+
+#endif//BOOST_NO_SFINAE
+
+#define BOOST_TYPEOF(expr) BOOST_TYPEOF_KEYWORD(boost::type_of::ensure_obj(expr))
+#define BOOST_TYPEOF_TPL BOOST_TYPEOF
+
+#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ typedef BOOST_TYPEOF_TPL(expr) type;\
+ };
+
+#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ typedef BOOST_TYPEOF(expr) type;\
+ };
+
+#endif//MSVC_TYPEOF_HACK
+
+#define BOOST_TYPEOF_REGISTER_TYPE(x)
+#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
+
+#endif//BOOST_TYPEOF_NATIVE_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/typeof/pointers_data_members.hpp b/3rdParty/Boost/boost/typeof/pointers_data_members.hpp
new file mode 100644
index 0000000..2b47e97
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/pointers_data_members.hpp
@@ -0,0 +1,38 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
+#define BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
+
+#include <boost/typeof/encode_decode_params.hpp>
+#include <boost/typeof/encode_decode.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+enum {PTR_DATA_MEM_ID = BOOST_TYPEOF_UNIQUE_ID()};
+
+template<class V, class P0, class P1>
+struct encode_type_impl<V, P0 P1::*>
+{
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(2, PTR_DATA_MEM_ID) type;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<PTR_DATA_MEM_ID>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(2)
+
+ template<class T> struct workaround{
+ typedef p0 T::* type;
+ };
+ typedef typename decode_type_impl<boost::mpl::size_t<PTR_DATA_MEM_ID>, Iter>::template workaround<p1>::type type;
+ typedef iter2 iter;
+};
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+#endif//BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/register_functions.hpp b/3rdParty/Boost/boost/typeof/register_functions.hpp
new file mode 100644
index 0000000..2af7cec
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/register_functions.hpp
@@ -0,0 +1,43 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
+#define BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
+
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/if.hpp>
+#include <boost/preprocessor/arithmetic/add.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+#ifndef BOOST_TYPEOF_LIMIT_FUNCTION_ARITY
+#define BOOST_TYPEOF_LIMIT_FUNCTION_ARITY 10
+#endif
+
+enum
+{
+ FUN_ID = BOOST_TYPEOF_UNIQUE_ID(),
+ FUN_PTR_ID = FUN_ID + 1 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ FUN_REF_ID = FUN_ID + 2 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ MEM_FUN_ID = FUN_ID + 3 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ CONST_MEM_FUN_ID = FUN_ID + 4 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ VOLATILE_MEM_FUN_ID = FUN_ID + 5 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
+ VOLATILE_CONST_MEM_FUN_ID = FUN_ID + 6 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY)
+};
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+# define BOOST_PP_ITERATION_LIMITS (0, BOOST_TYPEOF_LIMIT_FUNCTION_ARITY)
+# define BOOST_PP_FILENAME_1 <boost/typeof/register_functions_iterate.hpp>
+# include BOOST_PP_ITERATE()
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+#endif//BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/register_functions_iterate.hpp b/3rdParty/Boost/boost/typeof/register_functions_iterate.hpp
new file mode 100644
index 0000000..b1048ad
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/register_functions_iterate.hpp
@@ -0,0 +1,87 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Distributed under the 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/typeof/encode_decode_params.hpp>
+
+#define n BOOST_PP_ITERATION()
+
+// function pointers
+
+template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+struct encode_type_impl<V, R(*)(BOOST_PP_ENUM_PARAMS(n, P))>
+{
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_PTR_ID + n) type;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<FUN_PTR_ID + n>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(*type)(BOOST_PP_ENUM_PARAMS(n, p));
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+};
+
+#ifndef BOOST_TYPEOF_NO_FUNCTION_TYPES
+
+ // function references
+
+ template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+ struct encode_type_impl<V, R(&)(BOOST_PP_ENUM_PARAMS(n, P))>
+ {
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_REF_ID + n) type;
+ };
+
+ template<class Iter>
+ struct decode_type_impl<boost::mpl::size_t<FUN_REF_ID + n>, Iter>
+ {
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(&type)(BOOST_PP_ENUM_PARAMS(n, p));
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+ };
+
+ // functions
+
+ template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+ struct encode_type_impl<V, R(BOOST_PP_ENUM_PARAMS(n, P))>
+ {
+ typedef R BOOST_PP_CAT(P, n);
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_ID + n) type;
+ };
+
+ template<class Iter>
+ struct decode_type_impl<boost::mpl::size_t<FUN_ID + n>, Iter>
+ {
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
+ typedef BOOST_PP_CAT(p, n)(type)(BOOST_PP_ENUM_PARAMS(n, p));
+ typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
+ };
+
+#endif//BOOST_TYPEOF_NO_FUNCTION_TYPES
+
+#ifndef BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
+// member functions
+
+#define BOOST_TYPEOF_qualifier
+#define BOOST_TYPEOF_id MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#define BOOST_TYPEOF_qualifier const
+#define BOOST_TYPEOF_id CONST_MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#define BOOST_TYPEOF_qualifier volatile
+#define BOOST_TYPEOF_id VOLATILE_MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#define BOOST_TYPEOF_qualifier volatile const
+#define BOOST_TYPEOF_id VOLATILE_CONST_MEM_FUN_ID
+#include <boost/typeof/register_mem_functions.hpp>
+
+#undef n
+#endif
diff --git a/3rdParty/Boost/boost/typeof/register_fundamental.hpp b/3rdParty/Boost/boost/typeof/register_fundamental.hpp
new file mode 100644
index 0000000..3a15888
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/register_fundamental.hpp
@@ -0,0 +1,62 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Copyright (C) 2004 Peder Holt
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
+#define BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+
+BOOST_TYPEOF_REGISTER_TYPE(unsigned char)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned short)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned int)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned long)
+
+BOOST_TYPEOF_REGISTER_TYPE(signed char)
+BOOST_TYPEOF_REGISTER_TYPE(signed short)
+BOOST_TYPEOF_REGISTER_TYPE(signed int)
+BOOST_TYPEOF_REGISTER_TYPE(signed long)
+
+BOOST_TYPEOF_REGISTER_TYPE(bool)
+BOOST_TYPEOF_REGISTER_TYPE(char)
+
+BOOST_TYPEOF_REGISTER_TYPE(float)
+BOOST_TYPEOF_REGISTER_TYPE(double)
+BOOST_TYPEOF_REGISTER_TYPE(long double)
+
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+// If the following line fails to compile and you're using the Intel
+// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,
+// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.
+BOOST_TYPEOF_REGISTER_TYPE(wchar_t)
+#endif
+
+#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1200)) \
+ || (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
+ || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER == 1200))
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int8)
+BOOST_TYPEOF_REGISTER_TYPE(__int8)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int16)
+BOOST_TYPEOF_REGISTER_TYPE(__int16)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int32)
+BOOST_TYPEOF_REGISTER_TYPE(__int32)
+#ifdef __BORLANDC__
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)
+BOOST_TYPEOF_REGISTER_TYPE(__int64)
+#endif
+#endif
+
+# if defined(BOOST_HAS_LONG_LONG)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::ulong_long_type)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::long_long_type)
+#elif defined(BOOST_HAS_MS_INT64)
+BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)
+BOOST_TYPEOF_REGISTER_TYPE(__int64)
+#endif
+
+BOOST_TYPEOF_REGISTER_TYPE(void)
+
+#endif//BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/register_mem_functions.hpp b/3rdParty/Boost/boost/typeof/register_mem_functions.hpp
new file mode 100644
index 0000000..9cf9720
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/register_mem_functions.hpp
@@ -0,0 +1,32 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/typeof/encode_decode_params.hpp>
+
+// member functions
+
+template<class V, class T, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
+struct encode_type_impl<V, R(T::*)(BOOST_PP_ENUM_PARAMS(n, P)) BOOST_TYPEOF_qualifier>
+{
+ typedef R BOOST_PP_CAT(P, n);
+ typedef T BOOST_PP_CAT(P, BOOST_PP_INC(n));
+ typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_ADD(n, 2), BOOST_TYPEOF_id + n) type;
+};
+
+template<class Iter>
+struct decode_type_impl<boost::mpl::size_t<BOOST_TYPEOF_id + n>, Iter>
+{
+ typedef Iter iter0;
+ BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_ADD(n, 2))
+ template<class T> struct workaround{
+ typedef BOOST_PP_CAT(p, n)(T::*type)(BOOST_PP_ENUM_PARAMS(n, p)) BOOST_TYPEOF_qualifier;
+ };
+ typedef typename workaround<BOOST_PP_CAT(p, BOOST_PP_INC(n))>::type type;
+ typedef BOOST_PP_CAT(iter, BOOST_PP_ADD(n, 2)) iter;
+};
+
+// undef parameters
+
+#undef BOOST_TYPEOF_id
+#undef BOOST_TYPEOF_qualifier
diff --git a/3rdParty/Boost/boost/typeof/template_encoding.hpp b/3rdParty/Boost/boost/typeof/template_encoding.hpp
new file mode 100644
index 0000000..bae7e89
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/template_encoding.hpp
@@ -0,0 +1,160 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
+#define BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/detail/is_unary.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/tuple/eat.hpp>
+#include <boost/preprocessor/seq/transform.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/seq/cat.hpp>
+
+#include <boost/typeof/encode_decode.hpp>
+#include <boost/typeof/int_encoding.hpp>
+
+#include <boost/typeof/type_template_param.hpp>
+#include <boost/typeof/integral_template_param.hpp>
+#include <boost/typeof/template_template_param.hpp>
+
+#ifdef __BORLANDC__
+#define BOOST_TYPEOF_QUALIFY(P) self_t::P
+#else
+#define BOOST_TYPEOF_QUALIFY(P) P
+#endif
+// The template parameter description, entered by the user,
+// is converted into a polymorphic "object"
+// that is used to generate the code responsible for
+// encoding/decoding the parameter, etc.
+
+// make sure to cat the sequence first, and only then add the prefix.
+#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_CAT(\
+ BOOST_TYPEOF_MAKE_OBJ,\
+ BOOST_PP_SEQ_CAT((_) BOOST_TYPEOF_TO_SEQ(elem))\
+ )
+
+#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF
+
+// BOOST_TYPEOF_REGISTER_TEMPLATE
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, Id)\
+ BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL(\
+ Name,\
+ BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TOSEQ(Params)),\
+ BOOST_PP_SEQ_SIZE(BOOST_TYPEOF_TOSEQ(Params)),\
+ Id)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE(Name, Params)\
+ BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, BOOST_TYPEOF_UNIQUE_ID())
+
+#define BOOST_TYPEOF_OBJECT_MAKER(s, data, elem)\
+ BOOST_TYPEOF_MAKE_OBJ(elem)
+
+#define BOOST_TYPEOF_MAKE_OBJS(Params)\
+ BOOST_PP_SEQ_TRANSFORM(BOOST_TYPEOF_OBJECT_MAKER, ~, Params)
+
+// As suggested by Paul Mensonides:
+
+#define BOOST_TYPEOF_TOSEQ(x)\
+ BOOST_PP_IIF(\
+ BOOST_PP_IS_UNARY(x),\
+ x BOOST_PP_TUPLE_EAT(3), BOOST_PP_REPEAT\
+ )(x, BOOST_TYPEOF_TOSEQ_2, ~)
+
+#define BOOST_TYPEOF_TOSEQ_2(z, n, _) (class)
+
+// BOOST_TYPEOF_VIRTUAL
+
+#define BOOST_TYPEOF_CAT_4(a, b, c, d) BOOST_TYPEOF_CAT_4_I(a, b, c, d)
+#define BOOST_TYPEOF_CAT_4_I(a, b, c, d) a ## b ## c ## d
+
+#define BOOST_TYPEOF_VIRTUAL(Fun, Obj)\
+ BOOST_TYPEOF_CAT_4(BOOST_TYPEOF_, BOOST_PP_SEQ_HEAD(Obj), _, Fun)
+
+// BOOST_TYPEOF_SEQ_ENUM[_TRAILING][_1]
+// Two versions provided due to reentrancy issue
+
+#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\
+ BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
+
+#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\
+ BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
+
+#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\
+ BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
+
+#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1(z,n,seq)\
+ BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
+
+#define BOOST_TYPEOF_SEQ_ENUM_1(seq,macro)\
+ BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq))
+
+#define BOOST_TYPEOF_SEQ_ENUM_TRAILING_1(seq,macro)\
+ BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq))
+
+//
+
+#define BOOST_TYPEOF_PLACEHOLDER(z, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(PLACEHOLDER, elem)(elem)
+
+#define BOOST_TYPEOF_PLACEHOLDER_TYPES(z, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(PLACEHOLDER_TYPES, elem)(elem, n)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM(r, data, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(ENCODE, elem)(elem, n)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM(r, data, n, elem)\
+ BOOST_TYPEOF_VIRTUAL(DECODE, elem)(elem, n)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR(z, n, elem) \
+ BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(P, n)
+
+#define BOOST_TYPEOF_REGISTER_DEFAULT_TEMPLATE_TYPE(Name,Params,ID)\
+ Name< BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params), P) >
+
+//Since we are creating an internal decode struct, we need to use different template names, T instead of P.
+#define BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR(z,n,elem) \
+ BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(T, n)
+
+//Default template param decoding
+
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE(Name,Params)\
+ typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_QUALIFY(P))> type;
+
+//Branch the decoding
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TYPE(Name,Params)\
+ BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\
+ BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE,\
+ BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE)(Name,Params)
+
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL(Name, Params, Size, ID)\
+ BOOST_TYPEOF_BEGIN_ENCODE_NS\
+ BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name, Params, ID)\
+ template<class V\
+ BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params, BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
+ >\
+ struct encode_type_impl<V, Name<BOOST_PP_ENUM_PARAMS(Size, P)> >\
+ {\
+ typedef typename boost::type_of::push_back<V, boost::mpl::size_t<ID> >::type V0;\
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM, ~, Params)\
+ typedef BOOST_PP_CAT(V, Size) type;\
+ };\
+ template<class Iter>\
+ struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ typedef decode_type_impl<boost::mpl::size_t<ID>, Iter> self_t;\
+ typedef boost::mpl::size_t<ID> self_id;\
+ typedef Iter iter0;\
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM, ~, Params)\
+ BOOST_TYPEOF_TYPEDEF_DECODED_TYPE(Name, Params)\
+ typedef BOOST_PP_CAT(iter, Size) iter;\
+ };\
+ BOOST_TYPEOF_END_ENCODE_NS
+
+#endif//BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/template_template_param.hpp b/3rdParty/Boost/boost/typeof/template_template_param.hpp
new file mode 100644
index 0000000..4d64190
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/template_template_param.hpp
@@ -0,0 +1,149 @@
+// Copyright (C) 2005 Peder Holt
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
+#define BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
+
+#include <boost/preprocessor/logical/or.hpp>
+#include <boost/preprocessor/seq/fold_left.hpp>
+#include <boost/preprocessor/seq/enum.hpp>
+
+#define BOOST_TYPEOF_MAKE_OBJ_template(x) BOOST_TYPEOF_TEMPLATE_PARAM(x)
+#define BOOST_TYPEOF_TEMPLATE(X) template(X) BOOST_TYPEOF_EAT
+#define BOOST_TYPEOF_template(X) (template(X))
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM(Params)\
+ (TEMPLATE_PARAM)\
+ (Params)
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)\
+ BOOST_TYPEOF_TOSEQ(BOOST_PP_SEQ_ELEM(1, This))
+
+//Encode / decode this
+#define BOOST_TYPEOF_TEMPLATE_PARAM_ENCODE(This, n)\
+ typedef typename boost::type_of::encode_template<BOOST_PP_CAT(V, n),\
+ BOOST_PP_CAT(P, n)<BOOST_TYPEOF_SEQ_ENUM(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)),BOOST_TYPEOF_PLACEHOLDER) >\
+ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_DECODE(This, n)\
+ typedef boost::type_of::decode_template< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\
+ typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\
+ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter,BOOST_PP_INC(n));
+
+// template<class, unsigned int, ...> class
+#define BOOST_TYPEOF_TEMPLATE_PARAM_EXPANDTYPE(This) \
+ template <BOOST_PP_SEQ_ENUM(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)) > class
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER(Param)\
+ Nested_Template_Template_Arguments_Not_Supported
+
+//'template<class,int> class' is reduced to 'class'
+#define BOOST_TYPEOF_TEMPLATE_PARAM_DECLARATION_TYPE(Param) class
+
+// T3<int, (unsigned int)0, ...>
+#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER_TYPES(Param, n)\
+ BOOST_PP_CAT(T,n)<BOOST_TYPEOF_SEQ_ENUM_1(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(Param)),BOOST_TYPEOF_PLACEHOLDER) >
+
+#define BOOST_TYPEOF_TEMPLATE_PARAM_ISTEMPLATE 1
+
+////////////////////////////
+// move to encode_decode?
+
+BOOST_TYPEOF_BEGIN_ENCODE_NS
+
+template<class V, class Type_Not_Registered_With_Typeof_System> struct encode_template_impl;
+template<class T, class Iter> struct decode_template_impl;
+
+BOOST_TYPEOF_END_ENCODE_NS
+
+namespace boost { namespace type_of {
+
+ template<class V, class T> struct encode_template
+ : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_template_impl<V, T>
+ {};
+
+ template<class Iter> struct decode_template
+ : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_template_impl<typename Iter::type, typename Iter::next>
+ {};
+}}
+
+////////////////////////////
+// move to template_encoding.hpp?
+
+//Template template registration
+#define BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE(Name,Params,ID)\
+ template<class V\
+ BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params,BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
+ >\
+ struct encode_template_impl<V,Name<\
+ BOOST_PP_ENUM_PARAMS(\
+ BOOST_PP_SEQ_SIZE(Params),\
+ P)> >\
+ : boost::type_of::push_back<V, boost::mpl::size_t<ID> >\
+ {\
+ };\
+ template<class Iter> struct decode_template_impl<boost::mpl::size_t<ID>, Iter>\
+ {\
+ BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_TYPEDEF_INT_PN,_)\
+ typedef Name<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER) > type;\
+ typedef Iter iter;\
+ };
+
+#define BOOST_TYPEOF_TYPEDEF_INT_PN(z,n,Params) typedef int BOOST_PP_CAT(P,n);
+
+#ifdef __BORLANDC__
+#define BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME BOOST_PP_CAT(\
+ BOOST_PP_CAT(\
+ BOOST_PP_CAT(\
+ decode_nested_template_helper,\
+ BOOST_TYPEOF_REGISTRATION_GROUP\
+ ),0x10000\
+ ),__LINE__\
+ )
+#define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)\
+ struct BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME {\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params;\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\
+ {\
+ typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\
+ };\
+ };
+//Template template param decoding
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\
+ typedef typename BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME::decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::type type;
+
+#else
+#define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)
+
+//Template template param decoding
+#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params;\
+ template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\
+ struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\
+ {\
+ typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\
+ };\
+ typedef typename decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::type type;
+#endif
+#define BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR(z,n,elem) \
+ BOOST_TYPEOF_VIRTUAL(DECLARATION_TYPE, elem)(elem) BOOST_PP_CAT(T, n)
+
+// BOOST_TYPEOF_HAS_TEMPLATES
+#define BOOST_TYPEOF_HAS_TEMPLATES(Params)\
+ BOOST_PP_SEQ_FOLD_LEFT(BOOST_TYPEOF_HAS_TEMPLATES_OP, 0, Params)
+
+#define BOOST_TYPEOF_HAS_TEMPLATES_OP(s, state, elem)\
+ BOOST_PP_OR(state, BOOST_TYPEOF_VIRTUAL(ISTEMPLATE, elem))
+
+//Define template template arguments
+#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,ID)\
+ BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\
+ BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL,\
+ BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE)(Name,Params,ID)
+
+#endif //BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/type_encoding.hpp b/3rdParty/Boost/boost/typeof/type_encoding.hpp
new file mode 100644
index 0000000..e0378c2
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/type_encoding.hpp
@@ -0,0 +1,27 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
+
+#define BOOST_TYPEOF_REGISTER_TYPE_IMPL(T, Id) \
+ \
+ template<class V> struct encode_type_impl<V, T > \
+ : boost::type_of::push_back<V, boost::mpl::size_t<Id> > \
+ {}; \
+ template<class Iter> struct decode_type_impl<boost::mpl::size_t<Id>, Iter> \
+ { \
+ typedef T type; \
+ typedef Iter iter; \
+ };
+
+#define BOOST_TYPEOF_REGISTER_TYPE_EXPLICIT_ID(Type, Id) \
+ BOOST_TYPEOF_BEGIN_ENCODE_NS \
+ BOOST_TYPEOF_REGISTER_TYPE_IMPL(Type, Id) \
+ BOOST_TYPEOF_END_ENCODE_NS
+
+#define BOOST_TYPEOF_REGISTER_TYPE(Type) \
+ BOOST_TYPEOF_REGISTER_TYPE_EXPLICIT_ID(Type, BOOST_TYPEOF_UNIQUE_ID())
+
+#endif//BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/type_template_param.hpp b/3rdParty/Boost/boost/typeof/type_template_param.hpp
new file mode 100644
index 0000000..28a860c
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/type_template_param.hpp
@@ -0,0 +1,37 @@
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
+
+#define BOOST_TYPEOF_class_BOOST_TYPEOF (class)
+#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename)
+
+#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM
+#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM
+
+#define BOOST_TYPEOF_TYPE_PARAM\
+ (TYPE_PARAM)
+
+#define BOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class
+
+// TYPE_PARAM "virtual functions" implementation
+
+#define BOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\
+ typedef typename boost::type_of::encode_type<\
+ BOOST_PP_CAT(V, n),\
+ BOOST_PP_CAT(P, n)\
+ >::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_TYPE_PARAM_DECODE(This, n)\
+ typedef boost::type_of::decode_type< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\
+ typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\
+ typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
+
+#define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER(Param) int
+#define BOOST_TYPEOF_TYPE_PARAM_DECLARATION_TYPE(Param) class
+#define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER_TYPES(Param, n) BOOST_PP_CAT(T,n)
+#define BOOST_TYPEOF_TYPE_PARAM_ISTEMPLATE 0
+
+#endif//BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/typeof.hpp b/3rdParty/Boost/boost/typeof/typeof.hpp
new file mode 100644
index 0000000..165ef95
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/typeof.hpp
@@ -0,0 +1,189 @@
+// Copyright (C) 2004 Arkadiy Vertleyb
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
+
+#if defined(BOOST_TYPEOF_COMPLIANT)
+# define BOOST_TYPEOF_EMULATION
+#endif
+
+#if defined(BOOST_TYPEOF_EMULATION) && defined(BOOST_TYPEOF_NATIVE)
+# error both typeof emulation and native mode requested
+#endif
+
+#if defined(__COMO__)
+# ifdef __GNUG__
+# ifndef(BOOST_TYPEOF_EMULATION)
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD typeof
+# endif
+# else
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+# endif
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+# ifdef __GNUC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# else
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+# endif
+
+#elif defined(__GNUC__)
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+
+#elif defined(__MWERKS__)
+# if(__MWERKS__ <= 0x3003) // 8.x
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# else
+# error typeof emulation is not supported
+# endif
+# else // 9.x
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# define BOOST_TYPEOF_KEYWORD __typeof__
+# endif
+# endif
+
+#elif defined __DMC__
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include <boost/typeof/dmc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# endif
+#elif defined(_MSC_VER)
+# if (_MSC_VER <= 1300) // 6.5, 7.0
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include <boost/typeof/msvc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# else
+# error typeof emulation is not supported
+# endif
+# elif (_MSC_VER >= 1310) // 7.1, 8.0
+# ifndef BOOST_TYPEOF_EMULATION
+# ifndef BOOST_TYPEOF_NATIVE
+# define BOOST_TYPEOF_NATIVE
+# endif
+# include <boost/typeof/msvc/typeof_impl.hpp>
+# define MSVC_TYPEOF_HACK
+# endif
+/*# else // 8.0
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif*/
+# endif
+
+#elif defined(__HP_aCC)
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#elif defined(__DECCXX)
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#elif defined(__BORLANDC__)
+# if (__BORLANDC__ < 0x590)
+# define BOOST_TYPEOF_NO_FUNCTION_TYPES
+# define BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
+# endif
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# error native typeof is not supported
+# endif
+
+#else //unknown compiler
+# ifndef BOOST_TYPEOF_NATIVE
+# ifndef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_EMULATION
+# endif
+# else
+# ifndef BOOST_TYPEOF_KEYWORD
+# define BOOST_TYPEOF_KEYWORD typeof
+# endif
+# endif
+
+#endif
+
+#define BOOST_TYPEOF_UNIQUE_ID()\
+ BOOST_TYPEOF_REGISTRATION_GROUP * 0x10000 + __LINE__
+
+#define BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()\
+ <boost/typeof/incr_registration_group.hpp>
+
+#ifdef BOOST_TYPEOF_EMULATION
+# define BOOST_TYPEOF_TEXT "using typeof emulation"
+# include <boost/typeof/message.hpp>
+# include <boost/typeof/typeof_impl.hpp>
+# include <boost/typeof/type_encoding.hpp>
+# include <boost/typeof/template_encoding.hpp>
+# include <boost/typeof/modifiers.hpp>
+# include <boost/typeof/pointers_data_members.hpp>
+# include <boost/typeof/register_functions.hpp>
+# include <boost/typeof/register_fundamental.hpp>
+
+#elif defined(BOOST_TYPEOF_NATIVE)
+# define BOOST_TYPEOF_TEXT "using native typeof"
+# include <boost/typeof/message.hpp>
+# include <boost/typeof/native.hpp>
+#else
+# error typeof configuration error
+#endif
+
+// auto
+#define BOOST_AUTO(Var, Expr) BOOST_TYPEOF(Expr) Var = Expr
+#define BOOST_AUTO_TPL(Var, Expr) BOOST_TYPEOF_TPL(Expr) Var = Expr
+
+#endif//BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/typeof_impl.hpp b/3rdParty/Boost/boost/typeof/typeof_impl.hpp
new file mode 100644
index 0000000..d627b85
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/typeof_impl.hpp
@@ -0,0 +1,186 @@
+// Copyright (C) 2004, 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_TYPEOF_IMPL_HPP_INCLUDED
+#define BOOST_TYPEOF_TYPEOF_IMPL_HPP_INCLUDED
+
+#include <boost/mpl/size_t.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/typeof/encode_decode.hpp>
+#include <boost/typeof/vector.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#define BOOST_TYPEOF_VECTOR(n) BOOST_PP_CAT(boost::type_of::vector, n)
+
+#define BOOST_TYPEOF_sizer_item(z, n, _)\
+ char item ## n[V::item ## n ::value];
+
+namespace boost { namespace type_of {
+ template<class V>
+ struct sizer
+ {
+ // char item0[V::item0::value];
+ // char item1[V::item1::value];
+ // ...
+
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~)
+ };
+}}
+
+#undef BOOST_TYPEOF_sizer_item
+
+//
+namespace boost { namespace type_of {
+# ifdef BOOST_NO_SFINAE
+ template<class V, class T>
+ sizer<typename encode_type<V, T>::type> encode(const T&);
+# else
+ template<class V, class T>
+ typename enable_if<
+ typename is_function<T>::type,
+ sizer<typename encode_type<V, T>::type> >::type encode(T&);
+
+ template<class V, class T>
+ typename disable_if<
+ typename is_function<T>::type,
+ sizer<typename encode_type<V, T>::type> >::type encode(const T&);
+# endif
+}}
+//
+namespace boost { namespace type_of {
+
+ template<class V>
+ struct decode_begin
+ {
+ typedef typename decode_type<typename V::begin>::type type;
+ };
+}}
+
+#define BOOST_TYPEOF_TYPEITEM(z, n, expr)\
+ boost::mpl::size_t<sizeof(boost::type_of::encode<BOOST_TYPEOF_VECTOR(0)<> >(expr).item ## n)>
+
+#define BOOST_TYPEOF_ENCODED_VECTOR(Expr) \
+ BOOST_TYPEOF_VECTOR(BOOST_TYPEOF_LIMIT_SIZE)< \
+ BOOST_PP_ENUM(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_TYPEITEM, Expr) \
+ >
+
+#define BOOST_TYPEOF(Expr)\
+ boost::type_of::decode_begin<BOOST_TYPEOF_ENCODED_VECTOR(Expr) >::type
+
+#define BOOST_TYPEOF_TPL typename BOOST_TYPEOF
+
+//offset_vector is used to delay the insertion of data into the vector in order to allow
+//encoding to be done in many steps
+namespace boost { namespace type_of {
+ template<typename V,typename Offset>
+ struct offset_vector {
+ };
+
+ template<class V,class Offset,class T>
+ struct push_back<boost::type_of::offset_vector<V,Offset>,T> {
+ typedef offset_vector<V,typename Offset::prior> type;
+ };
+
+ template<class V,class T>
+ struct push_back<boost::type_of::offset_vector<V,mpl::size_t<0> >,T> {
+ typedef typename push_back<V,T>::type type;
+ };
+}}
+
+#define BOOST_TYPEOF_NESTED_TYPEITEM(z, n, expr)\
+ BOOST_STATIC_CONSTANT(int,BOOST_PP_CAT(value,n) = sizeof(boost::type_of::encode<_typeof_start_vector>(expr).item ## n));\
+ typedef boost::mpl::size_t<BOOST_PP_CAT(self_t::value,n)> BOOST_PP_CAT(item,n);
+
+#ifdef __DMC__
+#define BOOST_TYPEOF_NESTED_TYPEITEM_2(z,n,expr)\
+ typedef typename _typeof_encode_fraction<iteration>::BOOST_PP_CAT(item,n) BOOST_PP_CAT(item,n);
+
+#define BOOST_TYPEOF_FRACTIONTYPE()\
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM_2,_)\
+ typedef _typeof_fraction_iter<Pos> fraction_type;
+#else
+#define BOOST_TYPEOF_FRACTIONTYPE()\
+ typedef _typeof_encode_fraction<self_t::iteration> fraction_type;
+#endif
+
+#ifdef __BORLANDC__
+namespace boost { namespace type_of {
+ template<typename Pos,typename Iter>
+ struct generic_typeof_fraction_iter {
+ typedef generic_typeof_fraction_iter<Pos,Iter> self_t;
+ static const int pos=(Pos::value);
+ static const int iteration=(pos/5);
+ static const int where=pos%5;
+ typedef typename Iter::template _apply_next<self_t::iteration>::type fraction_type;
+ typedef generic_typeof_fraction_iter<typename Pos::next,Iter> next;
+ typedef typename v_iter<fraction_type,mpl::int_<self_t::where> >::type type;
+ };
+}}
+#define BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr) \
+ template<int _Typeof_Iteration>\
+ struct _typeof_encode_fraction {\
+ typedef _typeof_encode_fraction<_Typeof_Iteration> self_t;\
+ BOOST_STATIC_CONSTANT(int,_typeof_encode_offset = (_Typeof_Iteration*BOOST_TYPEOF_LIMIT_SIZE));\
+ typedef boost::type_of::offset_vector<BOOST_TYPEOF_VECTOR(0)<>,boost::mpl::size_t<self_t::_typeof_encode_offset> > _typeof_start_vector;\
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM,expr)\
+ template<int Next>\
+ struct _apply_next {\
+ typedef _typeof_encode_fraction<Next> type;\
+ };\
+ };\
+ template<typename Pos>\
+ struct _typeof_fraction_iter {\
+ typedef boost::type_of::generic_typeof_fraction_iter<Pos,_typeof_encode_fraction<0> > self_t;\
+ typedef typename self_t::next next;\
+ typedef typename self_t::type type;\
+ };
+#else
+#define BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr) \
+ template<int _Typeof_Iteration>\
+ struct _typeof_encode_fraction {\
+ typedef _typeof_encode_fraction<_Typeof_Iteration> self_t;\
+ BOOST_STATIC_CONSTANT(int,_typeof_encode_offset = (_Typeof_Iteration*BOOST_TYPEOF_LIMIT_SIZE));\
+ typedef boost::type_of::offset_vector<BOOST_TYPEOF_VECTOR(0)<>,boost::mpl::size_t<self_t::_typeof_encode_offset> > _typeof_start_vector;\
+ BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM,expr)\
+ };\
+ template<typename Pos>\
+ struct _typeof_fraction_iter {\
+ typedef _typeof_fraction_iter<Pos> self_t;\
+ BOOST_STATIC_CONSTANT(int,pos=(Pos::value));\
+ BOOST_STATIC_CONSTANT(int,iteration=(pos/BOOST_TYPEOF_LIMIT_SIZE));\
+ BOOST_STATIC_CONSTANT(int,where=pos%BOOST_TYPEOF_LIMIT_SIZE);\
+ BOOST_TYPEOF_FRACTIONTYPE()\
+ typedef typename boost::type_of::v_iter<fraction_type,boost::mpl::int_<self_t::where> >::type type;\
+ typedef _typeof_fraction_iter<typename Pos::next> next;\
+ };
+#endif
+#ifdef __MWERKS__
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+template<typename T>\
+struct BOOST_PP_CAT(_typeof_template_,name) {\
+ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
+ typedef typename boost::type_of::decode_type<_typeof_fraction_iter<boost::mpl::size_t<0> > >::type type;\
+};\
+typedef BOOST_PP_CAT(_typeof_template_,name)<int> name;
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) BOOST_TYPEOF_NESTED_TYPEDEF(name,expr)
+
+#else
+# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
+ struct name {\
+ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
+ typedef typename boost::type_of::decode_type<_typeof_fraction_iter<boost::mpl::size_t<0> > >::type type;\
+ };
+
+# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
+ struct name {\
+ BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
+ typedef boost::type_of::decode_type<_typeof_fraction_iter<boost::mpl::size_t<0> > >::type type;\
+ };
+#endif
+
+#endif//BOOST_TYPEOF_COMPLIANT_TYPEOF_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/boost/typeof/vector.hpp b/3rdParty/Boost/boost/typeof/vector.hpp
new file mode 100644
index 0000000..7dc8d50
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/vector.hpp
@@ -0,0 +1,166 @@
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Copyright (C) 2006 Tobias Schwinger
+//
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
+
+#include <boost/mpl/int.hpp>
+#include <boost/preprocessor/iteration/self.hpp>
+
+#ifndef BOOST_TYPEOF_LIMIT_SIZE
+# define BOOST_TYPEOF_LIMIT_SIZE 50
+#endif
+
+//
+// To recreate the preprocessed versions of this file preprocess and run
+//
+// $(BOOST_ROOT)/libs/typeof/tools/preprocess.pl
+//
+
+#if defined(BOOST_TYPEOF_PP_INCLUDE_EXTERNAL)
+
+# undef BOOST_TYPEOF_PP_INCLUDE_EXTERNAL
+
+#elif !defined(BOOST_TYPEOF_PREPROCESSING_MODE) && !BOOST_PP_IS_SELFISH
+
+# define BOOST_PP_INDIRECT_SELF <boost/typeof/vector.hpp>
+# if BOOST_TYPEOF_LIMIT_SIZE < 50
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE < 100
+# include <boost/typeof/vector50.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 51
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE < 150
+# include <boost/typeof/vector100.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 101
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE < 200
+# include <boost/typeof/vector150.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 151
+# include BOOST_PP_INCLUDE_SELF()
+# elif BOOST_TYPEOF_LIMIT_SIZE <= 250
+# include <boost/typeof/vector200.hpp>
+# define BOOST_TYPEOF_PP_START_SIZE 201
+# include BOOST_PP_INCLUDE_SELF()
+# else
+# error "BOOST_TYPEOF_LIMIT_SIZE too high"
+# endif
+
+#else// defined(BOOST_TYPEOF_PREPROCESSING_MODE) || BOOST_PP_IS_SELFISH
+
+# ifndef BOOST_TYPEOF_PP_NEXT_SIZE
+# define BOOST_TYPEOF_PP_NEXT_SIZE BOOST_TYPEOF_LIMIT_SIZE
+# endif
+# ifndef BOOST_TYPEOF_PP_START_SIZE
+# define BOOST_TYPEOF_PP_START_SIZE 0
+# endif
+
+# if BOOST_TYPEOF_PP_START_SIZE <= BOOST_TYPEOF_LIMIT_SIZE
+
+# include <boost/preprocessor/enum_params.hpp>
+# include <boost/preprocessor/repeat.hpp>
+# include <boost/preprocessor/repeat_from_to.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/inc.hpp>
+# include <boost/preprocessor/dec.hpp>
+# include <boost/preprocessor/comma_if.hpp>
+# include <boost/preprocessor/iteration/local.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+
+// iterator
+
+# define BOOST_TYPEOF_spec_iter(n)\
+ template<class V>\
+ struct v_iter<V, mpl::int_<n> >\
+ {\
+ typedef typename V::item ## n type;\
+ typedef v_iter<V, mpl::int_<n + 1> > next;\
+ };
+
+namespace boost { namespace type_of {
+
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter; // not defined
+# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_iter
+# define BOOST_PP_LOCAL_LIMITS \
+ (BOOST_PP_DEC(BOOST_TYPEOF_PP_START_SIZE), \
+ BOOST_PP_DEC(BOOST_TYPEOF_LIMIT_SIZE))
+# include BOOST_PP_LOCAL_ITERATE()
+
+}}
+
+# undef BOOST_TYPEOF_spec_iter
+
+// vector
+
+# define BOOST_TYPEOF_typedef_item(z, n, _)\
+ typedef P ## n item ## n;
+
+# define BOOST_TYPEOF_typedef_fake_item(z, n, _)\
+ typedef mpl::int_<1> item ## n;
+
+# define BOOST_TYPEOF_define_vector(n)\
+ template<BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(n), class T = void)>\
+ struct vector ## n\
+ {\
+ typedef v_iter<vector ## n<BOOST_PP_ENUM_PARAMS(n,P)>, boost::mpl::int_<0> > begin;\
+ BOOST_PP_REPEAT(n, BOOST_TYPEOF_typedef_item, ~)\
+ BOOST_PP_REPEAT_FROM_TO(n, BOOST_TYPEOF_PP_NEXT_SIZE, BOOST_TYPEOF_typedef_fake_item, ~)\
+ };
+
+namespace boost { namespace type_of {
+
+# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_define_vector
+# define BOOST_PP_LOCAL_LIMITS \
+ (BOOST_TYPEOF_PP_START_SIZE,BOOST_TYPEOF_LIMIT_SIZE)
+# include BOOST_PP_LOCAL_ITERATE()
+
+}}
+
+# undef BOOST_TYPEOF_typedef_item
+# undef BOOST_TYPEOF_typedef_fake_item
+# undef BOOST_TYPEOF_define_vector
+
+// push_back
+
+# define BOOST_TYPEOF_spec_push_back(n)\
+ template<BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_COMMA_IF(n) class T>\
+ struct push_back<BOOST_PP_CAT(boost::type_of::vector, n)<BOOST_PP_ENUM_PARAMS(n, P)>, T>\
+ {\
+ typedef BOOST_PP_CAT(boost::type_of::vector, BOOST_PP_INC(n))<\
+ BOOST_PP_ENUM_PARAMS(n, P) BOOST_PP_COMMA_IF(n) T\
+ > type;\
+ };
+
+namespace boost { namespace type_of {
+
+# if BOOST_TYPEOF_LIMIT_SIZE < 50
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+# endif
+ //default behaviour is to let push_back ignore T, and return the input vector.
+ //This is to let BOOST_TYPEOF_NESTED_TYPEDEF work properly with the default vector.
+# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_push_back
+# define BOOST_PP_LOCAL_LIMITS \
+ (BOOST_PP_DEC(BOOST_TYPEOF_PP_START_SIZE), \
+ BOOST_PP_DEC(BOOST_TYPEOF_LIMIT_SIZE))
+# include BOOST_PP_LOCAL_ITERATE()
+
+}}
+
+# undef BOOST_TYPEOF_spec_push_back
+
+# endif//BOOST_TYPEOF_PP_START_SIZE<=BOOST_TYPEOF_LIMIT_SIZE
+# undef BOOST_TYPEOF_PP_START_SIZE
+# undef BOOST_TYPEOF_PP_NEXT_SIZE
+
+#endif//BOOST_TYPEOF_PREPROCESSING_MODE || BOOST_PP_IS_SELFISH
+
+#define BOOST_TYPEOF_VECTOR_HPP_INCLUDED
+#endif//BOOST_TYPEOF_VECTOR_HPP_INCLUDED
+
diff --git a/3rdParty/Boost/boost/typeof/vector100.hpp b/3rdParty/Boost/boost/typeof/vector100.hpp
new file mode 100644
index 0000000..5c5b97f
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/vector100.hpp
@@ -0,0 +1,321 @@
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<50> > { typedef typename V::item50 type; typedef v_iter<V, mpl::int_<50 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<51> > { typedef typename V::item51 type; typedef v_iter<V, mpl::int_<51 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<52> > { typedef typename V::item52 type; typedef v_iter<V, mpl::int_<52 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<53> > { typedef typename V::item53 type; typedef v_iter<V, mpl::int_<53 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<54> > { typedef typename V::item54 type; typedef v_iter<V, mpl::int_<54 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<55> > { typedef typename V::item55 type; typedef v_iter<V, mpl::int_<55 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<56> > { typedef typename V::item56 type; typedef v_iter<V, mpl::int_<56 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<57> > { typedef typename V::item57 type; typedef v_iter<V, mpl::int_<57 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<58> > { typedef typename V::item58 type; typedef v_iter<V, mpl::int_<58 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<59> > { typedef typename V::item59 type; typedef v_iter<V, mpl::int_<59 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<60> > { typedef typename V::item60 type; typedef v_iter<V, mpl::int_<60 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<61> > { typedef typename V::item61 type; typedef v_iter<V, mpl::int_<61 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<62> > { typedef typename V::item62 type; typedef v_iter<V, mpl::int_<62 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<63> > { typedef typename V::item63 type; typedef v_iter<V, mpl::int_<63 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<64> > { typedef typename V::item64 type; typedef v_iter<V, mpl::int_<64 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<65> > { typedef typename V::item65 type; typedef v_iter<V, mpl::int_<65 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<66> > { typedef typename V::item66 type; typedef v_iter<V, mpl::int_<66 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<67> > { typedef typename V::item67 type; typedef v_iter<V, mpl::int_<67 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<68> > { typedef typename V::item68 type; typedef v_iter<V, mpl::int_<68 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<69> > { typedef typename V::item69 type; typedef v_iter<V, mpl::int_<69 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<70> > { typedef typename V::item70 type; typedef v_iter<V, mpl::int_<70 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<71> > { typedef typename V::item71 type; typedef v_iter<V, mpl::int_<71 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<72> > { typedef typename V::item72 type; typedef v_iter<V, mpl::int_<72 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<73> > { typedef typename V::item73 type; typedef v_iter<V, mpl::int_<73 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<74> > { typedef typename V::item74 type; typedef v_iter<V, mpl::int_<74 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<75> > { typedef typename V::item75 type; typedef v_iter<V, mpl::int_<75 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<76> > { typedef typename V::item76 type; typedef v_iter<V, mpl::int_<76 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<77> > { typedef typename V::item77 type; typedef v_iter<V, mpl::int_<77 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<78> > { typedef typename V::item78 type; typedef v_iter<V, mpl::int_<78 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<79> > { typedef typename V::item79 type; typedef v_iter<V, mpl::int_<79 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<80> > { typedef typename V::item80 type; typedef v_iter<V, mpl::int_<80 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<81> > { typedef typename V::item81 type; typedef v_iter<V, mpl::int_<81 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<82> > { typedef typename V::item82 type; typedef v_iter<V, mpl::int_<82 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<83> > { typedef typename V::item83 type; typedef v_iter<V, mpl::int_<83 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<84> > { typedef typename V::item84 type; typedef v_iter<V, mpl::int_<84 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<85> > { typedef typename V::item85 type; typedef v_iter<V, mpl::int_<85 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<86> > { typedef typename V::item86 type; typedef v_iter<V, mpl::int_<86 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<87> > { typedef typename V::item87 type; typedef v_iter<V, mpl::int_<87 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<88> > { typedef typename V::item88 type; typedef v_iter<V, mpl::int_<88 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<89> > { typedef typename V::item89 type; typedef v_iter<V, mpl::int_<89 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<90> > { typedef typename V::item90 type; typedef v_iter<V, mpl::int_<90 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<91> > { typedef typename V::item91 type; typedef v_iter<V, mpl::int_<91 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<92> > { typedef typename V::item92 type; typedef v_iter<V, mpl::int_<92 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<93> > { typedef typename V::item93 type; typedef v_iter<V, mpl::int_<93 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<94> > { typedef typename V::item94 type; typedef v_iter<V, mpl::int_<94 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<95> > { typedef typename V::item95 type; typedef v_iter<V, mpl::int_<95 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<96> > { typedef typename V::item96 type; typedef v_iter<V, mpl::int_<96 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<97> > { typedef typename V::item97 type; typedef v_iter<V, mpl::int_<97 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<98> > { typedef typename V::item98 type; typedef v_iter<V, mpl::int_<98 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<99> > { typedef typename V::item99 type; typedef v_iter<V, mpl::int_<99 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 > struct vector51 { typedef v_iter<vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 > struct vector52 { typedef v_iter<vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 > struct vector53 { typedef v_iter<vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 > struct vector54 { typedef v_iter<vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 > struct vector55 { typedef v_iter<vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 > struct vector56 { typedef v_iter<vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 > struct vector57 { typedef v_iter<vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 > struct vector58 { typedef v_iter<vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 > struct vector59 { typedef v_iter<vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 > struct vector60 { typedef v_iter<vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 > struct vector61 { typedef v_iter<vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 > struct vector62 { typedef v_iter<vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 > struct vector63 { typedef v_iter<vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 > struct vector64 { typedef v_iter<vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 > struct vector65 { typedef v_iter<vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 > struct vector66 { typedef v_iter<vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 > struct vector67 { typedef v_iter<vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 > struct vector68 { typedef v_iter<vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 > struct vector69 { typedef v_iter<vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 > struct vector70 { typedef v_iter<vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 > struct vector71 { typedef v_iter<vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 > struct vector72 { typedef v_iter<vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 > struct vector73 { typedef v_iter<vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 > struct vector74 { typedef v_iter<vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 > struct vector75 { typedef v_iter<vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 > struct vector76 { typedef v_iter<vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 > struct vector77 { typedef v_iter<vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 > struct vector78 { typedef v_iter<vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 > struct vector79 { typedef v_iter<vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 > struct vector80 { typedef v_iter<vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 > struct vector81 { typedef v_iter<vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 > struct vector82 { typedef v_iter<vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 > struct vector83 { typedef v_iter<vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 > struct vector84 { typedef v_iter<vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 > struct vector85 { typedef v_iter<vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 > struct vector86 { typedef v_iter<vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 > struct vector87 { typedef v_iter<vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 > struct vector88 { typedef v_iter<vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 > struct vector89 { typedef v_iter<vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 > struct vector90 { typedef v_iter<vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 > struct vector91 { typedef v_iter<vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 > struct vector92 { typedef v_iter<vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 > struct vector93 { typedef v_iter<vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 > struct vector94 { typedef v_iter<vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 > struct vector95 { typedef v_iter<vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 > struct vector96 { typedef v_iter<vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 > struct vector97 { typedef v_iter<vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 > struct vector98 { typedef v_iter<vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 > struct vector99 { typedef v_iter<vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 > struct vector100 { typedef v_iter<vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class T> struct push_back<boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, T> { typedef boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class T> struct push_back<boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, T> { typedef boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class T> struct push_back<boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, T> { typedef boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class T> struct push_back<boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, T> { typedef boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class T> struct push_back<boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, T> { typedef boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class T> struct push_back<boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, T> { typedef boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class T> struct push_back<boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, T> { typedef boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class T> struct push_back<boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, T> { typedef boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class T> struct push_back<boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, T> { typedef boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class T> struct push_back<boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, T> { typedef boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class T> struct push_back<boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, T> { typedef boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class T> struct push_back<boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, T> { typedef boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class T> struct push_back<boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, T> { typedef boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class T> struct push_back<boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, T> { typedef boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class T> struct push_back<boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, T> { typedef boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class T> struct push_back<boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, T> { typedef boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class T> struct push_back<boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, T> { typedef boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class T> struct push_back<boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, T> { typedef boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class T> struct push_back<boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, T> { typedef boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class T> struct push_back<boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, T> { typedef boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class T> struct push_back<boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, T> { typedef boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class T> struct push_back<boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, T> { typedef boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class T> struct push_back<boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, T> { typedef boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class T> struct push_back<boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, T> { typedef boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class T> struct push_back<boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, T> { typedef boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class T> struct push_back<boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, T> { typedef boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class T> struct push_back<boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, T> { typedef boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class T> struct push_back<boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, T> { typedef boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class T> struct push_back<boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, T> { typedef boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class T> struct push_back<boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, T> { typedef boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class T> struct push_back<boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, T> { typedef boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class T> struct push_back<boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, T> { typedef boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class T> struct push_back<boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, T> { typedef boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class T> struct push_back<boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, T> { typedef boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class T> struct push_back<boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, T> { typedef boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class T> struct push_back<boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, T> { typedef boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class T> struct push_back<boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, T> { typedef boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class T> struct push_back<boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, T> { typedef boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class T> struct push_back<boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, T> { typedef boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class T> struct push_back<boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, T> { typedef boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class T> struct push_back<boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, T> { typedef boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class T> struct push_back<boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, T> { typedef boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class T> struct push_back<boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, T> { typedef boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class T> struct push_back<boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, T> { typedef boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class T> struct push_back<boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, T> { typedef boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class T> struct push_back<boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, T> { typedef boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class T> struct push_back<boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, T> { typedef boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class T> struct push_back<boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, T> { typedef boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class T> struct push_back<boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, T> { typedef boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class T> struct push_back<boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, T> { typedef boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , T > type; };
+}}
diff --git a/3rdParty/Boost/boost/typeof/vector150.hpp b/3rdParty/Boost/boost/typeof/vector150.hpp
new file mode 100644
index 0000000..a7d7fb1
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/vector150.hpp
@@ -0,0 +1,471 @@
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<50> > { typedef typename V::item50 type; typedef v_iter<V, mpl::int_<50 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<51> > { typedef typename V::item51 type; typedef v_iter<V, mpl::int_<51 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<52> > { typedef typename V::item52 type; typedef v_iter<V, mpl::int_<52 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<53> > { typedef typename V::item53 type; typedef v_iter<V, mpl::int_<53 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<54> > { typedef typename V::item54 type; typedef v_iter<V, mpl::int_<54 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<55> > { typedef typename V::item55 type; typedef v_iter<V, mpl::int_<55 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<56> > { typedef typename V::item56 type; typedef v_iter<V, mpl::int_<56 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<57> > { typedef typename V::item57 type; typedef v_iter<V, mpl::int_<57 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<58> > { typedef typename V::item58 type; typedef v_iter<V, mpl::int_<58 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<59> > { typedef typename V::item59 type; typedef v_iter<V, mpl::int_<59 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<60> > { typedef typename V::item60 type; typedef v_iter<V, mpl::int_<60 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<61> > { typedef typename V::item61 type; typedef v_iter<V, mpl::int_<61 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<62> > { typedef typename V::item62 type; typedef v_iter<V, mpl::int_<62 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<63> > { typedef typename V::item63 type; typedef v_iter<V, mpl::int_<63 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<64> > { typedef typename V::item64 type; typedef v_iter<V, mpl::int_<64 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<65> > { typedef typename V::item65 type; typedef v_iter<V, mpl::int_<65 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<66> > { typedef typename V::item66 type; typedef v_iter<V, mpl::int_<66 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<67> > { typedef typename V::item67 type; typedef v_iter<V, mpl::int_<67 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<68> > { typedef typename V::item68 type; typedef v_iter<V, mpl::int_<68 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<69> > { typedef typename V::item69 type; typedef v_iter<V, mpl::int_<69 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<70> > { typedef typename V::item70 type; typedef v_iter<V, mpl::int_<70 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<71> > { typedef typename V::item71 type; typedef v_iter<V, mpl::int_<71 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<72> > { typedef typename V::item72 type; typedef v_iter<V, mpl::int_<72 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<73> > { typedef typename V::item73 type; typedef v_iter<V, mpl::int_<73 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<74> > { typedef typename V::item74 type; typedef v_iter<V, mpl::int_<74 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<75> > { typedef typename V::item75 type; typedef v_iter<V, mpl::int_<75 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<76> > { typedef typename V::item76 type; typedef v_iter<V, mpl::int_<76 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<77> > { typedef typename V::item77 type; typedef v_iter<V, mpl::int_<77 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<78> > { typedef typename V::item78 type; typedef v_iter<V, mpl::int_<78 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<79> > { typedef typename V::item79 type; typedef v_iter<V, mpl::int_<79 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<80> > { typedef typename V::item80 type; typedef v_iter<V, mpl::int_<80 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<81> > { typedef typename V::item81 type; typedef v_iter<V, mpl::int_<81 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<82> > { typedef typename V::item82 type; typedef v_iter<V, mpl::int_<82 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<83> > { typedef typename V::item83 type; typedef v_iter<V, mpl::int_<83 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<84> > { typedef typename V::item84 type; typedef v_iter<V, mpl::int_<84 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<85> > { typedef typename V::item85 type; typedef v_iter<V, mpl::int_<85 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<86> > { typedef typename V::item86 type; typedef v_iter<V, mpl::int_<86 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<87> > { typedef typename V::item87 type; typedef v_iter<V, mpl::int_<87 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<88> > { typedef typename V::item88 type; typedef v_iter<V, mpl::int_<88 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<89> > { typedef typename V::item89 type; typedef v_iter<V, mpl::int_<89 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<90> > { typedef typename V::item90 type; typedef v_iter<V, mpl::int_<90 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<91> > { typedef typename V::item91 type; typedef v_iter<V, mpl::int_<91 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<92> > { typedef typename V::item92 type; typedef v_iter<V, mpl::int_<92 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<93> > { typedef typename V::item93 type; typedef v_iter<V, mpl::int_<93 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<94> > { typedef typename V::item94 type; typedef v_iter<V, mpl::int_<94 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<95> > { typedef typename V::item95 type; typedef v_iter<V, mpl::int_<95 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<96> > { typedef typename V::item96 type; typedef v_iter<V, mpl::int_<96 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<97> > { typedef typename V::item97 type; typedef v_iter<V, mpl::int_<97 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<98> > { typedef typename V::item98 type; typedef v_iter<V, mpl::int_<98 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<99> > { typedef typename V::item99 type; typedef v_iter<V, mpl::int_<99 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<100> > { typedef typename V::item100 type; typedef v_iter<V, mpl::int_<100 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<101> > { typedef typename V::item101 type; typedef v_iter<V, mpl::int_<101 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<102> > { typedef typename V::item102 type; typedef v_iter<V, mpl::int_<102 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<103> > { typedef typename V::item103 type; typedef v_iter<V, mpl::int_<103 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<104> > { typedef typename V::item104 type; typedef v_iter<V, mpl::int_<104 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<105> > { typedef typename V::item105 type; typedef v_iter<V, mpl::int_<105 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<106> > { typedef typename V::item106 type; typedef v_iter<V, mpl::int_<106 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<107> > { typedef typename V::item107 type; typedef v_iter<V, mpl::int_<107 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<108> > { typedef typename V::item108 type; typedef v_iter<V, mpl::int_<108 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<109> > { typedef typename V::item109 type; typedef v_iter<V, mpl::int_<109 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<110> > { typedef typename V::item110 type; typedef v_iter<V, mpl::int_<110 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<111> > { typedef typename V::item111 type; typedef v_iter<V, mpl::int_<111 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<112> > { typedef typename V::item112 type; typedef v_iter<V, mpl::int_<112 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<113> > { typedef typename V::item113 type; typedef v_iter<V, mpl::int_<113 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<114> > { typedef typename V::item114 type; typedef v_iter<V, mpl::int_<114 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<115> > { typedef typename V::item115 type; typedef v_iter<V, mpl::int_<115 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<116> > { typedef typename V::item116 type; typedef v_iter<V, mpl::int_<116 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<117> > { typedef typename V::item117 type; typedef v_iter<V, mpl::int_<117 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<118> > { typedef typename V::item118 type; typedef v_iter<V, mpl::int_<118 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<119> > { typedef typename V::item119 type; typedef v_iter<V, mpl::int_<119 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<120> > { typedef typename V::item120 type; typedef v_iter<V, mpl::int_<120 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<121> > { typedef typename V::item121 type; typedef v_iter<V, mpl::int_<121 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<122> > { typedef typename V::item122 type; typedef v_iter<V, mpl::int_<122 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<123> > { typedef typename V::item123 type; typedef v_iter<V, mpl::int_<123 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<124> > { typedef typename V::item124 type; typedef v_iter<V, mpl::int_<124 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<125> > { typedef typename V::item125 type; typedef v_iter<V, mpl::int_<125 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<126> > { typedef typename V::item126 type; typedef v_iter<V, mpl::int_<126 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<127> > { typedef typename V::item127 type; typedef v_iter<V, mpl::int_<127 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<128> > { typedef typename V::item128 type; typedef v_iter<V, mpl::int_<128 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<129> > { typedef typename V::item129 type; typedef v_iter<V, mpl::int_<129 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<130> > { typedef typename V::item130 type; typedef v_iter<V, mpl::int_<130 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<131> > { typedef typename V::item131 type; typedef v_iter<V, mpl::int_<131 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<132> > { typedef typename V::item132 type; typedef v_iter<V, mpl::int_<132 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<133> > { typedef typename V::item133 type; typedef v_iter<V, mpl::int_<133 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<134> > { typedef typename V::item134 type; typedef v_iter<V, mpl::int_<134 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<135> > { typedef typename V::item135 type; typedef v_iter<V, mpl::int_<135 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<136> > { typedef typename V::item136 type; typedef v_iter<V, mpl::int_<136 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<137> > { typedef typename V::item137 type; typedef v_iter<V, mpl::int_<137 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<138> > { typedef typename V::item138 type; typedef v_iter<V, mpl::int_<138 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<139> > { typedef typename V::item139 type; typedef v_iter<V, mpl::int_<139 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<140> > { typedef typename V::item140 type; typedef v_iter<V, mpl::int_<140 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<141> > { typedef typename V::item141 type; typedef v_iter<V, mpl::int_<141 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<142> > { typedef typename V::item142 type; typedef v_iter<V, mpl::int_<142 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<143> > { typedef typename V::item143 type; typedef v_iter<V, mpl::int_<143 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<144> > { typedef typename V::item144 type; typedef v_iter<V, mpl::int_<144 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<145> > { typedef typename V::item145 type; typedef v_iter<V, mpl::int_<145 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<146> > { typedef typename V::item146 type; typedef v_iter<V, mpl::int_<146 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<147> > { typedef typename V::item147 type; typedef v_iter<V, mpl::int_<147 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<148> > { typedef typename V::item148 type; typedef v_iter<V, mpl::int_<148 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<149> > { typedef typename V::item149 type; typedef v_iter<V, mpl::int_<149 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 > struct vector51 { typedef v_iter<vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 > struct vector52 { typedef v_iter<vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 > struct vector53 { typedef v_iter<vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 > struct vector54 { typedef v_iter<vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 > struct vector55 { typedef v_iter<vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 > struct vector56 { typedef v_iter<vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 > struct vector57 { typedef v_iter<vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 > struct vector58 { typedef v_iter<vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 > struct vector59 { typedef v_iter<vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 > struct vector60 { typedef v_iter<vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 > struct vector61 { typedef v_iter<vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 > struct vector62 { typedef v_iter<vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 > struct vector63 { typedef v_iter<vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 > struct vector64 { typedef v_iter<vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 > struct vector65 { typedef v_iter<vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 > struct vector66 { typedef v_iter<vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 > struct vector67 { typedef v_iter<vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 > struct vector68 { typedef v_iter<vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 > struct vector69 { typedef v_iter<vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 > struct vector70 { typedef v_iter<vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 > struct vector71 { typedef v_iter<vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 > struct vector72 { typedef v_iter<vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 > struct vector73 { typedef v_iter<vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 > struct vector74 { typedef v_iter<vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 > struct vector75 { typedef v_iter<vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 > struct vector76 { typedef v_iter<vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 > struct vector77 { typedef v_iter<vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 > struct vector78 { typedef v_iter<vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 > struct vector79 { typedef v_iter<vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 > struct vector80 { typedef v_iter<vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 > struct vector81 { typedef v_iter<vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 > struct vector82 { typedef v_iter<vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 > struct vector83 { typedef v_iter<vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 > struct vector84 { typedef v_iter<vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 > struct vector85 { typedef v_iter<vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 > struct vector86 { typedef v_iter<vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 > struct vector87 { typedef v_iter<vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 > struct vector88 { typedef v_iter<vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 > struct vector89 { typedef v_iter<vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 > struct vector90 { typedef v_iter<vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 > struct vector91 { typedef v_iter<vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 > struct vector92 { typedef v_iter<vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 > struct vector93 { typedef v_iter<vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 > struct vector94 { typedef v_iter<vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 > struct vector95 { typedef v_iter<vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 > struct vector96 { typedef v_iter<vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 > struct vector97 { typedef v_iter<vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 > struct vector98 { typedef v_iter<vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 > struct vector99 { typedef v_iter<vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 > struct vector100 { typedef v_iter<vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 > struct vector101 { typedef v_iter<vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 > struct vector102 { typedef v_iter<vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 > struct vector103 { typedef v_iter<vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 > struct vector104 { typedef v_iter<vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 > struct vector105 { typedef v_iter<vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 > struct vector106 { typedef v_iter<vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 > struct vector107 { typedef v_iter<vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 > struct vector108 { typedef v_iter<vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 > struct vector109 { typedef v_iter<vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 > struct vector110 { typedef v_iter<vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 > struct vector111 { typedef v_iter<vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 > struct vector112 { typedef v_iter<vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 > struct vector113 { typedef v_iter<vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 > struct vector114 { typedef v_iter<vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 > struct vector115 { typedef v_iter<vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 > struct vector116 { typedef v_iter<vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 > struct vector117 { typedef v_iter<vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 > struct vector118 { typedef v_iter<vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 > struct vector119 { typedef v_iter<vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 > struct vector120 { typedef v_iter<vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 > struct vector121 { typedef v_iter<vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 > struct vector122 { typedef v_iter<vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 > struct vector123 { typedef v_iter<vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 > struct vector124 { typedef v_iter<vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 > struct vector125 { typedef v_iter<vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 > struct vector126 { typedef v_iter<vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 > struct vector127 { typedef v_iter<vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 > struct vector128 { typedef v_iter<vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 > struct vector129 { typedef v_iter<vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 > struct vector130 { typedef v_iter<vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 > struct vector131 { typedef v_iter<vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 > struct vector132 { typedef v_iter<vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 > struct vector133 { typedef v_iter<vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 > struct vector134 { typedef v_iter<vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 > struct vector135 { typedef v_iter<vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 > struct vector136 { typedef v_iter<vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 > struct vector137 { typedef v_iter<vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 > struct vector138 { typedef v_iter<vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 > struct vector139 { typedef v_iter<vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 > struct vector140 { typedef v_iter<vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 > struct vector141 { typedef v_iter<vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 > struct vector142 { typedef v_iter<vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 > struct vector143 { typedef v_iter<vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 > struct vector144 { typedef v_iter<vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 > struct vector145 { typedef v_iter<vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 > struct vector146 { typedef v_iter<vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 > struct vector147 { typedef v_iter<vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 > struct vector148 { typedef v_iter<vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 > struct vector149 { typedef v_iter<vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 > struct vector150 { typedef v_iter<vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class T> struct push_back<boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, T> { typedef boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class T> struct push_back<boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, T> { typedef boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class T> struct push_back<boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, T> { typedef boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class T> struct push_back<boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, T> { typedef boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class T> struct push_back<boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, T> { typedef boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class T> struct push_back<boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, T> { typedef boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class T> struct push_back<boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, T> { typedef boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class T> struct push_back<boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, T> { typedef boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class T> struct push_back<boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, T> { typedef boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class T> struct push_back<boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, T> { typedef boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class T> struct push_back<boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, T> { typedef boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class T> struct push_back<boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, T> { typedef boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class T> struct push_back<boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, T> { typedef boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class T> struct push_back<boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, T> { typedef boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class T> struct push_back<boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, T> { typedef boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class T> struct push_back<boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, T> { typedef boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class T> struct push_back<boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, T> { typedef boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class T> struct push_back<boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, T> { typedef boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class T> struct push_back<boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, T> { typedef boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class T> struct push_back<boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, T> { typedef boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class T> struct push_back<boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, T> { typedef boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class T> struct push_back<boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, T> { typedef boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class T> struct push_back<boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, T> { typedef boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class T> struct push_back<boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, T> { typedef boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class T> struct push_back<boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, T> { typedef boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class T> struct push_back<boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, T> { typedef boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class T> struct push_back<boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, T> { typedef boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class T> struct push_back<boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, T> { typedef boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class T> struct push_back<boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, T> { typedef boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class T> struct push_back<boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, T> { typedef boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class T> struct push_back<boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, T> { typedef boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class T> struct push_back<boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, T> { typedef boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class T> struct push_back<boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, T> { typedef boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class T> struct push_back<boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, T> { typedef boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class T> struct push_back<boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, T> { typedef boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class T> struct push_back<boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, T> { typedef boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class T> struct push_back<boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, T> { typedef boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class T> struct push_back<boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, T> { typedef boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class T> struct push_back<boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, T> { typedef boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class T> struct push_back<boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, T> { typedef boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class T> struct push_back<boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, T> { typedef boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class T> struct push_back<boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, T> { typedef boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class T> struct push_back<boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, T> { typedef boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class T> struct push_back<boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, T> { typedef boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class T> struct push_back<boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, T> { typedef boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class T> struct push_back<boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, T> { typedef boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class T> struct push_back<boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, T> { typedef boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class T> struct push_back<boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, T> { typedef boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class T> struct push_back<boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, T> { typedef boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class T> struct push_back<boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, T> { typedef boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class T> struct push_back<boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, T> { typedef boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class T> struct push_back<boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, T> { typedef boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class T> struct push_back<boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, T> { typedef boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class T> struct push_back<boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, T> { typedef boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class T> struct push_back<boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, T> { typedef boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class T> struct push_back<boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, T> { typedef boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class T> struct push_back<boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, T> { typedef boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class T> struct push_back<boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, T> { typedef boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class T> struct push_back<boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, T> { typedef boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class T> struct push_back<boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, T> { typedef boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class T> struct push_back<boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, T> { typedef boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class T> struct push_back<boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, T> { typedef boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class T> struct push_back<boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, T> { typedef boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class T> struct push_back<boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, T> { typedef boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class T> struct push_back<boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, T> { typedef boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class T> struct push_back<boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, T> { typedef boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class T> struct push_back<boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, T> { typedef boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class T> struct push_back<boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, T> { typedef boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class T> struct push_back<boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, T> { typedef boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class T> struct push_back<boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, T> { typedef boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class T> struct push_back<boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, T> { typedef boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class T> struct push_back<boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, T> { typedef boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class T> struct push_back<boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, T> { typedef boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class T> struct push_back<boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, T> { typedef boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class T> struct push_back<boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, T> { typedef boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class T> struct push_back<boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, T> { typedef boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class T> struct push_back<boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, T> { typedef boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class T> struct push_back<boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, T> { typedef boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class T> struct push_back<boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, T> { typedef boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class T> struct push_back<boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, T> { typedef boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class T> struct push_back<boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, T> { typedef boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class T> struct push_back<boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, T> { typedef boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class T> struct push_back<boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, T> { typedef boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class T> struct push_back<boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, T> { typedef boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class T> struct push_back<boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, T> { typedef boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class T> struct push_back<boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, T> { typedef boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class T> struct push_back<boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, T> { typedef boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class T> struct push_back<boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, T> { typedef boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class T> struct push_back<boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, T> { typedef boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class T> struct push_back<boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, T> { typedef boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class T> struct push_back<boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, T> { typedef boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class T> struct push_back<boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, T> { typedef boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class T> struct push_back<boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, T> { typedef boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class T> struct push_back<boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, T> { typedef boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class T> struct push_back<boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, T> { typedef boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class T> struct push_back<boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, T> { typedef boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class T> struct push_back<boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, T> { typedef boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class T> struct push_back<boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, T> { typedef boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class T> struct push_back<boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, T> { typedef boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class T> struct push_back<boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, T> { typedef boost::type_of::vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , T > type; };
+}}
diff --git a/3rdParty/Boost/boost/typeof/vector200.hpp b/3rdParty/Boost/boost/typeof/vector200.hpp
new file mode 100644
index 0000000..43860c3
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/vector200.hpp
@@ -0,0 +1,621 @@
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<50> > { typedef typename V::item50 type; typedef v_iter<V, mpl::int_<50 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<51> > { typedef typename V::item51 type; typedef v_iter<V, mpl::int_<51 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<52> > { typedef typename V::item52 type; typedef v_iter<V, mpl::int_<52 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<53> > { typedef typename V::item53 type; typedef v_iter<V, mpl::int_<53 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<54> > { typedef typename V::item54 type; typedef v_iter<V, mpl::int_<54 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<55> > { typedef typename V::item55 type; typedef v_iter<V, mpl::int_<55 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<56> > { typedef typename V::item56 type; typedef v_iter<V, mpl::int_<56 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<57> > { typedef typename V::item57 type; typedef v_iter<V, mpl::int_<57 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<58> > { typedef typename V::item58 type; typedef v_iter<V, mpl::int_<58 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<59> > { typedef typename V::item59 type; typedef v_iter<V, mpl::int_<59 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<60> > { typedef typename V::item60 type; typedef v_iter<V, mpl::int_<60 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<61> > { typedef typename V::item61 type; typedef v_iter<V, mpl::int_<61 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<62> > { typedef typename V::item62 type; typedef v_iter<V, mpl::int_<62 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<63> > { typedef typename V::item63 type; typedef v_iter<V, mpl::int_<63 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<64> > { typedef typename V::item64 type; typedef v_iter<V, mpl::int_<64 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<65> > { typedef typename V::item65 type; typedef v_iter<V, mpl::int_<65 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<66> > { typedef typename V::item66 type; typedef v_iter<V, mpl::int_<66 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<67> > { typedef typename V::item67 type; typedef v_iter<V, mpl::int_<67 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<68> > { typedef typename V::item68 type; typedef v_iter<V, mpl::int_<68 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<69> > { typedef typename V::item69 type; typedef v_iter<V, mpl::int_<69 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<70> > { typedef typename V::item70 type; typedef v_iter<V, mpl::int_<70 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<71> > { typedef typename V::item71 type; typedef v_iter<V, mpl::int_<71 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<72> > { typedef typename V::item72 type; typedef v_iter<V, mpl::int_<72 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<73> > { typedef typename V::item73 type; typedef v_iter<V, mpl::int_<73 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<74> > { typedef typename V::item74 type; typedef v_iter<V, mpl::int_<74 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<75> > { typedef typename V::item75 type; typedef v_iter<V, mpl::int_<75 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<76> > { typedef typename V::item76 type; typedef v_iter<V, mpl::int_<76 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<77> > { typedef typename V::item77 type; typedef v_iter<V, mpl::int_<77 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<78> > { typedef typename V::item78 type; typedef v_iter<V, mpl::int_<78 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<79> > { typedef typename V::item79 type; typedef v_iter<V, mpl::int_<79 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<80> > { typedef typename V::item80 type; typedef v_iter<V, mpl::int_<80 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<81> > { typedef typename V::item81 type; typedef v_iter<V, mpl::int_<81 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<82> > { typedef typename V::item82 type; typedef v_iter<V, mpl::int_<82 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<83> > { typedef typename V::item83 type; typedef v_iter<V, mpl::int_<83 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<84> > { typedef typename V::item84 type; typedef v_iter<V, mpl::int_<84 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<85> > { typedef typename V::item85 type; typedef v_iter<V, mpl::int_<85 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<86> > { typedef typename V::item86 type; typedef v_iter<V, mpl::int_<86 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<87> > { typedef typename V::item87 type; typedef v_iter<V, mpl::int_<87 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<88> > { typedef typename V::item88 type; typedef v_iter<V, mpl::int_<88 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<89> > { typedef typename V::item89 type; typedef v_iter<V, mpl::int_<89 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<90> > { typedef typename V::item90 type; typedef v_iter<V, mpl::int_<90 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<91> > { typedef typename V::item91 type; typedef v_iter<V, mpl::int_<91 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<92> > { typedef typename V::item92 type; typedef v_iter<V, mpl::int_<92 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<93> > { typedef typename V::item93 type; typedef v_iter<V, mpl::int_<93 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<94> > { typedef typename V::item94 type; typedef v_iter<V, mpl::int_<94 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<95> > { typedef typename V::item95 type; typedef v_iter<V, mpl::int_<95 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<96> > { typedef typename V::item96 type; typedef v_iter<V, mpl::int_<96 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<97> > { typedef typename V::item97 type; typedef v_iter<V, mpl::int_<97 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<98> > { typedef typename V::item98 type; typedef v_iter<V, mpl::int_<98 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<99> > { typedef typename V::item99 type; typedef v_iter<V, mpl::int_<99 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<100> > { typedef typename V::item100 type; typedef v_iter<V, mpl::int_<100 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<101> > { typedef typename V::item101 type; typedef v_iter<V, mpl::int_<101 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<102> > { typedef typename V::item102 type; typedef v_iter<V, mpl::int_<102 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<103> > { typedef typename V::item103 type; typedef v_iter<V, mpl::int_<103 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<104> > { typedef typename V::item104 type; typedef v_iter<V, mpl::int_<104 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<105> > { typedef typename V::item105 type; typedef v_iter<V, mpl::int_<105 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<106> > { typedef typename V::item106 type; typedef v_iter<V, mpl::int_<106 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<107> > { typedef typename V::item107 type; typedef v_iter<V, mpl::int_<107 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<108> > { typedef typename V::item108 type; typedef v_iter<V, mpl::int_<108 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<109> > { typedef typename V::item109 type; typedef v_iter<V, mpl::int_<109 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<110> > { typedef typename V::item110 type; typedef v_iter<V, mpl::int_<110 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<111> > { typedef typename V::item111 type; typedef v_iter<V, mpl::int_<111 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<112> > { typedef typename V::item112 type; typedef v_iter<V, mpl::int_<112 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<113> > { typedef typename V::item113 type; typedef v_iter<V, mpl::int_<113 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<114> > { typedef typename V::item114 type; typedef v_iter<V, mpl::int_<114 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<115> > { typedef typename V::item115 type; typedef v_iter<V, mpl::int_<115 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<116> > { typedef typename V::item116 type; typedef v_iter<V, mpl::int_<116 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<117> > { typedef typename V::item117 type; typedef v_iter<V, mpl::int_<117 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<118> > { typedef typename V::item118 type; typedef v_iter<V, mpl::int_<118 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<119> > { typedef typename V::item119 type; typedef v_iter<V, mpl::int_<119 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<120> > { typedef typename V::item120 type; typedef v_iter<V, mpl::int_<120 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<121> > { typedef typename V::item121 type; typedef v_iter<V, mpl::int_<121 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<122> > { typedef typename V::item122 type; typedef v_iter<V, mpl::int_<122 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<123> > { typedef typename V::item123 type; typedef v_iter<V, mpl::int_<123 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<124> > { typedef typename V::item124 type; typedef v_iter<V, mpl::int_<124 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<125> > { typedef typename V::item125 type; typedef v_iter<V, mpl::int_<125 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<126> > { typedef typename V::item126 type; typedef v_iter<V, mpl::int_<126 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<127> > { typedef typename V::item127 type; typedef v_iter<V, mpl::int_<127 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<128> > { typedef typename V::item128 type; typedef v_iter<V, mpl::int_<128 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<129> > { typedef typename V::item129 type; typedef v_iter<V, mpl::int_<129 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<130> > { typedef typename V::item130 type; typedef v_iter<V, mpl::int_<130 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<131> > { typedef typename V::item131 type; typedef v_iter<V, mpl::int_<131 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<132> > { typedef typename V::item132 type; typedef v_iter<V, mpl::int_<132 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<133> > { typedef typename V::item133 type; typedef v_iter<V, mpl::int_<133 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<134> > { typedef typename V::item134 type; typedef v_iter<V, mpl::int_<134 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<135> > { typedef typename V::item135 type; typedef v_iter<V, mpl::int_<135 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<136> > { typedef typename V::item136 type; typedef v_iter<V, mpl::int_<136 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<137> > { typedef typename V::item137 type; typedef v_iter<V, mpl::int_<137 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<138> > { typedef typename V::item138 type; typedef v_iter<V, mpl::int_<138 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<139> > { typedef typename V::item139 type; typedef v_iter<V, mpl::int_<139 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<140> > { typedef typename V::item140 type; typedef v_iter<V, mpl::int_<140 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<141> > { typedef typename V::item141 type; typedef v_iter<V, mpl::int_<141 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<142> > { typedef typename V::item142 type; typedef v_iter<V, mpl::int_<142 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<143> > { typedef typename V::item143 type; typedef v_iter<V, mpl::int_<143 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<144> > { typedef typename V::item144 type; typedef v_iter<V, mpl::int_<144 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<145> > { typedef typename V::item145 type; typedef v_iter<V, mpl::int_<145 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<146> > { typedef typename V::item146 type; typedef v_iter<V, mpl::int_<146 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<147> > { typedef typename V::item147 type; typedef v_iter<V, mpl::int_<147 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<148> > { typedef typename V::item148 type; typedef v_iter<V, mpl::int_<148 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<149> > { typedef typename V::item149 type; typedef v_iter<V, mpl::int_<149 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<150> > { typedef typename V::item150 type; typedef v_iter<V, mpl::int_<150 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<151> > { typedef typename V::item151 type; typedef v_iter<V, mpl::int_<151 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<152> > { typedef typename V::item152 type; typedef v_iter<V, mpl::int_<152 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<153> > { typedef typename V::item153 type; typedef v_iter<V, mpl::int_<153 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<154> > { typedef typename V::item154 type; typedef v_iter<V, mpl::int_<154 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<155> > { typedef typename V::item155 type; typedef v_iter<V, mpl::int_<155 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<156> > { typedef typename V::item156 type; typedef v_iter<V, mpl::int_<156 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<157> > { typedef typename V::item157 type; typedef v_iter<V, mpl::int_<157 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<158> > { typedef typename V::item158 type; typedef v_iter<V, mpl::int_<158 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<159> > { typedef typename V::item159 type; typedef v_iter<V, mpl::int_<159 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<160> > { typedef typename V::item160 type; typedef v_iter<V, mpl::int_<160 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<161> > { typedef typename V::item161 type; typedef v_iter<V, mpl::int_<161 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<162> > { typedef typename V::item162 type; typedef v_iter<V, mpl::int_<162 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<163> > { typedef typename V::item163 type; typedef v_iter<V, mpl::int_<163 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<164> > { typedef typename V::item164 type; typedef v_iter<V, mpl::int_<164 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<165> > { typedef typename V::item165 type; typedef v_iter<V, mpl::int_<165 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<166> > { typedef typename V::item166 type; typedef v_iter<V, mpl::int_<166 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<167> > { typedef typename V::item167 type; typedef v_iter<V, mpl::int_<167 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<168> > { typedef typename V::item168 type; typedef v_iter<V, mpl::int_<168 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<169> > { typedef typename V::item169 type; typedef v_iter<V, mpl::int_<169 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<170> > { typedef typename V::item170 type; typedef v_iter<V, mpl::int_<170 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<171> > { typedef typename V::item171 type; typedef v_iter<V, mpl::int_<171 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<172> > { typedef typename V::item172 type; typedef v_iter<V, mpl::int_<172 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<173> > { typedef typename V::item173 type; typedef v_iter<V, mpl::int_<173 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<174> > { typedef typename V::item174 type; typedef v_iter<V, mpl::int_<174 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<175> > { typedef typename V::item175 type; typedef v_iter<V, mpl::int_<175 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<176> > { typedef typename V::item176 type; typedef v_iter<V, mpl::int_<176 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<177> > { typedef typename V::item177 type; typedef v_iter<V, mpl::int_<177 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<178> > { typedef typename V::item178 type; typedef v_iter<V, mpl::int_<178 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<179> > { typedef typename V::item179 type; typedef v_iter<V, mpl::int_<179 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<180> > { typedef typename V::item180 type; typedef v_iter<V, mpl::int_<180 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<181> > { typedef typename V::item181 type; typedef v_iter<V, mpl::int_<181 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<182> > { typedef typename V::item182 type; typedef v_iter<V, mpl::int_<182 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<183> > { typedef typename V::item183 type; typedef v_iter<V, mpl::int_<183 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<184> > { typedef typename V::item184 type; typedef v_iter<V, mpl::int_<184 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<185> > { typedef typename V::item185 type; typedef v_iter<V, mpl::int_<185 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<186> > { typedef typename V::item186 type; typedef v_iter<V, mpl::int_<186 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<187> > { typedef typename V::item187 type; typedef v_iter<V, mpl::int_<187 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<188> > { typedef typename V::item188 type; typedef v_iter<V, mpl::int_<188 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<189> > { typedef typename V::item189 type; typedef v_iter<V, mpl::int_<189 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<190> > { typedef typename V::item190 type; typedef v_iter<V, mpl::int_<190 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<191> > { typedef typename V::item191 type; typedef v_iter<V, mpl::int_<191 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<192> > { typedef typename V::item192 type; typedef v_iter<V, mpl::int_<192 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<193> > { typedef typename V::item193 type; typedef v_iter<V, mpl::int_<193 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<194> > { typedef typename V::item194 type; typedef v_iter<V, mpl::int_<194 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<195> > { typedef typename V::item195 type; typedef v_iter<V, mpl::int_<195 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<196> > { typedef typename V::item196 type; typedef v_iter<V, mpl::int_<196 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<197> > { typedef typename V::item197 type; typedef v_iter<V, mpl::int_<197 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<198> > { typedef typename V::item198 type; typedef v_iter<V, mpl::int_<198 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<199> > { typedef typename V::item199 type; typedef v_iter<V, mpl::int_<199 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 > struct vector51 { typedef v_iter<vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 > struct vector52 { typedef v_iter<vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 > struct vector53 { typedef v_iter<vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 > struct vector54 { typedef v_iter<vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 > struct vector55 { typedef v_iter<vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 > struct vector56 { typedef v_iter<vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 > struct vector57 { typedef v_iter<vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 > struct vector58 { typedef v_iter<vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 > struct vector59 { typedef v_iter<vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 > struct vector60 { typedef v_iter<vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 > struct vector61 { typedef v_iter<vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 > struct vector62 { typedef v_iter<vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 > struct vector63 { typedef v_iter<vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 > struct vector64 { typedef v_iter<vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 > struct vector65 { typedef v_iter<vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 > struct vector66 { typedef v_iter<vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 > struct vector67 { typedef v_iter<vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 > struct vector68 { typedef v_iter<vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 > struct vector69 { typedef v_iter<vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 > struct vector70 { typedef v_iter<vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 > struct vector71 { typedef v_iter<vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 > struct vector72 { typedef v_iter<vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 > struct vector73 { typedef v_iter<vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 > struct vector74 { typedef v_iter<vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 > struct vector75 { typedef v_iter<vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 > struct vector76 { typedef v_iter<vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 > struct vector77 { typedef v_iter<vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 > struct vector78 { typedef v_iter<vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 > struct vector79 { typedef v_iter<vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 > struct vector80 { typedef v_iter<vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 > struct vector81 { typedef v_iter<vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 > struct vector82 { typedef v_iter<vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 > struct vector83 { typedef v_iter<vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 > struct vector84 { typedef v_iter<vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 > struct vector85 { typedef v_iter<vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 > struct vector86 { typedef v_iter<vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 > struct vector87 { typedef v_iter<vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 > struct vector88 { typedef v_iter<vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 > struct vector89 { typedef v_iter<vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 > struct vector90 { typedef v_iter<vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 > struct vector91 { typedef v_iter<vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 > struct vector92 { typedef v_iter<vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 > struct vector93 { typedef v_iter<vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 > struct vector94 { typedef v_iter<vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 > struct vector95 { typedef v_iter<vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 > struct vector96 { typedef v_iter<vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 > struct vector97 { typedef v_iter<vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 > struct vector98 { typedef v_iter<vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 > struct vector99 { typedef v_iter<vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef mpl::int_<1> item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 > struct vector100 { typedef v_iter<vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef mpl::int_<1> item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 > struct vector101 { typedef v_iter<vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef mpl::int_<1> item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 > struct vector102 { typedef v_iter<vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef mpl::int_<1> item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 > struct vector103 { typedef v_iter<vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef mpl::int_<1> item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 > struct vector104 { typedef v_iter<vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef mpl::int_<1> item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 > struct vector105 { typedef v_iter<vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef mpl::int_<1> item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 > struct vector106 { typedef v_iter<vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef mpl::int_<1> item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 > struct vector107 { typedef v_iter<vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef mpl::int_<1> item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 > struct vector108 { typedef v_iter<vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef mpl::int_<1> item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 > struct vector109 { typedef v_iter<vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef mpl::int_<1> item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 > struct vector110 { typedef v_iter<vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef mpl::int_<1> item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 > struct vector111 { typedef v_iter<vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef mpl::int_<1> item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 > struct vector112 { typedef v_iter<vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef mpl::int_<1> item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 > struct vector113 { typedef v_iter<vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef mpl::int_<1> item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 > struct vector114 { typedef v_iter<vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef mpl::int_<1> item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 > struct vector115 { typedef v_iter<vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef mpl::int_<1> item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 > struct vector116 { typedef v_iter<vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef mpl::int_<1> item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 > struct vector117 { typedef v_iter<vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef mpl::int_<1> item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 > struct vector118 { typedef v_iter<vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef mpl::int_<1> item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 > struct vector119 { typedef v_iter<vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef mpl::int_<1> item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 > struct vector120 { typedef v_iter<vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef mpl::int_<1> item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 > struct vector121 { typedef v_iter<vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef mpl::int_<1> item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 > struct vector122 { typedef v_iter<vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef mpl::int_<1> item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 > struct vector123 { typedef v_iter<vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef mpl::int_<1> item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 > struct vector124 { typedef v_iter<vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef mpl::int_<1> item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 > struct vector125 { typedef v_iter<vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef mpl::int_<1> item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 > struct vector126 { typedef v_iter<vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef mpl::int_<1> item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 > struct vector127 { typedef v_iter<vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef mpl::int_<1> item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 > struct vector128 { typedef v_iter<vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef mpl::int_<1> item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 > struct vector129 { typedef v_iter<vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef mpl::int_<1> item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 > struct vector130 { typedef v_iter<vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef mpl::int_<1> item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 > struct vector131 { typedef v_iter<vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef mpl::int_<1> item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 > struct vector132 { typedef v_iter<vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef mpl::int_<1> item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 > struct vector133 { typedef v_iter<vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef mpl::int_<1> item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 > struct vector134 { typedef v_iter<vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef mpl::int_<1> item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 > struct vector135 { typedef v_iter<vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef mpl::int_<1> item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 > struct vector136 { typedef v_iter<vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef mpl::int_<1> item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 > struct vector137 { typedef v_iter<vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef mpl::int_<1> item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 > struct vector138 { typedef v_iter<vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef mpl::int_<1> item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 > struct vector139 { typedef v_iter<vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef mpl::int_<1> item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 > struct vector140 { typedef v_iter<vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef mpl::int_<1> item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 > struct vector141 { typedef v_iter<vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef mpl::int_<1> item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 > struct vector142 { typedef v_iter<vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef mpl::int_<1> item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 > struct vector143 { typedef v_iter<vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef mpl::int_<1> item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 > struct vector144 { typedef v_iter<vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef mpl::int_<1> item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 > struct vector145 { typedef v_iter<vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef mpl::int_<1> item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 > struct vector146 { typedef v_iter<vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef mpl::int_<1> item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 > struct vector147 { typedef v_iter<vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef mpl::int_<1> item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 > struct vector148 { typedef v_iter<vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef mpl::int_<1> item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 > struct vector149 { typedef v_iter<vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef mpl::int_<1> item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 > struct vector150 { typedef v_iter<vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef mpl::int_<1> item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 > struct vector151 { typedef v_iter<vector151< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef mpl::int_<1> item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 > struct vector152 { typedef v_iter<vector152< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef mpl::int_<1> item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 > struct vector153 { typedef v_iter<vector153< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef mpl::int_<1> item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 > struct vector154 { typedef v_iter<vector154< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef mpl::int_<1> item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 > struct vector155 { typedef v_iter<vector155< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef mpl::int_<1> item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 > struct vector156 { typedef v_iter<vector156< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef mpl::int_<1> item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 > struct vector157 { typedef v_iter<vector157< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef mpl::int_<1> item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 > struct vector158 { typedef v_iter<vector158< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef mpl::int_<1> item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 > struct vector159 { typedef v_iter<vector159< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef mpl::int_<1> item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 > struct vector160 { typedef v_iter<vector160< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef mpl::int_<1> item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 > struct vector161 { typedef v_iter<vector161< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef mpl::int_<1> item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 > struct vector162 { typedef v_iter<vector162< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef mpl::int_<1> item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 > struct vector163 { typedef v_iter<vector163< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef mpl::int_<1> item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 > struct vector164 { typedef v_iter<vector164< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef mpl::int_<1> item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 > struct vector165 { typedef v_iter<vector165< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef mpl::int_<1> item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 > struct vector166 { typedef v_iter<vector166< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef mpl::int_<1> item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 > struct vector167 { typedef v_iter<vector167< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef mpl::int_<1> item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 > struct vector168 { typedef v_iter<vector168< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef mpl::int_<1> item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 > struct vector169 { typedef v_iter<vector169< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef mpl::int_<1> item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 > struct vector170 { typedef v_iter<vector170< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef mpl::int_<1> item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 > struct vector171 { typedef v_iter<vector171< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef mpl::int_<1> item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 > struct vector172 { typedef v_iter<vector172< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef mpl::int_<1> item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 > struct vector173 { typedef v_iter<vector173< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef mpl::int_<1> item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 > struct vector174 { typedef v_iter<vector174< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef mpl::int_<1> item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 > struct vector175 { typedef v_iter<vector175< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef mpl::int_<1> item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 > struct vector176 { typedef v_iter<vector176< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef mpl::int_<1> item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 > struct vector177 { typedef v_iter<vector177< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef mpl::int_<1> item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 > struct vector178 { typedef v_iter<vector178< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef mpl::int_<1> item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 > struct vector179 { typedef v_iter<vector179< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef mpl::int_<1> item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 > struct vector180 { typedef v_iter<vector180< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef mpl::int_<1> item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 > struct vector181 { typedef v_iter<vector181< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef mpl::int_<1> item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 > struct vector182 { typedef v_iter<vector182< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef mpl::int_<1> item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 > struct vector183 { typedef v_iter<vector183< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef mpl::int_<1> item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 > struct vector184 { typedef v_iter<vector184< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef mpl::int_<1> item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 > struct vector185 { typedef v_iter<vector185< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef mpl::int_<1> item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 > struct vector186 { typedef v_iter<vector186< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef mpl::int_<1> item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 > struct vector187 { typedef v_iter<vector187< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef mpl::int_<1> item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 > struct vector188 { typedef v_iter<vector188< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef mpl::int_<1> item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 > struct vector189 { typedef v_iter<vector189< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef mpl::int_<1> item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 > struct vector190 { typedef v_iter<vector190< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef mpl::int_<1> item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 > struct vector191 { typedef v_iter<vector191< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef mpl::int_<1> item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 > struct vector192 { typedef v_iter<vector192< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef mpl::int_<1> item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 > struct vector193 { typedef v_iter<vector193< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef mpl::int_<1> item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 > struct vector194 { typedef v_iter<vector194< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef mpl::int_<1> item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 > struct vector195 { typedef v_iter<vector195< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef mpl::int_<1> item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 > struct vector196 { typedef v_iter<vector196< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef mpl::int_<1> item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 > struct vector197 { typedef v_iter<vector197< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef mpl::int_<1> item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 > struct vector198 { typedef v_iter<vector198< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef P197 item197; typedef mpl::int_<1> item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class P198 > struct vector199 { typedef v_iter<vector199< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef P197 item197; typedef P198 item198; typedef mpl::int_<1> item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class P198 , class P199 > struct vector200 { typedef v_iter<vector200< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198 , P199>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef P50 item50; typedef P51 item51; typedef P52 item52; typedef P53 item53; typedef P54 item54; typedef P55 item55; typedef P56 item56; typedef P57 item57; typedef P58 item58; typedef P59 item59; typedef P60 item60; typedef P61 item61; typedef P62 item62; typedef P63 item63; typedef P64 item64; typedef P65 item65; typedef P66 item66; typedef P67 item67; typedef P68 item68; typedef P69 item69; typedef P70 item70; typedef P71 item71; typedef P72 item72; typedef P73 item73; typedef P74 item74; typedef P75 item75; typedef P76 item76; typedef P77 item77; typedef P78 item78; typedef P79 item79; typedef P80 item80; typedef P81 item81; typedef P82 item82; typedef P83 item83; typedef P84 item84; typedef P85 item85; typedef P86 item86; typedef P87 item87; typedef P88 item88; typedef P89 item89; typedef P90 item90; typedef P91 item91; typedef P92 item92; typedef P93 item93; typedef P94 item94; typedef P95 item95; typedef P96 item96; typedef P97 item97; typedef P98 item98; typedef P99 item99; typedef P100 item100; typedef P101 item101; typedef P102 item102; typedef P103 item103; typedef P104 item104; typedef P105 item105; typedef P106 item106; typedef P107 item107; typedef P108 item108; typedef P109 item109; typedef P110 item110; typedef P111 item111; typedef P112 item112; typedef P113 item113; typedef P114 item114; typedef P115 item115; typedef P116 item116; typedef P117 item117; typedef P118 item118; typedef P119 item119; typedef P120 item120; typedef P121 item121; typedef P122 item122; typedef P123 item123; typedef P124 item124; typedef P125 item125; typedef P126 item126; typedef P127 item127; typedef P128 item128; typedef P129 item129; typedef P130 item130; typedef P131 item131; typedef P132 item132; typedef P133 item133; typedef P134 item134; typedef P135 item135; typedef P136 item136; typedef P137 item137; typedef P138 item138; typedef P139 item139; typedef P140 item140; typedef P141 item141; typedef P142 item142; typedef P143 item143; typedef P144 item144; typedef P145 item145; typedef P146 item146; typedef P147 item147; typedef P148 item148; typedef P149 item149; typedef P150 item150; typedef P151 item151; typedef P152 item152; typedef P153 item153; typedef P154 item154; typedef P155 item155; typedef P156 item156; typedef P157 item157; typedef P158 item158; typedef P159 item159; typedef P160 item160; typedef P161 item161; typedef P162 item162; typedef P163 item163; typedef P164 item164; typedef P165 item165; typedef P166 item166; typedef P167 item167; typedef P168 item168; typedef P169 item169; typedef P170 item170; typedef P171 item171; typedef P172 item172; typedef P173 item173; typedef P174 item174; typedef P175 item175; typedef P176 item176; typedef P177 item177; typedef P178 item178; typedef P179 item179; typedef P180 item180; typedef P181 item181; typedef P182 item182; typedef P183 item183; typedef P184 item184; typedef P185 item185; typedef P186 item186; typedef P187 item187; typedef P188 item188; typedef P189 item189; typedef P190 item190; typedef P191 item191; typedef P192 item192; typedef P193 item193; typedef P194 item194; typedef P195 item195; typedef P196 item196; typedef P197 item197; typedef P198 item198; typedef P199 item199; typedef mpl::int_<1> item200; typedef mpl::int_<1> item201; typedef mpl::int_<1> item202; typedef mpl::int_<1> item203; typedef mpl::int_<1> item204; typedef mpl::int_<1> item205; typedef mpl::int_<1> item206; typedef mpl::int_<1> item207; typedef mpl::int_<1> item208; typedef mpl::int_<1> item209; typedef mpl::int_<1> item210; typedef mpl::int_<1> item211; typedef mpl::int_<1> item212; typedef mpl::int_<1> item213; typedef mpl::int_<1> item214; typedef mpl::int_<1> item215; typedef mpl::int_<1> item216; typedef mpl::int_<1> item217; typedef mpl::int_<1> item218; typedef mpl::int_<1> item219; typedef mpl::int_<1> item220; typedef mpl::int_<1> item221; typedef mpl::int_<1> item222; typedef mpl::int_<1> item223; typedef mpl::int_<1> item224; typedef mpl::int_<1> item225; typedef mpl::int_<1> item226; typedef mpl::int_<1> item227; typedef mpl::int_<1> item228; typedef mpl::int_<1> item229; typedef mpl::int_<1> item230; typedef mpl::int_<1> item231; typedef mpl::int_<1> item232; typedef mpl::int_<1> item233; typedef mpl::int_<1> item234; typedef mpl::int_<1> item235; typedef mpl::int_<1> item236; typedef mpl::int_<1> item237; typedef mpl::int_<1> item238; typedef mpl::int_<1> item239; typedef mpl::int_<1> item240; typedef mpl::int_<1> item241; typedef mpl::int_<1> item242; typedef mpl::int_<1> item243; typedef mpl::int_<1> item244; typedef mpl::int_<1> item245; typedef mpl::int_<1> item246; typedef mpl::int_<1> item247; typedef mpl::int_<1> item248; typedef mpl::int_<1> item249; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class T> struct push_back<boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, T> { typedef boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class T> struct push_back<boost::type_of::vector51< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50>, T> { typedef boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class T> struct push_back<boost::type_of::vector52< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51>, T> { typedef boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class T> struct push_back<boost::type_of::vector53< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52>, T> { typedef boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class T> struct push_back<boost::type_of::vector54< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53>, T> { typedef boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class T> struct push_back<boost::type_of::vector55< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54>, T> { typedef boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class T> struct push_back<boost::type_of::vector56< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55>, T> { typedef boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class T> struct push_back<boost::type_of::vector57< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56>, T> { typedef boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class T> struct push_back<boost::type_of::vector58< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57>, T> { typedef boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class T> struct push_back<boost::type_of::vector59< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58>, T> { typedef boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class T> struct push_back<boost::type_of::vector60< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59>, T> { typedef boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class T> struct push_back<boost::type_of::vector61< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60>, T> { typedef boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class T> struct push_back<boost::type_of::vector62< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61>, T> { typedef boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class T> struct push_back<boost::type_of::vector63< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62>, T> { typedef boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class T> struct push_back<boost::type_of::vector64< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63>, T> { typedef boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class T> struct push_back<boost::type_of::vector65< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64>, T> { typedef boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class T> struct push_back<boost::type_of::vector66< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65>, T> { typedef boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class T> struct push_back<boost::type_of::vector67< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66>, T> { typedef boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class T> struct push_back<boost::type_of::vector68< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67>, T> { typedef boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class T> struct push_back<boost::type_of::vector69< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68>, T> { typedef boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class T> struct push_back<boost::type_of::vector70< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69>, T> { typedef boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class T> struct push_back<boost::type_of::vector71< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70>, T> { typedef boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class T> struct push_back<boost::type_of::vector72< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71>, T> { typedef boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class T> struct push_back<boost::type_of::vector73< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72>, T> { typedef boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class T> struct push_back<boost::type_of::vector74< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73>, T> { typedef boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class T> struct push_back<boost::type_of::vector75< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74>, T> { typedef boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class T> struct push_back<boost::type_of::vector76< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75>, T> { typedef boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class T> struct push_back<boost::type_of::vector77< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76>, T> { typedef boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class T> struct push_back<boost::type_of::vector78< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77>, T> { typedef boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class T> struct push_back<boost::type_of::vector79< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78>, T> { typedef boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class T> struct push_back<boost::type_of::vector80< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79>, T> { typedef boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class T> struct push_back<boost::type_of::vector81< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80>, T> { typedef boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class T> struct push_back<boost::type_of::vector82< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81>, T> { typedef boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class T> struct push_back<boost::type_of::vector83< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82>, T> { typedef boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class T> struct push_back<boost::type_of::vector84< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83>, T> { typedef boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class T> struct push_back<boost::type_of::vector85< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84>, T> { typedef boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class T> struct push_back<boost::type_of::vector86< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85>, T> { typedef boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class T> struct push_back<boost::type_of::vector87< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86>, T> { typedef boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class T> struct push_back<boost::type_of::vector88< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87>, T> { typedef boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class T> struct push_back<boost::type_of::vector89< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88>, T> { typedef boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class T> struct push_back<boost::type_of::vector90< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89>, T> { typedef boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class T> struct push_back<boost::type_of::vector91< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90>, T> { typedef boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class T> struct push_back<boost::type_of::vector92< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91>, T> { typedef boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class T> struct push_back<boost::type_of::vector93< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92>, T> { typedef boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class T> struct push_back<boost::type_of::vector94< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93>, T> { typedef boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class T> struct push_back<boost::type_of::vector95< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94>, T> { typedef boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class T> struct push_back<boost::type_of::vector96< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95>, T> { typedef boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class T> struct push_back<boost::type_of::vector97< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96>, T> { typedef boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class T> struct push_back<boost::type_of::vector98< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97>, T> { typedef boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class T> struct push_back<boost::type_of::vector99< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98>, T> { typedef boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class T> struct push_back<boost::type_of::vector100< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99>, T> { typedef boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class T> struct push_back<boost::type_of::vector101< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100>, T> { typedef boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class T> struct push_back<boost::type_of::vector102< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101>, T> { typedef boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class T> struct push_back<boost::type_of::vector103< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102>, T> { typedef boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class T> struct push_back<boost::type_of::vector104< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103>, T> { typedef boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class T> struct push_back<boost::type_of::vector105< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104>, T> { typedef boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class T> struct push_back<boost::type_of::vector106< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105>, T> { typedef boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class T> struct push_back<boost::type_of::vector107< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106>, T> { typedef boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class T> struct push_back<boost::type_of::vector108< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107>, T> { typedef boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class T> struct push_back<boost::type_of::vector109< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108>, T> { typedef boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class T> struct push_back<boost::type_of::vector110< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109>, T> { typedef boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class T> struct push_back<boost::type_of::vector111< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110>, T> { typedef boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class T> struct push_back<boost::type_of::vector112< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111>, T> { typedef boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class T> struct push_back<boost::type_of::vector113< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112>, T> { typedef boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class T> struct push_back<boost::type_of::vector114< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113>, T> { typedef boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class T> struct push_back<boost::type_of::vector115< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114>, T> { typedef boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class T> struct push_back<boost::type_of::vector116< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115>, T> { typedef boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class T> struct push_back<boost::type_of::vector117< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116>, T> { typedef boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class T> struct push_back<boost::type_of::vector118< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117>, T> { typedef boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class T> struct push_back<boost::type_of::vector119< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118>, T> { typedef boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class T> struct push_back<boost::type_of::vector120< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119>, T> { typedef boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class T> struct push_back<boost::type_of::vector121< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120>, T> { typedef boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class T> struct push_back<boost::type_of::vector122< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121>, T> { typedef boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class T> struct push_back<boost::type_of::vector123< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122>, T> { typedef boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class T> struct push_back<boost::type_of::vector124< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123>, T> { typedef boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class T> struct push_back<boost::type_of::vector125< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124>, T> { typedef boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class T> struct push_back<boost::type_of::vector126< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125>, T> { typedef boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class T> struct push_back<boost::type_of::vector127< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126>, T> { typedef boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class T> struct push_back<boost::type_of::vector128< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127>, T> { typedef boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class T> struct push_back<boost::type_of::vector129< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128>, T> { typedef boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class T> struct push_back<boost::type_of::vector130< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129>, T> { typedef boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class T> struct push_back<boost::type_of::vector131< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130>, T> { typedef boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class T> struct push_back<boost::type_of::vector132< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131>, T> { typedef boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class T> struct push_back<boost::type_of::vector133< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132>, T> { typedef boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class T> struct push_back<boost::type_of::vector134< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133>, T> { typedef boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class T> struct push_back<boost::type_of::vector135< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134>, T> { typedef boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class T> struct push_back<boost::type_of::vector136< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135>, T> { typedef boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class T> struct push_back<boost::type_of::vector137< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136>, T> { typedef boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class T> struct push_back<boost::type_of::vector138< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137>, T> { typedef boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class T> struct push_back<boost::type_of::vector139< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138>, T> { typedef boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class T> struct push_back<boost::type_of::vector140< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139>, T> { typedef boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class T> struct push_back<boost::type_of::vector141< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140>, T> { typedef boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class T> struct push_back<boost::type_of::vector142< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141>, T> { typedef boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class T> struct push_back<boost::type_of::vector143< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142>, T> { typedef boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class T> struct push_back<boost::type_of::vector144< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143>, T> { typedef boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class T> struct push_back<boost::type_of::vector145< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144>, T> { typedef boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class T> struct push_back<boost::type_of::vector146< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145>, T> { typedef boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class T> struct push_back<boost::type_of::vector147< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146>, T> { typedef boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class T> struct push_back<boost::type_of::vector148< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147>, T> { typedef boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class T> struct push_back<boost::type_of::vector149< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148>, T> { typedef boost::type_of::vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class T> struct push_back<boost::type_of::vector150< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149>, T> { typedef boost::type_of::vector151< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class T> struct push_back<boost::type_of::vector151< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150>, T> { typedef boost::type_of::vector152< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class T> struct push_back<boost::type_of::vector152< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151>, T> { typedef boost::type_of::vector153< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class T> struct push_back<boost::type_of::vector153< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152>, T> { typedef boost::type_of::vector154< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class T> struct push_back<boost::type_of::vector154< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153>, T> { typedef boost::type_of::vector155< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class T> struct push_back<boost::type_of::vector155< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154>, T> { typedef boost::type_of::vector156< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class T> struct push_back<boost::type_of::vector156< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155>, T> { typedef boost::type_of::vector157< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class T> struct push_back<boost::type_of::vector157< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156>, T> { typedef boost::type_of::vector158< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class T> struct push_back<boost::type_of::vector158< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157>, T> { typedef boost::type_of::vector159< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class T> struct push_back<boost::type_of::vector159< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158>, T> { typedef boost::type_of::vector160< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class T> struct push_back<boost::type_of::vector160< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159>, T> { typedef boost::type_of::vector161< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class T> struct push_back<boost::type_of::vector161< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160>, T> { typedef boost::type_of::vector162< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class T> struct push_back<boost::type_of::vector162< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161>, T> { typedef boost::type_of::vector163< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class T> struct push_back<boost::type_of::vector163< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162>, T> { typedef boost::type_of::vector164< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class T> struct push_back<boost::type_of::vector164< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163>, T> { typedef boost::type_of::vector165< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class T> struct push_back<boost::type_of::vector165< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164>, T> { typedef boost::type_of::vector166< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class T> struct push_back<boost::type_of::vector166< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165>, T> { typedef boost::type_of::vector167< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class T> struct push_back<boost::type_of::vector167< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166>, T> { typedef boost::type_of::vector168< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class T> struct push_back<boost::type_of::vector168< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167>, T> { typedef boost::type_of::vector169< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class T> struct push_back<boost::type_of::vector169< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168>, T> { typedef boost::type_of::vector170< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class T> struct push_back<boost::type_of::vector170< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169>, T> { typedef boost::type_of::vector171< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class T> struct push_back<boost::type_of::vector171< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170>, T> { typedef boost::type_of::vector172< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class T> struct push_back<boost::type_of::vector172< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171>, T> { typedef boost::type_of::vector173< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class T> struct push_back<boost::type_of::vector173< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172>, T> { typedef boost::type_of::vector174< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class T> struct push_back<boost::type_of::vector174< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173>, T> { typedef boost::type_of::vector175< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class T> struct push_back<boost::type_of::vector175< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174>, T> { typedef boost::type_of::vector176< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class T> struct push_back<boost::type_of::vector176< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175>, T> { typedef boost::type_of::vector177< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class T> struct push_back<boost::type_of::vector177< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176>, T> { typedef boost::type_of::vector178< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class T> struct push_back<boost::type_of::vector178< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177>, T> { typedef boost::type_of::vector179< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class T> struct push_back<boost::type_of::vector179< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178>, T> { typedef boost::type_of::vector180< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class T> struct push_back<boost::type_of::vector180< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179>, T> { typedef boost::type_of::vector181< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class T> struct push_back<boost::type_of::vector181< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180>, T> { typedef boost::type_of::vector182< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class T> struct push_back<boost::type_of::vector182< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181>, T> { typedef boost::type_of::vector183< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class T> struct push_back<boost::type_of::vector183< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182>, T> { typedef boost::type_of::vector184< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class T> struct push_back<boost::type_of::vector184< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183>, T> { typedef boost::type_of::vector185< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class T> struct push_back<boost::type_of::vector185< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184>, T> { typedef boost::type_of::vector186< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class T> struct push_back<boost::type_of::vector186< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185>, T> { typedef boost::type_of::vector187< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class T> struct push_back<boost::type_of::vector187< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186>, T> { typedef boost::type_of::vector188< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class T> struct push_back<boost::type_of::vector188< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187>, T> { typedef boost::type_of::vector189< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class T> struct push_back<boost::type_of::vector189< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188>, T> { typedef boost::type_of::vector190< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class T> struct push_back<boost::type_of::vector190< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189>, T> { typedef boost::type_of::vector191< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class T> struct push_back<boost::type_of::vector191< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190>, T> { typedef boost::type_of::vector192< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class T> struct push_back<boost::type_of::vector192< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191>, T> { typedef boost::type_of::vector193< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class T> struct push_back<boost::type_of::vector193< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192>, T> { typedef boost::type_of::vector194< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class T> struct push_back<boost::type_of::vector194< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193>, T> { typedef boost::type_of::vector195< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class T> struct push_back<boost::type_of::vector195< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194>, T> { typedef boost::type_of::vector196< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class T> struct push_back<boost::type_of::vector196< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195>, T> { typedef boost::type_of::vector197< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class T> struct push_back<boost::type_of::vector197< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196>, T> { typedef boost::type_of::vector198< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class T> struct push_back<boost::type_of::vector198< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197>, T> { typedef boost::type_of::vector199< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 , class P50 , class P51 , class P52 , class P53 , class P54 , class P55 , class P56 , class P57 , class P58 , class P59 , class P60 , class P61 , class P62 , class P63 , class P64 , class P65 , class P66 , class P67 , class P68 , class P69 , class P70 , class P71 , class P72 , class P73 , class P74 , class P75 , class P76 , class P77 , class P78 , class P79 , class P80 , class P81 , class P82 , class P83 , class P84 , class P85 , class P86 , class P87 , class P88 , class P89 , class P90 , class P91 , class P92 , class P93 , class P94 , class P95 , class P96 , class P97 , class P98 , class P99 , class P100 , class P101 , class P102 , class P103 , class P104 , class P105 , class P106 , class P107 , class P108 , class P109 , class P110 , class P111 , class P112 , class P113 , class P114 , class P115 , class P116 , class P117 , class P118 , class P119 , class P120 , class P121 , class P122 , class P123 , class P124 , class P125 , class P126 , class P127 , class P128 , class P129 , class P130 , class P131 , class P132 , class P133 , class P134 , class P135 , class P136 , class P137 , class P138 , class P139 , class P140 , class P141 , class P142 , class P143 , class P144 , class P145 , class P146 , class P147 , class P148 , class P149 , class P150 , class P151 , class P152 , class P153 , class P154 , class P155 , class P156 , class P157 , class P158 , class P159 , class P160 , class P161 , class P162 , class P163 , class P164 , class P165 , class P166 , class P167 , class P168 , class P169 , class P170 , class P171 , class P172 , class P173 , class P174 , class P175 , class P176 , class P177 , class P178 , class P179 , class P180 , class P181 , class P182 , class P183 , class P184 , class P185 , class P186 , class P187 , class P188 , class P189 , class P190 , class P191 , class P192 , class P193 , class P194 , class P195 , class P196 , class P197 , class P198 , class T> struct push_back<boost::type_of::vector199< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198>, T> { typedef boost::type_of::vector200< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49 , P50 , P51 , P52 , P53 , P54 , P55 , P56 , P57 , P58 , P59 , P60 , P61 , P62 , P63 , P64 , P65 , P66 , P67 , P68 , P69 , P70 , P71 , P72 , P73 , P74 , P75 , P76 , P77 , P78 , P79 , P80 , P81 , P82 , P83 , P84 , P85 , P86 , P87 , P88 , P89 , P90 , P91 , P92 , P93 , P94 , P95 , P96 , P97 , P98 , P99 , P100 , P101 , P102 , P103 , P104 , P105 , P106 , P107 , P108 , P109 , P110 , P111 , P112 , P113 , P114 , P115 , P116 , P117 , P118 , P119 , P120 , P121 , P122 , P123 , P124 , P125 , P126 , P127 , P128 , P129 , P130 , P131 , P132 , P133 , P134 , P135 , P136 , P137 , P138 , P139 , P140 , P141 , P142 , P143 , P144 , P145 , P146 , P147 , P148 , P149 , P150 , P151 , P152 , P153 , P154 , P155 , P156 , P157 , P158 , P159 , P160 , P161 , P162 , P163 , P164 , P165 , P166 , P167 , P168 , P169 , P170 , P171 , P172 , P173 , P174 , P175 , P176 , P177 , P178 , P179 , P180 , P181 , P182 , P183 , P184 , P185 , P186 , P187 , P188 , P189 , P190 , P191 , P192 , P193 , P194 , P195 , P196 , P197 , P198 , T > type; };
+}}
diff --git a/3rdParty/Boost/boost/typeof/vector50.hpp b/3rdParty/Boost/boost/typeof/vector50.hpp
new file mode 100644
index 0000000..d3beaff
--- /dev/null
+++ b/3rdParty/Boost/boost/typeof/vector50.hpp
@@ -0,0 +1,171 @@
+
+// Copyright (C) 2005 Arkadiy Vertleyb
+// Copyright (C) 2005 Peder Holt
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+// Preprocessed code, do not edit manually !
+
+
+namespace boost { namespace type_of {
+ template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
+ template<class V> struct v_iter<V, mpl::int_<0> > { typedef typename V::item0 type; typedef v_iter<V, mpl::int_<0 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<1> > { typedef typename V::item1 type; typedef v_iter<V, mpl::int_<1 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<2> > { typedef typename V::item2 type; typedef v_iter<V, mpl::int_<2 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<3> > { typedef typename V::item3 type; typedef v_iter<V, mpl::int_<3 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<4> > { typedef typename V::item4 type; typedef v_iter<V, mpl::int_<4 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<5> > { typedef typename V::item5 type; typedef v_iter<V, mpl::int_<5 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<6> > { typedef typename V::item6 type; typedef v_iter<V, mpl::int_<6 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<7> > { typedef typename V::item7 type; typedef v_iter<V, mpl::int_<7 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<8> > { typedef typename V::item8 type; typedef v_iter<V, mpl::int_<8 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<9> > { typedef typename V::item9 type; typedef v_iter<V, mpl::int_<9 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<10> > { typedef typename V::item10 type; typedef v_iter<V, mpl::int_<10 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<11> > { typedef typename V::item11 type; typedef v_iter<V, mpl::int_<11 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<12> > { typedef typename V::item12 type; typedef v_iter<V, mpl::int_<12 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<13> > { typedef typename V::item13 type; typedef v_iter<V, mpl::int_<13 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<14> > { typedef typename V::item14 type; typedef v_iter<V, mpl::int_<14 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<15> > { typedef typename V::item15 type; typedef v_iter<V, mpl::int_<15 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<16> > { typedef typename V::item16 type; typedef v_iter<V, mpl::int_<16 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<17> > { typedef typename V::item17 type; typedef v_iter<V, mpl::int_<17 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<18> > { typedef typename V::item18 type; typedef v_iter<V, mpl::int_<18 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<19> > { typedef typename V::item19 type; typedef v_iter<V, mpl::int_<19 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<20> > { typedef typename V::item20 type; typedef v_iter<V, mpl::int_<20 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<21> > { typedef typename V::item21 type; typedef v_iter<V, mpl::int_<21 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<22> > { typedef typename V::item22 type; typedef v_iter<V, mpl::int_<22 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<23> > { typedef typename V::item23 type; typedef v_iter<V, mpl::int_<23 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<24> > { typedef typename V::item24 type; typedef v_iter<V, mpl::int_<24 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<25> > { typedef typename V::item25 type; typedef v_iter<V, mpl::int_<25 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<26> > { typedef typename V::item26 type; typedef v_iter<V, mpl::int_<26 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<27> > { typedef typename V::item27 type; typedef v_iter<V, mpl::int_<27 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<28> > { typedef typename V::item28 type; typedef v_iter<V, mpl::int_<28 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<29> > { typedef typename V::item29 type; typedef v_iter<V, mpl::int_<29 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<30> > { typedef typename V::item30 type; typedef v_iter<V, mpl::int_<30 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<31> > { typedef typename V::item31 type; typedef v_iter<V, mpl::int_<31 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<32> > { typedef typename V::item32 type; typedef v_iter<V, mpl::int_<32 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<33> > { typedef typename V::item33 type; typedef v_iter<V, mpl::int_<33 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<34> > { typedef typename V::item34 type; typedef v_iter<V, mpl::int_<34 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<35> > { typedef typename V::item35 type; typedef v_iter<V, mpl::int_<35 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<36> > { typedef typename V::item36 type; typedef v_iter<V, mpl::int_<36 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<37> > { typedef typename V::item37 type; typedef v_iter<V, mpl::int_<37 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<38> > { typedef typename V::item38 type; typedef v_iter<V, mpl::int_<38 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<39> > { typedef typename V::item39 type; typedef v_iter<V, mpl::int_<39 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<40> > { typedef typename V::item40 type; typedef v_iter<V, mpl::int_<40 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<41> > { typedef typename V::item41 type; typedef v_iter<V, mpl::int_<41 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<42> > { typedef typename V::item42 type; typedef v_iter<V, mpl::int_<42 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<43> > { typedef typename V::item43 type; typedef v_iter<V, mpl::int_<43 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<44> > { typedef typename V::item44 type; typedef v_iter<V, mpl::int_<44 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<45> > { typedef typename V::item45 type; typedef v_iter<V, mpl::int_<45 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<46> > { typedef typename V::item46 type; typedef v_iter<V, mpl::int_<46 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<47> > { typedef typename V::item47 type; typedef v_iter<V, mpl::int_<47 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<48> > { typedef typename V::item48 type; typedef v_iter<V, mpl::int_<48 + 1> > next; };
+ template<class V> struct v_iter<V, mpl::int_<49> > { typedef typename V::item49 type; typedef v_iter<V, mpl::int_<49 + 1> > next; };
+}}
+namespace boost { namespace type_of {
+ template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::mpl::int_<0> > begin; typedef mpl::int_<1> item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef mpl::int_<1> item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef mpl::int_<1> item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef mpl::int_<1> item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef mpl::int_<1> item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef mpl::int_<1> item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef mpl::int_<1> item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef mpl::int_<1> item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef mpl::int_<1> item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef mpl::int_<1> item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef mpl::int_<1> item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef mpl::int_<1> item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef mpl::int_<1> item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef mpl::int_<1> item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef mpl::int_<1> item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef mpl::int_<1> item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef mpl::int_<1> item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef mpl::int_<1> item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef mpl::int_<1> item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef mpl::int_<1> item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef mpl::int_<1> item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef mpl::int_<1> item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef mpl::int_<1> item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef mpl::int_<1> item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef mpl::int_<1> item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef mpl::int_<1> item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef mpl::int_<1> item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef mpl::int_<1> item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef mpl::int_<1> item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef mpl::int_<1> item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef mpl::int_<1> item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef mpl::int_<1> item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef mpl::int_<1> item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef mpl::int_<1> item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef mpl::int_<1> item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef mpl::int_<1> item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef mpl::int_<1> item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef mpl::int_<1> item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef mpl::int_<1> item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef mpl::int_<1> item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef mpl::int_<1> item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef mpl::int_<1> item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef mpl::int_<1> item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef mpl::int_<1> item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef mpl::int_<1> item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef mpl::int_<1> item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef mpl::int_<1> item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef mpl::int_<1> item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef mpl::int_<1> item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef mpl::int_<1> item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::mpl::int_<0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef mpl::int_<1> item50; typedef mpl::int_<1> item51; typedef mpl::int_<1> item52; typedef mpl::int_<1> item53; typedef mpl::int_<1> item54; typedef mpl::int_<1> item55; typedef mpl::int_<1> item56; typedef mpl::int_<1> item57; typedef mpl::int_<1> item58; typedef mpl::int_<1> item59; typedef mpl::int_<1> item60; typedef mpl::int_<1> item61; typedef mpl::int_<1> item62; typedef mpl::int_<1> item63; typedef mpl::int_<1> item64; typedef mpl::int_<1> item65; typedef mpl::int_<1> item66; typedef mpl::int_<1> item67; typedef mpl::int_<1> item68; typedef mpl::int_<1> item69; typedef mpl::int_<1> item70; typedef mpl::int_<1> item71; typedef mpl::int_<1> item72; typedef mpl::int_<1> item73; typedef mpl::int_<1> item74; typedef mpl::int_<1> item75; typedef mpl::int_<1> item76; typedef mpl::int_<1> item77; typedef mpl::int_<1> item78; typedef mpl::int_<1> item79; typedef mpl::int_<1> item80; typedef mpl::int_<1> item81; typedef mpl::int_<1> item82; typedef mpl::int_<1> item83; typedef mpl::int_<1> item84; typedef mpl::int_<1> item85; typedef mpl::int_<1> item86; typedef mpl::int_<1> item87; typedef mpl::int_<1> item88; typedef mpl::int_<1> item89; typedef mpl::int_<1> item90; typedef mpl::int_<1> item91; typedef mpl::int_<1> item92; typedef mpl::int_<1> item93; typedef mpl::int_<1> item94; typedef mpl::int_<1> item95; typedef mpl::int_<1> item96; typedef mpl::int_<1> item97; typedef mpl::int_<1> item98; typedef mpl::int_<1> item99; };
+}}
+namespace boost { namespace type_of {
+ template<class V, class T> struct push_back {
+ typedef V type;
+ };
+ template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
+ template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
+ template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
+ template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
+ template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
+}}
diff --git a/3rdParty/Boost/boost/utility.hpp b/3rdParty/Boost/boost/utility.hpp
new file mode 100644
index 0000000..b909f29
--- /dev/null
+++ b/3rdParty/Boost/boost/utility.hpp
@@ -0,0 +1,20 @@
+// Boost utility.hpp header file -------------------------------------------//
+
+// Copyright 1999-2003 Aleksey Gurtovoy. Use, modification, and distribution are
+// subject to the Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
+
+// See <http://www.boost.org/libs/utility/> for the library's home page.
+
+#ifndef BOOST_UTILITY_HPP
+#define BOOST_UTILITY_HPP
+
+#include <boost/utility/addressof.hpp>
+#include <boost/utility/base_from_member.hpp>
+#include <boost/utility/binary.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/checked_delete.hpp>
+#include <boost/next_prior.hpp>
+#include <boost/noncopyable.hpp>
+
+#endif // BOOST_UTILITY_HPP
diff --git a/3rdParty/Boost/boost/utility/addressof.hpp b/3rdParty/Boost/boost/utility/addressof.hpp
new file mode 100644
index 0000000..ac42a51
--- /dev/null
+++ b/3rdParty/Boost/boost/utility/addressof.hpp
@@ -0,0 +1,99 @@
+// Copyright (C) 2002 Brad King (brad.king@kitware.com)
+// Douglas Gregor (gregod@cs.rpi.edu)
+//
+// Copyright (C) 2002, 2008 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// For more information, see http://www.boost.org
+
+#ifndef BOOST_UTILITY_ADDRESSOF_HPP
+# define BOOST_UTILITY_ADDRESSOF_HPP
+
+# include <boost/config.hpp>
+# include <boost/detail/workaround.hpp>
+
+namespace boost
+{
+
+namespace detail
+{
+
+template<class T> struct addr_impl_ref
+{
+ T & v_;
+
+ inline addr_impl_ref( T & v ): v_( v ) {}
+ inline operator T& () const { return v_; }
+};
+
+template<class T> struct addressof_impl
+{
+ static inline T * f( T & v, long )
+ {
+ return reinterpret_cast<T*>(
+ &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
+ }
+
+ static inline T * f( T * v, int )
+ {
+ return v;
+ }
+};
+
+} // namespace detail
+
+template<class T> T * addressof( T & v )
+{
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) )
+
+ return boost::detail::addressof_impl<T>::f( v, 0 );
+
+#else
+
+ return boost::detail::addressof_impl<T>::f( boost::detail::addr_impl_ref<T>( v ), 0 );
+
+#endif
+}
+
+#if defined( __SUNPRO_CC ) && BOOST_WORKAROUND( __SUNPRO_CC, BOOST_TESTED_AT( 0x590 ) )
+
+namespace detail
+{
+
+template<class T> struct addressof_addp
+{
+ typedef T * type;
+};
+
+} // namespace detail
+
+template< class T, std::size_t N >
+typename detail::addressof_addp< T[N] >::type addressof( T (&t)[N] )
+{
+ return &t;
+}
+
+#endif
+
+// Borland doesn't like casting an array reference to a char reference
+// but these overloads work around the problem.
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+template<typename T,std::size_t N>
+T (*addressof(T (&t)[N]))[N]
+{
+ return reinterpret_cast<T(*)[N]>(&t);
+}
+
+template<typename T,std::size_t N>
+const T (*addressof(const T (&t)[N]))[N]
+{
+ return reinterpret_cast<const T(*)[N]>(&t);
+}
+#endif
+
+} // namespace boost
+
+#endif // BOOST_UTILITY_ADDRESSOF_HPP
diff --git a/3rdParty/Boost/boost/utility/base_from_member.hpp b/3rdParty/Boost/boost/utility/base_from_member.hpp
new file mode 100644
index 0000000..04aabb5
--- /dev/null
+++ b/3rdParty/Boost/boost/utility/base_from_member.hpp
@@ -0,0 +1,87 @@
+// boost utility/base_from_member.hpp header file --------------------------//
+
+// Copyright 2001, 2003, 2004 Daryle Walker. Use, modification, and
+// distribution are subject to the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or a copy at
+// <http://www.boost.org/LICENSE_1_0.txt>.)
+
+// See <http://www.boost.org/libs/utility/> for the library's home page.
+
+#ifndef BOOST_UTILITY_BASE_FROM_MEMBER_HPP
+#define BOOST_UTILITY_BASE_FROM_MEMBER_HPP
+
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+
+// Base-from-member arity configuration macro ------------------------------//
+
+// The following macro determines how many arguments will be in the largest
+// constructor template of base_from_member. Constructor templates will be
+// generated from one argument to this maximum. Code from other files can read
+// this number if they need to always match the exact maximum base_from_member
+// uses. The maximum constructor length can be changed by overriding the
+// #defined constant. Make sure to apply the override, if any, for all source
+// files during project compiling for consistency.
+
+// Contributed by Jonathan Turkanis
+
+#ifndef BOOST_BASE_FROM_MEMBER_MAX_ARITY
+#define BOOST_BASE_FROM_MEMBER_MAX_ARITY 10
+#endif
+
+
+// An iteration of a constructor template for base_from_member -------------//
+
+// A macro that should expand to:
+// template < typename T1, ..., typename Tn >
+// base_from_member( T1 x1, ..., Tn xn )
+// : member( x1, ..., xn )
+// {}
+// This macro should only persist within this file.
+
+#define BOOST_PRIVATE_CTR_DEF( z, n, data ) \
+ template < BOOST_PP_ENUM_PARAMS(n, typename T) > \
+ explicit base_from_member( BOOST_PP_ENUM_BINARY_PARAMS(n, T, x) ) \
+ : member( BOOST_PP_ENUM_PARAMS(n, x) ) \
+ {} \
+ /**/
+
+
+namespace boost
+{
+
+// Base-from-member class template -----------------------------------------//
+
+// Helper to initialize a base object so a derived class can use this
+// object in the initialization of another base class. Used by
+// Dietmar Kuehl from ideas by Ron Klatcho to solve the problem of a
+// base class needing to be initialized by a member.
+
+// Contributed by Daryle Walker
+
+template < typename MemberType, int UniqueID = 0 >
+class base_from_member
+{
+protected:
+ MemberType member;
+
+ base_from_member()
+ : member()
+ {}
+
+ BOOST_PP_REPEAT_FROM_TO( 1, BOOST_PP_INC(BOOST_BASE_FROM_MEMBER_MAX_ARITY),
+ BOOST_PRIVATE_CTR_DEF, _ )
+
+}; // boost::base_from_member
+
+} // namespace boost
+
+
+// Undo any private macros
+#undef BOOST_PRIVATE_CTR_DEF
+
+
+#endif // BOOST_UTILITY_BASE_FROM_MEMBER_HPP
diff --git a/3rdParty/Boost/boost/utility/binary.hpp b/3rdParty/Boost/boost/utility/binary.hpp
new file mode 100644
index 0000000..8cef146
--- /dev/null
+++ b/3rdParty/Boost/boost/utility/binary.hpp
@@ -0,0 +1,708 @@
+/*=============================================================================
+ Copyright (c) 2005 Matthew Calabrese
+
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_UTILITY_BINARY_HPP
+#define BOOST_UTILITY_BINARY_HPP
+
+/*=============================================================================
+
+ Binary Literal Utility
+ ______________________
+
+
+ The following code works by converting the input bit pattern into a
+ Boost.Preprocessor sequence, then converting groupings of 3 bits each into
+ the corresponding octal digit, and finally concatenating all of the digits
+ together along with a leading zero. This yields a standard octal literal
+ with the desired value as specified in bits.
+
+==============================================================================*/
+
+#include <boost/preprocessor/control/deduce_d.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/seq/cat.hpp>
+#include <boost/preprocessor/seq/transform.hpp>
+#include <boost/preprocessor/arithmetic/mod.hpp>
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/facilities/empty.hpp>
+#include <boost/preprocessor/control/while.hpp>
+
+#define BOOST_BINARY( bit_groupings ) \
+ BOOST_BINARY_LITERAL_D( BOOST_PP_DEDUCE_D(), bit_groupings )
+
+#define BOOST_BINARY_U( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, U )
+
+#define BOOST_BINARY_L( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, L )
+
+#define BOOST_BINARY_UL( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, UL )
+
+#define BOOST_BINARY_LU( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LU )
+
+#define BOOST_BINARY_LL( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LL )
+
+#define BOOST_BINARY_ULL( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, ULL )
+
+#define BOOST_BINARY_LLU( bit_groupings ) \
+ BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, LLU )
+
+#define BOOST_SUFFIXED_BINARY_LITERAL( bit_groupings, suffix ) \
+ BOOST_SUFFIXED_BINARY_LITERAL_D( BOOST_PP_DEDUCE_D(), bit_groupings, suffix )
+
+#define BOOST_SUFFIXED_BINARY_LITERAL_D( d, bit_groupings, suffix ) \
+ BOOST_PP_CAT( BOOST_BINARY_LITERAL_D( d, bit_groupings ), suffix )
+
+#define BOOST_BINARY_LITERAL_D( d, bit_groupings ) \
+ BOOST_PP_SEQ_CAT \
+ ( (0) BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings ) \
+ )
+
+#define BOOST_DETAIL_CREATE_BINARY_LITERAL_OCTAL_SEQUENCE( d, bit_groupings ) \
+ BOOST_PP_SEQ_TRANSFORM \
+ ( BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION \
+ , BOOST_PP_NIL \
+ , BOOST_PP_IDENTITY( BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_TRIPLE_SEQUENCE )()\
+ ( BOOST_DETAIL_COMPLETE_TRIPLE_SEQUENCE \
+ ( \
+ d \
+ , BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE( d, bit_groupings ) \
+ ) \
+ ) \
+ )
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_TRIPLE_SEQUENCE( bit_sequence ) \
+ BOOST_PP_CAT \
+ ( BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1 bit_sequence \
+ , END_BIT \
+ )
+
+#define BOOST_DETAIL_BITS_PER_OCTIT 3
+
+#define BOOST_DETAIL_COMPLETE_TRIPLE_SEQUENCE( d, incomplete_nibble_sequence ) \
+ BOOST_PP_CAT \
+ ( BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_ \
+ , BOOST_PP_MOD_D( d \
+ , BOOST_PP_SEQ_SIZE( incomplete_nibble_sequence ) \
+ , BOOST_DETAIL_BITS_PER_OCTIT \
+ ) \
+ ) \
+ incomplete_nibble_sequence
+
+#define BOOST_DETAIL_FIXED_COMPL( bit ) \
+ BOOST_PP_CAT( BOOST_DETAIL_FIXED_COMPL_, bit )
+
+#define BOOST_DETAIL_FIXED_COMPL_0 1
+
+#define BOOST_DETAIL_FIXED_COMPL_1 0
+
+#define BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE( d, bit_groupings ) \
+ BOOST_PP_EMPTY \
+ BOOST_PP_CAT( BOOST_PP_WHILE_, d ) \
+ ( BOOST_DETAIL_BINARY_LITERAL_PREDICATE \
+ , BOOST_DETAIL_BINARY_LITERAL_OPERATION \
+ , bit_groupings () \
+ )
+
+#define BOOST_DETAIL_BINARY_LITERAL_PREDICATE( d, state ) \
+ BOOST_DETAIL_FIXED_COMPL( BOOST_DETAIL_IS_NULLARY_ARGS( state ) )
+
+#define BOOST_DETAIL_BINARY_LITERAL_OPERATION( d, state ) \
+ BOOST_DETAIL_SPLIT_AND_SWAP \
+ ( BOOST_PP_CAT( BOOST_DETAIL_BINARY_LITERAL_ELEMENT_, state ) )
+
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_OPERATION( s, dummy_param, tuple ) \
+ BOOST_DETAIL_TERNARY_TRIPLE_TO_OCTAL tuple
+
+#define BOOST_DETAIL_TERNARY_TRIPLE_TO_OCTAL( bit2, bit1, bit0 ) \
+ BOOST_DETAIL_TRIPLE_TO_OCTAL_ ## bit2 ## bit1 ## bit0
+
+#define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_1 (0)(0)
+#define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_2 (0)
+#define BOOST_DETAIL_CREATE_TRIPLE_COMPLETION_SEQUENCE_0
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1END_BIT
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1( bit ) \
+ ( ( bit, BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_2
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_2( bit ) \
+ bit, BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_3
+
+#define BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_3( bit ) \
+ bit ) ) BOOST_DETAIL_CONVERT_BIT_SEQUENCE_TO_PARENTHETIC_TUPLE_1
+
+#define BOOST_DETAIL_SPLIT_AND_SWAP( params ) \
+ BOOST_PP_IDENTITY( BOOST_DETAIL_SPLIT_AND_SWAP_PARAMS )()( params )
+
+#define BOOST_DETAIL_SPLIT_AND_SWAP_PARAMS( first_param, second_param ) \
+ second_param first_param
+
+#define BOOST_DETAIL_LEFT_OF_COMMA( params ) \
+ BOOST_PP_IDENTITY( BOOST_DETAIL_FIRST_MACRO_PARAM )()( params )
+
+#define BOOST_DETAIL_FIRST_MACRO_PARAM( first_param, second_param ) \
+ first_param
+
+/* Begin derived concepts from Chaos by Paul Mensonides */
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS( param ) \
+ BOOST_DETAIL_LEFT_OF_COMMA \
+ ( BOOST_PP_CAT( BOOST_DETAIL_IS_NULLARY_ARGS_R_ \
+ , BOOST_DETAIL_IS_NULLARY_ARGS_C param \
+ ) \
+ )
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS_C() \
+ 1
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS_R_1 \
+ 1, BOOST_PP_NIL
+
+#define BOOST_DETAIL_IS_NULLARY_ARGS_R_BOOST_DETAIL_IS_NULLARY_ARGS_C \
+ 0, BOOST_PP_NIL
+
+/* End derived concepts from Chaos by Paul Mensonides */
+
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_000 0
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_001 1
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_010 2
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_011 3
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_100 4
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_101 5
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_110 6
+#define BOOST_DETAIL_TRIPLE_TO_OCTAL_111 7
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0 (0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1 (1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00 (0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01 (0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10 (1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11 (1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00 (0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01 (0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10 (1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11 (1)(1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000 (0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001 (0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010 (0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011 (0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100 (1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101 (1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110 (1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111 (1)(1)(1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000 (0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001 (0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010 (0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011 (0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100 (0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101 (0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110 (0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111 (0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000 (1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001 (1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010 (1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011 (1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100 (1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101 (1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110 (1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111 (1)(1)(1)(1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000 (0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001 (0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010 (0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011 (0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100 (0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101 (0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110 (0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111 (0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000 (0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001 (0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010 (0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011 (0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100 (0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101 (0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110 (0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111 (0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000 (1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001 (1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010 (1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011 (1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100 (1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101 (1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110 (1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111 (1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000 (1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001 (1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010 (1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011 (1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100 (1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101 (1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110 (1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111 (1)(1)(1)(1)(1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000000 (0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000001 (0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000010 (0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000011 (0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000100 (0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000101 (0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000110 (0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_000111 (0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001000 (0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001001 (0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001010 (0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001011 (0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001100 (0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001101 (0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001110 (0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_001111 (0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010000 (0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010001 (0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010010 (0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010011 (0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010100 (0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010101 (0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010110 (0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_010111 (0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011000 (0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011001 (0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011010 (0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011011 (0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011100 (0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011101 (0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011110 (0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_011111 (0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100000 (1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100001 (1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100010 (1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100011 (1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100100 (1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100101 (1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100110 (1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_100111 (1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101000 (1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101001 (1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101010 (1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101011 (1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101100 (1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101101 (1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101110 (1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_101111 (1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110000 (1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110001 (1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110010 (1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110011 (1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110100 (1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110101 (1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110110 (1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_110111 (1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111000 (1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111001 (1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111010 (1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111011 (1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111100 (1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111101 (1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111110 (1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_111111 (1)(1)(1)(1)(1)(1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000000 (0)(0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000001 (0)(0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000010 (0)(0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000011 (0)(0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000100 (0)(0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000101 (0)(0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000110 (0)(0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0000111 (0)(0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001000 (0)(0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001001 (0)(0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001010 (0)(0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001011 (0)(0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001100 (0)(0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001101 (0)(0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001110 (0)(0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0001111 (0)(0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010000 (0)(0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010001 (0)(0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010010 (0)(0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010011 (0)(0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010100 (0)(0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010101 (0)(0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010110 (0)(0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0010111 (0)(0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011000 (0)(0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011001 (0)(0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011010 (0)(0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011011 (0)(0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011100 (0)(0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011101 (0)(0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011110 (0)(0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0011111 (0)(0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100000 (0)(1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100001 (0)(1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100010 (0)(1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100011 (0)(1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100100 (0)(1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100101 (0)(1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100110 (0)(1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0100111 (0)(1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101000 (0)(1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101001 (0)(1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101010 (0)(1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101011 (0)(1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101100 (0)(1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101101 (0)(1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101110 (0)(1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0101111 (0)(1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110000 (0)(1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110001 (0)(1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110010 (0)(1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110011 (0)(1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110100 (0)(1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110101 (0)(1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110110 (0)(1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0110111 (0)(1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111000 (0)(1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111001 (0)(1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111010 (0)(1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111011 (0)(1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111100 (0)(1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111101 (0)(1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111110 (0)(1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_0111111 (0)(1)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000000 (1)(0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000001 (1)(0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000010 (1)(0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000011 (1)(0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000100 (1)(0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000101 (1)(0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000110 (1)(0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1000111 (1)(0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001000 (1)(0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001001 (1)(0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001010 (1)(0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001011 (1)(0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001100 (1)(0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001101 (1)(0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001110 (1)(0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1001111 (1)(0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010000 (1)(0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010001 (1)(0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010010 (1)(0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010011 (1)(0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010100 (1)(0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010101 (1)(0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010110 (1)(0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1010111 (1)(0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011000 (1)(0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011001 (1)(0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011010 (1)(0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011011 (1)(0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011100 (1)(0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011101 (1)(0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011110 (1)(0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1011111 (1)(0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100000 (1)(1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100001 (1)(1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100010 (1)(1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100011 (1)(1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100100 (1)(1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100101 (1)(1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100110 (1)(1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1100111 (1)(1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101000 (1)(1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101001 (1)(1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101010 (1)(1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101011 (1)(1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101100 (1)(1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101101 (1)(1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101110 (1)(1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1101111 (1)(1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110000 (1)(1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110001 (1)(1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110010 (1)(1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110011 (1)(1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110100 (1)(1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110101 (1)(1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110110 (1)(1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1110111 (1)(1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111000 (1)(1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111001 (1)(1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111010 (1)(1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111011 (1)(1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111100 (1)(1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111101 (1)(1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111110 (1)(1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_1111111 (1)(1)(1)(1)(1)(1)(1),
+
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000000 (0)(0)(0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000001 (0)(0)(0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000010 (0)(0)(0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000011 (0)(0)(0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000100 (0)(0)(0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000101 (0)(0)(0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000110 (0)(0)(0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00000111 (0)(0)(0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001000 (0)(0)(0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001001 (0)(0)(0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001010 (0)(0)(0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001011 (0)(0)(0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001100 (0)(0)(0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001101 (0)(0)(0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001110 (0)(0)(0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00001111 (0)(0)(0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010000 (0)(0)(0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010001 (0)(0)(0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010010 (0)(0)(0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010011 (0)(0)(0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010100 (0)(0)(0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010101 (0)(0)(0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010110 (0)(0)(0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00010111 (0)(0)(0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011000 (0)(0)(0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011001 (0)(0)(0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011010 (0)(0)(0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011011 (0)(0)(0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011100 (0)(0)(0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011101 (0)(0)(0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011110 (0)(0)(0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00011111 (0)(0)(0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100000 (0)(0)(1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100001 (0)(0)(1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100010 (0)(0)(1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100011 (0)(0)(1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100100 (0)(0)(1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100101 (0)(0)(1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100110 (0)(0)(1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00100111 (0)(0)(1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101000 (0)(0)(1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101001 (0)(0)(1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101010 (0)(0)(1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101011 (0)(0)(1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101100 (0)(0)(1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101101 (0)(0)(1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101110 (0)(0)(1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00101111 (0)(0)(1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110000 (0)(0)(1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110001 (0)(0)(1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110010 (0)(0)(1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110011 (0)(0)(1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110100 (0)(0)(1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110101 (0)(0)(1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110110 (0)(0)(1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00110111 (0)(0)(1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111000 (0)(0)(1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111001 (0)(0)(1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111010 (0)(0)(1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111011 (0)(0)(1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111100 (0)(0)(1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111101 (0)(0)(1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111110 (0)(0)(1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_00111111 (0)(0)(1)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000000 (0)(1)(0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000001 (0)(1)(0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000010 (0)(1)(0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000011 (0)(1)(0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000100 (0)(1)(0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000101 (0)(1)(0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000110 (0)(1)(0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01000111 (0)(1)(0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001000 (0)(1)(0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001001 (0)(1)(0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001010 (0)(1)(0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001011 (0)(1)(0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001100 (0)(1)(0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001101 (0)(1)(0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001110 (0)(1)(0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01001111 (0)(1)(0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010000 (0)(1)(0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010001 (0)(1)(0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010010 (0)(1)(0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010011 (0)(1)(0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010100 (0)(1)(0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010101 (0)(1)(0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010110 (0)(1)(0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01010111 (0)(1)(0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011000 (0)(1)(0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011001 (0)(1)(0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011010 (0)(1)(0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011011 (0)(1)(0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011100 (0)(1)(0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011101 (0)(1)(0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011110 (0)(1)(0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01011111 (0)(1)(0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100000 (0)(1)(1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100001 (0)(1)(1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100010 (0)(1)(1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100011 (0)(1)(1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100100 (0)(1)(1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100101 (0)(1)(1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100110 (0)(1)(1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01100111 (0)(1)(1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101000 (0)(1)(1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101001 (0)(1)(1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101010 (0)(1)(1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101011 (0)(1)(1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101100 (0)(1)(1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101101 (0)(1)(1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101110 (0)(1)(1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01101111 (0)(1)(1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110000 (0)(1)(1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110001 (0)(1)(1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110010 (0)(1)(1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110011 (0)(1)(1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110100 (0)(1)(1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110101 (0)(1)(1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110110 (0)(1)(1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01110111 (0)(1)(1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111000 (0)(1)(1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111001 (0)(1)(1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111010 (0)(1)(1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111011 (0)(1)(1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111100 (0)(1)(1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111101 (0)(1)(1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111110 (0)(1)(1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_01111111 (0)(1)(1)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000000 (1)(0)(0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000001 (1)(0)(0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000010 (1)(0)(0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000011 (1)(0)(0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000100 (1)(0)(0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000101 (1)(0)(0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000110 (1)(0)(0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10000111 (1)(0)(0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001000 (1)(0)(0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001001 (1)(0)(0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001010 (1)(0)(0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001011 (1)(0)(0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001100 (1)(0)(0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001101 (1)(0)(0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001110 (1)(0)(0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10001111 (1)(0)(0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010000 (1)(0)(0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010001 (1)(0)(0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010010 (1)(0)(0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010011 (1)(0)(0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010100 (1)(0)(0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010101 (1)(0)(0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010110 (1)(0)(0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10010111 (1)(0)(0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011000 (1)(0)(0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011001 (1)(0)(0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011010 (1)(0)(0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011011 (1)(0)(0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011100 (1)(0)(0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011101 (1)(0)(0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011110 (1)(0)(0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10011111 (1)(0)(0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100000 (1)(0)(1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100001 (1)(0)(1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100010 (1)(0)(1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100011 (1)(0)(1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100100 (1)(0)(1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100101 (1)(0)(1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100110 (1)(0)(1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10100111 (1)(0)(1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101000 (1)(0)(1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101001 (1)(0)(1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101010 (1)(0)(1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101011 (1)(0)(1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101100 (1)(0)(1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101101 (1)(0)(1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101110 (1)(0)(1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10101111 (1)(0)(1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110000 (1)(0)(1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110001 (1)(0)(1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110010 (1)(0)(1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110011 (1)(0)(1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110100 (1)(0)(1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110101 (1)(0)(1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110110 (1)(0)(1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10110111 (1)(0)(1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111000 (1)(0)(1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111001 (1)(0)(1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111010 (1)(0)(1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111011 (1)(0)(1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111100 (1)(0)(1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111101 (1)(0)(1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111110 (1)(0)(1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_10111111 (1)(0)(1)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000000 (1)(1)(0)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000001 (1)(1)(0)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000010 (1)(1)(0)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000011 (1)(1)(0)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000100 (1)(1)(0)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000101 (1)(1)(0)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000110 (1)(1)(0)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11000111 (1)(1)(0)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001000 (1)(1)(0)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001001 (1)(1)(0)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001010 (1)(1)(0)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001011 (1)(1)(0)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001100 (1)(1)(0)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001101 (1)(1)(0)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001110 (1)(1)(0)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11001111 (1)(1)(0)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010000 (1)(1)(0)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010001 (1)(1)(0)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010010 (1)(1)(0)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010011 (1)(1)(0)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010100 (1)(1)(0)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010101 (1)(1)(0)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010110 (1)(1)(0)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11010111 (1)(1)(0)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011000 (1)(1)(0)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011001 (1)(1)(0)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011010 (1)(1)(0)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011011 (1)(1)(0)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011100 (1)(1)(0)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011101 (1)(1)(0)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011110 (1)(1)(0)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11011111 (1)(1)(0)(1)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100000 (1)(1)(1)(0)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100001 (1)(1)(1)(0)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100010 (1)(1)(1)(0)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100011 (1)(1)(1)(0)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100100 (1)(1)(1)(0)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100101 (1)(1)(1)(0)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100110 (1)(1)(1)(0)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11100111 (1)(1)(1)(0)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101000 (1)(1)(1)(0)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101001 (1)(1)(1)(0)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101010 (1)(1)(1)(0)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101011 (1)(1)(1)(0)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101100 (1)(1)(1)(0)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101101 (1)(1)(1)(0)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101110 (1)(1)(1)(0)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11101111 (1)(1)(1)(0)(1)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110000 (1)(1)(1)(1)(0)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110001 (1)(1)(1)(1)(0)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110010 (1)(1)(1)(1)(0)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110011 (1)(1)(1)(1)(0)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110100 (1)(1)(1)(1)(0)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110101 (1)(1)(1)(1)(0)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110110 (1)(1)(1)(1)(0)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11110111 (1)(1)(1)(1)(0)(1)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111000 (1)(1)(1)(1)(1)(0)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111001 (1)(1)(1)(1)(1)(0)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111010 (1)(1)(1)(1)(1)(0)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111011 (1)(1)(1)(1)(1)(0)(1)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111100 (1)(1)(1)(1)(1)(1)(0)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111101 (1)(1)(1)(1)(1)(1)(0)(1),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111110 (1)(1)(1)(1)(1)(1)(1)(0),
+#define BOOST_DETAIL_BINARY_LITERAL_ELEMENT_11111111 (1)(1)(1)(1)(1)(1)(1)(1),
+
+#endif
diff --git a/3rdParty/Boost/boost/utility/compare_pointees.hpp b/3rdParty/Boost/boost/utility/compare_pointees.hpp
new file mode 100644
index 0000000..e6888a6
--- /dev/null
+++ b/3rdParty/Boost/boost/utility/compare_pointees.hpp
@@ -0,0 +1,68 @@
+// Copyright (C) 2003, 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/lib/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_COMPARE_POINTEES_25AGO2003_HPP
+#define BOOST_UTILITY_COMPARE_POINTEES_25AGO2003_HPP
+
+#include<functional>
+
+namespace boost {
+
+// template<class OP> bool equal_pointees(OP const& x, OP const& y);
+// template<class OP> struct equal_pointees_t;
+//
+// Being OP a model of OptionalPointee (either a pointer or an optional):
+//
+// If both x and y have valid pointees, returns the result of (*x == *y)
+// If only one has a valid pointee, returns false.
+// If none have valid pointees, returns true.
+// No-throw
+template<class OptionalPointee>
+inline
+bool equal_pointees ( OptionalPointee const& x, OptionalPointee const& y )
+{
+ return (!x) != (!y) ? false : ( !x ? true : (*x) == (*y) ) ;
+}
+
+template<class OptionalPointee>
+struct equal_pointees_t : std::binary_function<OptionalPointee,OptionalPointee,bool>
+{
+ bool operator() ( OptionalPointee const& x, OptionalPointee const& y ) const
+ { return equal_pointees(x,y) ; }
+} ;
+
+// template<class OP> bool less_pointees(OP const& x, OP const& y);
+// template<class OP> struct less_pointees_t;
+//
+// Being OP a model of OptionalPointee (either a pointer or an optional):
+//
+// If y has not a valid pointee, returns false.
+// ElseIf x has not a valid pointee, returns true.
+// ElseIf both x and y have valid pointees, returns the result of (*x < *y)
+// No-throw
+template<class OptionalPointee>
+inline
+bool less_pointees ( OptionalPointee const& x, OptionalPointee const& y )
+{
+ return !y ? false : ( !x ? true : (*x) < (*y) ) ;
+}
+
+template<class OptionalPointee>
+struct less_pointees_t : std::binary_function<OptionalPointee,OptionalPointee,bool>
+{
+ bool operator() ( OptionalPointee const& x, OptionalPointee const& y ) const
+ { return less_pointees(x,y) ; }
+} ;
+
+} // namespace boost
+
+#endif
+
diff --git a/3rdParty/Boost/boost/utility/enable_if.hpp b/3rdParty/Boost/boost/utility/enable_if.hpp
new file mode 100644
index 0000000..d292c6a
--- /dev/null
+++ b/3rdParty/Boost/boost/utility/enable_if.hpp
@@ -0,0 +1,119 @@
+// Boost enable_if library
+
+// Copyright 2003 (c) The Trustees of Indiana University.
+
+// 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: Jaakko Jarvi (jajarvi at osl.iu.edu)
+// Jeremiah Willcock (jewillco at osl.iu.edu)
+// Andrew Lumsdaine (lums at osl.iu.edu)
+
+
+#ifndef BOOST_UTILITY_ENABLE_IF_HPP
+#define BOOST_UTILITY_ENABLE_IF_HPP
+
+#include "boost/config.hpp"
+
+// Even the definition of enable_if causes problems on some compilers,
+// so it's macroed out for all compilers that do not support SFINAE
+
+#ifndef BOOST_NO_SFINAE
+
+namespace boost
+{
+
+ template <bool B, class T = void>
+ struct enable_if_c {
+ typedef T type;
+ };
+
+ template <class T>
+ struct enable_if_c<false, T> {};
+
+ template <class Cond, class T = void>
+ struct enable_if : public enable_if_c<Cond::value, T> {};
+
+ template <bool B, class T>
+ struct lazy_enable_if_c {
+ typedef typename T::type type;
+ };
+
+ template <class T>
+ struct lazy_enable_if_c<false, T> {};
+
+ template <class Cond, class T>
+ struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
+
+
+ template <bool B, class T = void>
+ struct disable_if_c {
+ typedef T type;
+ };
+
+ template <class T>
+ struct disable_if_c<true, T> {};
+
+ template <class Cond, class T = void>
+ struct disable_if : public disable_if_c<Cond::value, T> {};
+
+ template <bool B, class T>
+ struct lazy_disable_if_c {
+ typedef typename T::type type;
+ };
+
+ template <class T>
+ struct lazy_disable_if_c<true, T> {};
+
+ template <class Cond, class T>
+ struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
+
+} // namespace boost
+
+#else
+
+namespace boost {
+
+ namespace detail { typedef void enable_if_default_T; }
+
+ template <typename T>
+ struct enable_if_does_not_work_on_this_compiler;
+
+ template <bool B, class T = detail::enable_if_default_T>
+ struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <bool B, class T = detail::enable_if_default_T>
+ struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <bool B, class T = detail::enable_if_default_T>
+ struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <bool B, class T = detail::enable_if_default_T>
+ struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <class Cond, class T = detail::enable_if_default_T>
+ struct enable_if : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <class Cond, class T = detail::enable_if_default_T>
+ struct disable_if : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <class Cond, class T = detail::enable_if_default_T>
+ struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+ template <class Cond, class T = detail::enable_if_default_T>
+ struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
+ { };
+
+} // namespace boost
+
+#endif // BOOST_NO_SFINAE
+
+#endif
diff --git a/3rdParty/Boost/boost/version.hpp b/3rdParty/Boost/boost/version.hpp
new file mode 100644
index 0000000..8269beb
--- /dev/null
+++ b/3rdParty/Boost/boost/version.hpp
@@ -0,0 +1,35 @@
+// Boost version.hpp configuration header file ------------------------------//
+
+// (C) Copyright John maddock 1999. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for documentation
+
+#ifndef BOOST_VERSION_HPP
+#define BOOST_VERSION_HPP
+
+//
+// Caution, this is the only boost header that is guarenteed
+// to change with every boost release, including this header
+// will cause a recompile every time a new boost version is
+// released.
+//
+// BOOST_VERSION % 100 is the patch level
+// BOOST_VERSION / 100 % 1000 is the minor version
+// BOOST_VERSION / 100000 is the major version
+
+#define BOOST_VERSION 103900
+
+//
+// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
+// but as a *string* in the form "x_y[_z]" where x is the major version
+// 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_39"
+
+#endif
+
+
+
diff --git a/3rdParty/Boost/boost/visit_each.hpp b/3rdParty/Boost/boost/visit_each.hpp
new file mode 100644
index 0000000..1fc8a50
--- /dev/null
+++ b/3rdParty/Boost/boost/visit_each.hpp
@@ -0,0 +1,29 @@
+// Boost.Signals library
+
+// Copyright Douglas Gregor 2001-2003. 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)
+
+// For more information, see http://www.boost.org/libs/signals
+
+#ifndef BOOST_VISIT_EACH_HPP
+#define BOOST_VISIT_EACH_HPP
+
+#include <boost/config.hpp>
+
+namespace boost {
+ template<typename Visitor, typename T>
+ inline void visit_each(Visitor& visitor, const T& t, long)
+ {
+ visitor(t);
+ }
+
+ template<typename Visitor, typename T>
+ inline void visit_each(Visitor& visitor, const T& t)
+ {
+ visit_each(visitor, t, 0);
+ }
+}
+
+#endif // BOOST_VISIT_EACH_HPP
diff --git a/3rdParty/Boost/boost/weak_ptr.hpp b/3rdParty/Boost/boost/weak_ptr.hpp
new file mode 100644
index 0000000..dd26869
--- /dev/null
+++ b/3rdParty/Boost/boost/weak_ptr.hpp
@@ -0,0 +1,18 @@
+#ifndef BOOST_WEAK_PTR_HPP_INCLUDED
+#define BOOST_WEAK_PTR_HPP_INCLUDED
+
+//
+// weak_ptr.hpp
+//
+// Copyright (c) 2001, 2002, 2003 Peter Dimov
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// See http://www.boost.org/libs/smart_ptr/weak_ptr.htm for documentation.
+//
+
+#include <boost/smart_ptr/weak_ptr.hpp>
+
+#endif // #ifndef BOOST_WEAK_PTR_HPP_INCLUDED